不用工具,合并 Bootloader 和 APP 文件就是这么简单!

开发 开发工具
只要你经历过稍微复杂一点的项目,一般都会要求 BOOT 和 APP 两个程序,即是为了方便客户功能升级,也是为了咱自己解 BUG,所谓好处多多。

[[440222]]

本文转载自微信公众号「鱼鹰谈单片机」,作者鱼鹰Osprey。转载本文请联系鱼鹰谈单片机公众号。

只要你经历过稍微复杂一点的项目,一般都会要求 BOOT 和 APP 两个程序,即是为了方便客户功能升级,也是为了咱自己解 BUG,所谓好处多多。

刚毕业那年,鱼鹰接手的项目中就需要 BootLoader,为此,鱼鹰写了几篇相关的笔记《固件升级经验总结》《STM32固件升级之基础知识(一)》(关注公众号,菜单栏中有合集,或点击蓝色字体查看)。

这里面介绍的升级知识不管对初学者还是有经验的道友来说,都有一定的参考价值。特别是里面对一些特殊要求的处理,更有巧妙的设计(比如最后才更新 APP 前 8 个字节,比如传参等问题)。

今天鱼鹰继续介绍如何合并 BOOT 和 APP 两个程序,方便一次下载。

在网上,有各种各样的合并方法,有通过 J-flash 工具的,有通过写入单片机再读回来的,有自己写合并程序的,或者鱼鹰介绍的专业工具 《功能强大的 HEX 开源转换工具,你值得拥有》,可谓八仙过海,各显神通。

以上方法大部分方法都要使用工具,或者过程繁琐。那么有没有一种快速、简单、方便的不需要借助工具的合并方法呢?当然有了。

今天鱼鹰就介绍这个史上最简单的方法(这可是老工程师传授的技巧):

手工法

1、复制bootlaoder 的 HEX 文件后用记事本打开;

2、删除最后一行(一般是 :00000001FF);

3、打开 APP 的HEX 文件;

4、复制所有 APP 文件的内容,粘贴到第二步文件修改后的 Boot 文件末尾。

5、保存修改后的 boot 文件,这个就是合并后的文件了。

搞定!!没有借助任何工具(记事本算不?),在没有工具的情况下,最快的解决方案!!!

自动法

既然只是对文件的删除、追加操作,我们完全可以用脚本代替,所以鱼鹰写了一个非常非常简单的脚本,帮助我们自动完成上面的操作(本来想用windows 的批处理,可惜太菜了,搞不定,只能用 shell 了,如果有道友会这些操作,欢迎留言,这样就更简单了)。

第一步,先安装 git bash,这个工具应该开发人员基本都安装了才是,就如 MDK 一样,毕竟 git 这么火。

然后献上鱼鹰编写的脚本:

  1. #!/bin/bash 
  2. #"C:\Program Files\Git\bin\sh.exe" --login -i -c "./boot_app.sh"  # MDK 中执行的命令 
  3.  
  4. boot_name_file_hex=./bootloader.hex          #  BOOT 文件所在位置和名称 
  5. app_name_file_hex=./Objects/app.hex           #dir_file_name_hex=`find ${app_dir_file_hex} -name "*.hex"
  6. boot_app_name_file_hex=./mege-app-boot.hex  
  7.  
  8. cp ${boot_name_file_hex}  ${boot_app_name_file_hex}     # 复制新文件 boot 文件 
  9. sed -i '$d' ${boot_app_name_file_hex}               # 删除最后一行 
  10. cat ${app_name_file_hex} >>  ${boot_app_name_file_hex} # 追加文件 

将上面的文件保存为 boot_app.sh ,然后把它放在工程文件同级目录下,比如这样:

最后工程配置一下:

设置命令(在上面的文件开始处已注释)

  1. "C:\Program Files\Git\bin\sh.exe" --login -i -c "./boot_app.sh" 

注意上面 "C:\Program Files\Git\bin\sh.exe" 路径和自己安装的 git 工具有关可以自行修改,boot 和 app 文件名也是如此。

完成以上操作后,编译后就会自动在工程目录下生成 mege-app-boot.hex 文件,这就是你要的合并文件了(名字可以随意取)。

关于如何下载

既然说不要工具,有种下载也不用 j-flash 或 STM32 ST-LINK Utility 呀!

安排上:《如何使用 KEIL 下载 HEX 文件?》

这样不就一条龙服务了嘛,从如何制作 bootloader 到如何合并 到下载,大功告成。

关于如何优化更新

其实使用调试器更新固件还是挺麻烦的,有没有更简单、更傻瓜的操作呢?

 

当然有,那就是一键拖曳烧录,就像拷贝文件一样简单,这个估计很多人有了解,也可能实现过,鱼鹰对此也挺感兴趣的。后期有时间鱼鹰也去搞搞,争取开源一个让大家都学习一下,对此感兴趣的话,欢迎关注鱼鹰呐。

 

责任编辑:武晓燕 来源: 鱼鹰谈单片机
相关推荐

2017-11-28 15:29:04

iPhone X网页适配

2021-05-24 10:50:10

Git命令Linux

2020-06-16 10:57:20

搭建

2024-08-28 08:42:21

API接口限流

2016-07-22 15:12:12

Win10技巧重装

2020-04-20 10:47:57

Redis数据开发

2023-08-26 21:42:08

零拷贝I/O操作

2021-12-27 07:31:37

JavaNeo4J数据库

2021-02-26 10:21:35

比特币投资金融

2021-10-28 19:23:27

界面嵌入式 UI

2023-07-27 08:26:36

零拷贝I/O操作

2019-05-13 08:24:58

数据库MySQLInnoDB

2024-02-27 08:14:51

Nginx跨域服务

2013-06-09 10:34:24

华为网络规划企业ICT

2020-07-27 07:00:00

超文本链接Word文档网络

2024-09-09 11:35:35

2017-11-06 16:30:33

开源

2020-06-17 11:42:50

异常解析器Spring MVC

2023-02-07 11:44:02

2019-05-30 05:19:30

MySQL优化语句执行
点赞
收藏

51CTO技术栈公众号