MCU 固件版本号存放位置
今天在逛硬汉大佬的论坛时,发现了种存放MCU固件版本号的方法。一般情况下我们都是在Flash 开辟一段空间用来放版本号信息
论坛说明一种将版本号存放在启动文件的中断向量表里面的操作方式,虽然本质上也是放在flash里面,但是形式上还是挺新颖的,个人感觉也挺直观方便的
可以看到在中断向量表里面有些地方是Reserved的,反正空着,正好可以利用起来
按如下操作:
在启动文件中声明:
读取的时候获取的是变量的地址,用指针变量读取这个地址的内容即可
还有一个更加简单粗暴的方法,直接用const attribute at就行了,可以定位到flash末尾附近的地址上,无论是bootloader上还是app里都方便读,并且不会占用整页的容量。
1 | const uint32_t boot_version __attribute__((at(0x08003FF0))) = 0x01020304; |
这样非常方便,但有个小缺点,生成的bin问题比较大,特别是有效程序大小和版本号之间地址区域有较大空闲时