> 技术文档 > 一种基于编译期实现的 MCU 固定地址数据存储方法_mcuviewer 内存固定

一种基于编译期实现的 MCU 固定地址数据存储方法_mcuviewer 内存固定


文章目录

  • 一、代码示例:将变量固定到 Flash 0x08001000
  • 二、__attribute__((at(addr))) 的作用
  • 三、__attribute__((at(addr))) 可能导致的问题
  • 四、运行时修改 Flash 存储的变量
  • 五、在 GCC(STM32CubeIDE)中实现同样功能
  • 六、读取特定地址数据
  • 七、综合示例(Bootloader版本信息及编译时间的存储与读取机制)

在嵌入式开发中,有时我们需要在 Flash 指定地址存储特定的标志位或常量数据,例如 Bootloader 标志、固件版本信息、校验码等。这时,可以使用 __attribute__((at(addr))) 关键字,将变量固定存放在指定的 Flash 地址。

一、代码示例:将变量固定到 Flash 0x08001000

以下代码用于将 custom_data 变量固定到 Flash 地址 0x08001000,并赋值 0x12345678:

#define CUSTOM_FLAG_ADDR 0x08001000#define