Intel Hex文件格式

 

  Intel HEX文件是用来保存单片机或其他处理器的目标程序代码的文件,它保存物理程序存储器中的目标代码的映像,以便编程器和仿真器调用.绝大多数编程器都支持Intel HEX格式。

  下面是一个Intel HEX文件用记事本打开后看到的内容:

  :020000040000FA

  :1000000018F09FE518F09FE518F09FE518F09FE5C0

  :1000100018F09FE5805F20B9F0FF1FE518F09FE51D

  :10002000C000000040000000440000004800000044

  :100030004C00000000000000000000005000000024

  ......

  :103020005C300000A8E60040000000005C300000BA

  :1030300000000140000000004830000000000000D7

  :103040001400004094E6000032FFF0FFE8030000A7

  :0C30500064000000FFFFFFFF0100000013

  :00000001FF

  Intel HEX文件是文本行的ASCII文本文件,文件内容全部由可打印的ASCII字符组成,可以用记事本打开.

  Intel HEX由一条或多条记录组成,每行一个记录,每条记录都以冒号":"开始,以回车(0DH)和换行(0AH)结束.

  除":"外,每条记录有五个域,每一域由2N(N>=1)个HEX字符组成,格式如下

  :[AA][BBBB][CC][DD....DD][EE]

  其中:

    [LL]   :表示该记录的实际数据的长度;

    [ZZZZ]  :表示该记录所包含的数据在实际的存储区中的起始地址;

    [TT]   :为该记录的类型;

    [SS....SS]:为该记录的实际数据,由2N(N>=1)个HEX字符组成,该域的长度应当与[LL]域所指出长度一致.

    [RR]   :为该记录的数据校验和.

  例如对上面例子中的第一行:

    :020000040000FA

  用"["和"]"分开后如下:     :[02][0000][04][0000][FA]

    [02] :该记录的实际数据的长度[LL]为2个字节(4个HEX字符);

    [0000]:该记录所包含的数据在实际的存储区中的起始地址[ZZZZ]为0000H;

    [04] :该记录的类型[TT]为04——扩展线性地址;

    [0000]:该记录的实际数据[SS....SS];

    [FA] :该记录的数据校验和[RR];

  对上面例子中的倒数第三行

    :1030300000000140000000004830000000000000D7

  用"["和"]"分开后如下:

    :[10][3030][00][00000140000000004830000000000000][D7]

    [10] :该记录的实际数据的长度[LL]为16D(10H)个字节(20H个HEX字符);

    [3030]:该记录所包含的数据在实际的存储区中的起始地址[ZZZZ]为3030H;

    [00] :该记录的类型[TT]为00——数据(实际要烧写到存储器中的数据);

    [0000]:该记录的实际数据[SS....SS];

    [FA] :该记录的数据校验和[RR];

常见的记录类型如下:

  00 :数据记录.表示该记录所包含的数据为实际要烧写到存储器中的数据。

  01 :文件结束记录.表示该记录为本文件的最后一个记录。

  02 :扩展段地址记录.表示该记录所包含的数据为段地址。

  04 :扩展线性地址记录。表示该记录所包含的数据为线性地址。

校验和的计算规则:

  以字节(2个HEX字符)为单位,除“:”以外,当前行所有数据的和为00H.注意对和只取低8位.

  例如对上面例子中的第一行:

    :020000040000FA

    02 00 00 04 00 00 FA

    02H+00H+00H+00H+04H+00H+00H+00H+FAH=100H

  对上面例子中的倒数第三行

    :1030300000000140000000004830000000000000D7

    10 30 30 00 00 00 01 40 00 00 00 00 48 30 00 00 00 00 00 00 D7

    10H+30H+00H+00H+00H+30H+01H+40H+00H+00H+00H+00H+48H+30H+00H+00H+00H+00H+00H+00H+D7H=200H

扩展线性地址:

  当一个扩展线性地址记录被读到后,扩展线性地址将被保存并应用到后面从Intel HEX文件中读出的记录,这个扩展线性一直有效,直到读到下一个扩展线性地址记录.

  绝对地址与扩展线性地址的关系如下:

  绝对地址=数据记录中的地址[ZZZZ]+移位后的扩展线性地址

扩展段地址记录

  当一个扩展段地址记录被读到后,扩展段地址将被保存并应用到后面从Intel HEX文件中读出的记录,这个扩展段地址一直有效,直到读到下一个扩展段地址记录.

  绝对地址与扩展段地址的关系如下:

  绝对地址=数据记录中的地址[ZZZZ]+移位后的扩展段地址。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值