STM32-保留一部分闪存

问题描述

按照this post的指示,我可以保留和写入一部分专门用于校准数据的FLASH,并对其进行写操作(和回读)。

问题
但是,当我对设备进行重新编程时,IDE在进行编程之前会擦除整个内存,因此我们将丢失所有数据。由于我们处于调试周期,因此我们不断进行重新编程,因此每次都必须将校准写回第一步。

是否有一种方法可以告诉IDE仅擦除与程序数据相对应的特定内存区域?谢谢。

解决方法

ST社区帮助了我。答案是在链接器文件中使用(NOLOAD)告诉编译器不要将初始化数据放在.elf文件中。详细信息可以在这里找到:https://mcuoneclipse.com/2014/04/19/gnu-linker-can-you-not-initialize-my-variable/