Thread 中讨论的其他器件:SYSBIOS
你(们)好
我将使用具有 SYSBIOS V6.46.5.55和 GNU 编译器 V6.3.1的 CCS7.3在 IDK5718上为 A15处理器构建应用。
的原因
processors.wiki.ti.com/.../BIOS_with_GCC_(CortexA)
我尝试将.data 段放入不同的存储器段中、以用于加载和运行时间。
因此、我在我的配置脚本中添加了以下内容:
Program.sectMap[".data"]= new Program.SectionSpec ();
Program.sectMap[".data"].loadSegment ="data_init";
Program.sectMap[".data"].runSegment ="EXT_RAM";
DATA_INIT 和 EXT_RAM 由我自己的平台文件定义。
在自动创建的链接器命令文件(..\Debug\configPkg\linker.cmd)中、我可以看到内存段已正确定义(仅显示相关的部分):
存储器
{
EXT_RAM (rwx):org = 0x84000000,len = 0x3c000000
DATA_INIT (RW):org = 0x82000000,len = 0x2000000
}
在同一链接器命令文件中、.data 段定义为:
.data:{*(.data)}>EXT_RAM at>DATA_INIT
(笑声)
.data :{
__DATA_LOADDR___= LOADDR (.data);
__data_start__=.;
*(.got.plt)
*(.GOT)
*(.shdata)
保留(*(.data))
保留(*(.data*))
*(.gnu.linkone.d*)
。 =对齐(4);
__DATA_END__=.;
}> region_data at > region_text
查看创建的映射文件时、仅使用.data 段的运行地址(EXT_RAM 中的0x84000000)。
加载地址根本不使用(__DATA_LOAD__应为0x82000000)。
0x84000000 _DATA_LOADDR__= LOADDR (.data)
0x84000000 __DATA_START__=。
如何告知链接器将.data 段的加载地址放置在与运行地址不同的地址?
此致、
Markus