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

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

3天内不再提示

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

jf_52bVvS8T 来源:EE时间 2023-02-01 09:37 次阅读

本文介绍一个小技巧:

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


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

写入到程序中:

04c82988-a19b-11ed-bfe3-dac502259ad0.png

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

04f5363a-a19b-11ed-bfe3-dac502259ad0.png

HEX文件:

051e2928-a19b-11ed-bfe3-dac502259ad0.png

串口打印输出:

053d42a4-a19b-11ed-bfe3-dac502259ad0.png

上述方法的缺点

上述操作可行, 但是有一个缺点:就是生成的bin文件都是满flash大小的, 造成每次烧录都是整个flash读写。相关文章:详解STM32在线IAP升级。

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

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

优化方法

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

方法如下:

056e7144-a19b-11ed-bfe3-dac502259ad0.png

审核编辑:汤梓红

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

    关注

    2264

    文章

    10852

    浏览量

    354094
  • HEX文件
    +关注

    关注

    0

    文章

    26

    浏览量

    12707
  • 编译器
    +关注

    关注

    1

    文章

    1614

    浏览量

    49002
  • MDK
    MDK
    +关注

    关注

    4

    文章

    207

    浏览量

    32005
  • HEX
    HEX
    +关注

    关注

    0

    文章

    36

    浏览量

    16775

原文标题:SMT32的HEX文件里加入固件版本的方法

文章出处:【微信号:EE时间,微信公众号:EE时间】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    smt32做一个解魔方的机器人,需用到哪些知识

    求助:想用smt32做一个解魔方的机器人,需用到哪些知识,难度系数高吗?
    发表于 04-08 16:55

    SMT32资料汇总

    SMT32固件说明!
    发表于 03-26 17:52

    DSP生成hex文件和生成bin文件方法步骤

    DSP生成hex文件、生成bin文件方法平台:win7 + ccs5.5目标板:C2000的28335ccs5.5编译只能生成hex
    发表于 09-10 09:58

    基于SMT32的数码管显示程序

    1、四位数码管的简单介绍因为在学校做项目的时候使用到了数码管显示,所以就编写了一个基于SMT32的数码管显示程序。通过看手册知道这个四位数码管采用TM1637 驱动电路。内部有集成MCU数字电路接口
    发表于 08-11 08:32

    怎样去创建并使用SMT32定时器中断的

    SMT32定时器的原理是什么?STM32CubeMX是如何创建定时器的?怎样去创建并使用SMT32定时器中断的?
    发表于 10-21 06:21

    SMT32定时器的输入捕获是什么意思?其工作流程是怎样的

    SMT32定时器的输入捕获是什么意思?输入捕获的工作流程是怎样的?SMT32定时器是如何去测量PWM频率和占空比的?
    发表于 11-24 06:39

    如何实现sm2算法在smt32单片机上的移植

    终于搞定了sm2算法在smt32单片机上的移植。之前的动态内存分配,在上面总是莫名其妙的崩。不知道堆和栈空间该改多大合适。且总共64K的内存,太受限了。几次想放弃,最后还是坚持了一下,终于搞定啦!看
    发表于 11-26 07:01

    怎样去解决在RK2928烧录固件里加入Demo文件的问题呢

    问题: 有 RK2928 客户要求在烧录固件里面加入测试歌曲,视频等 Demo 文件。但是在固件工厂工具里没有相关修改信息。参考办法:在固件
    发表于 05-30 11:46

    bin文件转换为hex文件操作步骤解析

    在做单片机开发时,用不同的下载工具,要求下载的固件格式也不一样,有的要求是HEX文件,有的则要求是BIN文件,如果只有一个BIN文件如何将它
    发表于 11-14 09:04 7.8w次阅读
    bin<b class='flag-5'>文件</b>转换为<b class='flag-5'>hex</b><b class='flag-5'>文件</b>操作步骤解析

    stm32之.hex 文件

    的output文件夹中找到编译后生产的. hex 文件; 用 notepad++ 或者 UltraEdit 打开 程序 的.hex文件
    发表于 04-20 09:28 4096次阅读
    stm32之.<b class='flag-5'>hex</b> <b class='flag-5'>文件</b>

    如何使用MDK编译器让STM32程序HEX文件加入固件版本信息

    本文介绍一个小技巧: 使用MDK编译器,让STM32程序HEX文件加入固件版本信息。 代码 代码如下
    的头像 发表于 06-23 15:14 3954次阅读
    如何使用MDK编译器让STM32程序<b class='flag-5'>HEX</b><b class='flag-5'>文件</b>中<b class='flag-5'>加入</b><b class='flag-5'>固件</b><b class='flag-5'>版本</b>信息

    SMT32HEX文件里加入固件版本方法

    本文介绍一个小技巧:使用MDK编译器,让STM32程序HEX文件加入固件版本信息。
    发表于 02-08 15:28 0次下载
    <b class='flag-5'>SMT32</b>的<b class='flag-5'>HEX</b><b class='flag-5'>文件</b><b class='flag-5'>里加入</b><b class='flag-5'>固件</b><b class='flag-5'>版本</b>的<b class='flag-5'>方法</b>

    STM32程序HEX文件加入固件版本信息

    使用MDK编译器,让STM32程序HEX文件加入固件版本信息。
    的头像 发表于 08-14 16:13 4271次阅读

    单片机固件加入版本信息的方式有哪些?-1

    开发完MCU软件后,通常都会生成hex文件或者bin文件,用来做固件烧录或者升级,如果用来做产品开发,就涉及到固件
    的头像 发表于 02-15 15:13 1302次阅读
    单片机<b class='flag-5'>固件</b>中<b class='flag-5'>加入</b><b class='flag-5'>版本</b>信息的方式有哪些?-1

    SMT32HEX文件里加入固件版本方法

    SMT32HEX文件里加入固件版本方法
    的头像 发表于 09-18 15:34 615次阅读
    <b class='flag-5'>SMT32</b>的<b class='flag-5'>HEX</b><b class='flag-5'>文件</b><b class='flag-5'>里加入</b><b class='flag-5'>固件</b><b class='flag-5'>版本</b>的<b class='flag-5'>方法</b>