Intel HEX文件格式说明

来源:互联网 发布:淘宝风王的祝福 编辑:程序博客网 时间:2024/04/30 16:03

 Intel HEX文件是记录文本行的ASCII文本文件,在Intel HEX文件中,每一行是一个HEX记录,由十六进制数组成的机器码或者数据常量。

Intel HEX文件经常被用于将程序或数据传输存储到ROM、EPROM,大多数编程器和模拟器使用Intel HEX文件。

每一行由冒号开始,由回车换行符结束。
格式为:: LL AAAA TT DD...DD CC其中共六部分:(冒号) 是每一条Intel HEX记录的开始LL 是这条记录的长度域,他表示数据(dd)的字节数目.AAAA 是地址域,他表示数据的起始地址TT这个域表示这条HEX记录的类型,他有可能是下面这几种类型  00 ----数据记录,表示该记录所包含的数据为实际要烧写到存储器中的数据。  01 ----文件结束记录,表示该记录为本文件的最后一个记录。  02 ----扩展段地址记录,表示该记录所包含的数据为段地址。  04 ----扩展线性地址记录,表示该记录所包含的数据为线性地址。 
DD是数据域,表示一个字节的数据,一个记录可能有多个数据字节,字节数目可以 查看LL域的说明CC 是效验和域,它表示这个记录的校验和。校验和的计算是通过将记录当中所有十六进制编码数字对的值相加,以256为模进行以下补足。
校验和需要保证整行中所有十六进制字节相加的和为0。
例如:

Intel HEX文件由任意数量以回车换行符结束的数据记录组成。数据记录外观如下:

:1000000020C111C010C00FC00EC00DC03EC00BC03B

其中:

      10 是这个记录当中数据字节的数量。(16个字节)

  0000是数据将被下载到存储器当中的地址。

       00 是记录类型(数据记录)

       20C1...0BC0数据。

       3B 是这个记录的校验和。(0x10 + 0x00 + ... + 0x20 + 0xC1 + 0x11 + ... + 0x0B + 0xC0 + 0x3B = 0)

=================================================

补充说明:

扩展段地址记录 当一个扩展段地址记录被读到后,扩展段地址将被保存并应用到后面从Intel HEX文件中读出的记录,这个扩展段地址一直有效,直到读到下一个扩展段地址记录. 绝对地址与扩展段地址的关系如下: 绝对地址=数据记录中的地址[AAAA]+移位后的扩展段地址。扩展段地址要左移16位。


扩展线性地址和扩展段地址的区别:

在计算绝对地址时,扩展线性地址要左移16位,而扩展段地址则左移4位。



0 0