我正在尝试将部分代码加载到使用LD生成的ROM的特定地址上。 ROM大小设置为0x4000
我混合了C和ASM代码,这些代码是通过GCC编译/汇编的。 我要链接到特定地址的零件正在组装中。
我阅读了LD手册,然后编辑了链接脚本的SECTIONS部分,并在我的asm代码上添加了.section .assets。
我的链接脚本已经指定了.text,.data,.bss并可以正常工作。 在.text部分的0x2000上,我要加载.assets部分。
我尝试了3种方法
1 /专用部分
.text { *(.text) } >ROM
.assets 0x2000 { *(.assets) }
使用nm,我看到我的const数据定义为0x2000,但实际上,数据本身不存在...地址正确,数据为空
2 /原始加载
.text { *(.text) } >ROM
.assets 0x2000 { assets.o } >ROM
使用nm,地址正确且有数据
3 / .text内
.text
{
*(.text)
. = 0x2000;
*(.assets)
} >ROM
使用nm,地址正确且有数据
因此,尽管我有办法实现自己想要的目标,但我仍然感觉不对。
那么,如何在不破坏.text节大小的情况下,将任何file.o的每个(.assets)加载到ROM的特定地址?