17397浏览
查看: 17397|回复: 4

[进阶] 合并HEX文件(合并Bootloader和应用程序)

[复制链接]
本帖最后由 Leotower 于 2013-11-27 20:41 编辑

当烧写加载Arduino Leonardo的Bootloader(Caterina-Leonardo.hex)后,单板重新启动后将会运行Blink程序。这是因为该“Bootloader”其实是Bootloader和Blink应用程序合并而成的。这个合并过程很简单,了解了HEX文件和AVR Flash空间分布就可以理解其原理。


HEX文件是格式化的文本文件,合并两个HEX文件只要用文本编辑器将两个HEX文件的内容放在一起,并将中间的文件结束记录(EOF)去掉即可。当然如果两个HEX文件地址是有重叠等异常情况,则说明要合并的文件之间有冲突。手工合并毕竟效率低,后面讲介绍一个实用工具。


2Flash空间

对于支持BootloaderAVR,其应用程序区和Bootloader区示意如下(详细参见datasheetBoot Loader Support
合并HEX文件(合并Bootloader和应用程序)图1


3、启动过程
MCU/CPU启动或复位后其运行的第一条指令地址是由硬件决定的。对于支持BootloaderAVR,若通过FUSE位选择了Bootloader区,则第一条指令地址为Bootloader的起始地址。在Bootloader运行结束后通过跳转指令跳转到0地址(由程序编写而定),开始运行应用程序。



***

这里为大家介绍一个实用小工具,可以将两个HEX文件合并,效率高而可靠。当然该工具不对地址是否重叠进行检查。  工具的作者是Lisper。

运行环境:windows 虚拟DOS
命令格式:请在cmd串口下使用帮助cathex /?



D:\tools\cathex>cathex /?
this program use for connect twohexfile
created bylisper<leyapin@gmail.com> from DFRobot
It will delete the last row of infile1
please input:
cathex infile1 infile2 outfile

工具:


cathex.rar

75.12 KB, 下载次数: 3530

Eric  初级技神

发表于 2013-11-27 10:42:58

拿去学习学习~:)
回复

使用道具 举报

Rockets  NPC

发表于 2013-11-27 11:35:55

这个有什么作用呢?
回复

使用道具 举报

lisper  中级技匠

发表于 2013-11-27 13:57:02

怎么没有可执行程序文件?
回复

使用道具 举报

Leotower  中级技师
 楼主|

发表于 2013-11-27 20:41:47

lisper 发表于 2013-11-27 13:57
怎么没有可执行程序文件?

已经更新,谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail