S-Reord是一种由摩托罗拉公司创建的文件格式(不得不说,摩托罗拉厉害啊,SPI和S-Record都是他们创造的)。S-Record的基本字符为ASCII字符,用以表示相应的十六进制数据。该数据格式还有以下的几种名字或缩写SRECORD, SREC, S19, S28, S37。S-Record格式多用在存储类芯片,Flash、EPROMs、EEPROMs等。

本文主要介绍S-Record格式及其各部分所代表的含义,更多详细的介绍可以看本文资料主要来源,Wikipedia--SREC (file format)

S-Record格式详解

在维基百科上看到的这幅图把S-Record格式表达的十分完善,在此引用一下。

注意

  • 此图中的每一个格子表示一个字符,其中在中间一条主格式下面的2 Bytes表示两个字符,其真实存储时为两个字符(一个字符的ASCII码为一个字节)。
  • 在下方粉红色部分下的括号,16 bits表示的是一个方框中符号对应的二进制数。比如'F'就对应0xF(1111)。

S-Record数据按行进行存贮。其主要分为以下几个部分:

  • type:类型,主要有S0-S3, S5, S7-S9等几种模式。
  • count:长度,主要表示该部分之后有多少字节长度的数据(一个字节表示两个字符)。
  • address:数据写入的起始地址,主要根据类型有着不同的地址长度,其采用big endian大端模式(高位在前)存储。
  • data:数据,一行S-Record中的数据,其长度由type和count共同决定。可以按照如下方式进行计算(单位Byte):< count > - < address >(取值为2、3、4) - 1(< checksum >字段的长度)
  • checksum:校验和,用于校验整行数据是否正确。

该图中左下角部分表示了不同类型下地址区的长度和不同类型的数据格式。注意:纵观整幅图,含有数据的几种格式为S0-S3, S5,其他模式均无数据的存在。

示例

数据:S1137AF00A0A0D0000000000000000000000000061
拆解:S1 - 13 - 7AF0 - 0A0A0D00000000000000000000000000 - 61

  1. 类型为S1
  2. 长度为0x13 = 19
  3. 根据S1的数据格式,可以知道count后2 Bytes为address数据(7AF0)
  4. 最后一个字节为校验位(61)
  5. 剩余部分为数据位(0A0A0D00000000000000000000000000)

有关checksum校验的计算,还是以上述为例,

  1. 相加,0x13 + 0x7A + 0xF0 + ... + 0x00 = 0x19E
  2. 取后两个字节0x9E
  3. 0xFF - 0x9E即可得到校验值0x61

[整理]S-Record数据格式解析的更多相关文章

  1. InnoDB锁机制之Gap Lock、Next-Key Lock、Record Lock解析

    InnoDB锁机制之Gap Lock.Next-Key Lock.Record Lock解析 有意思,解释的很好

  2. RAW数据格式解析

    RAM数据格式解析 Raw格式是sensor的输出格式,是未经处理过的数据,表示sensor接受 到的各种光的强度. Raw数据在输出的时候是有一定的顺序的,一般为以下四种: 00: GR/BG 01 ...

  3. android JSON数据格式 解析

    一.   JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧.  Json建构于两种结构:  最后再加一种格式在文章的最后显示出来非常少有的格式   ...

  4. 类xml数据格式解析

    需要解析一种类xml的数据文件,数据格式1如下: <head> //文件头 <type>xtype</type> <condition> key1=va ...

  5. Android数据格式解析对象JSON用法

    1.JSON概念: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性,从而可以在不同平台间进行数据交换.JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为. JSON可以将 ...

  6. Android数据格式解析对象JSON用法(转)

    地址:http://www.cnblogs.com/devinzhang/archive/2012/01/09/2317315.html 里面的重点: JSON解析案例     (1)解析Object ...

  7. 【转载,整理】域名CNAME解析配置,使用域名B作为域名A的CNAME记录值

    最近有个需求,未备案的域名A,想解析到香港 或 国内的服务器上,但是由于未备案,直接使用cdn解析在国内访问会很慢 但是不想直接直接到ip,所以找到两个方法可以解决: 方案一:转移到其他服务器做301 ...

  8. OC封装的TLV数据格式解析库

    作者:朱克锋 邮箱:zhukefeng@iboxpay.com 转载请注明出处:http://blog.csdn.net/linux_zkf TLV是一种可变格式,意思就是: Type类型, Leng ...

  9. MySQL InnoDB锁机制之Gap Lock、Next-Key Lock、Record Lock解析

    MySQL InnoDB支持三种行锁定方式: l   行锁(Record Lock):锁直接加在索引记录上面,锁住的是key. l   间隙锁(Gap Lock):锁定索引记录间隙,确保索引记录的间隙 ...

随机推荐

  1. 微信小程序--摸索之旅

    首先 奉上腾讯官方文档 方便参考:https://mp.weixin.qq.com/debug/wxadoc/design/index.html  个人认为没说啥特别有用的信息(可能是我看的太粗糙了) ...

  2. Xcode 8 在XIB中布局View尺寸1000*1000

    Xcode 8 中XIB布局变动,在界面未展示之前,所有的View的布局都会给一个1000*1000的初始值,查看视图层级可以看到View拖得很长, 有时候我们在ViewDidLoad中布局的时候会使 ...

  3. Unable to install breakpoint in

    Unable to install breakpoint inXXXX due to missing line number attributes.modify compiler options to ...

  4. 新手上路,配置阿里云CentOS服务器LAMP

    最近出了个9.9包月的阿里云一直想弄就买了个半年的,脑子一热选了个CentOS系统的然后就是无尽的代码...... 话不多说直接上步骤:  在实例中选择"连接管理终端",输入一些应 ...

  5. Caused by: java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getValidationMode

    进行 spring mvc jpa整合时.Junit方法测试时. 异常: org.springframework.beans.factory.BeanCreationException: Error ...

  6. Leetcode2:Add Two Numbers@Python

    You are given two linked lists representing two non-negative numbers. The digits are stored in rever ...

  7. java守护线程的理解

    package daemonThread; /*setDaemon(true)方法将线程设置为守护线程,线程的Daemon默认值为false * 只要当前JVM实例中存在任何一个非守护线程没有结束,守 ...

  8. gb2312

    ---恢复内容开始--- 字符集 gb2312(字全)采用2两个字节(一个汉字) utf-8(只有汉字)采用3个字节(一个汉字) html就是负责描述页面的语义:css负责描述页面的样式:js负责描述 ...

  9. 计算机缺失缺少mfc110.dll等相关文件的解决办法

    去https://www.microsoft.com/zh-CN/download/details.aspx?id=30679下载 VSU4\vcredist_x64.exe 和VSU4\vcredi ...

  10. [HTML]JS全屏代码

    video全屏参考:https://www.thecssninja.com/javascript/fullscreen <!doctype html> <html> <h ...