有时候需要将变量定位到闪存或者其他一些非易失性存储器中,这些变量在启动时不应该初始化,在这种情况下,可以创建一个特定的内存区域在ld文件,使用noload 指令。
网上有很多类似的教程,但是我当只定义一个段在SDRAM中时,固件的大小也会增加,显然这是不符合要求的。
我在tureSTUDIO用户使用文档中的一个文档找到了解决方案。
1.更新一个段在MEMORY
MY_DATA (rx) : ORIGIN = 0x08010000,LENGTH = 64K
2.添加一个段使用未加载指令
.my_data (NOLOAD)
{
*(.MY_Data*);
} >MY_DATA
3.最后程序中声明变量时,添加段属性
__attribute__((section(".MY_Data.a"))) int Distance
__attribute__((section(".MY_Data.a"))) int Second