On 8/3/2011 12:38 AM, John Dallaway wrote:
JJ
gmail wrote:
I think that I am making progress as at least I've been able to build
the library and the tests.
Though I am not able to load the tests either via the 'Run Tests' or the
Redboot 'load' command.
The 'load' command appears to indicate that the file is not linked
correctly as I get the error message:
Abort! Attempt to load ELF data to address: 0x00008000 which is not
in RAM.
I've tried configuring the Startup type: to RAM but I get a build error
that the mlt_arm_arm9_ts7250_ram.ldi does not exist.
I am trying build and load via the Redboot monitor, is this the right
method for building for that scenario?
I have not looked at the sources, but you would generally build eCos for
RAM startup if you wish to download to RAM via the RedBoot "load"
command or RedBoot's GDB stub. It would appear that the TS7250 RedBoot
port does not include a linker script for RAM startup, hence the build
error. Perhaps the TS7250 RedBoot port was developed primarily for
launching non-eCos executables?
Compare your TS7250 platform HAL package with other platform HAL
packages to see how mlt_arm_arm9_ts7250_ram.ldi and
mlt_arm_arm9_ts7250_ram.h could be implemented. These files are usually
located in the include/pkgconf/ directory of the various eCos platform
HAL packages.
I hope this helps.
John Dallaway
eCos maintainer
http://www.dallaway.org.uk/john
I did implement a mlt_arm_arm9_ts7250_ram.ldi and .h file but it still
looks like all of the test programs are getting linked at the 0x8000
starting point.
Running the arm-eabi-size program on one of the test programs (i.e.
bin_sem0) yields:
bin_sem0 :
section size addr
.debug_aranges 0x2318 0x0
.debug_pubnames 0x73b0 0x0
.debug_info 0x469e8 0x0
.debug_abbrev 0x92be 0x0
.debug_line 0xa811 0x0
.debug_frame 0x7d1c 0x0
.debug_str 0x873b 0x0
.debug_loc 0xa020 0x0
.fixed_vectors 0x140 0x20
.rom_vectors 0x40 0x8000
.text 0xc824 0x9000
.rodata 0x3cc 0x15824
.data 0x434 0x15bf0
.bss 0x42b0 0x16024
.ARM.attributes 0x2c 0x0
.debug_ranges 0x2180 0x0
.comment 0x8f7 0x0
Total 0x91eed
Looking at the tree in the configtool, this base appears to come from
the 'Configuration | Redboot for ARM options | Provides the exec command
in RedBoot | Default physical base address of linux kernel'.
The property info for this value indicates: "This is the physical
address of the base of the Linux kernel image. This option gets set by
the platform CDL."
I guess at this point I am totally confused as to how to change this, or
if I am on the right path.
All I am trying to do is build an executable that can be loaded via the
onboard RedBoot.
"Clueless at this point"
Thanks for any pointers!
--JJ--
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss