前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >S-Record文件解析

S-Record文件解析

作者头像
xbai921031
发布2022-05-25 15:22:48
6730
发布2022-05-25 15:22:48
举报

前几期文章讲到了ECU软件更新的时候用到的几个服务,今天就来介绍一下,在具体升级过程中,我们是如何将C代码编译出来的文件下载进ECU的。

常见的S-Record文件有.s19/.s28等,在下载的时候主要用TransferData (0x36)服务将解析到的数据下载到ECU中。下面就来介绍S-Record文件的格式。

S-Record文件中的数据都是以ASCII码的格式存储的,一行数据个数不超过78个,例如下面这个例子:

图1 S-Record示意

下面对这种格式进行解释:

图2 S-Record格式示意

type:类型,占两个字符,如上图1所示的"S0"等,一共有8种type的划分(S0, S1, S2, S3, S5, S7, S8, S9);

count:数据长度,占两个字符,两个字符组合成十六进制数,即为一行数据个数(包含address + data + checksum),例如图1第一行所示"06",组合起来即为0x06;

address:占4,6或者8个字符,这和type有关,指的是这一行数据存储的Memory起始地址;

data:占0-64个字符,这部分数据就是往0x36服务里填充的数据;

checksum:每一行最后两个字符。

不同type对应不同的address长度:

type

address

S0 Record

没有address

S1 Record

2个字节的地址,占4个字符

S2 Record

3个字节的地址,占6个字符

S3 Record

4个字节的地址,占8个字符

S5 Record

没有数据域,可以不用管这个类型的

S7 Record

没有数据域,可以不用管这个类型的

S8 Record

没有数据域,可以不用管这个类型的

S9 Record

没有数据域,可以不用管这个类型的

示例:

图3 S-Record文件解析示例

假设上图一个S-Record文件,用notepad ++打开如图所示。

文件包含S0,S1,S5,S9类型的Record,S0,S5,S9 Record里面没有需要填充的数据,故跳过。

文件第二行:

  • S1表示type
  • 后面的"13"表示这一行数据的长度0x13,2个byte的address,16个byte的数据,1个byte的checksum
  • "0000",表示存储数据的内存地址为0x0000
  • address后面跟每两个ASCII码组合起来的十六进制数,有16个byte,例如,"28"表示0x28,"5F"表示0x5F
  • 最后两个ASCII码组合成1个byte的checksum,例如,"2A"表示checksum = 0x2A

最后我们用代码将画红色框部分的数据提取出来,用TransferData (0x36)进行数据传输即可。

--------------------------------------------------------------------------------------

参考资料:http://www.amelek.gda.pl/avr/uisp/srecord.htm

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 进击的程序喵 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档