我们在编译生成固件的时候,有时候生成Hex文件有时候生成Bin文件,这两种文件有什么关系呢,它们存在的价值又是什么呢?

Hex文件和Bin文件是什么

Hex文件是以ASCII文本形式保存编译后的二进制文件信息。Hex文件使用ASCII文本的形式保存Bin文件的内容和Bin文件的一些配置信息。Hex文件可以由下载器(比如jlink)烧写到MCU的ROM中。

Bin文件是MCU固件烧写的最终形式,也就是说MCU的ROM中烧写的内容完全就是Bin文件的内容。

Hex文件和Bin文件的关系

Hex文件可以说是MCU固件的中间形式,由下载器的软件根据Hex文件生成Bin文件再烧写到MCU的ROM中。既然Bin文件是最终我们想要的,那么Hex文件有什么存在价值?我们为什么不直接生成Bin文件,却要生成Hex文件呢?这就要从Hex文件的内容格式说起来了。

Hex的内容格式

从上面我们知道Hex文件不只是保存Bin文件的内容,还有一些配置信息。我们以一个例子大概说下Hex文件的结构,见下图:

上图的Hex文件总共6行的内容。每行都是以':'开始,之后是地址域、数据类型、数据域和校验和。

最后一行的数据类型是0x01,代表文件结束了。

Hex文件和Bin文件的存在价值

从上面的介绍中,我们发现Hex文件中每行的内容,就像我们发送串口数据的数据帧,并且最后一行还指示出文件结束了。我们得出hex文件的两个优点:

  • 1. 使用ASCII文本保存固件信息,方便查看一些固件内容;
  • 2. 通过文件每行的校验和与最后一行的文件结束标志,在文件的传输与保存过程中能够发现固件是否完整。

Hex文件有更好的可读性,最重要的是hex文件能够保证固件在保存与传输时的完整性。因此hex文件更适用于保存与传输。而Bin文件是纯二进制文件,内部只包含程序编译后的机器码和变量数据。当文件损坏时,我们也无法知道文件已损坏。不过Bin文件作为固件的最终形式,在使用串口下载程序或者远程升级时,是不可替代的。

参考:科普:Bin与Hex是什么鬼 | 《Linux就该这么学》

Bin与Hex文件解析相关推荐

  1. BIN,S19,M0T,SREC,HEX文件解析;FileParse(二)之源码解析

    简介 一.摘要 1.描述 2.关键字 二.为何选择C#解析 三.BIN文件解析 四.BIN文件生成 五.S19,M0T,SREC文件解析 六.S19,M0T,SREC文件生成 七.HEX文件解析 八. ...

  2. BIN,S19,M0T,SREC,HEX文件解析;FileParse(一)之文件详解

    简介 一.摘要 1.描述 2.关键字 二.为什么要文件解析 三.BIN文件格式 四.S19,M0T,SREC文件格式 五.HEX文件格式 六.源码下载 七.其他 八.参考 一.摘要 1.描述 本文主要 ...

  3. S19文件和HEX文件解析

    目录 一.S19文件解析: 1.记录类型 2.长度计算 3.地址 4.数据 5.校验和及计算 二.HEX文件解析 1.记录类型 2.起始地址 3.数据长度 4.校验和 一.S19文件解析: S19文件 ...

  4. 【单片机】嵌入式硬核必备知识:合并bin文件,bin转换hex文件

    首先为什莫要合成bin: 很多时候单片机要求要boot和app两个程序,但是两个分别烧写比较麻烦,然后通过合并,将两块运行程序合并在一起 好东西就是要分享::::::::::::::::::::::: ...

  5. Intel HEX文件解析

    Hex文件的INTEL格式:这是Intel公司提出的按地址排列的数据信息,数据宽度为字节, 所有数据使用16进制数字表示. 这是一个例子: :10008000AF5F67F0602703E0322CF ...

  6. STM32的烧录和Hex/bin烧录文件解析

    一.STM32的烧录 1. 用IDE工具烧录 可以配置IAR或Keil,用IDE下载.硬件工具需要使用ST-Link(分为SWD或Jtag方式,SWD连线少,比较常用于调试)或J-Link连接到板子的 ...

  7. BIN文件和HEX文件互转合并

    因需要使用阿莫脱机下载器制作STM32脱机下载文件,而配置文件部分只有bin格式的,整合不了,所以需要把bin文件转化为hex文件. 参考了:BIN 文件转换为 HEX 文件 - 何亚斌的博客 (go ...

  8. python fromhex长度问题_任意长度HEX文件的解析(Python实现)

    1. 程序的功能 可解析大于64KB的HEX文件.限于时间条件,笔者只测试了两个样例,数据域大小分别为8332B和1.61MB 将解析得到的结果打印出来,包括: - 起始地址 - 末尾地址 - 数据域 ...

  9. 任意长度hex文件的解析(python实现)

    1. 程序的功能 可解析大于64KB的HEX文件.限于时间条件,笔者只测试了两个样例,数据域大小分别为8332B和1.61MB 将解析得到的结果打印出来,包括: - 起始地址- 末尾地址- 数据域尺寸 ...

最新文章

  1. 多重集表示合json数据_计数DP(划分数,多重集组合数)
  2. Java与JS代码调试技巧
  3. 免费教材丨第48期:业界大牛中文教学视频《深度学习:进阶》第25-28讲
  4. python c#_【分享】C# 调用 Python 脚本, 与 Python 调用 C# 类库
  5. ARWU、THE、QS世界大学 排名前100名国(境)外高校名单
  6. html 渐变透明写法,CSS3透明度+渐变
  7. Scala数组和Java集合List的互转
  8. 自动语音识别(ASR)自监督方法研究综述
  9. 如何加声调口诀_声母韵母口诀顺口溜歌曲(怎么快速记住声母韵母)
  10. LeetCode 141 Linked List Cycle
  11. NSDate的简单用法
  12. 求01矩阵中的最大的正方形面积
  13. TJUSCSST第二次作业
  14. 125万像素智能相机收费站解决方案
  15. 51单片机数码管小数点c语言,求助一个51单片机控制的数码管计算器带小数点功能的...
  16. 【ICLR 2018】模型集成的TRPO算法【附代码】
  17. 一文看懂中国的金融体系
  18. WINDOWS超级热键
  19. LeetCode1-580题汇总
  20. 【设计模式】迪米特法则

热门文章

  1. AcWing1102. 移动骑士
  2. 干货 | PCB电路板短路了!试试这六种检查方法
  3. 【参赛作品47】openGauss数据库源码学习-指标采集、预测与异常检测
  4. 精华总结|机器视觉硬件之镜头
  5. AMOS的使用之输出结果分析(4)
  6. 怎么调用t-tide
  7. TSN 3. Ethernet AVB 协议栈分析
  8. java redis的同步_java同步系列之redis分布式锁进化史
  9. requests 标红 InsecureRequestWarning: Unverified HTTPS request is being made to host
  10. 乐优商城遇到的坑(一)