博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HEX文件格式
阅读量:7171 次
发布时间:2019-06-29

本文共 2009 字,大约阅读时间需要 6 分钟。

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

HEX文件格式

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

:(冒号) 每个Intel 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”

Intel HEX文件由任意数 量以回车换行符结束的数据记录组成数据记录外观如下:

: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”

Intel HEX文件必须以文件结束(EOF) 记录结束这个记录的记录类的值必须是01.EOF 记录 外 观总是如下:

:00000001FF
其中:00 是记录当中 数 据字 节 的 数量.
0000 是数据被下载到存储器当中的地址. 在文件结束记录当中地址是没有意义,被忽略的.0000h 是典型的地址;
01 是记录类型 01( 文件 结 束 记录)
FF 是 这个记录 的校 验 和, 计算方法如下: 256D-(00H+00H+00H+01H)=FFH;

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

由于每行标识数据地址的只有2Byte,所以最大只能到64K,为了可以保存高地址的数据,就有了Extended Linear Addre***ecord。如果这行的数据类型是0x04,那么,这行的数据就是随后数据的基地址。

扩展线性地址记录也叫作32位地址记录或HEX386记录.这些记录含数据的高16位扩展线性地址记录总是有两个数据字节,外观如下:

:02000004FFFFFC

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

0000 是地址域, 对于 扩 展 线 性地址 记录 , 这个 域 总是0000.
04 是记录类型 04( 扩 展 线 性地址 记录)
FFFF 是地址的高16 位.
FC 是这个记录的校 验 和, 计算如下: 256D-(02H+00H+00H+04H+FFH+FFH)/100H=FFH;

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

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

通 过 把 记录当 中的地址域 与 被移位的 来 自 扩 展 线 性地址 记录 的地址 数 据相加

获 得 数 据 记录 的 绝对 存 储器地址。

转载于:https://blog.51cto.com/14018328/2299891

你可能感兴趣的文章
Cisco DHCP Snooping + IPSG 功能实现
查看>>
Linux命令_用户身份切换
查看>>
学习在.NET Core中使用RabbitMQ之启动和基础(一)
查看>>
支付业务的数据库表的设计
查看>>
php面试题二--解决网站大流量高并发方案(从url到硬盘来解决高并发方案总结)...
查看>>
PHP 16 个编程法则
查看>>
【微信】2.微信小程序开发--官方开发工具使用说明
查看>>
RedisTemplate访问Redis数据结构
查看>>
面试如何回答优化数据库
查看>>
SuperSocket与Netty之实现protobuf协议,包括服务端和客户端
查看>>
ASP.NET CORE系列【二】使用Entity Framework Core进行增删改查
查看>>
AIDL基本使用
查看>>
MySQL中间件之ProxySQL(6):管理后端节点
查看>>
Mathematica 取整函数
查看>>
(转)Awsome Domain-Adaptation
查看>>
利用cwRsync客户端将Windows下文件同步到Linux
查看>>
npm常用命令
查看>>
String,StringBuffer和StringBuilder三者的讲解
查看>>
Understanding Digital Raw Capture
查看>>
(原創) unnamed object的多型只能使用reference (C/C++)
查看>>