版主最近也在研究固件版本号保存,固件升级,OTA什么的。其中,一个技术知识点就是变量存放,我们需要将变量存放在指定的Flash地址中。只有这样,我们的程序在运行时,才能准确的读取到我们想要的内容。
经过一番查询,发现Keil软件已经为我们想好办法了!而且特别地简单!
__attribute__((at(address)))
const uint32_t _version __attribute__((at(0x0801F000))); /* RO */
这样我们就将保存版本的变量保存到了Flash最后一页的前4个字节了。未来我们在升级的时候,只需要在固件文件里面直接修改0x0801F000地址的数据内容即可更新程序的固件版本号。
参考文档
https://developer.arm.com/documentation/dui0375/g/Compiler-specific-Features/--attribute----at-address----variable-attribute?lang=en