IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> BIN,S19,M0T,SREC,HEX文件解析;FileParse(一)之文件详解 -> 正文阅读

[嵌入式]BIN,S19,M0T,SREC,HEX文件解析;FileParse(一)之文件详解

一、摘要

1.描述

  • 本文主要描述的是如何通过使用C#解析常用MCU的刷写格式文件,如Bin,S19,Hex,Mot,Serc。
  • 本软编写的语言是基于C#语言,并未使用其他关联的DLL文件,所以不同的电脑之间兼容性很好,不会出现调用异常的问题。
  • 郑重申明,关于实现方法,我也是从网上很多地方学习而来,大家若觉得版权问题可以联系我随时删除。

2.关键字

文件解析,C#,Bin,S19,Hex,Mot,Serc。

二、为什么要文件解析

  • 平常使用编译器的时候会自动生成相应格式的烧录文件,直接进行烧录即可,但是在有的时候我们需要使用对文件格式进行转换,比较好用刷写文件解析工具推荐使用HexView,也可以使用J-Flash进行查看。
  • 若通过BootLoader进行升级,或者需要对文件进行补齐填充的时候,或者需要自己进行文件提取的时候,我们就需要自己编写代码进行解析,搭配上位机等进行使用。

三、BIN文件格式

  • bin后缀的是一种二进制文件,它的用途是根据用户系统或者电脑内的应用而定 的。这是文件格式binary的缩写,bin文件没有什么特别之处,直接解析即可,bin文件不带

四、S19,M0T,SREC文件格式

  • s19,mot,serc文件格式之所以放在一起说明,是因为这几种格式的文件是相同的,除了后缀名不同,文件的排列格式是一样的,没有特别之处。采用同一种方式解析即可。

  • 文件格式内容如下:
    在这里插入图片描述

  • 文件结构

012345
SRecord typeByte CountAddressDataChecksum
  • Record type: 两个字节,一个大写“S” 和 一个0~9的数字,定义数据类型。
  • Byte count: 一个字节,表示后面其余部分(地址+数据+校验和)的字节数。该字段最小值为3(两个字节地址字段+1个字节校验和)。
  • Address: 地址段长度由Record type来决定。地址字节对齐方式为大端对齐。
  • Data: 数据段。一般建议该段最大32字节。S0/S1/S2/S3 类型的最小数据数是0。最大可记录的数据数由地址段来决定,因为数据段最大记录数是255,减去1个字节的校验位,再减去地址段,剩下的才是数据段长度,因此S0/S1最大支持252字节数据,S2最大支持251字节数据,S3最大支持250字节数据。
  • Checksum: 一个字节。Checksum = 取补码( (Byte count + Address + Data) )
  • 记录类型
RecordFieldRecord PurposeAddress FieldData FieldRecord Description
S0Header16-bit“0000”此记录包含特定于供应商的ASCII文本,表示为一系列十六进制数字对。通常可以看到此 记录的数据是以空结尾的字符串格式的。文本数据可以是任何内容,包括以下信息的混 合:文件据块名称、版本号/修订号、日期/时间、产品名称, 供应商名称、PCB上的内 存指示符、版权声明。常见的是:48 44 52,这是ASCII H、D和R--"HDR"。
S1Data16-bit Address此记录包含从16位地址字段开始的数据。此记录通常用于8位微控制器,如AVR、PIC、 8051、68xx、6502、80xx、Z80。此记录中包含的数据字节数为"字行计数字段”减去3(即,"16位地址字段"为2字节,"校验和字段"为1字节)。
S2Data24-bit Address此记录包含从24位地址开始的数据。此记录中包含的数据字节数为“字行计数字段“减去 4(即,3字节表示“24位地址字段',1字节表示"校验和字段")。
S3Data32-bit Address此记录包含从32位地址开始的数据。此记录通常用于32位微控制器,如ARM和680x0. 此记录中包含的数据字节数为'字行计数字段“减去5 即,"32位地址字段"为4字节,"校 验和字段"为1字节)。
S4ReservedN/AN/A此记录已被保留。
S5Count16-bit Count×此可选记录包含16位的S1/S2/S3记录计数。如果记录计数小于或等于 65535 ( 0xFFFF) ,则使用此记录,否则将使用S6记录。
S6Count24-bit Count×此可选记录包含24位的S1/S2/S3记录计数。如果记录计数小于或等于 16777215 ( 0xFFFFFF) ,则使用此记录。如果小于65536( 0x010000) ,则将使用S5记录。
S7Start Address(Termination)32-bit Address×此记录包含32位地址处的开始执行位置。这用于终止一系列S3记录。如果SREC文件仅用 于对内存设函进行编程,而忽略执行位置,则可以使用零地址。
S8Start Address(Termination)24-bit Address×此记录包含24位地址处的开始执行位置。这用于终止一系列S2记录。如果SREC文件仅用 于对内存设函进行编程,而忽略执行位置,则可以使用零地址。
S9Start Address(Termination)16-bit Address×此记录包含16位地址处的开始执行位置。这用于终止一系列S1记录。如果SREC文件仅用 于对内存设函进行编程,而忽略执行位置,则可以使用零地址。

五、HEX文件格式

  • hex文件是由一行行符合Intel hex文件格式的文本所构成的ASCII 文本文件。在Intel hex文件中,每一行包含一 个hex记录 。 这些记录由对应机器语言码和/或常量数据的十六 进 制编码数字组成。
  • 文件格式内容如下:
    在这里插入图片描述
  • 文件结构
012345
ABCDE
  • 描述
内容描述
数据每行都由冒号开头
A数据长度 1 Byte ,表示本行数据的长度
B数据地址 2 Byte ,表示数据的起始地址
C数据类型 1 Byte
D具体数据 N Byte ,表示本行中数据字节的数量,它和A说明的数据长度一致
E校验和 1 Byte ,检验和 = 0x100 - 累加和
  • 数据类型
内容描述
"00"数据记录:用来记录数据,HEX文件的大部分记录都是数据记录
"01"文件结束记录:用来标识文件结束,放在文件的最后,标识HEX文件的结尾
"02"扩展段地址记录:用来标识扩展段地址的记录
"03"开始段地址记录:开始段地址记录
"04"扩展线性地址记录:用来标识扩展线性地址的记录
"05"开始线性地址记录:开始线性地址记录

六、源码下载

七、其他

本文主要是讲解BIN,S19,M0T,SREC,HEX文件解析,后续章节会对源码的内容进行讲解,方便新手查询,有些地方可能会有描述性的错误,希望看到的朋友及时指出,我会及时更正错误,其他地方有些借鉴的描述,写此文章的目的是为了交流,非商业用途,欢迎私信讨论,感谢大家阅读。

八、参考

【1】:S19文件格式详解
【2】:HEX文件格式详解

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-05-24 18:23:18  更:2022-05-24 18:25:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:36:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码