Hex文件格式解析
全文格式
段落0基地址,指定高2字节
段落0内容,每行指定低2字节……
段落1基地址,指定高2字节
段落1内容,每行指定低2字节……
这里要注意的是,段落的前后跟地址的先后无关,可以把高位的地址放在文件前面。
行格式
hex文件每一行格式都是一样的
区域 | RECORD MASK | RECLEN | LOAD OFFSET | RECTYPE | INFO OR DATA | CHKSUM |
长度 | 1字节 | 1字节 | 2字节 | 1字节 | N字节 | 1字节 |
RECORD MASK:就是一个冒号
RECLEN:表示[INFO OR DATA]区域有多少字节的数据长度
LOAD OFFSET:表示数据偏移的地址
RECTYPE:记录类型
INFO OR DATA:数据或地址
CHKSUM:该行的检验和
例如某一行内容为
: 04 2000 00 FECACEFA 4C
04 表示本行有4个字节数据
2000 表示偏移地址为0x2000
00 表示记录类型为数据
FECACEFA 表示本行数据
4C 为该行校验和
校验算法
前面所有数据按照字节累加和Sum =(04 + 20 + 00 + FE + CA + CE + FA)= 0x3B4
校验和CHKSUM = (0x100 - Sum)& 0xFF = 0x4C
记录类型
就是看RECTYPE区域
数值 | 代表意义 |
00 | 数据 |
01 | 文件结束,最后一行都是:00000001FF |
02 | 扩展段,[LOAD OFFSET]区域用不上为0000 |
03 | 起始段,[LOAD OFFSET]区域用不上为0000 |
04 | 扩展线性地址,[LOAD OFFSET]区域是后面数据的基地址,也就是高16位 |
05 | 起始线性地址,[LOAD OFFSET]区域一般为0000,[INFO OR DATA]区域的内容是函数入口地址 |