stm32在内存中定义未初始化的数据(GCC)

有时候需要将变量定位到闪存或者其他一些非易失性存储器中,这些变量在启动时不应该初始化,在这种情况下,可以创建一个特定的内存区域在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

你可能感兴趣的:(stm32在内存中定义未初始化的数据(GCC))