Memory 使用GNULD,我如何在多个区域自动传播我的代码?
我的ROM只能占用某些不相交的内存区域。例如,假设我在链接器脚本中定义了以下内存区域:Memory 使用GNULD,我如何在多个区域自动传播我的代码?,memory,embedded,ld,Memory,Embedded,Ld,我的ROM只能占用某些不相交的内存区域。例如,假设我在链接器脚本中定义了以下内存区域: MEMORY { lowrom (rx) : ORIGIN = 0x5000, LENGTH = 0x2000 midrom (rx) : ORIGIN = 0xD000, LENGTH = 0x1000 hirom (rx) : ORIGIN = 0xF000, LENGTH = 0x1000 } 我想要的是让代码进入lowr
MEMORY
{
lowrom (rx) : ORIGIN = 0x5000, LENGTH = 0x2000
midrom (rx) : ORIGIN = 0xD000, LENGTH = 0x1000
hirom (rx) : ORIGIN = 0xF000, LENGTH = 0x1000
}
我想要的是让代码进入lowrom
直到满,然后让代码进入midrom
直到满,然后让剩余的代码进入hirom
GNULD文档这么说,听起来我想做的是不可能的
有什么解决办法吗?我想避免手动选择进入哪个内存区域的内容
(或者是否有其他开源的可重定目标链接器支持此功能?我认为没有直接的方法 我认为有一个变通办法 让我举例说明 a) 假设代码大小小于0x2000字节,那么在链接器脚本中只需添加lowrom,如下所示 记忆 { 低ROM(rx):原点=0x5000,长度=0x2000 } b) 假设代码大小为0x2050字节,然后在链接器脚本中添加lowrom和midrom 请注意,对于midrom,只分配所需的字节数 记忆 { 低ROM(rx):原点=0x5000,长度=0x2000 midrom(rx):原点=0xD000,长度=0x0050 } 这样你就可以继续了