控制器程序格式——bin/hex/SREC

一、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,用于定义记录的类型。

扫描二维码关注公众号,回复: 15485195 查看本文章

行数 代码 含义
第一行 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数字

四、格式文件对比

猜你喜欢

转载自blog.csdn.net/weixin_64064747/article/details/128943216