01_S19 文件格式详解(.srec文件)

本文是根据维基百科及其他网络资源,经自己理解后做的总结。
S19文件格式的由来及介绍可自行查看维基,
详见维基百科:https://en.wikipedia.org/wiki/SREC_(file_format)
下面直接上干货。


===============干货分割线===============


Motorola_SREC_Chart.png

1.记录结构

0 1 2 3 4 5
S Type Byte Count Address Data Checksum

一个SREC格式文件包含一系列ASCLL格式的的数据。具体如下:

    1. Record type: 两个字节,一个大写“S” 和 一个0~9的数字,定义数据类型。
    1. Byte count: 一个字节,表示后面其余部分(地址+数据+校验和)的字节数。该字段最小值为3(两个字节地址字段+1个字节校验和)。
    1. Address: 地址段长度由Record type来决定。地址字节对齐方式为大端对齐。
    1. Data: 数据段。一般建议该段最大32字节。S0/S1/S2/S3 类型的最小数据数是0。最大可记录的数据数由地址段来决定,因为数据段最大记录数是255,减去1个字节的校验位,再减去地址段,剩下的才是数据段长度,因此S0/S1最大支持252字节数据,S2最大支持251字节数据,S3最大支持250字节数据。
    1. Checksum: 一个字节。Checksum = 取补码( (uint8_t)(Byte count + Address + Data) )

2.文本结束符

SREC记录由一个或多个ASCII行终止字符分隔,以便每个记录单独出现在文本行上。
通过可视化地划分记录来增强易读性,还提供了记录之间的填充,可以用来提高机器解析效率。
创建十六进制记录的程序通常使用符合其操作系统惯例的行终止字符。
例如,Linux程序使用一个LF(换行符,十六进制值0A)字符终止行,而Windows程序使用一个CR(回车符,十六进制值0D)后跟一个LF。

3.记录类型

RecordField RecordPurpose AddressField DataField RecordDescription
S0 Header 16-bit "0000" 此记录包含特定于供应商的ASCII文本,表示为一系列十六进制数字对。通常可以看到此记录的数据是以空结尾的字符串格式的。文本数据可以是任何内容,包括以下信息的混合:文件/模块名称、版本号/修订号、日期/时间、产品名称、供应商名称、PCB上的内存指示符、版权声明。常见的是:48 44 52,这是ASCII H、D和R-“HDR”
S1 Data 16-bit Address 此记录包含从16位地址字段开始的数据。此记录通常用于8位微控制器,如AVR、PIC、8051、68xx、6502、80xx、Z80。此记录中包含的数据字节数为“字节计数字段”减去3(即,“16位地址字段”为2字节,“校验和字段”为1字节)。
S2 Data 24-bit Address 此记录包含从24位地址开始的数据。此记录中包含的数据字节数为“字节计数字段”减去4(即,3字节表示“24位地址字段”,1字节表示“校验和字段”)。
S3 Data 32-bit Address 此记录包含从32位地址开始的数据。此记录通常用于32位微控制器,如ARM和680x0。此记录中包含的数据字节数为“字节计数字段”减去5(即,“32位地址字段”为4字节,“校验和字段”为1字节)。
S4 Reserved N/A N/A 此记录已被保留。
S5 Count 16-bit Count 此可选记录包含16位的S1/S2/S3记录计数。如果记录计数小于或等于65535(0xFFFF),则使用此记录,否则将使用S6记录。
S6 Count 24-bit Count 此可选记录包含24位的S1/S2/S3记录计数。如果记录计数小于或等于16777215(0xFFFFFF),则使用此记录。如果小于65536(0x010000),则将使用S5记录。注:此新记录是最近的更改(可能不是正式的)
S7 Start Address (Termination) 32-bit Address 此记录包含32位地址处的开始执行位置。这用于终止一系列S3记录。如果SREC文件仅用于对内存设备进行编程,而忽略执行位置,则可以使用零地址。
S8 Start Address (Termination) 24-bit Address 此记录包含24位地址处的开始执行位置。这用于终止一系列S2记录。如果SREC文件仅用于对内存设备进行编程,而忽略执行位置,则可以使用零地址。
S9 Start Address (Termination) 16-bit Address 此记录包含16位地址处的开始执行位置。这用于终止一系列S1记录。如果SREC文件仅用于对内存设备进行编程,而忽略执行位置,则可以使用零地址。

4.Examples

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,651评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,468评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,931评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,218评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,234评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,198评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,084评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,926评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,341评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,563评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,731评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,430评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,036评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,676评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,829评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,743评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,629评论 2 354