【嵌入式烧录/刷写文件】-1.1-详解Motorola S-record(S19/SREC/mot/SX)格式文件

目录

1 什么是Motorola S-record

2 Motorola S-record的格式

2.1 Motorola S-record的结构

2.1.1 “Record type记录类型”的说明

2.1.2 “Record length记录长度”的说明

2.1.3 如何计算“Checksum校验和”

2.2 Record order记录顺序

2.3 Text line terminator文本行终止符

2.4 Comments注释

结尾


优质博文推荐阅读(单击下方链接,即可跳转):

点击返回「《Autosar从入门到精通-实战篇》总目录」

点击返回「《Autosar_BSW高阶配置》总目录」

1 什么是Motorola S-record

Motorola S-record是一种文件格式,由摩托罗拉在20世纪70年代中期为Motorola 6800处理器创建,以ASCII文本形式传达二进制信息的十六进制值,其文件格式也可能为*.SRECORD*.SREC*.S19*.mot*.S28*.S37*.SX*.s*.s1*.s2*.s3*. exo*.mxt

Motorola S-record通常用于对microcontroller微控制器EPROMEEPROM其他类型的可编程逻辑器件中的flash memory进行编程。在一个典型的应用中,compiler编译器assembler汇编器将程序的源代码(如C或汇编语言)转换为machine code机器码,并将其输出为HEX文件。然后,programmer编程器导入HEX文件,将机器码"刻录"到非易失性存储器non-volatile memory中,或传输到目标系统中进行加载和执行。

2 Motorola S-record的格式

2.1 Motorola S-record的结构

一个SREC格式文件由一系列ASCII text record组成,一个S-record的长度将小于或等于78字符。这些record从左到右有以下结构:

S

Type

Byte Count

Address

Data

Checksum

举例:

1.Record start:每条record以大写字母"S"字符(ASCII 0x53)开始,代表该Record的开始;

2.Record type:一个"0"到"9"的十六进制数字字符(ASCII 0x30到0x39),定义该Record的类型;

3.Byte count:两个十六进制数字字符(既,1个字节,"00"到"FF"),表示该Record其余部分(Address + Data + Checksum)中的字节数。该段的最小值为3(16-bit address field为2字节,checksum field为1字节),最大值为255(0xFF),其"00"/"01"/"02 "是非法值;

4.Address:四/六/八个十六进制数字字符(既,2/3/4个字节),由Record type决定。Address bytebig-endian格式排列:从左往右,地址依次增加

5.Data:2n个十六进制数字字符的序列(既,n个字节)。对于S1/S2/S3 Record,每条Record最多32个字节是典型的,因为它将适合于80个字符宽的terminal screen,尽管16个字节会更容易视觉解码特定地址的每个字节;

6.Checksum:两个十六进制数字字符(既,1个字节),是Byte count、Address和Data的两个十六进制数字字符对所代表的数值之和的最小有效字节LSB反码在C语言中,Sum通过以下方式转换为checksum: 0xFF - (sum & 0xFF)

2.1.1 “Record type记录类型”的说明

下表描述了10个可能的S-record。S4是保留的,目前没有定义。S6最初是保留的,但后来被重新定义。

Record field

Record purpose

Address field

Data field

Record description

S0

Header

16-bit
"0000"

适用

该record包含供应商特定的ASCII文本注释,表示为一系列成对的十六进制数字字符。该record的数据通常是以空尾字符串的格式出现。文本数据可以是任何东西,包括以下信息的混合:文件/模块名称、版本/修订号、日期/时间、产品名称、供应商名称、PCB上的memory代号、版权声明、签名。这是很常见的情况:48、44、52,这是字母 "H"、"D"、"R "的ASCII表示。

S1

Data

16-bit
Address

适用

该record包含从16-bit address开始的数据。record包含的数据字节数是"Byte Count Field "最小为3("16-bit Address Field "的2个字节,"Checksum Field"的1个字节)record通常用于8位和16位处理器

S2

Data

24-bit
Address

适用

该record包含从24-bit address开始的数据。record中包含的数据字节数是 "Byte Count Field"最小为4("24-bit Address Field "的3个字节," Checksum Field "的1个字节)record通常用于32位处理器

S3

Data

32-bit
Address

适用

该record包含从32-bit address开始的数据。record包含的数据字节数是"Byte Count Field"最小为5("32-bit Address Field "的4个字节," Checksum Field"的1个字节)record通常用于32位处理器

S4

Reserved

该record是保留的。

S5

Count

16-bit
Count

不适用

该可选的record包含一个S1/S2/S3 record的16-bit count。如果record count小于或等于65535(0xFFFF),则使用该record,否则将使用S6 record。

S6

Count

24-bit
Count

不适用

该可选的record包含一个S1/S2/S3 record的24-bit count。如果record count小于或等于16777215(0xFFFFFF),则使用该record。如果小于65536 (0x10000),那么将使用S5 record。

注意:这个较新的record是最近的变化(它可能不是正式的)。

S7

Start Address
(Termination)

32-bit
Address

不适用

该record包含32-bit address的起始执行位置。这是用来终止一系列的S3 record的。如果SREC文件只用于对一个memory设备进行编程,并且执行位置被忽略,那么可以使用一个0的地址。

S8

Start Address
(Termination)

24-bit
Address

不适用

该record包含24-bit address的起始执行位置。这是用来终止一系列S2 record的。如果SREC文件只用于对一个memory设备进行编程,并且执行位置被忽略,那么可以使用一个0的地址。

S9

Start Address
(Termination)

16-bit
Address

不适用

该record包含16-bit address的起始执行位置。这是用来终止一系列S1 record的。如果SREC文件只用于对一个memory设备进行编程,并且执行位置被忽略,那么可以使用一个0的地址。

2.1.2 “Record length记录长度”的说明

record count的长度随着Record field的变化而变化。历史上Unix O/S文件中的一个手册页指出:"一个S-record文件由一连串特殊格式的ASCII字符串组成。一个S-record的长度将小于或等于78字符"。"本手册页是唯一记录了总record length 78字符限制或data length 64字符限制的地方。"。

Record field = S14-hex-character address,64-hex-character data和2-hex-character checksum,共record count = 70-hex-character = 23 Byte(这个计数忽略了行末的字符串终止符)。

Record field = S26-hex-character address,64-hex-character data和2-hex-character checksum,共record count = 72-hex-character = 24 Byte(这个计数忽略了行末的字符串终止符)。

Record field = S38-hex-character address,64-hex-character data和2-hex-character checksum,共record count = 74-hex-character = 25 Byte(这个计数忽略了行末的字符串终止符)。

注意:

如果忽略78字符的历史限制,一个S-record的最大长度将是514个字符。假设字节数为0xFF(255),则Record Type field为2,Byte Count field为2,Address / Data / Checksum field为2*255514个字符

以下图S0为例,Address + Data + Checksum长度超过了78字符:

2.1.3 如何计算“Checksum校验和”

下面的record为例,来介绍Checksum的计算:

S10DFC004303030B01004259010104

Checksum计算过程:

1.对所有Byte count + Address + Data十六进制字节求和:0D + FC + 00 + 43 + 03 + 03 + 0B + 01 + 00 + 42 + 59 + 01 + 01 = 1FB。

2.保留最后一个LSB字节,即十六进制字节FB,其二进制为1111 1011。

3. LSB的二进制反码为0000 0100,即十六进制字节04。或checksum=FF - FB = 04

2.2 Record order记录顺序

尽管一些Unix文档指出 "文件中S-record的顺序并不重要,也不需要假定特定的顺序",但实际上大多数软件都对SREC record进行了排序。

典型的record顺序是从一个(有时是可选的)S0 header record开始,接着是一个或多个S1/S2/S3 data record的序列,可能有一个可选的S5/S6 count record,最后是一个适当的S7/S8/S9 termination record

16-bit address record:

S03E0000433A5C55736572735C757365725C4465736B746F705C424E5C455642434D5C62696E5C53565F43383133335F62335F332E31312E315F4259312E31C6
S123C000CF2600C6055B134A81E6FE4A81BCFE0005C015DA670FE60018E60FA000020C0FE0
S123C020B0000E3C0FC0000EC70FD0000E1600000000000000000000000000000000C70094
S123C040FC00E900E200E400E000E500E700EA00EB00E800EF00EE00EC00C400C500C900AD
......
S123FBC00600C0003013880000A5000001F403E803E800000400FFFFFFFFFFFFFFFFFFFF26
S123FBE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03DA954962
S10DFC004303030B01004259010104
S110FC203230313630363232313732360070
S105FF7AD7FEAC
S105FF8AD8E4B5
S105FFD4D872DD
S105FFDED9AE96
S107FFE4D960D9B54E
S107FFF0D722D871C7
S105FFFEC0003D
……
S9030000FC

24-bit address record: 

S2240F7CE04E128840E5D49440D6CD9340866194408B66AC402D41AD407729B240462FB24059
S2240F7D00D70CA940D70CA940D70CA94041A7B14041A7B14041A7B140DAADC7401151AB4085
S2240F7D20D266BD40B8EDBF406A17A540BDFC8A4021F187404E128840E5D49440D6CD934069
S2240F7D40866194408B66AC402D41AD407729B240462FB240D70CA940D70CA940D70CA940BF
S2240F7D6041A7B14041A7B14041A7B140DAADC7401151AB40D266BD40B8EDBF406A17A5404A
……
S804000000FB

32-bit address record:

S00600006C7463B6
S32580054924203889A4B409A57470D882186DFF12E6857F3EA060FC54CF160A74CF6DFFD0E661
S3258005494454CF6F1F16806DFF05E6857F70D8C82F14FF5E1454CF16033C0454CF160B960804
S3258005496474CF6DFFBDE654CF74AF820854AFDF085482857670D8857F02B082044964080A88
S3258005498460FFD445857F06B054F060F2095F02090245D46754217E05095006095F012500E6
S325800549A4857F0AB0821560F5857F0EB05450745FD4450951020974F1D4450951020974F1BF
S325800549C4D44F09F1060974218201A0BF8F11003082320F32002026027625DA020F3F00F0E3
S325800549E4A6F4C211FCF4BD074B00F657857F0AB060FF857F0EB074FFD46F857F0AB0A07408
……
S30FA00F20C0916000E8D9EE5EEFDC0E8A
S30FA00F20E0916000E8D9EE72DFDC0E66
S705A0048020B6

2.3 Text line terminator文本行终止符

SREC Record被一个或多个ASCII行termination character终止符隔开,使每条Record单独出现在一个文本行上。这通过视觉上划分Record的边界来提高可读性,同时也提供了Record之间的填充,可以用来提高机器的解析效率。创建HEX Record的程序通常使用符合其操作系统惯例的行终止符。例如,Linux程序使用一个LF字符(line feed换行,ASCII字符值为0x0A)来终止行,而Windows程序使用一个CR字符(carriage return回车,ASCII字符值为0x0D),后面跟着一个LF字符。

2.4 Comments注释

除了S0 header record中的ASCII-hex转换的注释外,SREC文件格式不正式支持可读的ASCII注释,尽管有些软件忽略了所有不以 "S "开头的行和/或忽略了Checksum field(因此尾部文本有时被用于(不兼容)注释)后的所有文本。

部分内容摘自:

SREC (file format) - 维基百科https://en.wikipedia.org/wiki/SREC_%28file_format%29

结尾

获取更多“汽车电子资讯”和“工具链使用”,

请关注CSDN博客“汽车电子助手”,做您的好助手。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/3967.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C语言】柔性数组

柔性数组1. 柔性数组介绍2. 柔性数组特点3. 用例3.1 代码一:3.2 代码二:4. 柔性数组优势:1. 柔性数组介绍 也许你从来没有听说过柔性数组(flexible array)这个概念,但是它确实是存在的。 C99 中&#xff0c…

#详细介绍!!! 线程池的拒绝策略(经典面试题)

本篇单独讲解线程池的拒绝策略,介绍了当线程池任务满了之后,线程池会以什么样的方式来响应添加进来的任务 目录 一:理解线程池拒绝策略的触发情况代码理解 二:线程池的四种常见的拒绝策略 1.ThreadPoolExecutor.AbortPolicy 2…

【Spring6】| GoF之代理模式(静态代理和动态代理)

目录 一:GoF之代理模式 1. 对代理模式的理解 2. 静态代理 3. 动态代理 3.1 JDK动态代理 3.2 CGLIB动态代理 一:GoF之代理模式 1. 对代理模式的理解 生活场景1:牛村的牛二看上了隔壁村小花,牛二不好意思直接找小花&#xff…

内网渗透之某后渗透利用【网络安全】

0x01 工具介绍 工具原理 Mimikatz 的主要原理是在 Windows 系统中用户登录后系统会将身份凭证存储于lsass.exe进程的内存当中,Mimikatz 通过注入lsass.exe进程读取进程内存,从中获取对应的明文密码。 常见问题 在 Windows Vista 系统之后不再存储 LM…

0203优先级下的调度问题_环_拓扑排序-有向图-数据结构和算法(Java)

1 概述 在和有向图相关的实际应用中,有向环特别的重要。在实际应用中,一般只会重点关注其中的一小部分,或者只想知道它们是否存在。 2 调度问题 一种应用广泛的模型是给定一组任务并安排它们的执行顺序,限制条件是这些任务的执…

机器学习:逻辑回归模型算法原理(附案例实战)

机器学习:逻辑回归模型算法原理 作者:i阿极 作者简介:Python领域新星作者、多项比赛获奖者:博主个人首页 😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏&#…

Github学生包申请秒过经验并使用Copilot

写在前面 前提是在校学生,且有学校邮箱,当然你也得有Github账户前往学信网下载 教育部学籍在线验证报告将报告转换成英文版本,我用的是手机夸克自带的拍照翻译功能 具体流程 设置Github个人信息 来到 https://github.com/settings/profil…

如何用Postman做接口自动化测试?没有比这个更详细的了

目录 前言 什么是自动化测试 自动化测试有哪些分类 为什么需要自动化测试 Postman自动化测试演示 1.新建集合 2.新建接口 3.填写自动化测试脚本 4.录入所有接口 5.执行自动化测试 前言 什么是自动化测试 把人对软件的测试行为转化为由机器执行测试行为的一种实践。 …

腾讯Coding平台学习笔记二:自定义团队插件的使用方法

目录一、前言二、系统环境三、工作目标四、流水线设置五、开发工具5.1 教程地址5.2 开发工具程序结构5.3 qciplugin.yml文件5.4 main.py文件六、插件的安装6.1 打包成zip6.2 上传zip包6.3 构建新插件6.4 质量门禁7、流水线设置7.1 添加质量管理阶段节点7.2 添加其它动作八、流水…

cookie和session的原理以及在Servlet中的应用

文章目录简介cookiecookie的实质及实现原理cookie在Servlet的应用sessionsession的实质及实现原理session在Servlet中的应用HttpServletRequest,Session,ServletContext简介 cookie保存在客户端,session保存在服务器端。二者均用于描述会话的…

【第十一届“泰迪杯”数据挖掘挑战赛】B题产品订单的数据分析与需求预测“解题思路“”以及“代码分享”

【第十一届泰迪杯B题产品订单的数据分析与需求预测产品订单的数据分析与需求预测 】第一大问代码分享(后续更新LSTMinformer多元预测多变量模型) PS: 代码全写有注释,通俗易懂,包看懂!!!&…

RK3568平台开发系列讲解(驱动基础篇)IO 模型的分类

🚀返回专栏总目录 文章目录 一、阻塞 IO二、非阻塞 IO三、IO 多路复用四、信号驱动五、异步 IO沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将针对IO模型进行分类。 假设有这样一个场景,从磁盘中循环读取 100M 的数据并处理,磁盘读取 100M 需要花费 20 秒的…

Transformer在计算机视觉中的应用-VIT、TNT模型

上期介绍了Transformer的结构、特点和作用等方面的知识,回头看下来这一模型并不难,依旧是传统机器翻译模型中常见的seq2seq网络,里面加入了注意力机制,QKV矩阵的运算使得计算并行。 当然,最大的重点不是矩阵运算&…

【数据结构】树的概念

Halo,这里是Ppeua。平时主要更新C语言,C,数据结构算法......感兴趣就关注我吧!你定不会失望。 🌈个人主页:主页链接 🌈算法专栏:专栏链接 我会一直往里填充内容哒! &…

网络基础认识

目录 一、计算机网络背景 1.1 网络发展 1.2 "协议"由来 二、网络协议初识 2.1 协议分层 2.2 OSI七层模型 2.3 TCP/IP五层模型 三、网络协议栈 四、数据包封装与分用 五、网络传输基本流程 5.1 同局域网的两台主机通信 5.2 跨网络的两台主机通信 六、网络…

MySQL高级第六篇:数据库性能分析与优化

MySQL高级第六篇:数据库性能分析与优化一、数据库服务器优化步骤概述二、慢查询日志:记录执行慢的SQL1. 开启慢查询日志2. 设置long_query_time3. 查看慢查询数与慢查询SQL三、分析查询语句:EXPLAIN1. 概述2.EXPLAIN各列的含义一、数据库服务…

【leetCode189】轮转数组

作者:日出等日落 专栏:leetCode刷题训练 要成功不需要什么特别的才能,只要把你能做的小事做得好就行了。 ——维龙 目录 题目: 第一种方法: 第二种方法: 第三种方法: 今…

UDP、TCP三次握手和四次挥手

-----UDP与TCP----- 相同点 tcp、udp都是工作在传输层进行数据传输(二进制标识文本或者视频或者图片) 不同点 tcp基于连接,保障传输的安全udp基于非连接,保障传输的速度 -----TCP的三次握手----- 过程 为什么不是两次握手&a…

PMP考试备考:你不知道的8个常考概念

PMP考试即将到来,为便于广大考生在考试前查漏补缺,给大家准备了PMP考试中常考的八个重要概念,包括敏感性分析、德尔菲技术等,快来看看吧。 01敏感性分析 敏感性分析有助于确定哪些风险对项目具有最大的潜在影响。它有助于理解项…

UWB芯片DW3000之双边双向测距法

目录 双边双向测距 使用四个信息 使用三个信息 双边双向测距 使用四个信息 双边双向测距(DS-TWR)是基本的单边双向测距的扩展,其中使用两次往返时间测量并结合给出飞行时间结果,即使在相当长的响应延迟情况下也能减少误差。 带有四个信息的双面双向…