共7页精讲:送上独到的见解,。
目录
1 Intel Hex,Motorola S-record(S19/SREC/mot/SX)和bin文件之间的差异
2 Motorola S-record(S19/SREC/mot/SX)文件和Intel Hex文件的差异
3 如何理解ASCII文本形式(Motorola S-record文件和Intel Hex文件)传达二进制信息
优质博文推荐阅读(单击下方链接,即可跳转):
在以下3篇博文中,我们分别介绍了Motorola S-record(S19/SREC/mot/SX)文件,Intel Hex文件和Bin文件,现在我们来系统性的总结一下三者的差异。
【嵌入式烧录/刷写文件】-2.1-详解Intel Hex格式文件https://blog.csdn.net/qfmzhu/article/details/129817980
【嵌入式烧录/刷写文件】-3.1-详解二进制Bin格式文件https://blog.csdn.net/qfmzhu/article/details/129860220
1 Intel Hex,Motorola S-record(S19/SREC/mot/SX)和bin文件之间的差异
Motorola S-record文件是Motorola公司开发的一种ASCII码文本文件格式,用于将程序代码和数据传输到ROM或FLASH等非易失性存储器中。Motorola S-record文件包含了地址信息、数据和校验和等信息。
Intel Hex文件也是一种用于将程序代码和数据传输到ROM或FLASH等非易失性存储器中的ASCII码文本文件格式。它与Motorola S-record文件类似,但是采用了不同的格式和校验和算法。
Bin文件是一种二进制文件格式,它是计算机中最基本的文件格式之一,不同于Motorola S-record文件和Intel Hex文件,它不包含地址信息或校验和,只包含原始二进制代码+数据。通常,它被用于将软件程序直接写入ROM或FLASH等非易失性存储器中。
Motorola S-record文件 | Intel Hex文件 | Bin文件 | |
Record start | ASCII码大写字母"S" | ASCII码冒号“:” | 无 |
Record type | 位置在Record start之后,用一个0到9的ASCII码字符表示。 | 位置在Address之后,用两个00到05的ASCII码字符表示。 | 无 |
Byte count | 表示一个Record的Address段,Data段和Checksum段的字节数之和。 长度一般在3~37字节数之间,对于S0类型的Record,Byte count可能在3~255字节数之间。 | 表示一个Record的Data段字节数。 长度一般选取8,16和32字节数,范围在0~255字节之间。 | 无 |
Address | 由Record type决定,4/6/8个ASCII码字符 | 4个ASCII码字符 | 无 |
Data | 用ASCII文本形式传达二进制信息的十六进制值。 | 二进制信息 | |
Checksum | Byte count、Address和Data的两个ASCII码字符对所代表的数值之和的LSB的反码。 | Byte count、Address,Record type和Data的两个ASCII码字符对所代表的数值之和的LSB的补码。 | 无 |
Text line terminator | 有 | 有 | 无 |
除了上述提到的基本差异外,Motorola S-record文件、Intel Hex文件和Bin文件还有一些其他的差异:
文件大小:Motorola S-record文件和Intel Hex文件通常比Bin文件要大,除了它们包含了额外的元数据和校验和信息,还有数据段表示是bin文件的两倍。
可读性:Motorola S-record文件和Intel Hex文件通常比Bin文件更易读,因为它们包含了地址和数据的解释。而Bin文件只包含原始的二进制数据,不太容易读懂。
数据存储方式:Motorola S-record文件和Intel Hex文件通常使用大端存储方式,而Bin文件有时使用与系统架构相关的存储方式,如小端存储方式。
数据压缩:Motorola S-record文件和Intel Hex文件可以对数据进行压缩,以减少文件大小。Bin文件不支持数据压缩。
2 Motorola S-record(S19/SREC/mot/SX)文件和Intel Hex文件的差异
通过图2-1的展示,您可以清楚的看到第一章节表格中总结的内容:
Motorola S-record(S19/SREC/mot/SX)文件和Intel Hex文件除了Data段和16位Address段一样外(当是24/32位地址时,二者的Address段是不一样的),Record start,Record type,Byte count,Checksum的表示有明显差异的,见图2-1。
图2-1
3 如何理解ASCII文本形式(Motorola S-record文件和Intel Hex文件)传达二进制信息
不管是Motorola S-record(S19/SREC/mot/SX)文件,Intel Hex文件,还是Bin文件,它们都是用无数个连续的0和1序列文件,不同的编码格式,实质是选取了多少个Bit,来表示一个有含义的字符。
将图3-1中的Motorola S-record(S19/SREC/mot/SX)文件用十六进制显示,见图3-2,您可以清楚地看到,Motorola S-record(S19/SREC/mot/SX)文件中每个字符都是用ASCII码表示的。
Motorola S-record(S19/SREC/mot/SX)文件中的地址段使用ASCII码显示,见图3-1:
58595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
Motorola S-record(S19/SREC/mot/SX)文件中的地址段使用十六进制显示,见图3-2:
353835393541354235433544354535463630363136323633363436353636363736383639364136423643364436453646373037313732373337343735373637373542
图3-1
图3-2
接着我们将该Motorola S-record(S19/SREC/mot/SX)文件文件用二进制显示,Motorola S-record(S19/SREC/mot/SX)文件中,每个ASCII码字符占用8个Bit,见图3-3。
图3-3
对比图3-1的S19文件和图3-4的Bin文件,您会发现Motorola S-record(S19/SREC/mot/SX)文件和Intel Hex文件地址段ASCII码字字符与Bin文件十六进制数字字符是相同的,但前者使用了2倍的长度来表示/描述后者。注意这里的总结!!!
图3-4
将该bin文件用二进制显示,bin文件中,每个十六进制字符占用4个Bit,见图3-5。
图3-5
结尾
获取更多“汽车电子资讯”和“工具链使用”,
请关注CSDN博客“汽车电子助手”,做您的好助手。