MCUOTA方案中,BootLoader与APP如何合并?

芯片之家 2025-02-13 12:15
前几天我们让deepseek做了一个生成单片机OTA的bootloader与APP,那么最后量产一次性烧录的时候两个固件要烧录两次吗?
还在为嵌入式软硬件开发头疼?试用DeepSeek带你快速上手,效率飙升!(点击阅读)

1、前言

嵌入式固件一般分为BootLoader和App,BootLoader用于启动校验、App升级、App版本回滚等功能,BootLoader在cpu上电第一阶段中运行,之后跳转至App地址执行应用程序。

因此,在发布固件的时候,会存在BootLoader固件和App固件;此时我们期望是将BootLoader固件和App固件合并成为一个固件,这样在量产时只需烧录一次即可。

2、传统方式

一些传统的方法都是“土办法”,没什么毛病,但比较繁琐。项目种类增加,或者版本发布频繁时更加体现出繁琐性,且易出错,操作稍微失误可能导致固件不完整;烧录不完整的固件,机子变“砖头”。

  • 烧录两次,分别烧录BootLoader和App固件
  • 烧录固件到芯片后,再从芯片读取固件,另存为hex文件
  • 手动复制、合并固件
  • BootLoader支持App固件传输功能的,只烧录BootLoader,后期再升级App

3、高效方式

我们目标是通过自动化脚本合并生成一个发布固件,提高效率和确保固件的完整性。

3.1 合并文件

Linux下的脚本我们用得很多,其实Windows的脚本也非常优秀,利用Windows的脚本可以快速实现增、删、查、改文件。常用Windows脚本命令如下。

  • 合并两个文件:copy /b
  • 重命名文件:ren
  • 删除文件:del

很显然,我们利用其合并命令,只需一条指令即可将BootLoader和App文件合并。

例子:

假设当前目录存在Boot.bin和App.bin文件,合并后文件命名为Firmware.bin。

copy /b .\Boot.bin + .\App.bin Firmware.bin

注:Windows的目录路径为反斜杠,与Linux不同。

3.2 bin转hex

我们知道,二进制(bin)文件是不存在地址信息的,cpu上电执行并不一定是从地址0开始执行代码,如STM32芯片起始执行地址为0x8000000。

因此不能通过串口工具烧录bin文件,只能通过J-link或者ST-link烧录,并且在烧录前指定存储起始地址。因此,将bin文件转换为hex文件是有必要的。

bin转hex方式:

  • 使用jflash工具,把合并后的bin文件,使用jflash打开,另存为hex格式文件

  • 将bin文件烧录置芯片,读取出来,另存为hex文件

  • 自己动手写一个bin转hex工具

  • 借助第三方bin转hex工具

前两者太繁琐,效率低下;第三个比较灵活,但需要花点时间;如果使用优秀的现成工具是最快捷的办法。推荐使用“srec_cat.exe”工具,可以结合Windows脚本一起使用。

3.2.1 srec_cat工具

srec_cat一个功能非常强大的文件合并、转换工具,支持功能众多,包括:

  • 文件合并
  • 文件分割
  • bin转hex
  • hex转bin
  • 数据填充
  • CRC校验

此外,还存在srec的系列工具,文件比较工具 srec_cmp.exe和文件信息查看工具 srec_info.exe,可以从文章后面官方网站下载使用。

文件合并

命令格式:

srec_cat.exe <源文件0> <文件类型> <源文件1> <文件类型> <目标文件> <文件类型>

例子:

srec_cat.exe source0.bin -Binary source1.bin -Binary -o merge.bin -Binary
srec_cat.exe source0.hex -Intel source1.hex -Intel -o merge.hex -Intel

如果BootLoader和App生产的文件为hex格式,可以直接使用该命令合并为一个hex文件,注意地址的连续性。

bin转hex

命令格式:srec_cat.exe <-Binary> <-offset> <偏移地址> <-Output> <-Intel>

例子:

将Boot.bin和App.bin合并的Firmware.bin转换为hex格式文件。

srec_cat.exe Firmware.bin -Binary -offset 0x8000000 -o Firmware.hex -Intel

0x8000000,是STM32的起始执行地址

更多的srec应用和工具下载详见官方网站:http://srecord.sourceforge.net/download.html

3.3 完整示例

第一步,在需要生成固件目录新建一个txt文件 第二步,键入如下内容(Boot固件和App固件可以指定目录)

copy /b .\Boot.bin + .\App.bin Firmware.bin
srec_cat.exe Firmware.bin -Binary -offset 0x8000000 -o Firmware.hex -Intel
del Firmware.bin

第三步,重命名txt文件为".bat"后缀文件,即是Windows可执行脚本的文件类型 第四步,双击运行脚本,即可生成目标文件 出现任何目标文件生成失败的情况,检查相关源文件是否存在,路径是否正确。

3.4 举一反三

以此类比,存在多个App文件的情况,可以通过该方式分别进行合并出一个固件。

另外,实际项目中,经常会使用内部flash空闲扇区保存一些设备参数信息,如校准系数、设备地址、序列号等信息,我们可以将参数信息保存为一个bin文件,通过该方式和固件合并,这样量产时将参数和固件一并写入,提高生产效率!

声明:本文素材来源网络,版权归原作者所有。如涉及作品版权问题,请与我联系删除。

往期推荐

STM32在线升级OTA,看这一篇就够啦~


还在为嵌入式软硬件开发头疼?试用DeepSeek带你快速上手,效率飙升!


很强大!低耦合高内聚的MCU实用软件框架


软件神器TortoiseGit,晓宇姐姐教你使用图形化方式管理单片机程序版本!

评论
  • 一、引言随着汽车新四化“电动化、网联化、智能化、共享化”全面推进,几乎每一项新技术的诞生都离不开汽车电子的身影。其中,电子控制单元(Electronic Control Unit,ECU)作为汽车电子控制系统的核心。与传统ECU相比,采用AUTOSAR(AUTomotive Open System ARchitecture,汽车开放系统架构)这种分层架构,极大降低了汽车嵌入式系统软、硬件耦合度。图1 传统软件架构与AUTOSAR架构对比此外,随着国内新能源汽车相关控制器正向开发需求的增长,AUT
    康谋 2025-06-25 10:10 78浏览
  • 一、 平流层超压气球:极端环境下的监测挑战  平流层超压气球长期悬浮于18-40公里高空,持续承受-70℃至+85℃的剧烈温变、不足地面10%的低压环境(30km高度约10hPa)及强宇宙辐射。传统MEMS压阻传感器在此环境下易出现零点漂移、灵敏度衰减,导致高度控制失准或科学数据失真。  典型案例:2021年印尼弗洛雷斯海7.3级地震监测中,平流层气球需在3000公里外检测次声波引发的微帕级压力波动——相当于海平面气压的百万分之一。此场景对传感器的分辨率与抗干扰能力
    传感器晨穹 2025-06-23 13:58 490浏览
  • 电磁铁损坏通常由电气、机械、环境和操作等多方面因素共同导致。电气系统异常是zui常见的原因,包括电压超标和绝缘失效。电压偏离额定值15%以上容易造成线圈过热烧毁,而潮湿环境则会导致绝缘电阻骤降,引发击穿故障。机械结构问题也不容忽视,铁芯卡滞、异物堵塞以及超负荷运行都会加速部件磨损,影响电磁铁寿命。环境因素对电磁铁的影响主要体现在温湿度和散热条件上。高温环境会加速绝缘材料老化,潮湿则可能导致非防水型号的性能下降。此外,散热设计缺陷或连续通电时间过长都会使线圈温度异常升高。操作和维护不当同样会引发故
    锦正茂科技 2025-06-23 11:11 380浏览
  • 在智能制造浪潮席卷全球的今天,MES系统(制造执行系统)作为连接企业管理层与车间生产层的“神经中枢”,其重要性日益凸显。它能有效打通信息孤岛,实现生产全流程透明化、可控化与智能化,是企业迈向“数字化智造”的核心引擎。面对众多国内厂商,如何选择最适合的MES系统?本文将为您揭晓综合实力领先的五大国内MES厂商,并提供实用的选型策略。 国内五大MES系统厂商综合实力排名 1.  盘古信息l 核心优势:盘古信息IMS智能制造系统,通过智能柔性计划排程系统,实时展
    盘古信息IMS 2025-06-24 16:47 148浏览
  • 摘要核工业安全监测对压力传感器的精度、稳定性及抗极端环境能力提出了严苛要求。石英谐振压力传感器凭借其基于石英晶体压电效应的独特工作原理,在高精度测量、抗辐照、宽温域适应性等方面展现出显著优势。本文系统解析石英谐振压力传感器在核工业中的核心应用场景,包括反应堆压力容器监测、管道泄漏检测及放射性物质运输监控,并结合晨穹石英谐振压力传感器的技术特性与实际案例,论证其在核安全领域的不可替代性。研究表明,晨穹 RPS01 系列石英绝压压力芯体通过全金属密封封装、双通道温度补偿及 AI 自校准算法
    传感器晨穹 2025-06-23 10:43 335浏览
  • 射频同轴连接器材料领域近年来取得显著突破,主要体现在导体、绝缘介质和结构件三个方面。在导体材料方面,高强度铜铍合金的应用大幅降低了信号失真,其热稳定性提升至175℃,特别适合毫米波连接器使用。纳米晶合金的引入使得外壳厚度缩减至0.35mm,同时保持you异的电磁屏蔽性能,为微型化设备提供了可能。绝缘材料方面,交联PEEK等高温聚合物可耐受300℃高温环境,PTFE微粉注塑技术则实现了超薄绝缘层的低损耗传输。复合绝缘结构的一体化成型设计不仅提升了性能,还显著缩短了生产周期。结构件创新包括轻量化航空
    锦正茂科技 2025-06-25 10:02 55浏览
  •  汽车轮胎质量,轮胎胎压,等等,关系到汽车行驶安全,做车人,开车人生命安全,汽车轮胎胎压关系到汽车能否正常行驶,所以时刻监测胎压各种参数非常重要,下面我们对一款胎压监测传感器产品进行拆解和分析:  胎压监测传感器产品技术数据和外观图片介绍如下:胎压监测传感器技术数据如下:电池寿命:≥6年;工作温度:-40℃--+105℃;储存温度:-40℃--+125℃;工作湿度:<90%;频率:314.95MHz&433.92MHz;压力监测范围:0-800kpa;
    开发工匠 2025-06-25 12:07 68浏览
  • 要有效预防电磁铁损坏,需要从电气防护、环境控制、操作规范和定期维护四个方面采取综合措施。在电气防护方面,要严格控制工作电压,确保其与额定值的偏差不超过±15%,对于高压电磁铁还需加装短路保护装置。同时要做好绝缘保护,shou次使用前必须测量绝缘电阻,在潮湿环境中要增加检测频率。环境控制同样重要,要根据工作环境的温湿度条件选择合适的电磁铁型号,ji端环境下要采取特殊防护措施。运输过程中要做好缓冲包装,避免机械损伤。操作时要注意控制通电时间,监测线圈温度,避免超负荷运行。多台电磁铁同时使用时,要保证
    锦正茂科技 2025-06-23 11:35 417浏览
  • 记得是1989年在中美合资企业工作时,质检部任职,一次清理寿命实验后不要了的产品时,看到即将扔掉的有好有坏的产品中一个自己经手过的还可以使用的万用表,就留了一个,拿回家使用,都正常,后来,用的少了,放在柜子里,没有拿出电池,时间长了,电池泄露,腐蚀的一塌糊涂!做了清除,这是2017年的事了。这是2017年当时拆开来的状况:用酒精做了仔细的清洗,接下来就想着到哪儿找到可以利用的电池极片呢?买也不容易,总想着废物利用,手头有其它废弃的产品上拆下了保留着的,都不适用,反正不急。正好家人我们要外出一段时
    自做自受 2025-06-24 22:57 233浏览
  • 一、引言自5G正式商用以来,全球通信产业经历了前所未有的变革。5G以其超高带宽、超低时延、海量连接的能力,使得智能制造、自动驾驶、AR/VR、物联网等新兴产业得以快速落地。但随着5G的广泛应用,其在实际部署过程中仍面临一系列挑战:网络覆盖有限、边缘性能不足、上行能力偏弱等问题日益凸显。为解决这些瓶颈并为6G的演进奠定基础,3GPP于Rel-18阶段提出了“5G Advanced(5G-A)”标准。5G-A不仅是5G的增强版本,更是迈向6G的关键过渡技术,其将深度融合通信、感知、智能、控制、安全等
    用户1750544933504 2025-06-22 21:15 8214浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦