硬件基础之HEX文件格式
Posted 海洋想想
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了硬件基础之HEX文件格式相关的知识,希望对你有一定的参考价值。
文章目录
前言
hex文件用于烧写到单片中的一种格式。本文主要讲解其格式的意义。
本文主要参考资料:
格式解析
首先,我们可以用记事本打开一个hex文件。如下:
上图展示的是一个DSP跑马灯程序生成的HEX文件。通过观察可以发现:所有的数据都是以:开始,内容都是16进制数。其具体的格式如下所示:
0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
: | 数据长度 | 偏移地址 | 数据类型 | 数据 | 校验 |
所占字节 | 1 | 2 | 1 | n | 1 |
其中,数据类型的取值含义为:
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)
校验方式为:
所有字节的数据和模256的余数。
也可以理解为,所有字节数据的负数和,且取低8位。
可以计算所有字节的二进制算数和,不超过256的溢出值,再用0x100减去这个算数和。
距离说明
:020000040032C8
:08000000190156C3FFFF0006C1
:048000000072887012
:20800400761BFFF0E20000BDE63006002942561676256F00761BFFF0E20000BDE630060005
...
:00000001FF
选取HEX文件的前四行和最后一行数据。先看第一行数据
:020000040032C8
其对应表格中为:
0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
: | 数据长度 | 偏移地址 | 数据类型 | 数据 | 校验 |
所占字节 | 1 | 2 | 1 | 2 | 1 |
: | 02 | 0000 | 04 | 0032 | C8 |
第一部分:02。表示其数据长度为02,对应数据位0032,占用两个字节。
第二部分:0000。表示偏移地址为0000。
第三部分:04。表示数据类型为04,对应前文可知数据类型为: 扩展线性地址记录(Extended Linear Address Record)。
第四部分:数据内容为:0032。也就是扩展线性地址为0032。
第五部分:校验位:C8。其计算方法为:
0xC8=(0x0100-(0x02+0x00+0x00+0x40+0x00+0x32))&0x00FF
同样,可以如下计算:
0xC8=(-0x02-0x00-0x00-0x40-0x00-0x32)&0xFF
综上,该帧数据表示:
提供了一个基础地址为(0x000000032<<16),即基础地址为0x00320000。其后的数据存放位置以该地址为基准地址。
接着,我们分析第二帧数据:
:08000000190156C3FFFF0006C1
其对应表格中为:
0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
: | 数据长度 | 偏移地址 | 数据类型 | 数据 | 校验 |
所占字节 | 1 | 2 | 1 | 8 | 1 |
: | 08 | 0000 | 00 | 190156C3FFFF0006 | C1 |
该帧数据的数据类型为:00,也就是此帧是烧写到Flash中的数据,其数据长度为08,具体内容为:190156C3FFFF0006。其烧写的地址为:基准地址+偏移地址——0x00320000+0x0000=0x320000。
同样的,下一帧数据位:
:048000000072887012
代表的是将数据00728870写入到0x00320000+0x8000=0x328000位置中。
以上是关于硬件基础之HEX文件格式的主要内容,如果未能解决你的问题,请参考以下文章