17397| 4
|
[进阶] 合并HEX文件(合并Bootloader和应用程序) |
本帖最后由 Leotower 于 2013-11-27 20:41 编辑 当烧写加载Arduino Leonardo的Bootloader(Caterina-Leonardo.hex)后,单板重新启动后将会运行Blink程序。这是因为该“Bootloader”其实是Bootloader和Blink应用程序合并而成的。这个合并过程很简单,了解了HEX文件和AVR Flash空间分布就可以理解其原理。 1、HEX文件: http://baike.baidu.com/view/1229888.htm?fromtitle=HEX%E6%96%87%E4%BB%B6&fromid=4131648&type=syn HEX文件是格式化的文本文件,合并两个HEX文件只要用文本编辑器将两个HEX文件的内容放在一起,并将中间的文件结束记录(EOF)去掉即可。当然如果两个HEX文件地址是有重叠等异常情况,则说明要合并的文件之间有冲突。手工合并毕竟效率低,后面讲介绍一个实用工具。 2、Flash空间 对于支持Bootloader的AVR,其应用程序区和Bootloader区示意如下(详细参见datasheet中Boot Loader Support) 3、启动过程 MCU/CPU启动或复位后其运行的第一条指令地址是由硬件决定的。对于支持Bootloader的AVR,若通过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 工具: |
75.12 KB, 下载次数: 3530
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed