S-record & Intel hex
s-record 文件格式
+------------------//-------------------//-----------------------+
| type | count | address | data | checksum
+------------------//-------------------//-----------------------+
其中type指明记录类型
(head record:S0、0x5330;data record:S1、0X5331,S2、0X5332,S3、0X5333;count record:S5、0X5335,termination record:S7、0X5337,S8、0X5338,S9、0X5339),type为两字符宽度;count记录数据个数,两个字符组成一组,并被认为是16进制(例如3538当以ASCII字符显示时为58,58被当成十六进制,来记录该记录中还有多少个字符对);address是地址,同count一样,每两个字符组成一组,并被认为是16进制(address是data中以ASCII字符显示出来时的相应16进制数的载入内存地址,比如我们需要的地址——16进制——是4位,那么我们就需要8个ASCII字符来显示该地址);data是个数据信息,我们以ASCII字符新式显示出来,以type做出相应的解释及操作。checksum校验,2字符宽度,仍被解释成相应的十六进制数。每一个记录以换行结束。
以下均以ASCII字符显示(可以用hexdump查看文件中的真是数据)
count均以两个字符ASCII显示出来,check有从count开始的相应的hex相加取最低字节的补码而得。
S0 记录头 type S0, address 0000,mame 20字符:模块名,ver 2字符:版本名 rev 2字符:修订号,descrption 描述头
S1 记录数据 type S1,4个字符描述address(真实地址一共两字节),data转换成相应的hex需载入内存。
S2 同S1,6个字符描述address(真实地址一共3字节)
S3 同S1,8个字符描述address(真实地址一共4字节)
S5 记录个数,4个字符描述address,其address统计其前的data count共有几个
S7 记录终止,8个字符描述address(真实地址一共4字节),address说明程序执行在内存中的起始地址。
S8 同S7,6个字符描述address
S9 同S7,4个字符描述address
Intel-HEX格式
byte count是data bytes的长度,address of first data是数据的起始地址。record type是该记录的类型:00,data record; 01 end-of-file record; 02 extended segment address record; 04 extended liner address record; 05适用于MDK-ARM,start liner address record。从冒号开始的(不包括冒号)所有字母对所表示的十六进制数都加起来,然后模除256,在求相应的补码即可。
Data Records
End-of_File
扩展线性地址记录
扩展段地址记录
MDK—ARM only