HEX文件格式详解

本文详细介绍了Intel HEX文件格式,包括文件的构成、各部分的含义以及数据类型的解析。HEX文件常用于存储将写入ROM或EPROM的程序和数据,主要用于EPROM编程器或模拟器。内容包括数据记录、文件结束记录、扩展段地址记录等,通过举例分析了HEX文件的每一行格式和数据校验。
摘要由CSDN通过智能技术生成

HEX文件格式详解

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

1、简介

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

2、格式说明

先看看一个完整的hex文件
在这里插入图片描述

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. 第二行及中间数据
在这里插入图片描述

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

3. 倒数第二行数据
在这里插入图片描述在这里插入图片描述

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

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

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

3、其它

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 19
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值