收藏 分享(赏)

Intel HEX格式说明.doc

上传人:HR专家 文档编号:11316583 上传时间:2020-03-17 格式:DOC 页数:7 大小:179.50KB
下载 相关 举报
Intel HEX格式说明.doc_第1页
第1页 / 共7页
Intel HEX格式说明.doc_第2页
第2页 / 共7页
Intel HEX格式说明.doc_第3页
第3页 / 共7页
Intel HEX格式说明.doc_第4页
第4页 / 共7页
Intel HEX格式说明.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、Intel HEX 格式说明Intel HEX 文件是记录文本行的 ASCII 文本文件。后缀为.hex在 Intel HEX 文件中,每一行是一个 HEX 记录,它由十六进制数组成的机器码或者数据常量。Intel HEX 文件经常被用于将程序或数据传输存储到 ROM, EPROM。大多数编程器和模拟器使用 Intel HEX 文件。1.记录详解Intel HEX 文件由若干个数据记录组成,每个字符都是 ASCII 字符表示。每一条数据记录以冒号开始,ASCII 码为 0x3A,以一个回车和一个换行结束,回车的 ASCII 码为 0x0d,换行的ASCII 码为 0x0a 。一个 Intel

2、HEX 文件可以包含任意多的十六进制记录,每一行为一条记录。每条记录有六个区域。通常记录的格式如下图所示:记录的一般结构下面是一个记录的格式。:llaaaattdd.cc字符 : ll aaaa tt dd cc英文描述 RECORDMARKLOADRECLENOFFSET RECTYP INFOorDATACHKSUM区域 冒号为起始标志长度域length地址域address类型域type数据域data校验和域check sum字节长度 1 byte 1 byte 2 bytes 1 byte N bytes 1 byte每一组字母是独立的一个域,每一个字母是一个十六进制数字,每一域至少由两

3、个十六进制数字组成,下面是字节的描述: : 冒号是每一条 Intel HEX 记录开始的标志 ll 是这条记录的长度域,它表示 INFO or DATA 域dd的字节 bytes 个数 aaaa 是地址域,它表示数据的起始地址 tt 表示这条 HEX 记录的类型 ,有 6 种类型00 -数据记录 Data Record (8-, 16-, or 32-bit formats)01 -文件结束记录 End of File Record(8-, 16-, or 32-bit formats)02 -扩展段地址记录 Extended Segment Address Record(16- or 32-

4、bit formats)03-起始段地址记录 Start Segment Address Record(16- or 32-bit formats)04-扩展线性地址记录 Extended Linear Address Record(32-bit format only)05-起始线性地址记录 Start Linear Address Record(32-bit format only) dd 是数据域,表示一个字节的数据,一个记录可能有多个数据字节,长度域 ll 域的数值大小说明了数据域字节数。 cc 是效验和域,表示记录的效验和。计算方法是将本条记录冒号开始后的所有字母对(不包括本效验字本

5、身和冒号)所表示的十六进制数字都加起来然后模除 256 得到余数,最后求出余数的补码即是本效验字节cc.必须注意的是,此处的补码是将余数的 8bit 二进制数所有位取反,然后加 1。也就是最高位不管是 0 还是 1,都要取反。某一条记录的校验和计算过程:第一步,求该行各字节数字的和(不包括冒号,不包括最后一个字节即校验和本身 )第二步,模除 256第三步,各位取反第四步,加 1 即得到校验和中的起始地址.OFFSET 只用于数据记录。其他类型的记录中,不使用这个域,应该被编码为 4 个ASICC码0000或者 030303030H。00 是记录类型,00 表示是一个数据记录787F 到 036

6、B 是数据域8D 是此条记录的效验和校验和计算过程:第一步,求各字节的和(不包括冒号,不包括最后一个字节即校验和本身 )0C+03+24+00+78+7F+E4+F6+D8+FD+75+81+34+02+03+6B = 11h673第二步,模除 25611h673 mod 9h100 = 8h73第三步,各位取反not (8h73) = not(8b0111_0011) = 8h1000_1100 = 8h8C第四步,加 1 即得到校验和8h8C + 1 = 8h8D3.2.文件结束记录 01(8-, 16-, or 32-bit formats)一个 Intel HEX 文件必须有且仅有一条

7、文件结束记录,其类型域必须是 01。没有数据即长度域为00,数据域没有。该记录必须是文件的最后一行,每个文件有且仅有一条文件结束记录。通常一条文件结束记录除了类型域(01),校验和域,其他域都为 0,例如 :00000001FF00 是记录中数据字节的数目0000 这个地址对于 EOF 记录来说无任何意义01 记录类型是 01(文件结束记录标示)FF 是效验和计算如下 01h + NOT( (00h + 00h + 00h + 01h) mod 100h).字符 : ll aaaa tt cc英文描述 RECORDMARKRECLEN00LOADOFFSET0000RECTYP01CHKSUM

8、区域 冒号为起始标志长度域length地址域address类型域type校验和域check sumASCII : 固定为 00 固定为0000固定为 01 FF16 进制 3A 3030 30303030 3031 4646字节长度 1 byte 1 byte 2 bytes 1 byte 1 byteRECORD MARK该区域为:的 ASCII 编码,其 16 进制数为 H3A。RECLEN由于文件结束记录不包含任何 INFO 或 DATA,ASCII 编码字符为 00,其 16 进制编码为 H 3030。LOAD OFFSET由于文件结束记录不使用该区域,ASCII 编码字符为 0000

9、,其 16 进制编码为030303030HRECTYPASCII 编码字符为 01,其 16 进制编码为 H3031,它指示该文件记录类型为文件结束记录。CHKSUM校验和为 RECLEN, LOAD OFFSET, 和 RECTYP 区域以字节为单位,求和,模除256,取反,加 1。由于文件结束记录各域都是静止不变的,所以 CHKSUM 可以静态计算出来,为 HFF。3.3.Extended Segment Address Record02 (16- or 32-bit formats)字符 : ll aaaa tt dd cc区域 冒号为起始标志长度域length地址域address类型域

10、type数据域data校验和域check sumASCII : 02 0000 0216 进制 3A 3032 30303030 3032字节长度 1 byte 1 byte 2 bytes 1 byte N bytes 1 byteRECORD MARK该区域为:的 ASCII 编码,其 16 进制数为 H3A。RECLEN该区域使用 2 个 ASCII 编码的 16 进制数字来表示数据域的字节个数。最大值为0xFF 或 4646H (十进制 255)。LOAD OFFSET由于扩展段地址记录不使用该区域,ASCII 编码字符为 0000,其 16 进制编码为030303030HRECTYP

11、ASCII 编码字符为 02,其 16 进制编码为 H3032,它指示该文件记录类型为扩展段地址记录。CHKSUM校验和为 RECLEN, LOAD OFFSET, RECTYP, 和 USBA 区域以字节为单位,求和,模除 256,取反,加 1。3.4.扩展线性地址记录(HEX386)04扩展线性地址记录也可称为 32 位地址记录 和 HEX386 记录,这个纪录包含高 16(16-31 位)位数据地址,这种扩展的线性记录总是有两个字节数据,像下面这样:02000004FFFFFC02 是记录的数据字节数目0000 是地址域这在扩展地址记录中总是 000004 是记录类型 04(扩展地址记录

12、)FFFF 是高 16 位地址FC 是记录效验和,计算方法如下:01h + NOT(02h + 00h + 00h + 04h + FFh + FFh)当一个扩展线性地址记录被读到后,扩展线性地址记录的数据区域将被保存并应用到后面从 Intel HEX 文件中读出的记录,这个扩展线性记录一直有效,直到读到下一个扩展线性记录.绝对内存地址 = 数据记录中的地址 + 移位后的扩展线性地址下面举例说明这个过程从数据记录的地址域得到地址 2462从扩展线性地址记录的地址域得到地址 FFFF绝对内存地址 FFFF24623.5.扩展段地址记录 (HEX86) 02扩展段地址记录也被称为 HEX86 记录

13、, 包含 4-19 位的数据地址段 ,这个扩展段地址记录总是有两字节数据,如下:020000021200EA02 是 记录中的数据字节数目0000 是地址域,在扩展段地址记录中,这个域总是 000002 是记录类型 02(扩展段地址的标示)1200 是该段的地址EA 是效验和计算如下:01h + NOT(02h + 00h + 00h + 02h + 12h + 00h).当扩展段地址记录被读后,扩展段地址将被存储并应用到以后从 Intel HEX 文件读出的记录,这个段地址一直有效直到读到下一个扩展段地址记录绝对内存地址 = 数据记录中的地址 + 移位后的扩展段地址数据记录中的地址域 移位后扩展段地址记录中的地址域下面举例说明这个过程从数据记录的地址域得到地址 2 4 6 2从扩展段地址记录的地址域得到地址 1 2 0 0绝对内存地址 0 0 0 1 4 4 6 2

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 实用文档 > 简明教程

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报