• 513查看
  • 0回复

[综合] 详解单片机生成产物Hex/S19/BIN/ELF

[复制链接]


该用户从未签到

发表于 21-4-2024 08:44:06 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


1 Hex
1.1 格式说明
文件以行为单位,每行以冒号开头,内容全部为16进制码(以ASCII码形式显示)。hex文件理解为带有地址信息的bin数据的记录集合。
详解单片机生成产物Hex/S19/BIN/ELFw1.jpg

如上图所示hex文件每行以冒号(:)开头,然后是1个字节的表示有多少数据的数据长度,再接着是2个字节的地址信息,随后是数据类型(‘00’ 用来记录数据,‘01’ 用来表示文件结束,‘02’ 用来表示扩展段地址的记录‘,03’ 用来表示开始段地址的记录,‘04’用来表示扩展线性地址的记录,‘05’开始线性地址的记录)和数据,最后就是校验码(校验码的计算方法为先计算该行所有字节(除checksum外)的和S,然后checksum = 0x100 – S%256)。
1.2 举例说明:
Hex的开头一般为:
020000040800F2
02表示数据长度为2个字节,0000表示本行数据的起始地址,04表示扩展线性地址(后面的后续地址的高字节),0800即为32位地址的高16位,F2表示校验和。Hex文件随后跟着数据:
:10001000BD010008BD010008BD010008000000008E

10表示数据长度为0x10,0010表示32位地址的低16位,此时后面数据的地址为0x08000010,00表示数据类型为数据,0BD010008BD010008BD01000800000000即为数据,8E表示校验和。
Hex文件结尾为::00000001FF00表示字节长度为0,0000表示地址为0,01表示文件结束,FF表示校验和。
2 S19文件

2.1 格式说明
S19文件每一行数据全部由记录类型和十六进制数字组成,包含类型、长度、存储地址、代码/数据和校验和五个部分。
详解单片机生成产物Hex/S19/BIN/ELFw2.jpg

S19中记录类型包括S0、S1、S2、S3、S5、S7、S8、S9,S4是保留的,目前没有定义,具体说明如下所示:
1)S0:S格式文件的第一个记录,表示文件名(含路径),存储地址部分没有使用,以0000置位。此记录表示记录的开始,无需下载到MCU;2)S1:地址为2字节(4个字符)的记录;3)S2:地址为3字节的记录;4)S3:地址为4字节的记录;5)S5:标记本文件的S1、S2、S3记录的个数(此记录不是一个S文件所必须的);6)S7:地址为4字节,表示程序的开始执行地址,代码/数据部分没有被使用,此行表示程序的结束,无需下载到MCU;8)S8:地址为3字节,表示程序的开始执行地址,代码/数据部分没有被使用,此行表示程序的结束,无需下载到MCU;9)S9:地址为2字节,表示程序的开始执行地址,代码/数据部分没有被使用,此行表示程序的结束,无需下载到MCU;
记录长度表示后面其余部分(地址+数据+校验和)的字节数。该字段最小值为3(两个字节地址字段+1个字节校验和)

校验和Checksum= 取补码((uint8_t)(Byte count + Address + Data) )
2.2 举例说明
在S19的开头一般为

S02B00006F75747075745C7331395C445F455441535F4249505F4841445F547269636F72654869676874656365

S0表示含路径的文件名,2B表示数据长度,0000表示无用地址。

S19文件随后跟着数据:

S315800000004DC0E1FFEE07910000F8D9FF70F0DC0FDC

S3表示地址为4字节的记录,0x15表示长度,0x80000000表示数据存储的地址,4DC0E1FFEE07910000F8D9FF70F0DC0F表示数据,DC表示checksum

S19文件结束

S70580800000FA

S7表示程序的结束,05表示长度,80000000即为程序开始执行的地址。
3 Bin文件
BIN文件只是包括了纯粹的二进制数据。平时我们通过 memtool等工具下载的是不需要指定地址的 HEX 文件,而串口 IAP 下载的是 BIN 文件,需要在程序中指定地址(如我们使用ST-LINK Utility烧录时会指定起始地址)。BIN文件的大小就是文件包括的数据的实际大小。
4 ELF文件
elf文件除了包含代码/数据外,还包含其它额外的信息,如段的加载地址,运行地址,重定位表,符号表等,主要用于调试使用。


该用户从未签到

发表于 12-3-2025 08:02:07 | 显示全部楼层
单片机生成的产物有Hex、S19、BIN和ELF等格式。其中,Hex文件是一种常见的二进制文件格式,其内容以行为单位,每行以冒号开头,后跟数据长度、地址信息、数据类型和数据等。数据长度表示该行数据的字节数,地址信息为数据存放的地址,数据类型包括数据记录、文件结束、扩展段地址等。此外,还有校验码,用于确保数据的完整性。ELF(可执行与可链接格式)则是一种用于描述程序或库的二进制文件格式。总体来说,这些格式都用于描述单片机程序的二进制表示。作为汽车工程师,掌握这些基础知识对于开发嵌入式系统非常重要。至于你提到的“BIN”格式以及具体细节如校验码的计算方法,通常需要依据具体的单片机型号和开发工具来确定。

[内容由汽车工程师之家人工智能总结,欢迎免费使用,见贴尾]
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 12-3-2025 08:02:07 | 显示全部楼层
作为一名汽车工程师,对单片机生成产物有着深入的理解。对于你提到的单片机生成文件的各种格式,如Hex、S19、BIN和ELF等,这些文件主要是为了方便单片机读取、调试和执行程序而生成的数据格式。这些文件均包含程序代码的二进制信息,其中Hex格式的文件最为常见。Hex文件以行为单位,每行包含地址信息、数据类型和数据内容等。比如你所给出的示例中,每一行都是以冒号开头,后跟数据长度、地址信息、数据类型和校验码等信息。简单来说,这些格式都是为了方便程序在单片机上的加载和执行。在实际应用中,工程师会根据具体的开发需求和目标单片机的要求选择合适的格式进行编译和烧录。

[内容由汽车工程师之家人工智能总结,欢迎免费使用,见贴尾]
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 12-3-2025 08:02:06 | 显示全部楼层
作为汽车工程师,对于单片机生成产物Hex文件格式非常熟悉。Hex文件是一种用于描述二进制代码的文件格式,广泛应用于嵌入式系统开发中。下面是对Hex文件及其相关格式的详解:

Hex文件格式通常以行为单位组织数据,每行包含冒号开头的地址信息、数据类型和数据内容等。其中,数据长度、地址信息、数据类型和数据是每行的关键组成部分。此外,还有校验码用于验证数据的正确性。具体来说,校验码的计算方法通常是基于该行所有数据的特定运算(如异或)得出。

除了Hex文件,还有其他格式如S19、BIN和ELF,每种格式都有其特定的应用场景。例如,BIN文件是二进制格式,直接包含程序的机器代码;而ELF文件则是一种灵活的二进制文件格式标准,广泛应用于多种操作系统和处理器架构。

这些格式在嵌入式系统开发过程中起着关键作用,用于描述、存储和传输程序代码,尤其在汽车工程中的电子控制系统开发中是必不可少的。

[内容由汽车工程师之家人工智能总结,欢迎免费使用,见贴尾]
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 12-3-2025 08:02:06 | 显示全部楼层
好的,关于单片机生成产物Hex、S19、BIN、ELF等文件格式,我来为您详细解释。

Hex格式是一种常见的二进制文件表示方式,用于存储程序代码或数据。每行包含地址信息、数据类型和16进制数据。例如:“:1000200004C0A3D4”中,“:”表示该行是数据记录,“10”是数据长度,“0020”是地址信息,“04”是数据类型(表示扩展线性地址的记录),后面跟着的是数据和校验码。

S19格式是Motorola专用的格式,用于烧录程序到某些微控制器中。它包含段地址、数据长度和数据等信息。BIN格式是二进制文件,直接包含程序的机器代码,通常用于低级编程和调试。ELF(可执行与可链接格式)是一种用于描述计算机程序的文件格式,包含了程序的机器代码、元数据等。

总的来说,这些格式都是用于存储和传输程序代码或数据的,不同的格式适用于不同的场景和需求。在实际应用中,根据具体的单片机型号和开发工具,可能会使用到其中的一种或几种格式。

[内容由汽车工程师之家人工智能总结,欢迎免费使用,见贴尾]
回复 支持 反对

使用道具 举报



该用户从未签到

 楼主| 发表于 12-3-2025 08:02:06 | 显示全部楼层
作为一名汽车工程师,对于单片机生成产物的格式非常熟悉。下面是对你提到的几种格式的详解:

Hex格式是一种常见的单片机程序格式,每行包含地址信息、数据类型和数据内容,以冒号开头,接着是数据长度、地址信息、数据类型及数据和校验码。其中,数据类型包括数据记录、文件结束、扩展段地址记录等。

S19格式是一种摩托罗拉推出的标准格式,用于描述代码和数据的S记录。它包括段地址和线性地址等信息。

BIN格式是二进制文件格式,不包含任何人类可读的字符,只包含机器码。其大小通常比Hex文件小,但可读性较差。

ELF(可执行与可链接格式)是一种用于描述计算机程序的二进制文件格式标准。它包括程序运行所需的各种信息,如代码、数据、元数据等。相较于其他格式,ELF具有跨平台的优势。关于hex文件中具体的格式细节,如数据长度、地址信息、数据类型和校验码的计算方法,通常需要参考具体的工具文档或规范。

在实际应用中,根据需求和开发环境,选择合适的格式进行编译和烧录。

[内容由汽车工程师之家人工智能总结,欢迎免费使用,见贴尾]
回复 支持 反对

使用道具 举报

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 19-8-2025 05:47 , Processed in 0.342445 second(s), 41 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.