Hex文件如果用特殊的程序来查看( notepad++)。打开后可发现,真个文件以行为单位,每行以冒号开头,内容全部为16进制码。Hex文件可以按照如下的方式进行拆分来分析其中的内容:
HEX文件格式分析

hex文件每一行的数据格式为:

冒号 数据长度 存储地址 数据类型 数据内容 校验值
1字节 2字节 1字节 n字节 1字节

接下来我们以“:020000040001f9”分析它们数据格式之间的关系

1、冒号

冒号对于文件本身来说没有参考意义,有兴趣的可以去研究相关资料

2、数据长度

如图所示
HEX文件格式分析
该列都代表数据长度,即该行数据内容的长度值
所以第一行的数据内容长度为2字节,第2行数据内容的长度为10字节,以此类推

3、存储地址

HEX文件格式分析
上图红色框中的都是表示数据内容在flash中的存储地址,由于存储地址只占有2个字节所以最大只能到64K,显然,对于超过64K的数据就不能编码存储地址,因此为了可以保存高地址的数据,就有了Extended Linear Address Record(下面的数据类型会讲解)。如果这行的数据类型是0x04,那么,这行的数据内容就是随后数据的基地址。

存储地址 分为偏移地址和绝对地址

也就是说hex文件中存储地址位存储的可能是偏移地址也可能是绝对地址
如何判断是偏移地址还是绝对地址?

一般从打开的hex文件整体格式来说主要取决于第一行的代码
如果看到数据类型位的值是“04”那么04后面的数据内容则为存储后面数据的基地址,例如:
HEX文件格式分析
那么实际数据的存储地址:(基地址<<16) | 偏移地址
那么第二行数据内容的存储地址我们可以得出:
address: (0x0001 << 16) | 0xc000 = 0x0001c000;
所以第二行数据内容的实际存储地址为:0x0001c000;
如果第一行没有04类型的数据则一般存储地址位则保存绝对地址,例如:
HEX文件格式分析
可知第一行数据内容的存储地址为:0x0000; 第二行数据内容存储地址为:0x0020;

4、数据类型

数据类型共分为以下几类:

数据类型 英文解释 中文解释
00 Data Record 该类型后面的值为数据内容
01 End of File Record 该类型后面的值为文件结束标志
02 Extended Segment Address Record 该类型后面的值为扩展段地址
03 Start Segment Address Record 该类型后面的值为开始段地址
04 Extended Linear Address Record 该类型后面的值为扩展线性地址
05 Start Linear Address Record 该类型后面的值为开始线性地址

HEX文件格式分析
HEX文件格式分析

5、数据内容

数据内容没什么好说的就是flash实际存储的数据
HEX文件格式分析
以上红框中都为数据内容

6、校验值

从hex文件格式可知每1行都有校验值,每一行的最后一个字节都为校验值
HEX文件格式分析
校验值计算方法:
0x100 - (该行数据所有的数据的累加和%256)
例如::020000040001F9

0x100 - ((0x02+0x00+0x00+0x04+0x00+0x01)%256) = 0xf9

相关文章:

  • 2021-12-14
  • 2021-12-13
  • 2022-12-23
  • 2022-02-05
  • 2022-01-15
  • 2021-06-02
  • 2022-02-15
猜你喜欢
  • 2021-10-14
  • 2022-02-04
  • 2021-03-31
  • 2021-12-06
相关资源
相似解决方案