01_S19 文件格式详解(.srec文件)

2019-12-24  本文已影响0人  L_Kian

本文是根据维基百科及其他网络资源,经自己理解后做的总结。
S19文件格式的由来及介绍可自行查看维基,
详见维基百科:https://en.wikipedia.org/wiki/SREC_(file_format)
下面直接上干货。


===============干货分割线===============


Motorola_SREC_Chart.png

1.记录结构

0 1 2 3 4 5
S Type Byte Count Address Data Checksum

一个SREC格式文件包含一系列ASCLL格式的的数据。具体如下:

2.文本结束符

SREC记录由一个或多个ASCII行终止字符分隔,以便每个记录单独出现在文本行上。
通过可视化地划分记录来增强易读性,还提供了记录之间的填充,可以用来提高机器解析效率。
创建十六进制记录的程序通常使用符合其操作系统惯例的行终止字符。
例如,Linux程序使用一个LF(换行符,十六进制值0A)字符终止行,而Windows程序使用一个CR(回车符,十六进制值0D)后跟一个LF。

3.记录类型

RecordField RecordPurpose AddressField DataField RecordDescription
S0 Header 16-bit "0000" 此记录包含特定于供应商的ASCII文本,表示为一系列十六进制数字对。通常可以看到此记录的数据是以空结尾的字符串格式的。文本数据可以是任何内容,包括以下信息的混合:文件/模块名称、版本号/修订号、日期/时间、产品名称、供应商名称、PCB上的内存指示符、版权声明。常见的是:48 44 52,这是ASCII H、D和R-“HDR”
S1 Data 16-bit Address 此记录包含从16位地址字段开始的数据。此记录通常用于8位微控制器,如AVR、PIC、8051、68xx、6502、80xx、Z80。此记录中包含的数据字节数为“字节计数字段”减去3(即,“16位地址字段”为2字节,“校验和字段”为1字节)。
S2 Data 24-bit Address 此记录包含从24位地址开始的数据。此记录中包含的数据字节数为“字节计数字段”减去4(即,3字节表示“24位地址字段”,1字节表示“校验和字段”)。
S3 Data 32-bit Address 此记录包含从32位地址开始的数据。此记录通常用于32位微控制器,如ARM和680x0。此记录中包含的数据字节数为“字节计数字段”减去5(即,“32位地址字段”为4字节,“校验和字段”为1字节)。
S4 Reserved N/A N/A 此记录已被保留。
S5 Count 16-bit Count 此可选记录包含16位的S1/S2/S3记录计数。如果记录计数小于或等于65535(0xFFFF),则使用此记录,否则将使用S6记录。
S6 Count 24-bit Count 此可选记录包含24位的S1/S2/S3记录计数。如果记录计数小于或等于16777215(0xFFFFFF),则使用此记录。如果小于65536(0x010000),则将使用S5记录。注:此新记录是最近的更改(可能不是正式的)
S7 Start Address (Termination) 32-bit Address 此记录包含32位地址处的开始执行位置。这用于终止一系列S3记录。如果SREC文件仅用于对内存设备进行编程,而忽略执行位置,则可以使用零地址。
S8 Start Address (Termination) 24-bit Address 此记录包含24位地址处的开始执行位置。这用于终止一系列S2记录。如果SREC文件仅用于对内存设备进行编程,而忽略执行位置,则可以使用零地址。
S9 Start Address (Termination) 16-bit Address 此记录包含16位地址处的开始执行位置。这用于终止一系列S1记录。如果SREC文件仅用于对内存设备进行编程,而忽略执行位置,则可以使用零地址。

4.Examples

image.png
上一篇 下一篇

猜你喜欢

热点阅读