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

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

    关注

    114

    文章

    3631

    浏览量

    79543
  • 编译器
    +关注

    关注

    1

    文章

    1577

    浏览量

    48617
  • HEX
    HEX
    +关注

    关注

    0

    文章

    34

    浏览量

    16712
收藏 人收藏

    评论

    相关推荐

    DIY发光圣诞树相关文件(PCB板、hex文件

    电子发烧友网站提供《DIY发光圣诞树相关文件(PCB板、hex文件).rar》资料免费下载
    发表于 11-10 09:56 4次下载
    DIY发光圣诞树相关<b class='flag-5'>文件</b>(PCB板、<b class='flag-5'>hex</b><b class='flag-5'>文件</b>)

    单片机Hex文件的格式详解

    玩单片机的朋友都会使用hex文件作为烧录文件。那么当我们写一个在线升级软件要支持hex文件的升级,就需要通过
    的头像 发表于 09-24 11:50 2537次阅读
    单片机<b class='flag-5'>Hex</b><b class='flag-5'>文件</b>的格式详解

    单片机中hex、bin文件的区别

    单片机中hex、bin文件的区别
    的头像 发表于 09-21 17:38 1384次阅读
    单片机中<b class='flag-5'>hex</b>、bin<b class='flag-5'>文件</b>的区别

    5个smt物料盘点方法

    smt物料盘点方法
    的头像 发表于 09-05 10:06 517次阅读

    414j MegaRAID SCSI固件版本

    电子发烧友网站提供《414j MegaRAID SCSI固件版本.zip》资料免费下载
    发表于 08-22 15:14 0次下载
    414j MegaRAID SCSI<b class='flag-5'>固件</b><b class='flag-5'>版本</b>

    单片机固件如何加入版本信息

    时我们写程序,通常都会备注软件版本,那么,怎么在单片机中保存版本信息呢? 方法其实有很多,但基本原理都是在指定存储区域(Flash)中写入软件版本信息。
    发表于 08-22 09:16 197次阅读
    单片机<b class='flag-5'>固件</b>如何<b class='flag-5'>加入</b><b class='flag-5'>版本</b>信息

    固件和10.2.370.15引导代码版本

    电子发烧友网站提供《固件和10.2.370.15引导代码版本.zip》资料免费下载
    发表于 07-29 10:34 0次下载
    <b class='flag-5'>固件</b>和10.2.370.15引导代码<b class='flag-5'>版本</b>

    MegaRAID SCSI固件版本514问

    电子发烧友网站提供《MegaRAID SCSI固件版本514问.zip》资料免费下载
    发表于 07-29 10:14 0次下载
    MegaRAID SCSI<b class='flag-5'>固件</b><b class='flag-5'>版本</b>514问

    1L51 MegaRAID SCSI固件版本

    电子发烧友网站提供《1L51 MegaRAID SCSI固件版本.zip》资料免费下载
    发表于 07-29 10:04 0次下载
    1L51 MegaRAID SCSI<b class='flag-5'>固件</b><b class='flag-5'>版本</b>

    l49 MegaRAID SCSI固件版本

    电子发烧友网站提供《l49 MegaRAID SCSI固件版本.zip》资料免费下载
    发表于 07-28 15:06 0次下载
    l49 MegaRAID SCSI<b class='flag-5'>固件</b><b class='flag-5'>版本</b>

    MegaRAID固件在Readme文件提示

    电子发烧友网站提供《MegaRAID固件在Readme文件提示.zip》资料免费下载
    发表于 07-28 11:43 0次下载
    MegaRAID<b class='flag-5'>固件</b>在Readme<b class='flag-5'>文件</b>提示

    ClockMatrix 固件版本 v4.9.5 发行说明

    ClockMatrix 固件版本 v4.9.5 发行说明
    发表于 06-29 18:59 0次下载
    ClockMatrix <b class='flag-5'>固件</b><b class='flag-5'>版本</b> v4.9.5 发行说明

    嵌入式的HEX文件怎么来的

    单片机下载程序需要将c文件通过编译器编译成o文件通过连接器连接为一个main的o文件,再将main文件生成hex
    的头像 发表于 05-25 15:05 1847次阅读
    嵌入式的<b class='flag-5'>HEX</b><b class='flag-5'>文件</b>怎么来的

    ClockMatrix 固件版本 v4.9.5 发行说明

    ClockMatrix 固件版本 v4.9.5 发行说明
    发表于 05-12 19:08 0次下载
    ClockMatrix <b class='flag-5'>固件</b><b class='flag-5'>版本</b> v4.9.5 发行说明

    有没有办法在ESP8266上存储默认版本固件,以防新的OTA固件搞砸?

    我成功地将 ESP8266httpUpdate 库用于使用远程服务器的 OTA 更新。当前固件可以完美抓取新的.bin文件并以新文件重启。有没有办法在 ESP8266 上存储默认版本
    发表于 05-10 10:52