GCC链接多个内存条
问题描述:
-
rom1
和rom2
有不同的地址映射,并且不连续! - 有些物体必须放入
rom2
。 - 每次连接
rom1
时,rom2
中的对象应该是固定地址(rom2
)。换句话说,rom1
在链接时应该知道rom2
的符号地址。
我可以链接一个精灵(rom2
)到rom1
?GCC链接多个内存条
答
如果我没有理解好:
- 你的系统有2个记忆
rom1
和rom2
- 一些对象已经被位于
rom1
,别人rom2
你的链接脚本应看起来像如下:
MEMORY
{
rom1 : org=0x10000 len=1024
rom2 : org=0x40000 len=1024
}
SECTIONS
{
.text1 0x10000 : {foo.o(.text) } > rom1
.text2 0x40000 : {bar.o(.text) } > rom2
}
在部分SECTIONS
中,链接器收集foo.o
中的.text
部分,并将此.text部分放入输出部分.text1,从rom1中的地址0x10000开始。
同样,它从bar.o
收集.text
部分,并将其放入rom2中。
我可以将精灵(rom2)链接到rom1吗? – linucos
或者我可以从rom1精灵拆分rom2相关函数,假设rom2相关函数是特殊的? – linucos