​HEX文件格式说明

HEX文件格式说明

1 什么是HEX文件

HEX文件是由一行行符合 HEX文件格式的文本所构成的ASCII文本文件。在HEX文件中,每一行包含一个HEX记录。这些记录由对应机器语言码和/或常量数据的十六进制编码数字组成。HEX文件通常用于传输将被存于ROM或者EPROM中的程序和数据。

2 HEX文件格式

常见HEX文件格式

一般Hex文件通过记事本就可以打开。可以发现一般Hex文件的记录格式如下:

HEX文件由任意数量的十六进制记录组成。每个记录包含5个域,它们按以下格式排列:

每一组字母对应一个不同的域,每一个字母对应一个十六进制编码的数字。每一个域由至少两个十六进制编码数字组成,它们构成一个字节,就像以下描述的那样:

:(冒号)每个HEX记录都由冒号开头 ;

LL 是数据长度域, 它代表记录当中数据字节(dd)的数量;

aaaa 是地址域, 它代表记录当中数据的起始地址;

TT是代表HEX记录类型的域,它可能是以下数据当中的一个:

00 – 数据记录(Data Record)

01 – 文件结束记录(End of FileRecord)

02 – 扩展段地址记录(ExtendedSegment Address Record)

03 – 开始段地址记录(Start Segment Address Record)

04 – 扩展线性地址记录(Extended Linear Address Record)

05 – 开始线性地址记录(Extended Segment Address Record)

dd 是数据域 , 它代表一个字节的数据. 一个记录可以有许多数据字节.记录当中数据字节的数量必须和数据长度域(ll)中指定的数字相符.

cc 是校验和域 , 它表示这个记录的校验和.校验和的计算是通过将记录当中所有十六进制编码数字对的值相加, 以256为模进行以下补足.

表示为:“:[1字节长度][2字节地址][1字节记录类型][n字节数据段][1字节校验和] ”

具体事例

具体根据记录类型分析如下:

(1)数据记录”00”:10246200464C5549442050524F46494C4500464C33

其中:10是这个记录当中数据字节的数量.即0x10 ;

2462 是数据将被下载到存储器当中的地址.即0x2462 ;

00 是记录类型( 数 据 记录).即0x00 ;

464C…464C是 数据.分别代表0x46,0x4C... ;

33是这个记录的校 验和即0x33;计算方法如下:256D-(10H+24H+62H+00H+46H+4CH+55H+49H+44H+20H+50H+52H+4FH+46H+49H+4CH+45H+00H+46H+4CH)/100H=33H;

(2)文件结束(EOF)”01”:00000001FF

其中:00 是记录当中数据字节的数量.

0000 是数据被下载到存储器当中的地址. 在文件结束记录当中地址是没有意义,被忽略的.0000h 是典型的地址;

01 是记录类型 01( 文件 结 束 记录)

FF 是 这个记录 的校 验 和, 计算方法如下: 256D-(00H+00H+00H+01H)=FFH;

(3)扩展线性地址记录(HEX386) ”04”:02000004FFFFFC

其中:02 是这个记录当中 数 据字 节 的 数量.

0000 是地址域, 对于 扩 展 线 性地址 记录 , 这个 域 总是0000.

04 是记录类型 04( 扩 展 线 性地址 记录)

FFFF 是地址的高16 位.

FC 是这个记录的校 验 和, 计算如下: 256D-(02H+00H+00H+04H+FFH+FFH)/100H=FFH;

当一个扩展线性地址记录被读取, 存储于数据域的扩展线性地址被保存,它被应于

从 HEX 文件读取来的随后的记录 . 线性地址保持有效, 到它被另外一个扩址录所改变。

通过把记录当中的地址域与被移位的来自扩展线性地址记录的地址数据相加获得 数据记录的绝对存储器地址。

以下的例子演示了这个过 程:

:0200000480007A //数据记录的绝对存储器地址高16位为0x8000

:100000001D000A00000000000000000000000000C9

:100010000000000085F170706F0104005D00BD00FC

第一行,是Extended Linear Address Record,里面的数据,也就是基地址是0x8000,第二行是DataRecord,里面的地址值是0x0000。那么数据1D000A00000000000000000000000000(共16个字节)要写入FLASH中的地址为 (0x8000<< 16)| 0x0000,也就是写入FLASH的0x80000000这个地址;第三行的数据写入地址为0x80000010.当一个HEX文件的数据超过64k的时候,文件中就会出现多个Extended Linear Address Record。

(4)扩展段地址记录(HEX86)“02“:020000021200EA

其中:02 是记录当中数据字节的数量;

0000 是地址域. 对于扩展段地址记录 ,这个域总是0000;

02 是记录类型 02( 扩展段地址记录);

1200 是地址段;

EA 是这个记录的校 验 和;

当一个扩展段地址记录被读取, 存储于数据域的扩展段地址被保存, 它被应用于从HEX文件读取来的随后的记录 .段地址保持有效, 直到它被另外一个扩展地址记录所改变。

通过把记录当中的地址域与被移位的来自扩展段地址记录的地址数据相加获得数 据记录的绝对存储器地址。

相关推荐

​《东京喰种》有马贵将,没有赫眼的喰种之王

​《东京喰种》有马贵将,没有赫眼的喰种之王

76

《东京喰种》有马贵将,没有赫眼的喰种之王 有马贵将是出身自白日庭的半人类,是CCG的最高战力,被称作“不败的喰种搜查官”也被称之为“白色死神”,是V组织的一员,在金木研...

​詹姆斯·卡梅隆的经典作品都有哪些?

​詹姆斯·卡梅隆的经典作品都有哪些?

185

詹姆斯·卡梅隆的经典作品都有哪些? #头条创作挑战赛# 詹姆斯·卡梅隆是著名电影导演和编剧,他的作品有电影《食人鱼2》、《终结者》、《异形2》、《深渊》、《终结者2》、《真...

​给大家介绍一些光控开关原理图

​给大家介绍一些光控开关原理图

161

给大家介绍一些光控开关原理图 光控开关原理图(一) 光控开关电路如下图,主要特点是白天有光照,灯泡不亮,夜晚黯淡无光,电路自动通电,灯泡亮起。 白天在较强光照下,光导管...

​河北七大皮毛产业集群都在哪里?

177

河北七大皮毛产业集群都在哪里? 河北是名副其实的皮毛产业大省。涉及行业广泛,从业人口众多,产品丰富多样,形成七大县域皮毛产业集群,年交易额超千亿元。是一些县域的支柱产业...

​黑道小说十大排行榜

​黑道小说十大排行榜

120

黑道小说十大排行榜 1、孔二狗的《黑道风云二十年》 小说通过描写一系列有关家乡“黑社会”的故事,使人们了解到黑社会的种种细节,带读者直击黑道病态生存现状。该本小说是由...

​英国为什么一定要脱欧?

​英国为什么一定要脱欧?

86

英国为什么一定要脱欧? 脱欧创意图片 在过去的这几年,英国脱欧一直是国际上的热门议题。 这其中的曲折离奇、引人入胜。叹为观止! 脱欧背后的真实动机,是早就确定的,主要脱...

​变形金刚里爷爷辈的科学家 千斤顶

​变形金刚里爷爷辈的科学家 千斤顶

85

变形金刚里爷爷辈的科学家 千斤顶 熟悉变形金刚的小伙伴,如果问你1984年的动画片里第一个出场的人物是谁。不知道你能回答上来吗。也许有很多资深的变迷知道答案,没错,那个人...

​印象中椒江第一家“烧鸟屋”,我们就去吃啦

​印象中椒江第一家“烧鸟屋”,我们就去吃啦

143

印象中椒江第一家“烧鸟屋”,我们就去吃啦 这是我们分享 的第640篇文章! 番茄先说 和朋友在日料聚餐, 出来时意外发现隔壁新开的烧鸟屋正试营业, 我们没等天黑就进去了。 带着...