一、bin文件
(1)二进制文件
(2)Bin文件不带文件内容校验功能
二、hex文件
(1)Intel
(2)十六进制
a.Start code——1个ASCII字符 ’:’,用于标志一行Hex记录的开始。
b.Byte count——2个16进制的ASCII数字,定义Data域字节数目。
c.Address ——4个16进制的ASCII数字,用于表示数据的偏移地址,其数据格式为大端模式(即低地址为高字节数据)。
d.Record type——2个16进制的ASCII数字,其值范围为00 ~05,用于定义记录的类型。
行数 | 代码 | 含义 |
第一行 | : 020000040800F2 | 02:代表本行有2个字节数据 0000:本行数据的起始地址(偏移地址) 04:扩展线性地址标识,表面后面2个字节数据是后面数据的基地址 0800:是扩展地址 (0x0800 << 16) = 0x08000000后面的数据记录都以这个地址为基地址。 F2: 记录本行校验和 F2=0x100-(0x02+0x04+0x08) |
中间行 | : 1000000048070020CD0100 081D0400089D030008DA |
10:本行有10个byte数据 0000:表示本行数据起始地址为0x08000000。下一行则是0x08000010依次类推 00:数据标识,表示后面字节为记录的数据 48070020CD0100081D0400089D030008:10个byte的数据 DA: 校验和 |
倒数第二行 | : 04000005080001CD21 | 04:表示本行有4个byte数据 0000:表示本行数据起始地址为0x00000000 05: 表示后面存放要执行的下一个指令的地址 080001CD:表示要执行的下一个指令的地址(main函数地址) 21;校验和 |
最后一行 | : 00000001FF | 01:标识hex文件结束 |
三、SREC
(1)Motorola(Motorola格式记录文件是ASCII格式的文件)
(2)格式:.s19 .s28 .s37 .s .s1 .s2 .s3 .sx .srec .mot
(3)带有程序的地址信息和数据校验功能
(4)结构
a.Record type ——2个字节ASCII字符,第一个字符为‘S’,第二个字符为ASCII数字的‘0’~‘9’
1)对16位宽度的地址而言,其使用S0、S1、S5、S9类型的数据记录;
2)对24位宽度的地址而言,其使用S0、S2、S5、S8类型的数据记录;
3)对32位宽度的地址而言,其使用 S0、S3、S5、S7类型的数据记录。
b.Byte count ——地址+数据+校验和的字节数 ——2个16进制的ASCII数字
c.Address ——大端地址——4/6/8个16进制的ASCII数字,取决于Record type的类型
d.Data ——数据 ——2*n个16进制的ASCII数字(n字节数据)
e.Checksum ——2个16进制的ASCII数字
四、格式文件对比