hex文件格式详解

您所在的位置:网站首页 在线生成文件格式是什么 hex文件格式详解

hex文件格式详解

2024-06-22 08:18| 来源: 网络整理| 查看: 265

什么是hex文件

以*.hex为后缀的文件我们称之为HEX文件。hex是intel规定的标准,hex的全称是Intel HEX,此类文件通常用于传输将被存于ROM或EEPROM中的程序和数据。是由一行行符合Intel HEX文件格式的文本所构成的ASCII文本文件。 HEX的英语原始意思是16进制。这种文件格式主要用于保存单片机固件。 整个文件以行为单位,每行以冒号开头,内容全部为16进制码,2个ASCII码字符表示1个Hex字节

hex文件格式

先上图:这是我用Notepad++ 直接打开的一个32bit的单片机编译器编译的一个hex文件(中间省略了部分): 在这里插入图片描述 通过上面的文件,我们不难发现,hex文件每行都由一个冒号:作为起始码。 每行都符合以下图示的格式: (注意:下图中一格代表一个ASC码,用一个字节表示) 在这里插入图片描述起始码:每行数据作为一帧,并由:作为起始码;

字节长度:两个十六进制数字(一对十六进制数字),指示数据字段中的字节数(十六进制数字对)。最大字节数为255(0xFF)。16(0x10)和32(0x20)是常用的字节数;

地址:四个十六进制数字,代表数据的16位起始存储器地址偏移量。数据的物理地址是通过将此偏移量添加到先前建立的基地址来计算的,因此允许内存寻址超过16位地址的64 KB限制。基地址默认为零,可以通过各种类型的记录进行更改。基地址和地址偏移量始终表示为大端值。

指令类型:两个十六进制数字00到05,定义了这行数据的具体含义;

数据类型作用‘00’ Data Rrecord用来记录数据,HEX文件的大部分记录都是数据记录‘01’ End of File Record用来标识文件结束,放在文件的最后,标识HEX文件的结尾。数据字段为空(因此字节数为00),并且地址字段通常为 0000。‘02’ Extended Segment Address Record用来标识扩展段地址的记录,数据字段包含一个16位的段基址(因此字节数始终为02)与80x86实模式寻址兼容。地址字段(通常为0000)被忽略。最近的段地址02记录乘以16,然后加到每个后续数据记录地址,以形成数据的物理起始地址。这允许寻址多达1 MB的地址空间。‘03’ Start Segment Address Record开始段地址记录,对于80x86处理器,请指定CS:IP寄存器的初始内容(即起始执行地址)。地址字段是0000,字节数始终为04,前两个数据字节是CS值,后两个是IP值。‘04’ Extended Linear Address Record用来标识扩展线性地址的记录,允许32位寻址(最大4GiB)。记录的地址字段将被忽略(通常是0000),其字节数始终为02。两个数据字节(大字节序)为所有后续类型指定32位绝对地址的高16位00记录; 这些高位地址位适用于下一个04记录。类型的绝对地址00 通过组合最近的高16位地址位形成记录 04 用低16位的地址记录 00记录。如果是类型00 记录之前没有任何类型 04 记录,然后其高16位地址位默认为0000。‘05’ Start Linear Address Record开始线性地址记录,地址字段是 0000(未使用),字节数始终为04。四个数据字节代表一个32位地址值(big-endian)。对于80386和更高版本的CPU,此地址将加载到EIP寄存器中。

数据:n字节数据序列,由2个n十六进制数字表示;

校验码:(两个十六进制数字),可以用来验证记录没有错误的计算值; 注意校验和算法:累加和=校验码之前所有16进制,校验和=0x100-累加和。

如之前的hex文件图 第一行020000040804EE中,可以看做是0x02 0x00 0x00 0x04 0x08 0x04 0xEE, 02:代表本行有2个字节数据 0000:表示偏移地址或无用填0 04:扩展线性地址标识,表面后面2个字节数据是后面数据的基地址 注:由于每行标识数据地址的只有2Byte,所以最大只能到64K,为了可以保存高地址的数据,故有了扩展线性地址记录也叫作32位地址记录或HEX386记录.这些记录含数据的高16位,扩展线性地址记录总是有两个数据字节。 0804:是扩展地址 (0x0804



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3