当前位置: 首页 > news >正文

【车载开发系列】单片机烧写的文件

【车载开发系列】单片机烧写的文件

【车载开发系列】单片机烧写的文件

  • 【车载开发系列】单片机烧写的文件
    • 一. 什么是bin
    • 二. 什么是Hex
    • 三. 什么是Motorola S-record(S19)
    • 四. ELF格式
    • 五. Bin与Hex文件的比对
    • 六. 单片机烧写文件的本质

一. 什么是bin

bin是binary的缩写,翻译为“二进制”。binary file二进制文件是一个非text file文本文件的计算机文件。
binary file是一种计算机文件格式,它以二进制编码表示文件的内容。这些文件通常包含计算机程序或数据,例如软件/固件、操作系统、文档、音频和视频等。
它是我们最常见的二进制文件,它是纯数据文件,也即是“所见即所得”,所以如果我们想看看需要下载到单片机flash的数据的大小,最简单的方法就是查看我们编译连接后生成的bin文件大小。

二. 什么是Hex

hex文件是Intel很早就推出的一种文件格式,它除了有效数据信息之外还包含了一些多余信息(包括地址信息,校验码之类的等等信息),所以hex文件是很大的,而最终下到单片机的flash里的仍是其中的有效数据段,而其他的信息段则是作为flash编程软件的辅助信息的(包括地址信息)。
Intel Hex格式最初于1973年为Intel的Intellec Microcomputer Development Systems (MDS)设计,以便从纸带上加载和执行程序。它还被用于向Intel指定memory内容,以便生产ROM。1973年,Intel的“软件小组”仅由Bill Byerly和Ken Burget以及作为外部顾问的Gary Kildall组成。从1975年开始,该格式被MCS系列II ISIS-II系统所利用,使用文件扩展名HEX。
后来许多PROM和EPROM编程设备接受了这种格式。
如果烧写或者下载Bin文件时,软件会弹出首地址框输入相应地址信息,而在烧写Hex文件的时候则不必再输入地址信息了,因为Hex里面已经包含了。
Intel Hex文件格式是一种以ASCII文本形式传达二进制的十六进制值信息的文件格式。它通常用于对Microcontroller微控制器、EPROM和其它类型的可编程逻辑器件和硬件仿真器进行编程。在一个典型的应用程序中,compiler编译器或assembler汇编器将程序的源代码(例如C或汇编语言)转换为machine code 机器码,并将其输出到HEX文件中。有些人还将其用作容纳流数据包的容器格式。由此产生的文件常用的扩展名是.HEX或.H86。然后,programmer编程器读取HEX文件,以将机器码写入PROM中,或传输到目标系统进行加载和执行。
Hex文件内部是以文本格式来存储内容的,每行以冒号(:)起始,后面每两个字母是一个8bit的16进制数;

三. 什么是Motorola S-record(S19)

Motorola S-record是一种文件格式,由摩托罗拉在20世纪70年代中期为Motorola 6800处理器创建,以ASCII文本形式传达二进制信息的十六进制值
在这里插入图片描述

四. ELF格式

可执行与可链接格式 (Executable and Linkable Format,ELF),常被称为ELF格式,是一种用于可执行文件、目标代码、共享库和核心转储(core dump)的标准文件格式,一般用于类Unix系统,比如Linux,Macox等。ELF格式灵活性高、可扩展,并且跨平台。比如它支持不同的字节序和地址范围,所以它不会不兼容某一特别的CPU或指令架构。这也使得ELF格式能够被运行于众多不同平台的各种操作系统所广泛采纳。
ELF文件一般由三种类型的文件:

  1. 可重定向文件
    文件保存着代码和适当的数据,用来和其他的目标文件一起来创建一个可执行文件或者是一个共享目标文件。比如编译的中间产物.o文件;
  2. 可执行文件
    一个可执行文件;
  3. 共享目标文件
    共享库。文件保存着代码和合适的数据,用来被下连接编辑器和动态链接器链接。比如linux下的.so文件。

五. Bin与Hex文件的比对

-Bin文件Hex文件
格式不同二进制数据十六进制值信息
使用不同只包含数据本身还包括地址信息
文件大小大,是Bin文件两倍以上
指定烧录的起始地址需要不需要

直接传输bin文件可以简化bootloader软件的设计,减少一些处理过程,缩小boot程序的体积,但是要注意需要事先规定写入的地址;而通过上位机软件和下载器烧写时,使用hex文件,可以简化操作、增加可靠性。
一般软件IDE都可以生成hex文件,有的也能生成bin文件,可以将hex转bin。

六. 单片机烧写文件的本质

  • 把单片机当做一个存储器,每一条程序指令都对应一个唯一的存储地址,把这些指令以字节为单位一条条存储到指定的存储地址中,这就是烧录程序的本质。
  • 下载过程时,上位机软件根据.hex文件记录的指令内容和对应的地址信息,经过USB转串口线,跟单片机的预置系统程序进行串口通讯,从而把.hex记录的信息传输到单片机内部的flash存储器中,实现了程序的烧录下载。
  • 单片机程序下载的本质就是将由0和1组成的hex文件写入到掉电数据不会消失的EEPROM(Electrically Erasable Programmable Read Only Memory,电可擦除可编程只读存储器)中。
http://www.lryc.cn/news/429769.html

相关文章:

  • pyqt 用lamada关联信号 传递参数 循环
  • adb命令
  • Spring Boot项目热部署
  • Chat App 项目之解析(八)
  • CAAC无人机飞行执照:学习内容与考试流程详解
  • 苹果手机怎么连接蓝牙耳机?3个方案,3秒连接
  • CAD图纸加密软件有哪些?10款超级好用的CAD图纸加密软件推荐
  • 【html+css 绚丽Loading】000011 三元轮回珠
  • 算法学习018 求最短路径 c++算法学习 中小学算法思维学习 比赛算法题解 信奥算法解析
  • vue-element-admin——<keep-alive>不符合预期缓存的原因
  • 基于ElementPlus的分页表格组件ReTable
  • 力扣题/图论/课程表
  • SQL进阶技巧:基于指定规则的缺失值填充问题
  • 【气象百科】光伏自动气象站的功能优势
  • 嵌入式AI快速入门课程-K510篇 (第二篇 Ubuntu的基础操作)
  • android13隐藏调节声音进度条下面的设置按钮
  • Java ArrayList和LinkedList
  • STM32F030行列式按键扫描
  • FPGA 综合笔记
  • Android MVVM框架详解与应用
  • 浅析KHD-厨帽检测算法从源码到实际应用的方案
  • ESXi里的FreeBSD装bhyve Ubuntu子系统,外网不通,子系统里无法ping通外面(使用NAT解决)
  • Connectionist Logic Systems and Hybrid Systems by Translation
  • 盘点数据摆渡的8种常用方式 最推荐哪一种?
  • 仿照ContentLoadingProgressBar 的特点在Android项目中自定义Loading对话框
  • 基于数据复杂度的数据库选型
  • QT基础知识5
  • C++中vector存放内置数据类型
  • shell编程:安装部署前常见环境检查
  • 思特科技:国家宝藏数字体验馆展现东方美学 让“文物活起来”