您的位置:

S19文件格式详解

一、S19文件格式基础概念

S19是一种十六进制文件格式,用于在微处理器上加载程序和数据。与其他十六进制格式相比,S19文件的优点在于可以从中提取程序和数据的信息,以及为微处理器提供准确的代码和数据。

S19文件的格式非常简单:每行开头都是"S"或"D",后跟2位字节数,然后是地址,最后是数据。在S19文件中,数据记录包含地址和数据。此外,还有许多其他记录类型,例如开始(S0)和结束(S8、S9)等记录类型,也包含在文件中。记录类型字母后的数字表示记录占用的字节数。例如,S0表示16个字节,S3表示32个字节。

下面是一个S19文件的样例,来自Microchip公司的PIC26F S19格式文件示例:

S00F000068656C6C6F20576F726C6400FF
S114000022002180009008480008008C5404F
S1070000010040F9
S9030000FC

上面的样例是包含3个记录类型的S19文件,以"S0"记录开头,以"S9"记录结尾。

二、S19文件格式的记录类型

S19文件格式有多种记录类型。下面是一些常用的记录类型:

1. S0记录类型

S0记录类型用于指示文件开始的一个标头记录。它包括16个字节、2位长度、2位地址和12位文件制造商的标识符。这些数据用于验证文件完整性,并加以保护。

2. S1、S2、S3记录类型

S1、S2和S3记录类型是S19文件格式中最常用的三个记录类型。它们分别代表字节数为16位、24位和32位的代码段。其中,S1行记录包含16位地址和16位数据,S2记录包含24位地址和24位数据,S3记录包含32位地址和32位数据。

3. S5和S7记录类型

S5和S7记录类型用于指示代码段的出现。这两条命令的唯一区别在于地址长度:S5记录类型使用24位地址,而S7记录类型使用32位地址。每个记录都包含16位长度、地址和数据信息。

4. S8和S9记录类型

S8和S9记录类型用于标识代码段的结束。S8记录类型包含16位地址,而S9记录类型包含32位地址。每个记录都包括16个字节的二进制数据。

三、S19文件格式的制作方法

接下来我们介绍一种使用Keil C51编译器生成S19文件的方法。首先,你需要在Keil C51编译器中打开你的程序。然后,在菜单栏中选择“Options for Target”,进入选项设置界面。

在选项设置界面中,选择“Output”,然后将“Output File Format”设置为“Intel Hex-80(.hex)”。这将使Keil C51编译器生成一个标准的Intel HEX文件,其中包含16位的地址和8位的数据。

接下来,你需要使用一个称为“hex2s19”的工具将Intel HEX文件转换为S19文件。该工具可以在http://www.mkeps.com/hex2s19.html上下载。

使用该工具时,只需指定输入文件和输出文件,然后运行工具即可。输出文件将是一个S19格式的文本文件,其中包含所有16字节的记录类型以及开始和结束记录。你可以使用你喜欢的任何文本编辑器打开该文件并查看其中的数据。如下图所示:

S00F000068656C6C6F20576F726C6400FF
S114000022002180009008480008008C5404F
S1070000010040F9
S9030000FC

四、S19文件格式的读取方法

在微处理器上执行S19文件的步骤如下:

1. 打开S19文件

首先,你需要在程序中打开S19文件。在大多数情况下,你可以使用文件打开API来打开文件,并将其保存在内存中。

2. 读取S19文件记录类型

接下来,你应该读取S19文件的记录类型。这可以通过读取文件中的第一行来实现。

3. 解析记录类型并执行操作

一旦读取了记录类型,接下来的工作就是检查记录类型并执行相应的操作。例如,如果记录类型是"S1",则你需要读取地址和数据,并将它们写入微处理器内存。

4. 重复步骤2和3,直到文件结束

最后,你需要重复步骤2和3,直到读取整个S19文件并将程序和数据加载到微处理器内存中为止。

总结

在本文中,我们详细介绍了S19文件格式。我们看到,S19文件格式非常简单,但它已被广泛用于加载程序和数据到微处理器上。如果你正在开发嵌入式系统,那么S19文件格式是不可或缺的一部分。