MCU技术进阶 ----hex文件格式详解

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

中文名

hex文件格式

所属学科

计算机

Hex文件格式解析

Hex文件如果用特殊的程序来查看(一般记事本就可以实现)。打开后可发现,整个文件以行为单位,每行以冒号开头,内容全部为16进制码(以ASCII码形式显示)。Hex文件可以按照如下的方式进行拆分来分析其中的内容:

例如:

:020000040000FA , 我把它看做 0x02 0x00 0x00 0x04 0x00 0x00 0xFA

第一个 0x02 为数据长度。

紧跟着后面的0x00 0x00 为地址。

再后面的0x04为数据类型,类型共分以下几类:

'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//开始线性地址记录

然后,接着0x04后面的两个 0x00 0x00就是数据。最后一个0xFA是校验码。

HEX文件的每一行都是这样的格式:

<0x3a>

[数据长度1Byte]

[数据地址2Byte]

[数据类型1Byte]

[数据nByte]

[校验1Byte]

<0x0d>

<0x0a>

在例如:

:10 00 00 00 18F09FE518F09FE518F09FE518F09FE5 C0

按照上面的数据行格式分析如下:

[数据长度1Byte]

10(十六进制)

[数据地址2Byte]

00 00

[数据类型1Byte]

00

[数据nByte]

18F09FE518F09FE518F09FE518F09FE5

[校验1Byte]

C0

<0x0d>

<0x0a>

每行中的数据并不是一定有的,第二个字节数

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

:020000040004F6

:1000000018F09FE518F09FE518F09FE518F09FE5C0

:1000100018F09FE5805F20B9F0FF1FE518F09FE51D

第一行,是Extended Linear Address Record,里面的数据,也就是基地址是0x0004,第二行是Data Record,里面的地址值是0x0000。那么数据18F09FE518F09FE518F09FE518F09FE5要写入FLASH中的地址为 (0x0004 << 16) | 0x0000,也就是写入FLASH的0x40000这个地址。同样,第三行的数据的写入地址为0x40010。当一个HEX文件的数据超过7k的时候,文件中就会出现多个Extended Linear Address Record。

End of File Record 行是每一个HEX文件的最后一行。例如:

:00000001FF

这样的一行数据内容是固定的,数据长度为0,地址为0。

校验值:每一行的最后一个值为此行数据的校验和。例如:

:1000000018F09FE518F09FE518F09FE518F09FE5C0 这行中的 0xC0

:1000100018F09FE5805F20B9F0FF1FE518F09FE51D 这行中的 0x1D

校验和的算法为:计算从0x3A 以后(不包括0x3A)的所有各字节的和模256的余。即各字节二进制算术和,不计超过256的溢出值,然后用0x100减去这个算数累加和,得出得值就是此行得校验和。
 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值