This is the mail archive of the crossgcc@sources.redhat.com mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Memory maps with gcc and eCos


Hi there,

I am using eCos and am trying to map some data to a specific address in
FLASH on my custom
target board (ARM7TDMI core).  

The data is defined as 

unsigned char globalArchive[] __attribute__ ((section (".ivoryDataStore")))
=
   {0x04, 0x18, 0x00, 0x00, 0x81);


I have added the following to arm.ld (linker file)

#define SECTION_ivoryDataStore(_region_, _vma_, _lma_) \
    .ivoryDataStore _vma_ : _lma_ \
    { FORCE_OUTPUT; *(.ivoryDataStore) } \
    > _region_

And have attempted to define ivoryDataStore in my memory map of the eCos
config
tool (1.3.1)
I kind of hoped that the name would have shown up in the drop down box for
Linker-defined, as it didn't I had to specify it as user defined...

i.e. 
	Name - User-defined: ivoryDataStore
	     - Known Size: 0x2000
	Final Location (VMA) - Absolute: 0xe0000

however when I compile my code I get the following :


arm-elf-gcc *.o ../../API/*/*.o -L /i/eCOSbuilds/a166_install/lib/
-Ttarget.ld -nostdlib -Xlinker -Map -Xlinker mapfile.txt
/tools/H-i686-pc-cygwin/arm-elf/bin/ld: warning: no memory region specified
for
section `.ivoryDataStore'

and the following in mapfile.txt

snip

.gcc_except_table
                0x000ab11c        0x0
                0x000ab11c                .=.
 *(.gcc_except_table)
                0x000e0000                __ivoryDataStore=0xe0000
                0x41000000                __reserved_vectors=0x41000000
                0x41001000                .=(__reserved_vectors+0x1000)
                0x41001000                __reserved_not_mapped=0x41001000
                0x41008000                .=(__reserved_not_mapped+0x7000)
snip

.ivoryDataStore
                0x41008000     0x25bc
 .ivoryDataStore
                0x41008000     0x25bc ../../API/Ivory/globalArchive.o
                0x41008000                globalArchive
                0x000ab11c                __rom_data_start=LOADADDR(.data)
                0x4100a5bc                __ram_data_end=.
                0x4100a5bc                PROVIDE (__ram_data_end, .)
                0x4100a5bc                _edata=.
                0x4100a5bc                PROVIDE (edata, .)
                0x000ac0d8                PROVIDE (__rom_data_end,
(LOADADDR(.data)+SIZEOF(.data)))

.bss            0x4100a5bc    0x59eb8


What I wanted is the memory map to show 
                0x000e0000     0x25bc ../../API/Ivory/globalArchive.o
                0x000e0000                globalArchive


Would someone be kind enough to show me what I am doing wrong?

Regards,

Andy

------
Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sourceware.cygnus.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]