使用python处理srec/s19文件

news/2025/3/16 6:11:21/

一、s19文件

Motorola S-record是由Motorola创建的一种文件格式,它以 ASCII十六进制文本形式传送二进制信息。这种文件格式也可以称为SRECORD、SREC、S19、S28、S37。

S-record 格式文件由一系列 ASCII 文本记录组成。这些记录从左到右具有以下结构:

typecountaddressdatachecksum

S19文件行格式
type(记录类型):2个字符,一个大写的"S"(0x53),然后是一个数字0~9,定义了记录的类型 (S0,S1,S2,S3,S5,S7,S8,S9)。 

count(字节计数):2个字符,16进制数字,表示记录的其余部分(address + data + checksum)的字节数(16进制数字对)。

address(地址):4或6或8个字符。由记录类型 type 决定。对于S1和S9类型(S19),地址字段为 4 个十六进制数字(2 个字节)。对于S2和S8 record(S28),地址字段为 6 个十六进制数字(3个字节),对于S3和S7 record(S37),地址字段为 8 个十六进制数字(4 个字节)。地址首先以 MSB 发送。地址字节以大端格式排列。

data(数据):0—64字符。用来组成和说明一个代表了内存载入数据或者描述信息的16进制的值。

checksum(校验和):2个字符。这些字符当被配对并换算成16进制数据的时候形成了一个最低有效字符 节,该字符节用来表达作为补充数据,地址和数据库的字符对所代表的(字节的)补码的byte总和。

二、使用python解析s19文件

S3数据记录了包含从 32 位地址开始的数据,以下示例解析S3数据。

1.打开一个s19文件

# 打开一个S19文件
with open(file='test.s19', mode='r') as s19_file:

2.读取一行数据

# 读取一行数据
for s19_line in s19_file.readlines():

3.将读取的行数据去除换行符

# 去除该行的换行符
s19_line_data = s19_line.strip()
print(s19_line_data)

输出结果

4.获取type类型

# 获取type
s19_type = s19_line_data[0:2]
print(s19_type)

使用切片获取前两个字符 ,输出的结果

5.获取count

s19_count = int(s19_line_data[2:4],16)
print(s19_count)

 使用切片获取字节计数count,使用int()函数将字符串转换为整型 

输出结果

6.获取address

# 获取address
s19_address = int(s19_line_data[4:12],16)
print(hex(s19_address))

使用切片获取地址address,使用int()函数将字符串转换为整型 

输出的时候使用hex()函数将地址转换为16进制字符串

7.获取data

# 获取数据
s19_data = s19_line_data[12:12+(s19_count-5)*2]
# 将字符串转换为hex数组
s19_data_ba = bytearray.fromhex(s19_data)
print(s19_data_ba)

使用切片获取数据,使用bytearray.fromhex()方法将16进制字符串转换为bytearray数组

输出结果

 8.S3数据解析示例


http://www.ppmy.cn/news/178727.html

相关文章

QT编程:S19转BIN

QT编程:S19转BIN 在做嵌入式单片机的bootloader功能时,通常需要将HEX格式或S19格式的烧录程序转成纯数据的BIN文件。在学QT过程中,决定自己做一个S19转BIN文件的小工具。 关于S19文件的格式,网上有很多资料,这里不再…

S19. 访问者模式

访问者模式 将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。 简单的说,就是已经存在稳定的数据类。由于外部需求&…

S19文件格式解析

S19文件每行数据组成 说明类型长度 N地址 数据校验字符串个数224/6/8N*2-(4/6/8)-22 类型 pS19FileFormat->DataType 用于描述记录类型: S0,S1,S2,S3,S5,S7,S8,S9 长度 用于…

玩转S19文件

本文首发于微信公众号“嵌入式软件实战派”。 这是《玩转Hex文件》的姊妹篇。 如果你还不了解S19或者SREC文件格式,请戳《SREC、Hex、Bin等烧录文件格式完全解读》。 本文与其说是《玩转S19文件》,还不如说是《玩转S19、Hex、Bin文件》,因为…

王者荣耀s19赛季服务器维修,王者荣耀S19赛季版本更新bug怎么解决-S19赛季版本更新bug解决方法介绍...

王者荣耀S19赛季版本更新bug怎么解决,有不少玩家都有这样的疑问,今天小编就为大家带来王者荣耀S19赛季版本更新bug解决方法介绍,希望可以帮到有需要的玩家。 王者荣耀S19赛季版本更新bug解决方法介绍 问题一:部分召唤师反馈商店新…

S19文件格式详解(总结)以及与hex文件的互转

S19文件格式详解 ​​ ​​ S-record格式文件是Freescale CodeWarrior编译器生成的后缀名为.S19的程序文件,是一段直接烧写进MCU的ASCII码,英文全称问Motorola format for EEPROM programming 格式定义及含义 S-record每行最大是78个字节,…

C#实现s19文件解析

如下是s19实现解析简易代码,具体如下: 外部调用接口:ParseS19 输入参数: 1、path:文件绝对路径 输出参数: 1、startAddr:文件烧入芯片起始地址 2、BinData:文件二进制流List&a…

KILE生成S19或者BIN文件

Keil生成S19文件或者Bin文件需要.axf文件,首先我们需要直到.axf文件的位置 keil或者IAR提供了一个格式转换的小工具:fromif fromelf.exe文件的位置在安装目录 Keil_v5\ARM\ARMCC\bin 或者 Keil_v5\ARM\ARMCLANG\bin 目录下。 具体设置方法如下&#x…