Inter Hex文件格式

Inter Hex文件是一种常见的文件存储格式,常用于微控制器编程。C编译器或者汇编器将源程序转化成机器码并输出Hex文件,从而将二进制信息表示成ASCII文本形式。接下来通过一个简单的示例来了解一下Intel Hex文件的构成格式。

:020000040000 FA
:10000000000200207D0000009F000000A100000011
:1000100000000000000000000000000073756C7517
:10002000FFFFFFFF0000000000000000A300000031
:10003000A500000000000000A7000000A9000000CB
:10004000AB000000B9560000AB000000AB000000A0
:10005000AB000000DD6900008D6F0000296F00001B
:10006000000000000000000000000000000000000C
:1000700000000000000000000000000018000000E4
:1000800000000000180000000000000000000000D4
:0400900000000000E8
:020000040000FA
:047FFC0072756C75B9
:04000005000000698E
:00000001FF

以上是一个完整的Hex文件,为便于分析,将其用空格分开,表示成以下形式:

1  2   3   4   5   6
: 02 0000 04 0000 FA
: 10 0000 00 000200207D0000009F000000A1000000 11
: 10 0010 00 00000000000000000000000073756C75 17
: 10 0020 00 FFFFFFFF0000000000000000A3000000 31
: 10 0030 00 A500000000000000A7000000A9000000 CB
: 10 0040 00 AB000000B9560000AB000000AB000000 A0
: 10 0050 00 AB000000DD6900008D6F0000296F0000 1B
: 10 0060 00 00000000000000000000000000000000 0C
: 10 0070 00 00000000000000000000000018000000 E4
: 10 0080 00 00000000180000000000000000000000 D4
: 04 0090 00 00000000 E8
: 02 0000 04 0000 FA
: 04 7FFC 00 72756C75 B9
: 04 0000 05 00000069 8E
: 00 0000 01  FF

Hex文件每一行作为一个单独的数据块,称为一条记录(record)。每一行的组成形式可以表示为 :BBAAAATT[DDDDD]CC ,由6个部分组成(也可能是5个),均以16进制数的形式表示。其中‘:’代表每一行的开始标志,‘BB’表示在这一行中的数据域里的字节数,’AAAA‘代表数据存储的16位偏移地址,数据存储的真实物理地址需要把这个偏移量加上之前定好的基地址。基地址和偏移量均以大端形式表示。’TT‘代表记录类型,规定了数据域的意义。’DDDDD‘为数据域,其字节个数由‘BB’确定,其表示的意义由’TT‘决定。’CC‘为校验和,由该行数据按字节相加后的补码,例如对于 ’:040010001122334442 ‘,校验和为42,计算方法为:0x04 + 0x00 + 0x10 + 0x11 + 0x22 + 0x33 +0x44 = 0xBE,0xBE 的二进制形式是 10111110 。取其补码即反码加一得 01000010 = 0x42,42即为校验和,如果数据加和超过一字节,则超过的部分全部舍去,最终的校验和始终只有一字节。
对于 : 10 0010 00 00000000000000000000000073756C75 17,可以看到,冒号表示每一行的开始,’10‘等于16,表示数据域有16字节,’0010‘表示地址,’00‘表示数据域存储的是数据,’17‘为校验和。’CC‘的范围是00~05,00表示数据域存储的是数据,01表示Hex文件结束,数据域为空。04表示扩展地址类型,指数据域保存的是32位地址的高16位。因为‘AAAA’表示的地址范围为0000~FFFF,当地址超过FFFF时,需要先声明地址的高16位,如:020000040001F9声明了高16位为0001。其余’CC‘值所代表的含义在此不做详细介绍,具体请参看Hex文件格式。

你可能感兴趣的:(Inter Hex文件格式)