说一下最简单的方式,就是使用__attribute__属性,将一部分文件的变量定义到新的字段中。
然后通过修改ld文件实现新ram的使用。
【对策前】
unsigned int uiDeviceType;
unsigned int uiDeviceID;
查看编译后的map文件,uiDeviceType和uiDeviceID变量都放在旧的RAM中。
【对策后】
unsigned int uiDeviceType __attribute__((section (".bss1")));
unsigned int uiDeviceID __attribute__((section (".bss1")));
上述修改后,uiDeviceType和uiDeviceID变量编译时会放在bss1字段中,如果不修改ld文件,这时候是编译不过的。
ld文件可以参考项目中既存的bss分配规则,如下只是事例:
.bss1 (NOLOAD):
{
. = ALIGN(0x20);
__BSS_RAM1_START__ = .;
*(.bss1)
*(.bss1.*)
. = ALIGN(0x20);
__BSS_RAM1_END__ = .;
} > 新RAM首地址
再次编译后查看map文件,uiDeviceType和uiDeviceID变量已经被链接到新的ram中。
以上,大家有问题可以留言。