【dsPIC33E】Bootloader(二)Microchip的Hex文件结构介绍

版权声明:本文为博主原创文章,转载注明出处 https://blog.csdn.net/u010875635/article/details/84660665

市面上大多数单片机的Hex文件都是基于Intel Hex,而dsPIC33E也不例外,dsPIC33E支持的格式为Intel HEX32(INHX32)。

hex文件以ascii形式,按照行来记录数据

每一行从:开始,每至少2个字符表示一组16进制数据,格式为 :BBAAAATTHHHH....HHHCC
                     BB -- 16进制,表示此行数据长度字节数,表示HH的数目
                AAAA -- 16进制,表示数据记录的起始地址,若此行是数据记录,则表示偏移地址,其它无意义
                     TT -- 16进制,表示记录类型,
                                  00-数据记录(Data Record); 
                                  01-文件记录结束(End of File record); 
                                  02-扩展段地址记录(Extend Segment address record);后面所有数据地址+段地址左移4位
                                  04-扩展线性地址记录(Extend Linear address record);后面所有数据地址+线性地址左移16位

             HH...HH -- 16进制,低字节/高字节 结合数据,高字节在后;注意,若是偏移地址,则都是2字节,高字节在前,低字节在后
                     CC -- 16进制,校验码,除冒号和自身以外的其他字节数据加起来模除256的余数的补码。

例如:10A6B0000000EB00D4FD0700000F78001E007800BA

CC=01+~(10+A6+B0+00+00+00+EB+00+D4+FD+07+00+00+0F+78+00+1E+00+78+00)=BA

需要特别注意的是:

1、Intel hex是针对字节的,而16位程序计数器不是,需要进行特殊处理,对于dsPIC33E/PIC24E,每个程序存储器地址都是乘了一个2来获取字节地址,例如一个数据存于0x100,而在Hex中为0x200,详见dsPIC33E/PIC24E编程规范(DS70619B)扩展A中的介绍。

2、dsPIC33E/PIC24E没有扩展段地址,只有扩展线性地址

3、MPLAB X项目属性中的建设里,勾选规范会HEX文件和不勾选生成的HEX文件是不一样的,建议规范Hex

4、数据记录为little-endian,低端在前;而地址记录为bit-endian,高端在前

5、Hex文件记录中,一旦出现段地址或者线性地址,之后所有数据都要加偏移地址,直到出现一个新的段地址或者线性地址,再重新变更偏移地址。

6、对于真实地址,是 线性地址<<16 + 段地址<<4 + 偏移地址

示例:

:020000040108EA           线性偏移地址:0108

:0200000212FFBD           段偏移地址:12FF

:0401000090FFAA5502       数据地址:0100

:00000001FF               文件结束

真实地址为:0108左移16位,为01080000;12FF左移4位,为00012FF0;数据地址为00000100;加起来为010930F0

最终解析出来(8位单片机):

地址     数据

010930F0: 90

010930F1: FF

010930F2: AA

010930F3: 55

对于dsPIC33E/PIC24E,16为单片机,2个16位组成32(有效的是低24位)地址要除以2,所以真实地址解析如下:

00849878: 55AAFF90

0084987A: ......

而2个地址组成一个24位的指令字(32位的高8位为0),低端在前,所以表示实际地址应该如下:

00849878: 00AAFF90

0084987a: xxxxxxxx

 

以下为dsPIC33EP256MC506程序编译后的Hex文件解析,工具源码下载地址(内含Hex文件解析及Bootloader上位机):https://download.csdn.net/download/u010875635/10819828


本节Hex文件解析到此结束,下一节将数Bootloader下位机设计。

猜你喜欢

转载自blog.csdn.net/u010875635/article/details/84660665