HEX 文件介绍及Hex拼接

一、hex文件:

:020000040000FA
:100000000207B5020803FFFFFFFFFF02080BFFFF17
:10001000FFFFFF020813FFFFFFFFFF02081BFFFFA8
:10002000FFFFFF020823FFFFFFFFFF02082BFFFF78
..............
..............
:1007E00082E43519F583222518F8E43519F9220039
:1007F000000080FBFFFFFFFFFFFFFFFFFFFFFFFF8A
:04000005000007B53B
:00000001FF

省略开头及结尾。

二、行定义

是用ASCII来表示二进制的数值,十六进制数组成的指令或者数据,每一行就是一个hex记录。
1、“:”表示一行的开始;

2、第1、2个字符1和0,即“0x10”表示本行包含的数据长度为16个;

3、第3、4、5、6个字符,固定这4位表示地址,即“0000”表示数据存储的起始地址,表示在0x0000地址开始存放本行包含的16个数据。

4、第7、8个字符,固定这2位表示本行包含数据数据的类型,
‘00’ Data Rrecord:用来记录数据,HEX文件的大部分记录都是数据记录
‘01’ End of File Record:用来标识文件结束,放在文件的最后,标识HEX文件的结尾
‘02’ Extended Segment Address Record:用来标识扩展段地址的记录
‘03’ Start Segment Address Record:开始段地址记录
‘04’ Extended Linear Address Record:用来标识扩展线性地址的记录
‘05’ Start Linear Address Record:开始线性地址记录

5、由前两个字符“10”可知本行的数据长度位16个字节,所有往后的32个字符就是本行包含的数据,每两个字符表示一个字节数据,总共有16个字节数据。跟最前两个字符决定的长度一致。但是这个数据的长度不是固定的,例如最后一行00000001FF,这行包含的数据长度0,没有数据。

6、最后两个字符为本行的校验码。
在这里插入图片描述

通过上面的几点分析可以总结出hex文件的每一行的格式:
<0x3a>[数据长度1Byte][数据地址2Byte][数据类型1Byte][数据nByte][验证码1Byte]<0x0d><0x0a>

三、hex结构

四部分构成:
:020000040000FA 04:程序绝对地址记录
:100000000207B5020803FFFFFFFFFF02080BFFFF17 00:数据记录

:04000005000007B53B 05:
:00000001FF 01:文件结束记录

三、校验的算法:

计算从(0x3a)以后的所有各字节的和模256的余。即各字节二进制算术和,不计超过256的溢出值,然后用0x100减去这个算数累加和,得出的值就是此行校验码。举一个简单的例子,如第一行020000040800F2
0x02+0x00+0x00+0x00+0x04+0x08+0x00 = 0x0E
0x100 – 0x0E = 0xF2.

四、hex拼接:

如将boot与app拼接,可以吧boot中所有00数据 复制到app 00数据之上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值