本文介绍一个小技巧:
使用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__; //------------------------------------------------------------------------------
写入到程序中:
选项配置中:Flash地址与大小不用做任何修改!
HEX文件:
串口打印输出:
上述方法的缺点
上述操作可行, 但是有一个缺点:就是生成的bin文件都是满flash大小的, 造成每次烧录都是整个flash读写。相关文章:详解STM32在线IAP升级。
其实这个可以把存放地址放到前面,比如偏移1K的地方,都不用改指定地址。
按照上述操作,程序末尾到VERINFO_ADDR_BASE地址这一段会被填充成0x00。根据需要可以修改VERINFO_ADDR_BASE减小地址,或者说不强制指定地址,由编译器自动分配,但这样就要去找相应的版本标识字符串了。
优化方法
不想前面这一段被大量填充0x00,让HEX文件体积小一点的话, 可以把选项配置中Flash的Size改小一点,把VERINFO_ADDR_BASE设置成从FlashSize后面的空间开始,这样生成的HEX文件就小了,且未用空间就不会被大量填充0x00了。
方法如下:
审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
STM32
+关注
关注
2193文章
10035浏览量
344999 -
HEX文件
+关注
关注
0文章
21浏览量
12603 -
编译器
+关注
关注
1文章
1439浏览量
48236 -
MDK
+关注
关注
4文章
201浏览量
31591 -
HEX
+关注
关注
0文章
36浏览量
16612
发布评论请先 登录
相关推荐
DSP生成hex文件和生成bin文件方法步骤
hex文件、生成bin文件方法平台:win7 + ccs5.5目标板:C2000的28335ccs5.5编译只能生成hex文件。要想获得bin文件的话。不需要复杂的hex2000等等的操作
发表于 09-10 09:58
SMT32定时器的输入捕获是什么意思?其工作流程是怎样的
SMT32定时器的输入捕获是什么意思?输入捕获的工作流程是怎样的?SMT32定时器是如何去测量PWM频率和占空比的?
发表于 11-24 06:39
如何实现sm2算法在smt32单片机上的移植
smt32单片机上的移植。之前的动态内存分配,在上面总是莫名其妙的崩。不知道堆和栈空间该改多大合适。且总共64K的内存,太受限了。几次想放弃,最后还是坚持了一下,终于搞定啦!看
发表于 11-26 07:01
怎样去解决在RK2928烧录固件里加入Demo文件的问题呢
固件里面加入测试歌曲,视频等 Demo 文件。但是在固件工厂工具里没有相关修改信息。参考办法:在固件修改工具中 FirmwareTool_Release_v3.4\Temp\System\media 中添加 Demo 的测试歌曲和视频等
发表于 05-30 11:46
bin文件转换为hex文件操作步骤解析
固件格式也不一样,有的要求是HEX文件,有的则要求是BIN文件,如果只有一个BIN文件如何将它转换成HEX文件呢?在这里我们使用Bin_Hex.exe这款工具来实现BIN转换成
发表于 11-14 09:04
•6.8w次阅读
Hex文件内容详细解析
HEX文件是由一行行符合Intel HEX文件格式的文本所构成的ASCII文本文件。在Intel HEX文件中,每一行包含一个HEX记录。这些记录由对应机器语言码和/或常量数据的十六进制
评论