当前位置:网站首页>【VCU】详解S19文件(S-record)
【VCU】详解S19文件(S-record)
2022-08-02 14:02:00 【CynalFly】
目录
1. 概述
Motorola S-record是由Motorola创建的一种文件格式,它以 ASCII十六进制文本形式传送二进制信息。这种文件格式也可以称为SRECORD、SREC、S19、S28、S37。它通常用于对微控制器、EPROM 和其他类型的可编程逻辑设备进行编程。
S-record格式是在1970年代中期为 Motorola 6800处理器创建的。该处理器和其他嵌入式处理器的软件开发工具将生成S-record格式的可执行代码和数据。程序员将读取S-record格式并将数据“刻录”到嵌入式系统中使用的PROM或EPROM中。
Hex 是另一种十六进制格式,指的是Intel-HEX,它是由Intel制定的格式。
2. S-record格式
S-record 格式文件由一系列 ASCII 文本记录组成。这些记录从左到右具有以下结构:
type(记录类型):2个字符,一个大写的"S"(0x53),然后是一个数字0~9,定义了记录的类型 (S0,S1,S2,S3,S5,S7,S8,S9)。
count(字节计数):2个字符,16进制数字,表示记录的其余部分(address + data + checksum)的字节数(16进制数字对)。对于 16 位地址字段加上 1 个校验和字节,该字段的最小值为 3,最大值为 255 (0xFF)。通常记录有 32 个数据字节。
address(地址):4或6或8个字符。由记录类型 type 决定。对于S1和S9类型(S19),地址字段为 4 个十六进制数字(2 个字节)。对于S2和S8 record(S28),地址字段为 6 个十六进制数字(3个字节),对于S3和S7 record(S37),地址字段为 8 个十六进制数字(4 个字节)。地址首先以 MSB 发送。地址字节以大端格式排列。
data(数据):0—64字符。用来组成和说明一个代表了内存载入数据或者描述信息的16进制的值。
checksum(校验和):2个字符。这些字符当被配对并换算成16进制数据的时候形成了一个最低有效字符 节,该字符节用来表达作为补充数据,地址和数据库的字符对所代表的(字节的)补码的byte总和。即计数值、地址场和数据场的若干字符以两个字符为一对, 将它们相加求和,和的溢出部分不计,只保留最低两位字符NN,checksum =0xFF-0xNN。有关详细的校验和示例,请参见示例部分。
不建议在一个记录中发送太多的数据字节,因为这可能会在出错时增加传输时间。还要避免每条记录只发送几个数据字节,因为与有效负荷相比,地址开销太大。
3. S-record类型
下表描述了 10 种可能的 S 记录。S4 是保留的,当前未定义。S6 最初是保留的,但后来在某个时候重新定义。
| 记录 字段 | 记录 目的 | 地址 字段 | 数据 字段 | 记录 描述 |
|---|---|---|---|---|
| S0 | 标题 | 16 位 “0000” |
| 此记录包含以一系列十六进制数字对表示的供应商特定 ASCII 文本。通常以的格式查看此记录的数据。文本数据可以是任何内容,包括以下信息的混合:文件/模块名称、版本/修订号、日期/时间、产品名称、供应商名称、PCB 上的内存指示符、版权声明。 |
| S1 | 数据 | 16 位 地址 |
| 该记录包含从 16 位地址字段开始的数据。该记录通常用于 8 位微控制器,例如 AVR、PIC、8051、68xx、6502、80xx、Z80。该记录包含的数据字节数为“字节计数字段”减3,其中“16位地址字段”为2个字节,“校验和字段”为1个字节。 |
| S2 | 数据 | 24 位 地址 |
| 该记录包含从 24 位地址开始的数据。该记录包含的数据字节数为“字节计数字段”减4,其中“24位地址字段”为3字节,“校验和字段”为1字节。 |
| S3 | 数据 | 32 位 地址 |
| 该记录包含从 32 位地址开始的数据。该记录通常用于 32 位微控制器,例如 ARM 和 680x0。该记录包含的数据字节数为“字节计数字段”减5,其中“32位地址字段”为4个字节,“校验和字段”为1个字节。 |
| S4 | 预订的 | 不适用 | 不适用 | 此记录已保留。 |
| S5 | 数数 | 16 位 计数 |
| 此可选记录包含S1 / S2 / S3记录的 16 位计数。如果记录计数小于或等于 65,535 (0xFFFF),则使用此记录,否则将使用S6记录。 |
| S6 | 数数 | 24 位 计数 |
| 此可选记录包含S1 / S2 / S3记录的 24 位计数。如果记录计数小于或等于 16,777,215 (0xFFFFFF),则使用此记录。如果小于 65,536 (0x010000),则将使用S5记录。注意:这个较新的记录是最近的变化(不确定是否是官方的)。 |
| S7 | 起始地址 (终止) | 32 位 地址 |
| 该记录包含 32 位地址的起始执行位置。这用于终止一系列S3记录。如果 SREC 文件仅用于对存储设备进行编程并且忽略执行位置,则可以使用零地址。 |
| S8 | 起始地址 (终止) | 24 位 地址 |
| 该记录包含 24 位地址的起始执行位置。这用于终止一系列S2记录。如果 SREC 文件仅用于对存储设备进行编程并且忽略执行位置,则可以使用零地址。 |
| S9 | 起始地址 (终止) | 16 位 地址 |
| 该记录包含 16 位地址的起始执行位置。这用于终止一系列S1记录。如果 SREC 文件仅用于对存储设备进行编程并且忽略执行位置,则可以使用零地址。 |
在上表中,可以看到为什么他们将这些摩托罗拉格式称为S19、S28或S37。名称中的第一个数字代表正常数据记录标识符。第二个数字是文件结束记录标识符。
4. S19文件示例
下图是在ECU程序编译后生成的S19文件【Project.abs.s19】中截取的部分内容。
S0 Record:记录类型是“S0” (0x5330)。地址场没有被用,用零置位(0x0000)。数据场中的信息转换成字符串就是:“E:\VMS\test\VCU\bin\Project.abs ”。此行表示程序的开始,不需烧入memory,只是告诉你这个文件的相关信息,实际应用中,将工程名Project换成工程名+版本号+描述文本的格式,易于识别文件,这样在ECU升级时时非常有用。
S1 Record:记录类型是“S1” (0x5331)。地址场由2个字节地址来说明。数据场由可载入的数据组成。
S9 Record:记录类型是“S9” (0x5339)。地址场由2字节的地址说明,包含了开始执行地址。没有数据场。此行表示程序的结束,不需烧入memory。
5. 校验和计算示例
S1 0F CAC0 0C0C0C0C0C0C0C007F400000 53
被解码以显示校验和值是如何计算的,如下所示:
- 累加: 0F + CA+C0 + 0C+0C+0C+0C+0C+0C+0C+00+7F+40+00+00 = 2AC(hex)
- 掩码:保留最低有效字节 = AC(hex) = 1010 1100(bin)
- 补码:计算最低有效字节的补码 = 53(hex)
6. 参考
【1】WIKI百科.SREC
边栏推荐
- Mysql's case the when you how to use
- chapter7
- The bad policy has no long-term impact on the market, and the bull market will continue 2021-05-19
- chapter7
- [ROS](01)创建ROS工作空间
- Object detection scene SSD-Mobilenetv1-FPN
- The most complete ever!A collection of 47 common terms of "digital transformation", read it in seconds~
- paddleocr window10初体验
- Sentinel源码(二)入口方法分析
- MobileNet ShuffleNet & yolov5替换backbone
猜你喜欢

The 2nd China Rust Developers Conference (RustChinaConf 2021~2022) Online Conference Officially Opens Registration

政策利空对行情没有长期影响,牛市仍将继续 2021-05-19

logback源码阅读(二)日志打印,自定义appender,encoder,pattern,converter

如何选择正规的期货交易平台开户?

瑞吉外卖笔记——第05讲Redis入门

第十五单元 分页、过滤

世界上最大的开源基金会 Apache 是如何运作的?

mysql的case when如何用

You can't accept 60% slump, there is no eligible for gain of 6000% in 2021-05-27
![[ROS]roscd和cd的区别](/img/a8/a1347568170821e8f186091b93e52a.png)
[ROS]roscd和cd的区别
随机推荐
数据机构---第六章图---图的遍历---选择题
paddleocr window10初体验
uview 2.x版本 tabbar在uniapp小程序里头点击两次才能选中图标
About the development forecast of the market outlook?2021-05-23
VMM是什么?_兮是什么意思
定了!就在7月30日!
Sentinel源码(五)FlowSlot以及限流控制器源码分析
MySQL数据库语法格式
yolov5改进(一) 添加注意力集中机制
跑跑yolov5吧
What are the file encryption software?Keep your files safe
第十三单元 混入视图基类
How to solve 1045 cannot log in to mysql server
文件加密软件有哪些?保障你的文件安全
EasyExcel 的使用
yolov5,yolov4,yolov3乱七八糟的
chapter7
Flask框架深入一
Flask框架深入二
Break the limit of file locks and use storage power to help enterprises grow new momentum