0x01 概述
此处简单的对于HEX文件进行一些说明介绍,主要介绍了关于Hex文件基本的架构与数据定义
此章过于简单以至于没多少字,主要是hex文件本就是使用一种可视化显示不在Ascii编码内真实数据的一种方式,其较为完整的将binary类别文件转换为Ascii+特殊定义的格式且全部都是可视化的思想真的是很厉害。但是文件格式本身感觉确实没啥说的,主要是在对于后面的object解析文件做引子。
阅读本文之前,您需要掌握的技能有:
技能名称 | 技能熟练度 | 技能教程链接 |
---|---|---|
数据类型 | 熟悉 | 暂无 |
0x02 应用说明
HEX文件格式常用于嵌入式软件编程时作为最后的生成代码数据的文件格式之一,其特点是将代码数据与ROM地址组合在一起,方便与上层生成软件进行解耦,也便于烧写器进行烧写。HEX文件来源可以直接使用搜索引擎进行搜索,这里不再赘述。
0x03 数据格式说明
打开hex文件就可以看出,文件的格式很容易识别。
一个合格的HEX文件编码格式遵循的就是数据段的原则。每段数据段定义极少的数据区,每个数据区为16进制直接转换的ASCII编码,一段数据段分为:段起始、数据长度定义、数据地址(偏移地址)、段定义、数据、校验和。
0x13 段起始
一段的段起始为0x3A,显示的就是:
,也是软件识别段的方式。
0x23 数据长度定义
这个直接定义为16进制的数据,与后面的数据直接对应。
0x33 数据地址
数据地址一般都会定义为当前基地址的偏移(0~FFFF),当然也可以直接定义为当前地址。数据格式为16进制。
0x43 段定义
暂时HEX支持的定义为6种:
'00' Data Rrecord:用来记录数据,HEX文件的大部分记录都是数据记录
'01' End of File Record: 用来标识文件结束,放在文件的最后,标识HEX文件的结尾
'02' Extended Segment Address Record: 用来标识扩展段地址的记录
'03' Start Segment Address Record:开始段地址记录
'04' Extended Linear Address Record: 用来标识扩展线性地址的记录
'05' Start Linear Address Record:开始线性地址记录
这些段定义仅是定义了当前的段在文件中的数据标志。一个文件可以出现多个段和多个起始与结束。这也是大多数的数据文件的组成格式。毕竟这样可以大幅度的节省冗余数据。
但是需要注意的是,如果当前数据是严格按照一定规律排列且有对于程序完整性进行校验的需求的话,有必要将所有的数据进行填充。这个在之后的文章中会讲到。
0x53 数据
当前段的数据,也是16进制。
0x63校验和
校验和的计算为前方所有的数据的累加和,用于保证当前数据没有错误。
0x04 结语
本文概述的HEX文件相关的数据格式。为后续的使用做了基础介绍。
更多
本文首发自 基本:HEX文件格式定义,更多文章可进入我的博客详查