0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SMT32的HEX文件里加入固件版本的方法

jf_pJlTbmA9 来源:jf_pJlTbmA9 作者:jf_pJlTbmA9 2023-09-18 15:34 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文介绍一个小技巧:

使用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__;

//------------------------------------------------------------------------------

写入到程序中:

pYYBAGIB2rCAajdXAAGiQGwH_5I181.png

选项配置中:Flash地址与大小不用做任何修改!

poYBAGIB2rGAPt-4AAJSJGauc0M632.png

HEX文件:

pYYBAGIB2rOAH1YFAAFSe2uzrSA694.png

串口打印输出:

poYBAGIB2rSAXPpzAAEGJueLs7M335.png

上述方法的缺点

上述操作可行, 但是有一个缺点:就是生成的bin文件都是满flash大小的, 造成每次烧录都是整个flash读写。

其实这个可以把存放地址放到前面,比如偏移1K的地方,都不用改指定地址。

按照上述操作,程序末尾到VERINFO_ADDR_BASE地址这一段会被填充成0x00。根据需要可以修改VERINFO_ADDR_BASE减小地址,或者说不强制指定地址,由编译器自动分配,但这样就要去找相应的版本标识字符串了。

优化方法

不想前面这一段被大量填充0x00,让HEX文件体积小一点的话, 可以把选项配置中Flash的Size改小一点,把VERINFO_ADDR_BASE设置成从FlashSize后面的空间开始,这样生成的HEX文件就小了,且未用空间就不会被大量填充0x00了。

方法如下:

pYYBAGIB2reAZnv-AAbHsQk41is233.png

来源:STM32嵌入式开发
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 49

评论 0

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 程序
    +关注

    关注

    117

    文章

    3849

    浏览量

    85657
  • 编译器
    +关注

    关注

    1

    文章

    1673

    浏览量

    52121
  • HEX
    HEX
    +关注

    关注

    0

    文章

    37

    浏览量

    17507
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Ewon固件版本更新的影响

    Ewon因欧盟RED法规要求升级固件(Flexy/Cosy至15.0+,Cosy+至23.0s0+)。主要变更:WAN端口默认封锁、FTP/SMTP/OPC UA等安全增强、移除DynDNS、加强日志。原有功能可通过参数重新开启或限制于LAN/VPN内使用,提升设备网络安全性。
    的头像 发表于 05-28 17:15 189次阅读
    Ewon<b class='flag-5'>固件</b><b class='flag-5'>版本</b>更新的影响

    罗德与施瓦茨矢量网络分析仪固件升级步骤及注意事项

    型号的最新固件版本。务必确认固件版本与仪器型号完全匹配。 准备一个格式化为FAT32的U盘(建议容量不超过32GB),用于固件传输。 将下载
    的头像 发表于 04-20 16:25 146次阅读
    罗德与施瓦茨矢量网络分析仪<b class='flag-5'>固件</b>升级步骤及注意事项

    瑞芯微(EASY EAI)RV1126B 固件版本查询

    1.固件版本查询在开发板环境执行以下命令,可直接查看当前的固件版本:cat/etc/version通过此日期,可以找到网盘上发布的,与之一一对应的【
    的头像 发表于 04-20 14:31 205次阅读
    瑞芯微(EASY EAI)RV1126B <b class='flag-5'>固件</b><b class='flag-5'>版本</b>查询

    【教程】CW32之使用J-Link烧录.hex文件

    在平时调试时,我们也可以使用DAP-Link、ST-Link等进行烧录和Debug,使用方法和STM32类似。然而当我们手头只有hex文件(或bin文件)时,可以尝试使用J-Link进
    的头像 发表于 04-01 16:56 3469次阅读
    【教程】CW32之使用J-Link烧录.<b class='flag-5'>hex</b><b class='flag-5'>文件</b>

    如何检查QSPI的固件版本

    闪存已安装的固件版本? If my firmware is not updated to version v3.7.5, can I use the flashcp method
    发表于 02-05 06:26

    SMT贴片坐标总对不准?4个快速校正技巧让生产效率翻倍

    23年PCBA一站式行业经验PCBA加工厂家今天为大家讲讲SMT贴片加工如何快速校正SMT坐标?SMT贴片加工快速校正SMT坐标的方法。在
    的头像 发表于 02-02 09:18 828次阅读
    <b class='flag-5'>SMT</b>贴片坐标总对不准?4个快速校正技巧让生产效率翻倍

    请问怎么把.hex文件转化为.c文件吗?

    怎么把.hex文件转化为.c文件吗?
    发表于 01-05 07:12

    固件版本错配:一个让老工程师都栽过跟头的“低级错误”

    。示例:PJ101_HW2.1_SW1.4.3_20230711_Release.hex。所有正式发布固件必须存放于受版本管理的服务器指定目录,个人工作区文件禁止用于生产。2.
    发表于 12-18 10:31

    SMT贴片良率低?这5大检测方法帮你揪出隐藏缺陷!

    一站式PCBA加工厂家今天为大家讲讲PCBA加工中SMT贴片如何检测品质不良?SMT贴片检测品质不良的方法。在PCBA加工中,SMT贴片的品质检测可通过以下
    的头像 发表于 11-27 09:26 1197次阅读
    <b class='flag-5'>SMT</b>贴片良率低?这5大检测<b class='flag-5'>方法</b>帮你揪出隐藏缺陷!

    Bootloader固件升级的步骤

    ,也可以不更新,在项目中,我们通常会对 FW 版本号进行对比,会将 MCU 中的 App 程序更新最新的版本,起到固件升级的效果。更新的话,BootLoader 更新完程序后,跳转到新程序运行;不更新
    发表于 11-19 07:41

    往flash里面烧写的是.elf文件还是.hex文件?裸机应该没办法识别.elf文件

    往flash里面烧写的是.elf文件还是.hex文件?裸机应该没办法识别.elf文件吧?
    发表于 11-05 07:02

    【六岳微LY-F335开发板试用体验】串口烧录

    调试模式。 固件生成 C2prog 是将 HEX 文件烧录进 DSP 中,故首先通过 CCS 生成相应的 HEX 文件。 右击项目,选择
    发表于 09-20 21:12

    rtt连接ESP8266报错(AT+CIPDNS_CUR?),固件版本为2.3.0.0,是什么原因导致的?

    不知道我这个固件版本挺新的,为什么不支持报错(AT+CIPDNS_CUR?) 大佬们那个固件版本支持AT+CIPDNS_CUR?的,可以给我一个支持(AT+CIPDNS_CUR?)的
    发表于 09-12 07:21

    STM32CubeProgrammer v2.9下载hex文件到STM32F446,总是提示报错,怎么解决?

    STM32CubeProgrammer v2.9下载hex文件到STM32F446,串口连接,下载后做verify programming时,总是提示 Error:Download
    发表于 06-12 07:40

    SMT32 TP Tool Windows无法安装驱动怎么处理?

    新手小白,SMT32 TP Tool Windows无法安装驱动怎么处理
    发表于 06-06 06:52