HEX文件是十六进制文件,整个文件以旦唤行为单位,每行以冒号开头,内容全部为16进制码(以ASCII码形式显示)。
第一个字节 0x10表示本行数据的长度;
第二、三字节 0x00 0x08表示本行数据的起始地址;
第四字节 0x00表示数据类型,数据类型有:0x00、0x01、0x02、0x03、0x04、0x05。
'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:开始线性地址记录
然后是数据,最后一个字节为校验和。
HEX 和BIN hex 文件常用来保存单片机ARM或其他处理器的目标程序桐基旦代码。它保存物理程序存储区中的目标代码映象。一般的编程器都支持这种格式。
hex 文件全部由可打印的ASCII
字符组成,如下例所示:
:2000000012014c75a800e4f508f509780a7a78e4f608dafcd283fcfded240af9a
7050dbd81
:2000200000010ced2488ec34ff50edc283e4fcfded240af9e76d7013ed33e43c7
00d0dbd2a
:2000400000010ced2488ec34ff50e50509e50970020508e50924a8e50834fd50a
ee4f50874
hex
由一条或多条记录组成,
每条记录都由一个冒号
“:”
打头,
其格式如局扰下:
:CCAAAARR...ZZ
其中:
CC
本条记录中的数据字节数
AAAA
本条记录中的数据在存储区中的起始地址
RR
记录类型:
00
数据记录
(data record)
01
结束记录
(end record)
02
段记录
(paragraph record)
03
转移地址记录
(transfer address record) ...
数据域ZZ 数据域校验和 hex文件记录中的数字都是16进制格式,锋指两个16
进制数字代表一个字节。CC域是数据域中的实际字节数,地址、记录类型和校验和域没有计算在内。
校验和是取记录中从数据字节计数域(CC)到数据域(...)最后一个字节的所有字节总和的2的补码。
Hex 文件和 Bin 文件的区别,这两个文件里都包含 CPU可以执行的机器码租睁做,只是 Hex 比Bin 多一些信息,就是机器码的存储地址。这些存储地址实际是给烧写程序的软件使用的。如果我们烧写 Hex 文件到板卡里(Flash 存储器) ,
烧写软件就不会问我们存储地址,因为这个文件弊衡里已经包含了这类信息了,这类信息是编译器在生成 Hex
的时候加进去的,当然编译器会有对应的项要你填写。如果是烧写 Bin 文件,烧写软件就会询问你要烧写
到哪个地址。一般情况下,CPU会从 0 地址开始执行程序,但是有些 CPU是从其他地址开始的,所以这个
起始值要视情况而定。而且有时为了调试方便,有些工程师会把早数 Bin烧到 RAM 里。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)