Hex文件格式详解

本文详细介绍了HEX文件格式,包括其作为单片机可执行格式的作用、行数据结构、数据类型和校验和计算。通过具体例子解析了HEX文件的构成,如扩展线性地址记录,并提供了相关参考资料。
AI助手已提取文章相关产品:

1.HEX文件

HEX文件格式是可以烧写到单片机中,被单片机执行的一种文件格式,生成Hex文件的方式有很多种,可以通过不同的编译器将C程序或者汇编程序编译生成HEX[1]。

2.格式解析

HEX文件的每一行格式均相同,[0x3A][数据长度1Byte][数据地址2Byte][数据类型1Byte][数据nByte][校验1Byte][0x0D][0x0A],

其中,

[数据长度1Byte]表示本行包含的数据长度;

[数据地址2Byte]表示数据地址;

[数据类型1Byte]表示所记录地址类型

00-Data Record,数据记录

01-End of File Record,文件结束记录

02-Extended Segment Address Record,扩展段地址记录

03-Start Segment Address Record,开始段地址记录

04-Extended Linear Address Record,扩展线性地址记录

05-Start Linear Address Record,开始线性地址记录

上面的后两种记录,都是用来提供地址信息的。在有这两种记录的时候,可以根据记录计算出一个基地址。对于后面的数据记录,计算地址的时候均是以这些基地址为基础的。

[校验1Byte]计算校验和之前的所有16进制码的累加和(不计进位),校验和=0x100-累加和。


  3.举例

以本人供测试使用的单片机STM32L151RBT6在keil5下所生成的hex文件为例对此文件进行解析:



Line1:020000040800F2

02:本行数据长度;

0000:地址为0000;

04:Extended Linear Address Record扩展线性地址记录,即后面的数据以此为基地址;

0800:扩展线性 地址即基地址为0800(本行数据长度为2);

F2:校验和,在F2之前的所有数据累加和取低字节,计算结果为02+04+08=0E,0x100-0x0E=0xF2;

Line2:100000005004002009010008FD180008CD16000862

10:本行数据长度为0x10即16个字节

0000:偏移地址为0000

00:Data Record数据记录,即此行内容为数据

5004002009010008FD180008CD160008:实际数据,以Line1中的0x8000为基地址,偏移地址为0000,依次存放的16字节数据内容。

62:校验和,10+50+04+20+09+01+08+FD+18+08+CD+16+08=9E(计算结果取低字节),0x100-0x9E=0x62

Line3:......

......



Line667::00000001FF

00:此行数据长度为0

0000:地址为0

01:End of File Record,文件结束

FF:校验和为0xFF


参考资料

[1]百度百科:https://baike.baidu.com/item/hex%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F/1025048?fr=aladdin

附上参考文章:http://www.forwhat.cn/post-240.html

您可能感兴趣的与本文相关内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值