当前位置:首页 > 嵌入式 > 嵌入式微处理器
[导读]1、前言嵌入式固件一般分为BootLoader和App,BootLoader用于启动校验、App升级、App版本回滚等功能,BootLoader在cpu上电第一阶段中运行,之后跳转至App地址执行应用程序。因此,在发布固件的时候,会存在BootLoader固件和App固件;此时我...

1、前言

嵌入式固件一般分为BootLoaderApp,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文件,通过该方式和固件合并,这样量产时将参数和固件一并写入,提高生产效率!

来源:https://acuity.blog.csdn.net/article/details/106724373

END

版权归原作者所有,如有侵权,请联系删除。
嵌入式ARM

扫描二维码,关注更多精彩内容

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

亚特兰大2025年11月19日 /美通社/ -- 全球动态固件领导者AMI®欣然发布AMILiA™。这款先进的AI驱动固件开发支持平台,旨在彻底改变固件工程师和开发者与固件知识库及支持工具交互的方式。 AMI企...

关键字: 固件 AI AN 开发者

深圳2025年2月20日 /美通社/ -- 全球紧固和装配解决方案提供商Bossard柏中在深圳成立全资子公司——柏中紧固件(广东)有限公司(以下简称"柏中广东公司")。这是继柏中紧固件(上海)有限公...

关键字: SAR 固件 OS 智能工厂

深圳2025年1月29日 /美通社/ -- 中金科工业有限公司(纳斯达克股票代码:ZJK)(以下简称"中金科工业"或"公司"),一家专注于人工智能(AI)基础设施及智能科技领域的高科技精密零件与五金制造商,今日宣布其于2...

关键字: COM INDUSTRIAL AI 固件

浙江舟山2025年1月21日 /美通社/ -- 近日,省经济和信息化厅正式公布了2024年浙江省5G全连接工厂名单,中之杰智能的标杆案例——舟山7412工厂重磅入选,成为舟山市首家获此殊荣的企业。这不仅是舟山工业发展的一...

关键字: 5G 离散 固件 汽车

北京2024年12月18日 /美通社/ -- 日前,浪潮信息升级元脑服务器智能固件管理平台InBry,通过软硬件协同系统优化BMC固件架构,率先支持全球最新BMC双节点管理、协处理器多任务管理等新特性,实现BM...

关键字: 固件 CPU 智能化 协处理器

北京2024年12月15日 /美通社/ -- 日前,OCTC发布《BMC开放固件产业报告》,该报告由中国电子技术标准化研究院、阿里云、浪潮信息等机构、企业联合编撰,深度剖析了传统 BMC 在智能时代下面临的挑战,并全面解...

关键字: OCT 固件 TC PEN

PTM赋能电信云服务 广州2024年12月4日 /美通社/ -- 12月3日,2024中国电信数字科技生态大会在广州开幕,江波龙首次亮相,全面展示其全栈定制能力,以及基于PTM商业模式的电信产业相关存储产品和行业典型案...

关键字: 中国电信 全栈 固件 EMMC

北京2024年9月5日 /美通社/ -- 近年来随着云计算、大数据特别是大模型的快速发展,数据中心规模不断扩张,产生了更多的服务器管理需求。传统BMC虽然可以实现部分管理,但是在快速迭代的当今尤其是在AI技术的驱动下,存...

关键字: 固件 英特尔 阿里云 PEN

上海2024年9月5日 /美通社/ -- 9月4日,砺星Leetx参加由GAF螺丝君举办的全球紧固-连接-装配技术大会并荣获"技术创新奖"。 此次大会是紧固连接行业的重要盛会,旨在探讨拧紧装配技...

关键字: 创新奖 ETX 智能化 固件

北京2023年8月16日 /美通社/ -- 近日,在备受业界关注的OCP China Day 2023(开放计算中国技术峰会)上,面对多元算力平台运维管理方面的重重挑战,浪潮信息正式发布了基于OpenBMC的I...

关键字: 固件 PEN 开源 芯片
关闭