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. C# 多线程线程池( 一 )

    我们将在这里进一步讨论一些.NET类,以及他们在多线程编程中扮演的角色和怎么编程.它们是: System.Threading.ThreadPool 类 System.Threading.Timer 类 ...

  2. 集成 Kendo UI for Angular 2 控件

    伴随着 Angular 2 的正式 release,Kendo UI for Angular 2 的第一批控件已经发布了,当前是 Beta 版本,免费使用. 官方站点:Kendo UI for Ang ...

  3. .NET跨AppDomain访问对象

    什么是AppDomain? 我们都知道windows进程,它起到应用程序隔离的作用,带来的好处是,当某个进程发生错误的时候,不会影响其他的进程,系统也不会受到影响.但是,创建windows进程的代价是 ...

  4. openwrt编译环境搭建

    1,首先安装ubuntu系统,这里安装的是虚拟机 2,安装openwrt编译所需环境  apt-get install build-essential libncures5-dev gawk libs ...

  5. .vimrc vim 配置大全

    map <F9> :call SaveInputData()<CR>func! SaveInputData() exec "tabnew" exec 'no ...

  6. 利用Flex组件birdeye绘制拓扑关系图

    birdeye绘制拓扑关系图 1.flex简单介绍 Flex 是一个高效.免费的开源框架,可用于构建具有表现力的 Web应用程序,这些应用程序利用Adobe Flash Player和Adobe AI ...

  7. Html注册表单示例

    注册表单示例,出自<网页开发手记:Html,CSS,JavaScript实战详解>.   <html>   <head>   <title>注册表单&l ...

  8. JAVA代码热部署,在线不停服动态更新

    本地debug的时候,可以实时编译并更新代码,线上也可以不停服来动态更新类,即所说的java热部署.   JDK代理的两种方式: 1.premain方式是Java SE5开始就提供的代理方式,但其必须 ...

  9. C语言typedef的用法(转)

    http://www.cnblogs.com/afarmer/archive/2011/05/05/2038201.html 一.基本概念剖析 int* (*a[5])(int, char*);    ...

  10. CentOS安装NodeJS及Express开发框架

    http://zhaohe162.blog.163.com/blog/static/38216797201402234212981/   express 命令行工具 npm install -g ex ...