- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
HEX⽂件格式详解
概念描述
HEX⽂件格式是⼀种能够烧写到单⽚机中,被单⽚机执⾏的⽂件格式。 以使⽤不同的编辑器将C或汇编源⽂件编译成HEX⽂件,如
IAR,KEIL等。
HEX⽂件格式分析
1.Intel Hex的具体格式
Intel Hex⽂件是遵循Intel Hex⽂件格式的ASCII⽂本⽂件。在Intel Hex⽂件的每⼀⾏中都包含了⼀个hex记录。这些记录是由⼀些
代表机器语⾔代码和常量的16进制数据组成。Intel Hex⽂件常⽤来传输要存储在ROM、EPROM或者Flash中的程序和数据。⼤部分的
EPROM编程器都能使⽤Intel Hex⽂件。
Intel Hex由任意数量的⼗六进制记录组成。每个记录包含6个域,它们按⼀下格式排列。
| MARK | RECLEN | OFFSET | RECTYP | DATA | CHKSUM |
| MARK | (1Byte)Start Code (冒号) : 每个 Intel HEX 记录都由冒号开头 ;
| RECLEN | (1Byte)Byte count (本⾏数据长度) :是数据长度域,它代表记录当中数据字节的数量 ;
| OFFSET | (2 Byte)Address (本⾏数据的起始地址) :是地址域,它代表记录当中数据的起始地址 ;
| RECTYP | (1 Byte)Record type (数据类型) : 是代表HEX记录类型的域,它 能是以下数据当中的⼀个:
00--数据记录
0 1--⽂件结束记录
02--扩展段地址记录
03--开始段地址记录
04--扩展线性地址记录
05--开始线性地址记录
| DATA | (n Byte)Data (数据) : 是数据域,⼀个记录 以有许多数据字节.记录当中数据字节的数量必须和数据长度域中指定
的数字相符 ;
| CHKSUM | (1 Byte)Checksum (校验码) : 是校验和域,它表⽰这个记录的校验和.校验和的计算是通过将记录当中所有⼗六进
制编码数字对的值相加,以256为模进⾏补⾜。
2.数据类型的解释
(1)数据记录(8bit/ 16bit/ 32bit)--代码00
| MARK | RECLEN | OFFSET | RECTYP | DATA | CHKSUM |
| : | RECLEN | OFFSET | 00 | DATA | CHKSUM |
OFFSET是相对LBA或者SBA⽽⾔,数据的第⼀个字节的偏移地址 ;
LBA的数据存放地址计算 : (LBA + DRLO + DRI) MOD 4G
SBA的数据存放地址计算 : (SBA + [DRLO + DRI] MOD 64K)
其中,DRLO: OFFSET的值,DRI:数据记录中的数据的索引。
⽰例 :
:020000040800F2// (: 02 0000 04 0800 F2)基地址为0
:104800009004002055940008599200085B920008 1B// (: 10 4800 00 09004002055940008599200085B920008
1B)数据存放地址为00x4800,数据长度为0x 10,数据内容为 :09004002055940008599200085B920008
:1048 10005D9200085F9200086 192000800000000AD// (: 10 48 10
00 05D9200085F9200086 192000800000000 AD)数据存放地址为00x48 10,数据长度为0x 10,数据内容为 :
05D9200085F9200086 192000800000000
:104820000000000000000000000000006592000889// (:
文档评论(0)