[整理]S-Record数据格式解析
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
- 类型为S1
- 长度为0x13 = 19
- 根据S1的数据格式,可以知道count后2 Bytes为address数据(7AF0)
- 最后一个字节为校验位(61)
- 剩余部分为数据位(0A0A0D00000000000000000000000000)
有关checksum校验的计算,还是以上述为例,
- 相加,0x13 + 0x7A + 0xF0 + ... + 0x00 = 0x19E
- 取后两个字节0x9E
- 0xFF - 0x9E即可得到校验值0x61
[整理]S-Record数据格式解析的更多相关文章
- InnoDB锁机制之Gap Lock、Next-Key Lock、Record Lock解析
InnoDB锁机制之Gap Lock.Next-Key Lock.Record Lock解析 有意思,解释的很好
- RAW数据格式解析
RAM数据格式解析 Raw格式是sensor的输出格式,是未经处理过的数据,表示sensor接受 到的各种光的强度. Raw数据在输出的时候是有一定的顺序的,一般为以下四种: 00: GR/BG 01 ...
- android JSON数据格式 解析
一. JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧. Json建构于两种结构: 最后再加一种格式在文章的最后显示出来非常少有的格式 ...
- 类xml数据格式解析
需要解析一种类xml的数据文件,数据格式1如下: <head> //文件头 <type>xtype</type> <condition> key1=va ...
- Android数据格式解析对象JSON用法
1.JSON概念: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性,从而可以在不同平台间进行数据交换.JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为. JSON可以将 ...
- Android数据格式解析对象JSON用法(转)
地址:http://www.cnblogs.com/devinzhang/archive/2012/01/09/2317315.html 里面的重点: JSON解析案例 (1)解析Object ...
- 【转载,整理】域名CNAME解析配置,使用域名B作为域名A的CNAME记录值
最近有个需求,未备案的域名A,想解析到香港 或 国内的服务器上,但是由于未备案,直接使用cdn解析在国内访问会很慢 但是不想直接直接到ip,所以找到两个方法可以解决: 方案一:转移到其他服务器做301 ...
- OC封装的TLV数据格式解析库
作者:朱克锋 邮箱:zhukefeng@iboxpay.com 转载请注明出处:http://blog.csdn.net/linux_zkf TLV是一种可变格式,意思就是: Type类型, Leng ...
- MySQL InnoDB锁机制之Gap Lock、Next-Key Lock、Record Lock解析
MySQL InnoDB支持三种行锁定方式: l 行锁(Record Lock):锁直接加在索引记录上面,锁住的是key. l 间隙锁(Gap Lock):锁定索引记录间隙,确保索引记录的间隙 ...
随机推荐
- Beaglebone Black从零开始系列教程大汇总!
谁都有做菜鸟的时候,菜鸟不可怕,怕的是没有人指引前进的方向!本系列文章将逐个阐述BBB各个功能模块的基本使用方法.现在中文的BBB资料太少,它们是本人从全世界互联网的各个角落收集.学习.亲自测试得到的 ...
- 转(Response.WriteFile 无法下载大文件解决方法)
以前用Response.WriteFile(filename),但当遇到大文件时无法完整下载. 该方法最大的问题,它不是直接将数据抛到客户端,而是在服务器端(IIS)上缓存.当下载文件比较大时,服务器 ...
- eclispe 无法启动调试 cannot connect to VM
eclispe中,点击调试运行java项目,出现 cannot connect to VM 正常的运行项目,没问题: 以为是jdk的安装路径等的问题,还有杀毒软件等等,都没有正常: 后来找到是wins ...
- jQuery String Functions
In today's post, I have put together all jQuery String Functions. Well, I should say that these are ...
- HandlerThread和IntentService
HandlerThread 为什么要使用HandlerThread? 我们经常使用的Handler来处理消息,其中使用Looper来对消息队列进行轮询,并且默认是发生在主线程中,这可能会引起UI线程的 ...
- 浅尝辄止——使用ActiveX装载WPF控件
1 引言 使用VC编写的容器类编辑器,很多都可以挂接ActiveX控件,因为基于COM的ActiveX控件不仅封装性不错,还可以显示一些不错的界面图元. 但是随着技术不断的进步,已被抛弃的Active ...
- 向IPython Notebook中导入.py文件
IPython Notebook使用起来简洁方便,但是有时候如果需要导入一个现有的.py文件,则需要注意选择导入的方法以达到不同的效果.目前遇到3种方法. (1) 将文件保存为.ipynb格式,直接拖 ...
- 云时代的分布式数据库:阿里分布式数据库服务DRDS
发表于2015-07-15 21:47| 10943次阅读| 来源<程序员>杂志| 27 条评论| 作者王晶昱 <程序员>杂志数据库DRDS分布式沈询 摘要:伴随着系统性能.成 ...
- php web 信息采集
<?php /** * 可以灵活配置使用的采集器 * 作者:Rain * 创建时间:2015-02-03 15:17:30 * 版本信息:V1.0 */ //////////////////// ...
- JQuery 插件之Ajax Autocomplete(ajax自动完成)搜索引擎自动显示下拉框
平时用百度,谷歌搜索的时候 会有一个下 拉列表进行提示 这是一个非常好的功能 本文要介绍的这个JQuery 插件 名叫Ajax Autocomplete 顾名思义 ajax 也就是用ajax的方式获取 ...