Keil环境下创建STM32汇编语言工程后分析HEX文件内容

本文详细介绍了HEX文件的格式,包括每一行的数据结构,如数据长度、存储地址、数据类型、数据内容和校验值。HEX文件使用ASCII表示二进制数据,每一行的数据长度和数据内容通过特定的字节表示。例如,冒号后的两位数字代表数据长度,随后的地址和数据类型字段指示数据在内存中的位置和性质。最后的校验值用于验证数据的正确性。此外,还讨论了HEX文件在处理超过64KB数据时的限制。
摘要由CSDN通过智能技术生成

用记事本打开hex文件,是一串十六进制字符:

    上面就是一个hex文件内容首尾的一部分数据,很明显可以看出这不是二进制数据。Hex文件是用ASCII来表示二进制的数值,十六进制数组成的指令或者数据,每一行就是一个hex记录。

hex文件每一行的数据格式为:

冒号数据长度存储地址数据类型数据内容校验值
1字节2字节1字节n字节

1字节

冒号后两位数字代表数据长度,即该行数据内容的长度值,例如第一行,:020000040800F2中的“02”表示数为0x02,“F2”就表示为0xF2。如果数据位地址时,地址高位在前低位在后。

  数据内容在flash中的存储地址是数据长度后四位数字,但是由于存储地址只占有2个字节所以最大只能到64K,对于超过64K的数据就不能编码存储地址。

 以第一行“:020000040800F2”为例:

数据类型位的值是“04”那么04后面的数据内容0800则为存储后面数据的基地址

以第二行”:100000000006002031010008390100083B0100080A“为例:

1、“:”表示一行的开始;

2、第1、2个字符10,即“0x10”表示本行包含的数据长度为16个;

3、第3、4、5、6个字符0000,固定这4位表示地址,即“0000”表示数据存储的起始地址,表示在0x0000地址开始存放本行包含的16个数据。

4、第7、8个字符00,固定这2位表示本行包含数据数据的类型,即“00”表示本行包含的数据为实际烧写的数据。

5、由前两个字符“10”可知本行的数据长度位16个字节,所有往后的32个字符就是本行包含的数据,每两个字符表示一个字节数据,总共有16个字节数据。跟最前两个字符决定的长度一致。但是这个数据的长度不是固定的。

6、最后两个字符0A为本行的校验码。

参考文献:

(18条消息) hex文件分析_yingjie79613的博客-CSDN博客

(18条消息) HEX文件格式分析_niyaozuozuihao的博客-CSDN博客_hex分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值