Intel hex 文件格式
Intel hex 文件常用来保存单片机或其他处理器的目标程序代码。它保存物理程序存储区中的目标代码映象。一般的编程器都支持这种格式。
Intel hex 文件全部由可打印的 ASCII 字符组成,如下例所示:
:2000000012014c75a800e4f508f509780a7a78e4f608dafcd283fcfded240af9a7050dbd81
:2000200000010ced2488ec34ff50edc283e4fcfded240af9e76d7013ed33e43c700d0dbd2a
:2000400000010ced2488ec34ff50e50509e50970020508e50924a8e50834fd50aee4f50874
Intel hex 由一条或多条记录组成,每条记录都由一个冒号“ : ”打头,其格式如下:
:CCAAAARR...ZZ
其中:
CC
本条记录中的数据字节数
AAAA
本条记录中的数据在存储区中的起始地址
RR
记录类型:
00 数据记录 (data record)
01 结束记录 (end record)
02 段记录 (paragraph record)
03 转移地址记录 (transfer address record)
...
数据域
ZZ
数据域校验和
Intel hex 文件记录中的数字都是 16 进制格式,两个 16 进制数字代表一个字节。 CC 域是数据域中的实际字节数,地址、记录类型和校验和域没有计算在内。校验和是取记录中从数据字节计数域 (CC) 到数据域 (...) 最后一个字节的所有字节总和的 2 的补码
Hex文件的
INTEL格式:这是
Intel公司提出的按地址排列的数据信息,数据宽度为字节,所有数
据使用
16进制数字表示.
这是一个例子:
:10008000AF5F67F0602703E0322CFA92007780C361
:1000900089001C6B7EA7CA9200FE10D2AA00477D81
:0B00A00080FA92006F3600C3A00076CB
:00000001FF
第一行,":"符号表明记录的开始. 后面的两个字符表明记录的长度,这里是
10h. 后面的四个字
符给出调入的地址,这里是
0080h. 后面的两个字符表明记录的类型;
0 数据记录 1 记录文件结束 2 扩展段地址记录 3 开始段地址记录 4 扩展线性地址记录 5
开始线性地址记录
后面则是真正的数据记录, 最后两位是校验和检查,它加上前面所有的数据和为
0.
最后一行特殊,总是写成这个样子.
扩展
Intel Hex的格式(最大
1M): 由于普通的
Intel的
Hex记录文件只能记录
64K的地址范围,
所以大于
64K的地址数据要靠扩展
Intel Hex格式的文件来记录.对于扩展形式
Hex文件,在每
一个
64K段的开始加上扩展的段地址规定,下面的数据地址均在这个段内,除非出现新的段地址
定义.
一个段地址定义的格式如下
:
起始符长度起始地址扩展段标示扩展段序号无用累加和
: 02 0000 02 3000 EC
段地址的标识符是第四组数据
02,表示扩展地址段的定义,再后面的以为
HEX数表示段的数目,
上面的定义为
3,表示段地址是
3,所以下面的数据地址是
3 + XX(XX是64K段内的地址)