MCU刷写——S19(S-Record)文件格式详解及Python代码
工作之余来写写关于MCU的Bootloader刷写的相关知识,以免忘记。今天就来聊聊S19这种文件的格式,我是分享人M哥,目前从事车载控制器的软件开发及测试工作。
学习过程中如有任何疑问,可底下评论!
如果觉得文章内容在工作学习中有帮助到你,麻烦点赞收藏评论+关注走一波!感谢各位的支持!
1. 概述
S19文件(也称为S-Record、SREC或Motorola S-record)是一种由摩托罗拉(Motorola)公司设计的ASCII文本格式,用于表示二进制数据。它最初用于嵌入式系统的固件传输和存储,尤其在微控制器(MCU)编程、EEPROM烧录和调试中广泛应用。S19文件通过可读的文本形式编码二进制数据,同时包含地址、数据及校验信息,确保数据传输的完整性。
2. S19文件格式结构
S19文件由多行记录(Record)组成,每条记录代表一段二进制数据或控制信息。每条记录的结构如下:
复制
S<Type><ByteCount><Address><Data><Checksum>
2.1 字段说明
-
起始符(Start Code)
固定为字符S
,标识一条记录的开始。 -
记录类型(Type)
1位数字,表示记录类型(0-9),常用类型包括:-
S0:文件头(通常包含文件名或描述信息)。
-
S1:16位地址的数据记录(地址范围:0x0000–0xFFFF)。
-
S2:24位地址的数据记录(地址范围:0x000000–0xFFFFFF)。
-
S3:32位地址的数据记录(地址范围:0x00000000–0xFFFFFFFF)。
-
S5:记录计数(可选,表示S1/S2/S3记录的数量)。
-
S7/S8/S9:终止记录(表示程序入口地址或文件结束)。
-
-
字节数(Byte Count)
2位十六进制数,表示后续字段(地址 + 数据 + 校验和)的总字节数。 -
地址(Address)
根据记录类型确定长度:-
S1:2字节
-