HEX文件格式详解

HEX文件格式详解

  • 1、简介
  • 2、格式说明
  • 3、其它

之前在做IAP升级有接触到hex文件,现在分享一下。

1、简介

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

2、格式说明

先看看一个完整的hex文件
HEX文件格式详解_第1张图片

HEX格式文件以行为单位记录数据,每行都由任意数量的十六进制数组成。它们按以下格式排列
在这里插入图片描述

格式说明
冒号 数据每行都由冒号开头
A 数据长度 1 Byte ,表示本行数据的长度
B 数据地址 2 Byte ,表示数据的起始地址
C 数据类型 1 Byte
D 具体数据 N Byte ,表示本行中数据字节的数量,它和A说明的数据长度一致
E 校验和 1 Byte ,检验和 = 0x100 - 累加和
数据类型详解
‘00’ 数据记录:用来记录数据,HEX文件的大部分记录都是数据记录
‘01’ 文件结束记录:用来标识文件结束,放在文件的最后,标识HEX文件的结尾
‘02’ 扩展段地址记录:用来标识扩展段地址的记录
‘03’ 开始段地址记录:开始段地址记录
‘04’ 扩展线性地址记录:用来标识扩展线性地址的记录
‘05’ 开始线性地址记录:开始线性地址记录

具体数据分析如下(以keil生成hex文件为例)
1. Hex文件第一行
在这里插述

例::020000040800F2
02:代表本行有2个字节数据
0000:本行数据的起始地址(偏移地址)
04:扩展线性地址标识,表面后面2个字节数据是后面数据的基地址
注:由于每行标识数据地址的只有2Byte,所以最大只能到64K,为了可以保存高地址的数据,故有了扩展线性地址记录也叫作32位地址记录或HEX386记录.这些记录含数据的高16位,扩展线性地址记录总是有两个数据字节。
0800:是扩展地址 (0x0800 << 16) = 0x08000000后面的数据记录都以这个地址为基地址。
F2: 记录本行校验和 F2=0x100-(0x02+0x04+0x08)

2. 第二行及中间数据
HEX文件格式详解_第2张图片

10:本行有16个byte数据 (0x10)
0000:表示本行数据起始地址为0x08000000。下一行则是0x08000010依次类推
00:数据标识,表示后面字节为记录的数据
48070020CD0100081D0400089D030008:10个byte的数据
DA: 校验和

3. 倒数第二行数据
HEX文件格式详解_第3张图片在这里插入图片描述

04:表示本行有4个byte数据
0000:表示本行数据起始地址为0x00000000
05: 表示后面存放要执行的下一个指令的地址
080001CD:表示要执行的下一个指令的地址(main函数地址)
21;校验和

4. 最后一行在这里插入图片描述

	01:标识hex文件结束
	注:每一个hex文件都以这个结尾。

3、其它

HEX文件格式详解_第4张图片
在这里插入图片描述

在这里插入图片描述

你可能感兴趣的:(文件格式,经验分享)