|
汽车零部件采购、销售通信录 填写你的培训需求,我们帮你找 招募汽车专业培训老师
1 Hex
1.1 格式说明
文件以行为单位,每行以冒号开头,内容全部为16进制码(以ASCII码形式显示)。hex文件理解为带有地址信息的bin数据的记录集合。
如上图所示hex文件每行以冒号(:)开头,然后是1个字节的表示有多少数据的数据长度,再接着是2个字节的地址信息,随后是数据类型(‘00’ 用来记录数据,‘01’ 用来表示文件结束,‘02’ 用来表示扩展段地址的记录‘,03’ 用来表示开始段地址的记录,‘04’用来表示扩展线性地址的记录,‘05’开始线性地址的记录)和数据,最后就是校验码(校验码的计算方法为先计算该行所有字节(除checksum外)的和S,然后checksum = 0x100 – S%256)。
1.2 举例说明:
Hex的开头一般为:
020000040800F2
02表示数据长度为2个字节,0000表示本行数据的起始地址,04表示扩展线性地址(后面的后续地址的高字节),0800即为32位地址的高16位,F2表示校验和。Hex文件随后跟着数据:
:10001000BD010008BD010008BD010008000000008E
10表示数据长度为0x10,0010表示32位地址的低16位,此时后面数据的地址为0x08000010,00表示数据类型为数据,0BD010008BD010008BD01000800000000即为数据,8E表示校验和。
Hex文件结尾为::00000001FF00表示字节长度为0,0000表示地址为0,01表示文件结束,FF表示校验和。
2 S19文件
2.1 格式说明
S19文件每一行数据全部由记录类型和十六进制数字组成,包含类型、长度、存储地址、代码/数据和校验和五个部分。
S19中记录类型包括S0、S1、S2、S3、S5、S7、S8、S9,S4是保留的,目前没有定义,具体说明如下所示:
1)S0:S格式文件的第一个记录,表示文件名(含路径),存储地址部分没有使用,以0000置位。此记录表示记录的开始,无需下载到MCU;2)S1:地址为2字节(4个字符)的记录;3)S2:地址为3字节的记录;4)S3:地址为4字节的记录;5)S5:标记本文件的S1、S2、S3记录的个数(此记录不是一个S文件所必须的);6)S7:地址为4字节,表示程序的开始执行地址,代码/数据部分没有被使用,此行表示程序的结束,无需下载到MCU;8)S8:地址为3字节,表示程序的开始执行地址,代码/数据部分没有被使用,此行表示程序的结束,无需下载到MCU;9)S9:地址为2字节,表示程序的开始执行地址,代码/数据部分没有被使用,此行表示程序的结束,无需下载到MCU;
记录长度表示后面其余部分(地址+数据+校验和)的字节数。该字段最小值为3(两个字节地址字段+1个字节校验和)
校验和Checksum= 取补码((uint8_t)(Byte count + Address + Data) )
2.2 举例说明
在S19的开头一般为
S02B00006F75747075745C7331395C445F455441535F4249505F4841445F547269636F72654869676874656365
S0表示含路径的文件名,2B表示数据长度,0000表示无用地址。
S19文件随后跟着数据:
S315800000004DC0E1FFEE07910000F8D9FF70F0DC0FDC
S3表示地址为4字节的记录,0x15表示长度,0x80000000表示数据存储的地址,4DC0E1FFEE07910000F8D9FF70F0DC0F表示数据,DC表示checksum
S19文件结束
S70580800000FA
S7表示程序的结束,05表示长度,80000000即为程序开始执行的地址。
3 Bin文件
BIN文件只是包括了纯粹的二进制数据。平时我们通过 memtool等工具下载的是不需要指定地址的 HEX 文件,而串口 IAP 下载的是 BIN 文件,需要在程序中指定地址(如我们使用ST-LINK Utility烧录时会指定起始地址)。BIN文件的大小就是文件包括的数据的实际大小。
4 ELF文件
elf文件除了包含代码/数据外,还包含其它额外的信息,如段的加载地址,运行地址,重定位表,符号表等,主要用于调试使用。 |
|