Part Number: TMDXIDK5718
Other Parts Discussed in Thread: SYSBIOS
Hi
I'm using CCS7.3 with SYSBIOS V6.46.5.55 and GNU Compiler V6.3.1 to build an application for the A15 processor on IDK5718.
Accroding to
processors.wiki.ti.com/.../BIOS_with_GCC_(CortexA)
I tried to put the .data section into different memory segments for load und run time.
So I added the following to my config script:
Program.sectMap[".data"] = new Program.SectionSpec();
Program.sectMap[".data"].loadSegment = "DATA_INIT";
Program.sectMap[".data"].runSegment = "EXT_RAM";
DATA_INIT and EXT_RAM are defined by my own platform file.
In the automatically created linker command file (..\Debug\configPkg\linker.cmd) I can see that the memory segments are correctly defined (only relevant parts displayed):
MEMORY
{
EXT_RAM (RWX) : org = 0x84000000, len = 0x3c000000
DATA_INIT (RW) : org = 0x82000000, len = 0x2000000
}
In the same linker command file the .data section is defined as:
.data : {*(.data)} > EXT_RAM AT> DATA_INIT
...
.data : {
__data_load__ = LOADADDR (.data);
__data_start__ = .;
*(.got.plt)
*(.got)
*(.shdata)
KEEP (*(.data))
KEEP (*(.data*))
*(.gnu.linkonce.d.*)
. = ALIGN (4);
__data_end__ = .;
} > REGION_DATA AT> REGION_TEXT
When I have a look at the created map file only the run address of the .data section is used (0x84000000 within EXT_RAM).
The load address is not used at all (__data_load__ sould be 0x82000000).
0x84000000 __data_load__ = LOADADDR (.data)
0x84000000 __data_start__ = .
How can I tell the linker to place the load adress of the .data section to a different address than the run address?
Regards,
Markus