hex文件格式详解(此部分转载)
冒号 | 本行数据长度 | 本行数据起始地址 | 数据类型 | 数据 | 校验码 |
---|---|---|---|---|---|
: | 1 byte | 2 byte | 1 byte | n byte | 1 byte |
: | 05 | 0010 | 00 | A2C2A280FE | 67 |
: | 00 | 0000 | 01 | FF |
第一个字节:表示本行的数据长度.
第二个,第三个字节表示本行数据的起始地址.
第四字节表示数据类型,数据类型有: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:开始线性地址记录
然后是数据,最后一个字节 为校验和.
校验和的算法为:计算校验和前所有16进制码的累加和(不计进位)
检验和 = 0x100 - 累加和
一个完整的超级简单的hex文件的截图:(notepad++代开,第一行的|是我的光标)
作者:NothingIsEverything
出处:https://www.cnblogs.com/techecho/p/9805036.html
在flash中的存放
这是一个iap程序,烧录在stm32l152rbt6.
开头:
结尾:
可以看出,仅有数据类型为00的数据部分被写入到了flash,hex文件中的地址与flash烧录的地址相同。
01、04、05类型的数据不会被烧录,02和03暂不清楚。