深究 INTEL HEX 文件格式

什么是INTEL HEX 文件格式
Intel HEX 文件是遵循Intel HEX 文件格式的ASCII文本文件。在Intel HEX 文件的每一行都包含了一个HEX记录。这些记录是由一些代表机器语言代码和常量的16进制数据组成的。Intel HEX 文件常用来传输要存储在ROM或者EPROM中的程序和数据。大部分的EPROM 编程器能使用Intel HEX 文件。
 
记录格式:
一个英特尔HEX 文件由一些HEX记录组成。每个记录由如下所示的五部分组成:
:llaaaatt[dd……]cc
:冒号代表了每个记录的开始
Ll:表示了本记录内数据位的数量
Aaaa:数据的起始地址
Tt:代表了HEX文件的记录类型
   00:数据记录
   01: 结束文件记录
   02:扩展段地址记录
   04:扩展线性地址记录
Dd:表示数据的一位。数据的位数必须和LL区域的数据相吻合。
Cc:是校验和的校验码。是计算了所有前面的数据的和后,除以256后的余数,一般是补码,所以要对和取反再加一。
 
扩展线性地址记录(HEX386)
扩展线性地址记录又称为32位地址记录或者HEX386记录。 这些记录包含了数据地址的高16位。T
扩展线性地址记录总是有两个数据,格式如下
:02000004FFFFFC
这里:
02  是记录的数据位数
0000  对于扩展线性地址记录,这部分都是零。
04  代表记录类型是扩展线性地址记录。
FFFF  是地址的高16位。
FC  是以下计算结果的和:01h + NOT(02h + 00h + 00h + 04h + FFh + FFh).
当一个扩展线性地址被读取时,在数据域中的扩展线性地址被储存并且运用到后来的记录的读取中。线性地址保持有效直到被另外一个扩展地址所改变。数据的绝对地址由扩展线性地址和偏移地址相加获得。
下面这个例子可以说明这个过程。
数据记录的地址域中的地址                          2462
扩展线性地址记录的数据域                      FFFF
                                              --------
绝对地址:                                    FFFF2462
 
扩展段地址记录(HEX86)
扩展段地址记录(也称HEX86)包括数据地址段的4-19位。扩展段地址记录总有两个数据位。一般如下:
:020000021200EA
这里:
02  在本记录中的数据的位数。
0000 对于扩展段地址记录,这部分都是零。
02 是记录类型,也就是扩展段地址记录。
1200  是地址段
EA  是如下计算的结果01h + NOT(02h + 00h + 00h + 02h + 12h + 00h).
当一个扩展段地址被读取时,储存在数据域的扩展段地址被保存,应用到后面的记录,并且保持有效,直到被新的扩展地址所代替。绝对地址的获得是段地址乘以16加上偏移地址。
以下这个例子说明这个过程。
记录地址域获得的地址:                2462
扩展段地址的数据域:                 1200
                                  --------
绝对存储地址:                    00014462
 
结束文件记录:
一个英特尔HEX文件必须由一个EOF文件来结束。一个结束文件记录一般这样出现:
:00000001FF
这里:
00 是记录的数据位数.
0000  是数据在存储器中定位的数据的地址.在结束文件中的地址是没有意义和可以忽略的。一个 0000h 的地址是很典型的。
01 是记录类型,结束文件记录
FF  由这样计算得出:01h + NOT(00h + 00h + 00h + 01h).
 
举例:
Hex 文件的INTEL格式:这是Intel公司提出的按地址排列的数据信息,数据宽度为字节,所有数
据使用16进制数字表示.
这是一个例子:
:10008000AF5F67F0602703E0322CFA92007780C361
:10 0090 00 89001C6B7EA7CA9200FE10D2AA00477D81
:0B00A00080FA92006F3600C3A00076CB
:00000001FF
第一行,":"符号表明记录的开始. 后面的两个字符表明记录的长度,这里是10h. 后面的四个字
符给出调入的地址,这里是0080h. 后面的两个字符表明记录的类型;
数据记录 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段内的地址)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值