单片机烧写格式详解:ELF、HEX、BIN

需积分: 35 16 下载量 68 浏览量 更新于2024-09-27 2 收藏 322KB PDF 举报
"这篇文稿主要介绍了单片机编程中常见的三种烧写文件格式:ELF、HEX和BIN,这些格式在不同的应用场景中有各自的特性和用途。" 单片机编程过程中,为了将代码烧录到芯片中,我们需要将编译后的程序转换成特定的烧写文件格式。以下是对这些格式的详细解释: 1. **ELF (Executable and Linking Format)**:ELF是x86 Linux系统下广泛使用的文件格式,适用于多种任务,包括可重定位文件、可执行文件和共享目标文件。这种格式包含了代码、数据、符号表以及链接和调试信息,使得编译器和链接器能够有效地处理和组织程序。 - **可重定位文件**:这类文件包含编译后的代码和数据,但尚未链接到其他库或目标文件,用于构建最终的可执行文件或共享库。 - **可执行文件**:可以直接在操作系统中运行的文件,包含了完整的程序映像,加载到内存后即可执行。 - **共享目标文件**:通常用于动态链接,可以与其他可重定位文件和共享目标文件一起连接,以创建更大的程序映像。 2. **Intel HEX格式**:Intel HEX是一种ASCII文本文件格式,主要用于将程序或数据传输到ROM、EPROM等存储器中。每个HEX文件由多个十六进制记录组成,每个记录包含了数据的地址、类型和实际数据,并有一个校验和用于验证数据的正确性。HEX记录的结构分为五个字段,分别是记录开始符、长度、地址、类型和数据。这种格式简单且普遍适用于8位和16位单片机,如89C51。 - **数据记录**(类型00):包含实际的程序或数据字节。 - **文件结束记录**(类型01):标记文件的结尾。 - **扩展段地址记录**(类型02):在某些需要更宽地址空间的设备中,扩展段地址记录用于指定程序的更高地址部分。 - **扩展线性地址记录**(类型04):类似扩展段地址,用于32位系统中的更大地址范围。 3. **BIN格式**:BIN文件是最简单的形式,它直接包含了芯片上电后需要加载的二进制数据。与HEX文件相比,BIN文件不包含任何地址或校验信息,因此通常只适用于那些地址空间较小且不需要复杂链接过程的单片机。BIN文件通常是从其他格式(如ELF或HEX)转换而来的,用于简化烧录过程。 理解这些文件格式对于单片机开发至关重要,因为它们决定了如何将程序代码有效地存储和执行在不同的硬件平台上。根据项目需求和目标设备的特点,开发者需要选择合适的烧写文件格式来完成程序的部署。
2019-08-26 上传
使用pic SQTP 序列号植入功能,由于已知一系列固定的序列号,需要烧入单片机,需要手动生成 .num 文件时 校验和的计算非常麻烦。 1.这里提供一个工具,自动计算校验和。 输入格式为 xx:xx:xx:xx:xx:xx 格式的 一组序列号,输出为pic16f1509 , PIC16 /PIC17 系列应该均可以用的 .num 文件的.exe 工具,源代码,用VC6.0开发在win7 64/32位系统均可用。 2. SQTP 功能的使用,PIC单片机如何使用SQTP功能的说明文档, 如何编程,烧写,下载等,均有详细说明。 3. .num 文件的 文件格式分析,说明的相关文档。 主要适合 PIC单片机内部需要一个产品序列号, 或者本身使用,或者是外部模块匹配时使用。等需要序列号的场合。 谢谢。 本工具使用VC6.0 开发,电脑系统win7 32 bit 使用时可以安装vc6.0 或者将mac_tools\Debug 拷贝出来到桌面 debug文件夹是未发布状态的生成,所以如果没装VC可能不好用, 参考源代码修改成想要的就可以了。 使用方法, 需要在debug 文件夹中有 mac.txt 文件(详见内部内容,格式为 xx:xx:xx:xx:xx:xx) cmd 命令行 到此路径下,输入 mac_tools.exe 即可 最后两行显示 转换文件out.num成功 即完成。 然后在此路径下,会产生一个out.num 文件, 按照文档烧录即可。 此工具是有一系列已知的固定的序列号(格式为 xx:xx:xx:xx:xx:xx)将器转换为pic16f1509 能够用的 .num 文件,为免于手动计算最后一个字节的校验和的痛苦而写。 可能不会满足所有人需求,但作为参考足够。 根据自己需要修改。 谢谢。 至于单片机代码的写法,在PIC 单片机 SQTP 编程和烧写配置.pdf 中有部分提及, 主要是利用retlw 查表的方式 在代码空间相应位置 处 查表。 更具体可参考 文件夹(涉及到的文件) 中的相关文档。 谢谢。