抚州教育网站建设,施工企业如何获取竞争优势,百度认证怎么认证,百度竞价推广怎么收费文章目录 1. 概述2. Hex文件2.1 格式解析2.2 数据类型2.3 举例解析2.4 合并两个Hex文件方法 3. Bin文件3.1 生成方式3.2 合并多个Bin文件方法3.3 打开Bin文件方式3.4 和Hex文件比较 4 总结 1. 概述
Hex文件#xff1a;它是单片机和嵌入式工程编译输出的一种常见的目标文件格式… 文章目录 1. 概述2. Hex文件2.1 格式解析2.2 数据类型2.3 举例解析2.4 合并两个Hex文件方法 3. Bin文件3.1 生成方式3.2 合并多个Bin文件方法3.3 打开Bin文件方式3.4 和Hex文件比较 4 总结 1. 概述
Hex文件它是单片机和嵌入式工程编译输出的一种常见的目标文件格式比如keil就能编译输出hex文件通过烧写工具把它下载到单片机中程序就能在芯片中运行。Bin文件keil就能编译输出Bin文件,当我们需要实现IAP远程升级芯片固件的时候会通过Bootloader程序将Bin文件写到芯片的内部Flash里。相关文档链接 《用文本编辑器记事本合并两个Hex文件 - 详细操作步骤》 《Keil如何生成bin文件 - 附详细操作图文》 《J-Flash合并多个bin文件》 《Keil编译后生成bin文件占用内部Flash的大小RAMROMCodeRO-dataRW-dataZI-data》
2. Hex文件 2.1 格式解析
每行以冒号起始后面每两个字母是一个8bit的16进制数每行的格式:BBAAAATTD……DCC BB 表示本行数据的长度AAAA 表示本行数据存储的地址 TT 表示数据类型 DD 是实际的数据它的长度不定每行以16字节对齐 CC 是校验和计算方法本行所有字节累加和累加和只用低8位取反再加1
2.2 数据类型 数据类型一共有6种形式 00’数据记录Hex文件的大部分记录都是数据记录 01’文件结束记录标识Hex文件的结尾放在文件的最后 02’扩展段地址记录 03’开始段地址记录 04’扩展线性地址记录声明数据存储的高位地址 05’开始线性地址记录线性起始地址指定__main主程序前函数的地址通常可忽略
2.3 举例解析
第一行 :020000040800F2 02 :表示本行数据的长度为20000 :表示本行数据存储的地址 04 :表示数据类型为扩展线性地址记录0800 :因为本行的数据类型为04即0800声明了数据存储的高位地址为0x0800 F2 :校验和计算方法本行所有字节累加和累加和只用低8位取反再加1即0xF20x01 ∼(0x020x040x08)
第二行 :10300000E8740020493100085131000853310008AC 10 :表示本行数据的长度为16可见数据存储以每行16字节对齐3000 :表示本行数据存储的地址低位为0x3000即实际数据的存储地址为0x0800 3000 00 :表示数据类型为数据记录E…8 :因为本行的数据类型为00数据记录DD区即为实际的数据
第五行 :10FFF00004F086FA974890F82D000090954890F804 10 :表示本行数据的长度为16FFF0 :表示本行数据存储的地址低位为0x3010即实际数据的存储地址为0x0800 FFF0
第六行 :020000040801F1 02 :表示本行数据的长度为20000 :表示本行数据存储的地址 04 :表示数据类型为扩展线性地址记录0801 :声明了数据存储的高位地址为0x0801当地址长度超过16bit 即0xFFFF时就需要扩展线性地址记录再次声明新的高位地址
倒数第三行 :0450900004012400F3 04 :表示本行数据的长度为45090 :表示本行数据存储的地址低位为0x5090即实际数据的存储地址为0x0801 5090 00 :表示数据类型为数据记录此行长度不足0x10只有0x04这代表已经到了Hex文件数据的末尾了
倒数第二行 :04000005080031318D 04 :表示本行数据的长度为40000 :表示本行数据存储的地址 05 :表示数据类型为开始线性地址记录此行内容通常可忽略官方解释为 线性起始地址指定__main主程序前函数的地址但不指定启动代码的地址启动代码通常在调用 SystemInit() 后调用__main。奇数线性起始地址表示 __main 是为 Thumb 指令集编译的。线性起始地址记录可以出现在十六进制文件的任何地方。在大多数情况下可以忽略该记录因为它不包含闪存编程所需的信息。
倒数第一行 :00000001FF 00 :表示本行数据的长度为00000 :表示本行数据存储的地址 01 :表示文件结束记录标识Hex文件的结尾放在文件的最后
2.4 合并两个Hex文件方法
当开发项目包含IAP升级芯片固件的功能时需要把Bootloader和App两段代码的Hex文件合并以后再烧写具体操作方法可参考以下内容 《用文本编辑器记事本合并两个Hex文件 - 详细操作步骤》
3. Bin文件
3.1 生成方式 《Keil如何生成bin文件 - 附详细操作图文》
3.2 合并多个Bin文件方法 《J-Flash合并多个bin文件》
3.3 打开Bin文件方式 使用十六进制文件编辑器我用的是Uedit32.exe打开如下图所示
3.4 和Hex文件比较 对比上面打开的Hex文件里的内容可发现Bin文件内容正好是Hex文件中数据段里的实际数据内容没有数据长度、存储地址、校验等附加内容Bin文件内容直接就是闪存内的代码文件是没有任何附加格式的二进制原始文件
4 总结 授人以鱼不如授人以渔 这里只提供钓鱼方法而不是一条完整的鱼 有问题欢迎留言交流 / 指正o( * ▽ * )ブ