【2017年整理】Intel HEX文件是记录文本行的ASCII文本文件,下面是

上传人:爱****1 文档编号:990020 上传时间:2017-05-24 格式:DOC 页数:10 大小:69KB
返回 下载 相关 举报
【2017年整理】Intel HEX文件是记录文本行的ASCII文本文件,下面是_第1页
第1页 / 共10页
【2017年整理】Intel HEX文件是记录文本行的ASCII文本文件,下面是_第2页
第2页 / 共10页
【2017年整理】Intel HEX文件是记录文本行的ASCII文本文件,下面是_第3页
第3页 / 共10页
【2017年整理】Intel HEX文件是记录文本行的ASCII文本文件,下面是_第4页
第4页 / 共10页
【2017年整理】Intel HEX文件是记录文本行的ASCII文本文件,下面是_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《【2017年整理】Intel HEX文件是记录文本行的ASCII文本文件,下面是》由会员分享,可在线阅读,更多相关《【2017年整理】Intel HEX文件是记录文本行的ASCII文本文件,下面是(10页珍藏版)》请在金锄头文库上搜索。

1、Intel HEX 文件是记录文本行的 ASCII 文本文件,下面是 Intel HEX 文件格式,在Intel HEX 文件中,每一行是一个 HEX 记录由十六进制数组成的机器码或者静态数据,Intel HEX 文件经常被用于将程序或数据传输存储到 ROM.EPROM,大多数编程器和模拟器使用 Intel HEX 文件.记录格式:一个 Intel HEX 文件可以包含任意多的十六进制记录,每条记录有五个域,下面是一个记录的格式.:llaaaattdd.cc每一组字母是独立的一域,每一个字母是一个十六进制数字,每一域至少由两个十六进制数字组成,下面是字节的描述.:?冒号是每一条 Intel H

2、EX 记录的开始ll?是这条记录的长度域,他表示数据(dd)的字节数目.aaaa?是地址域,他表示数据的起始地址tt?这个域表示这条 HEX 记录的类型,他有可能是下面这几种类型00 -数据记录01 -文件结束记录02 -扩展段地址记录04 -扩展线性地址记录dd?是数据域,表示一个字节的数据,一个记录可能有多个数据字节,字节数目可以查看 ll 域的说明cc?是效验和域 ,表示记录的效验和 ,计算方法是将本条记录冒号开始的所有对字母 所表示的十六进制数字 都加起来然后模除 256 得到的余数最后求出余数的补码即是本效验字节 cc.一数据记录Intel HEX 文件由若干个数据记录组成,一个数据

3、记录以一个回车和一个换行结束比如下面的一条数据记录:10246200464C5549442050524F46494C4500464C3310 是此行记录数据的字节数目2462 是数据在内存中的起始地址00 是记录类型 00(是一个数据记录)464C 到 464C 是数据33 是此行记录的效验和二扩展线性地址记录(HEX386)扩展线性地址记录也可以认为是 32 为地址记录和 HEX386 记录,这个纪录包含高 16(16-31 位) 位数据地址 ,这种扩展的线性记录总是有两个字节数据, 像下面这样:02000004FFFFFC02 是记录的数据字节数目0000 是地址域这在扩展地址记录中总是

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

5、地址? FFFF? -绝对内存地址? ? FFFF2462?三扩展段地址记录 (HEX86)扩展段地址记录也可以认为是包含地址中 4-19 位的数据地址段,这个扩展段地址记录总是有两字节数据,如下:020000021200EA02 是记录中的数据字节数目0000 是地址域, 在扩展段地址记录中,这个域总是 000002 是记录类型 02(扩展段地址的标示)1200 是该段的地址EA 是效验和计算如下:01h + NOT(02h + 00h + 00h + 02h + 12h + 00h).当扩展段地址记录被读后,扩展段地址将被存储并应用到以后从 Intel HEX 文件读出的记录,这个段地址一

6、直有效直到读到下一个扩展段地址记录绝对内存地址 = 数据记录中的地址 ? +? 移位后的扩展段地址? |? |? 数据记录中的地址域? 移位后扩展段地址记录中的地址域下面举例说明这个过程从数据记录的地址域得到地址? ? 2462从扩展段地址记录的地址域得到地址? 1200? -绝对内存地址? ? 00014462四文件结束记录(EOF)一个 Intel HEX 文件必须有一个文件结束记录,这个记录的类型域必须是 01,一个EOF 记录总是这样 :00000001FF00 是记录中数据字节的数目0000 这个地址对于 EOF 记录来说无任何意义01 记录类型是 01(文件结束记录标示)FF 是效

7、验和计算如下01h + NOT(00h + 00h + 00h + 01h).Hex 文件格式2009-12-23 13:10参考资料:Intel Hexadecimal Object File Format Specification Revision A 1/66/88适用范围:8 位,16 位,32 位处理器转载请注明:http:/ HEX 文件的格式能有所帮助,同时我自己也能获得更深的理解。以下是我随便用 IAR 的例程生成的一段 HEX 文件,由于太长的原因,我删掉一些。有的朋友可能会被吓到,但看完这篇文章后希望你能觉得其实也很简单。本文也将针对这个例子来讲,有什么说得不对的,请各位

8、拍砖!:0200000480007A:1000000018F09FE518F09FE518F09FE518F09FE5C0:1000100018F09FE50000A0E118F09FE518F09FE5BB:10002000B80F00804001008064010080D40100808E:10003000FC01008000000000880100802402008094:100040004C0200806C0200808C020080AC020080B8:10005000CC020080EC0200800C0300802C030080A6:100060004C0300806C03008

9、08C030080AC03008094:10007000CC030080EC0300800C0400802C04008082:100080004C0400806C0400808C040080AC04008070:10009000CC040080EC0400800C0500802C0500805E:1000A0004C0500806C0500808C050080AC0500804C:1000B000CC0500800000000000000000EC0500807E:1000C0000C0600802C0600804C0600806C06008028:1000D0008C060080AC0600

10、80CC060080EC06008018:1000E0000C0700802C0700804C0700806C07008004:1000F0008C070080AC070080CC070080EC070080F4:100100000C08008000000000000000002C080080A7中间一部分删除以控制篇幅:1011C0001EFF2FE11EFF2FE11EFF2FE11EFF2FE16B:1011D0001EFF2FE11EFF2FE11EFF2FE11EFF2FE15B:1011E0001EFF2FE11EFF2FE11EFF2FE11EFF2FE14B:1011F0001

11、EFF2FE11EFF2FE11EFF2FE11EFF2FE13B:101200001EFF2FE11EFF2FE11EFF2FE11EFF2FE12A:101210001EFF2FE11EFF2FE11EFF2FE11EFF2FE11A:101220001EFF2FE11EFF2FE11EFF2FE11EFF2FE10A:101390009F10E0E3AC1DC1E3001080E51EFF2FE1CC:1013A000001000A0041000A0081000A00C1000A065:1013B000101000A0141000A0181000A01C1000A015:1013C000

12、28009FE510402DE924409FE5040050E1EE:1013D0000400000A041090E40FE0A0E111FF2FE1E7:1013E000040050E1FAFFFF1A1040BDE81EFF2FE194:1013F000A4140080C814008028209FE500402DE937:10140000000092E5000050E30400000A0210A0E191:101410000200A0E3563412EF0000A0E3000082E5D2:101420000040BDE81EFF2FE1241000A0050000EAE7:1014300

13、0041090E4042090E404C091E4043053E2EA:1014400004C082E4FBFFFF1A043090E4000053E381:10145000F6FFFF1A1EFF2FE10010A0E3030000EAD1:10146000042090E4043053E2041082E4FCFFFF1AED:10147000043090E4000053E3F8FFFF1A1EFF2FE151:101480000100A0E31B0000EB000050E3CBFFFF1BBB:101490000000A0E3BDFDFFEB180000EB090000EB2E:1014A0

14、00FDFFFFEA581400802C000000001000A08F:1014B000000000002C140080040000000C150080C7:1014C0002C1000A00000000000502DE9C9FFFFEB28:1014D0002620A0E3802B82E30210A0E11800A0E305:1014E000563412EFFBFFFFEA0070A0E10700A0E115:1014F000F4FFFFEBFDFFFFEA0100A0E31EFF2FE179:1015000000502DE9F7FFFFEA0EF0B0E10200000005:04000

15、00580000FB8B0:00000001FF1. 基本知识Hex 文件跟一般的 txt 文件没有不同,打开之后都可以正常显示,然而如果用文本工具打开一个二进制文件则会变成乱码。原因就在于 hex 文件的代码都是ASCII 码来表示。例如一个 8 位的二进制代码8b10100101(以十六进制来说就是 A5h),用 ASCII 码来显示就是由一个A的字符和一个5的字符组成。Hex 文件的作用就是带有地址信息,使用编程器或者仿真器进行烧写芯片的时候并不是把 Hex 文件的内容直接写到芯片,而是要经过一个解析的过程,也可以说把地址和代码分离出来,然后再根据地址与数据的关系进行烧写。举个例子,假设你是一个搬家公司的老板,现在你要把一堆家私(数据)搬到一栋大楼的一些楼层,而每件家私上面都贴有楼层的号码牌(地址),那么你的工人不用你的指挥就知道把家私搬到哪一层,搬完之后他们会把号码牌取下来并还给你。而如果是 BIN 文件,则没有地址

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号