首页 » 智能 » 嵌入式进修之HEX转BIN文件_文件_地址

嵌入式进修之HEX转BIN文件_文件_地址

南宫静远 2025-01-17 03:59:12 0

扫一扫用手机浏览

文章目录 [+]

BIN文件:十六进制文件,只包含升级数据文件;地址连续;

占用内存:HEX文件 > BIN文件;

嵌入式进修之HEX转BIN文件_文件_地址 智能

升级韶光:HEX文件 < BIN文件;(HEX文件升级韶光不固定,随着文件大小改变;BIN文件升级韶光固定)

由于文件地址可以跳跃,理论长进级HEX文件比升级BIN文件耗时最短,效率更高;但是实际情形却正好相反。

由于HEX文件是ASCII码,以是须要上位机或主机把HEX文件转成机器可识别的二进制,再根据地址写进去;且实际运用创造,有些芯片跳跃地址写数据会失落败,以是还是须要连续地址写入。
因此须要上位机或主机须要将HEX文件转BIN文件,再通过连续地址将文件写入。

笔者推举大家通过编译器直接天生BIN文件,不仅代码更精简,逻辑也更大略。

推举大家看TI或ST的IAP程序,官方例程都是天生的BIN文件。

那么HEX文件如何转成BIN文件呢,接下来我们一起聊一聊。

HEX数据格式

:08007000760076130048C01B66 // 随机截取一段HEX文件

<0x3a>

:(冒号)

[数据长度1byte]

08(十六进制)

[数据地址2byte]

00 70(偏移地址)

[数据类型1byte]

00:数据

01:文件结束

04:基地址

[数据nByte]

760076130048C01B

[校验1Byte]

66

<0x0d>

<0x0a>

校验和的算法为:打算从0x3A 往后(不包括0x3A)的所有各字节的和模256的余。
即各字节二进制算术和,不计超过256的溢出值,然后用0x100减去这个算数累加和,得出得值便是此行得校验和

校验 = 0xff & (0x100 –(0x08+0x00+0x70+0x00+0x76+0x00+0x76+0x13+0x00+0x48+0xC0+0x1B)= 0x66

HEX文件解析哀求

1、 须要区分基地址和偏移地址,地址为 基地址<<4+偏移地址

2、 中间跳跃的地址须要补0xff

3、 文件结束要把稳,不能漏掉一两字节

hex转BIN文件步骤

读一行数据,校验此行的数据格式是否精确(冒号,校验和,换行符);

缺点,提示“转换失落败,第x行校验失落败”。

精确,读取第4个字节,

值为0x01,表示文件结束,提示“文件转换完成”

值为0x04,更新基地址为 BaseAddress = data<<16

值为0x00,记录地址 Address = BaseAddress+data,数据长度len;数据data

hex转BIN文件举例

第一行::020000040008F2 ->基地址 0x0008

第二行::0400000000498BB078 ->数据 地址为 0x00080000,BIN文件为00498BB0

地址 = 0x00080000

BIN文件为 00498BB0;

预测地址 = 地址+长度/2 = 0x00080000+0x04/2 = 0x00080002

第三行::02000200AAAAA8 ->数据 地址为 0x00080002,数据为AAAA

地址=0x00080002=预测地址,不须要补数据

BIN文件为00 49 8B B0 AA AA

预测地址=0x00080002+0x02/2=0x00080003

第四行::200010008D007029762228C00068761A9A00D50028A403FFF7A496858F40040028A403FF9E->数据 地址为 0x00080010,数据为8D007029762228C00068761A9A00D50028A403FFF7A496858F40040028A403FF

地址=0x00080010>预测地址,BIN文件须要补FF,须要补个数=(地址-预测地址)2=26,

BIN文件为00 49 8B B0 AA AA FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 8D 00 70 29 76 22 28 C0 00 68 76 1A 9A 00 D5 00 28 A4 03 FF F7 A4 96 85 8F 40 04 00 28 A4 03 FF

预测地址=0x00080010+0x20/2 = 0x00080020

第五行::20002000F7A496858F40800028A40FFFF7A496858F40900028A40FFFF7A496858F40A000CD->数据 地址为 0x00080020,数据为F7A496858F40800028A40FFFF7A496858F40900028A40FFFF7A496858F40A000

地址=0x00080020=预测地址, 不须要补FF;

BIN文件为00 49 8B B0 AA AA FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 8D 00 70 29 76 22 28 C0 00 68 76 1A 9A 00 D5 00 28 A4 03 FF F7 A4 96 85 8F 40 04 00 28 A4 03 FF F7 A4 96 85 8F 40 80 00 28 A4 0F FF F7 A4 96 85 8F 40 90 00 28 A4 0F FF F7 A4 96 85 8F 40 A0 00

预测地址=0x00080020+0x20/2=0x00080030

结语

以上便是对付HEX和BIN文件差异,以及HEX转BIN文件的方法,看起来还是比较大略的,便是事情量比较大,只要节制了技巧还是不难。
电脑由于内存大,运行速率快,以是没啥压力;如果通过MCU自己去解析就很慢也比较难熬痛苦。

对付在线升级的运用环境,笔者还是希望大家多多利用BIN文件;TI和ST都供应了非常大略的天生BIN文件的方案,希望大家多多参考。

好了,本日就和大家分享到这里,有什么想说的,一起来评论区聊聊吧!

标签:

相关文章

芯片的艰难之路?_芯片_积电

台积电是张忠谋一手打造的帝国,以往芯片都是美欧设计,再自己制作,然后封装,节制设计就拥有芯片王国,美欧为了保护,以及鼓励设计行业提...

智能 2025-01-17 阅读0 评论0