作者:阿莫icode,整理:晓宇
微信公众号:芯片之家(ID:chiphome-dy) 大家有没有遇到过软硬件工程师扯皮的事情? 如果一个程序,固件信息里面没有任何版本信息,代码里面通过串口等接口也查询不到固件版本等信息,一旦出现问题,就会你推我,我推你了。 那么,怎么样来避免这种情况发生呢? 一种方法是,就像上面提到的,可以将固件版本信息定义成一个常量存放在程序中,需要的时候可以通过串口等接口查询代码版本信息,另一种,是今天上网看到的,思路也非常巧妙,这里分享给大家! 使用MDK编译器,在STM32程序HEX文件中加入固件版本信息,估计很多老手都已经在使用(你有好的方法欢迎分享,希望我的砖能引来你的玉),该方法献给新手或初学者。代码如下:
//------------------------------------------------------------------------------
#include
//------------------------------------------------------------------------------
#define VERINFO_ADDR_BASE (0x8009F00) // 版本信息在FLASH中的存放地址
const char Hardware_Ver[] __attribute__((at(VERINFO_ADDR_BASE + 0x00))) = "Hardware: 1.0.0";
const char Firmware_Ver[] __attribute__((at(VERINFO_ADDR_BASE + 0x20))) = "Firmware: 1.0.0";
const char Compiler_Date[] __attribute__((at(VERINFO_ADDR_BASE + 0x40))) = "Date: "__DATE__;
const char Compiler_Time[] __attribute__((at(VERINFO_ADDR_BASE + 0x60))) = "Time: "__TIME__;
//------------------------------------------------------------------------------
代码可左右滑动查看
看到没,这里使用了__attribute__ 机制,__attribute__ 可以设置函数属性(Function Attribute )、变量属性(Variable Attribute )和类型属性(Type Attribute ),使用at参数,可以把变量或函数绝对定位到Flash或者RAM中。 具体语法,请自行百度,这里不再赘述。
![fdafd0804ec1d703ec58c840536f5fb5.png](https://i-blog.csdnimg.cn/blog_migrate/e3bde254a613ec979e908b11cc4d94b9.png)
选项配置中:Flash地址与大小不用做任何修改!
![bf1007c9ab273de866870b8e2948560e.png](https://i-blog.csdnimg.cn/blog_migrate/e04054f7ed1141545674b62ce74cfa74.png)
![4674e6d9b1ce8cdccec682969e0b0fd2.png](https://i-blog.csdnimg.cn/blog_migrate/fe6c025c562598155577424790c491f8.png)
![ec41b7d541e9a77e5b4e521e496c088b.png](https://i-blog.csdnimg.cn/blog_migrate/66168e73c5bb27fd9cc68152ff4504c2.png)
![ec41b7d541e9a77e5b4e521e496c088b.png](https://i-blog.csdnimg.cn/blog_migrate/66168e73c5bb27fd9cc68152ff4504c2.png)
![ec41b7d541e9a77e5b4e521e496c088b.png](https://i-blog.csdnimg.cn/blog_migrate/66168e73c5bb27fd9cc68152ff4504c2.png)
![8e2540a142330c66ee2e67eb808e63fd.png](https://i-blog.csdnimg.cn/blog_migrate/1aa072306a7bd8e6eeeacc839d041b75.png)
电子漫画系列,更新九张图片。
【最强干货】618个3D封装免费分享
【干货第二波】一大波3D封装免费分享
贴片电容国内外品牌
DC-DC电源芯片国内外品牌大汇总
几毛钱的32768晶振,这也能写出一篇干货?
车牌识别控制板原理图+PCB+3D齐全无私分享
【视觉盛宴】你没见过的电子元器件的另一面!
完全由C编写,高度可移植,超级牛逼的菜单架构!
【视频】老外教你三极管和MOS管的通电效应,我就不信还有不懂的!
![a1b71201fcf176de04dc52dc7293a90c.png](https://i-blog.csdnimg.cn/blog_migrate/fe6d675e62598eda7773839388e889ae.jpeg)