HEX文件格式说明

HEX文件格式说明

hex格式的文件是最常用的用于单片机程序编译后用于下载的文件。在这里我们介绍一下hex和bin文件的区别。bin文件是写在单片机内部的执行文件。就是bin文件里面的就是单片机里应该写入的所有内容。但是我们只有bin文件是无法下载使用的。因为bin文件里面没有地址信息。比如单片机的中断,是有固定的中断地址的,一旦发生中断就会跳转到中断地址运行。所以我们必须在把想在中断中执行的内容写在中断地址的地方(或者也可以在中断地址处加跳转指令到我们想要执行的地方)。再说hex文件,hex文件每一行开头都有地址信息,告诉你这一行应该存在内存的什么位置。所以编译好的hex文件可以直接下载使用。

:10000000020C0B02000A53917F3232020DC2758C32
:0F001000F4E4F58A758901F58EC2A9758810226E
:10002300020B6DFCF500040002002EC0E0C083C08B
:1000330082C0D075D000C000C0077808E606C3941C
:10004300014007200404D2047600900089E0FF04F5
:10005300F0EFC394134002E4F0C2CFD007D000D036
:10006300D0D082D083D0E032020006020316E864C7
:1000730080F8E933E83360110460F0ED33EC33705A
:100E7300AB40D2ACE4F5A743981075A91C8FA72209
:100E8300AFA7E4F5A7538E3FF591759310F59285BF
:100E9300939585929443E6404391048FA722AFA78D
:100EA300E4F5A7538ECFF5C875CBF4F5CA85CBCD42
:100EB30085CACCD2AD75C8048FA722C2B4D2B77F7E
:100EC3000A7E00120E447F020E7D007CB4120AD407
:100ED3007F0A7E00020E44A3E0FF8F993099FDC282
:020EE300992252
:00000001FF

我从某个hex文件里截取了开始和结尾部分,方便具体讲解。首先以第一行为例:
10000000020C0B02000A53917F3232020DC2758C32

首先这都是16进制的。
第一个0x10 表示这一行有16个数据位
第二第三 0x00,0x00(高位在前地位在后) 表示这一行的数据位从地址0x0000处开始存储。(一般情况下单片机上电都是从0x00处开始执行,然后跳转到需要的地方运行)
第四字节是一个标志位,有以下几种可能0x00 0x01 0x02 0x03 0x04 0x05,分别有以下含义
'00’数据记录:用来记录数据,HEX文件的大部分记录都是数据记录

'01’文件结束记录:用来标识文件结束,文件的最后一行的标志位

'02’扩展段地址记录:用来标识扩展段地址的记录(我不懂,没法解释)

'03’开始段地址记录:开始段地址记录(我也不懂)

'04’扩展线性地址记录:用来标识扩展线性地址的记录(我还是不懂)

'05’开始线性地址记录:开始线性地址记录(这个。。。不懂)
后面的一直到倒数第二位
02 0C 0B 02 00 0A 53 91 7F 32 32 02 0D C2 75 8C(正好16个)
这是数据位,这就是要写到单片机内存里的东西。

然后最后一位32 是校验位。校验方式是整行内容(除了最后的校验位)进行LRC(纵向循环冗余校验)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值