你了解单片机程序的hex文件吗?它包含哪些信息

https://m.toutiao.com/is/etkYYex/

图1

图2

(1)每行都是以冒号开始,这只是一个规范格式。

(2)第1行:02表示这一行有两个字节的数据,0800是真正的数据,0000表示本行数据的起始地址,04相当于一个功能码,表示设定偏移地址,就是0x0800左移16位变成0x08000000,表示存储代码的起始地址,F2是校验位,校验位=0x100-(这一行校验位之前所有数之和),就是一个公式,所有行的校验方式是一样的。

(3)第2行:10表示这一行有16个字节的数据,0000表示存储的其实地址,实际上是0x08000000,后面的00也是一个功能码,表示这一行是存数据的,就是程序代码的一部分,紧跟着16个字节的数据,然后是校验位。

(4)倒数第3行,跟第2行其实是一样的,只不过数据到了最后,没有16字节了,只有12个字节。

(5)倒数第2行,04表示有4个字节的数据,0000表示本行数据的起始地址,05是一个功能码,表示程序开始运行的地址,就是main函数的入口,本例中入口地址在:0x080000ED,最后是校验位。

(6)倒数第1行,00表示这一行无实际数据,0000表示本行数据的起始地址,01是一个功能码,表示hex文件结束,即最后一行,FF是校验位。

总结hex文件每一行的结构就是:【数据字节数】【本行起始地址】【功能码】【数据】【校验位】,其实也并不复杂。本文是按照一个实际的hex文件来分析的,不同程序编译出来的hex文件会略有不同,功能码还有02和03两种,这里没有涉及,不做描述。从以上分析可以看出,hex文件中不仅仅包含程序代码的数据,还包含其他的一些标示信息,因此,hex文件的大小不等同于程序代码的实际大小。

Hex文件的神秘面纱是不是已经被我们揭开了?

单片机、ARM、现场总线、PLC、嵌入式软硬件的设计经验分享,秉承“点点滴滴皆智慧”的理念,以实际项目为单元阐述知识点,一起分享,共同交流。

(0)

相关推荐

  • Hex文件校验生成和验证

    手机升级系统,下载完系统都会存在一个校验过程: 其实,在MCU升级过程中,也是需要校验hex文件,如果要想升级更可靠,还可以在hex或bin升级文件后再增加校验信息. 我们之前公司做的一个远程升级的产 ...

  • 如何读出烧录程序.bin的数据

    在维修户户通接收机过程中,经常会碰到定位模块异常故障或接收地周围2G基站关闭导致位置改变而无法正常收看.遇到此类故障时广大维修人员通常用M系列小板来代替原模块工作,不过常用的M3小板(适用于第二.三. ...

  • 轻松理解bin、hex、axf和elf文件格式

    在嵌入式软件开发中,bin.hex.axf和elf这四种格式的文件很常见.之前我分享的STVP.ST-LINK Utility.STM32CubeProg这些下载编程工具的时候,都用到了bin.hex ...

  • 最正宗的方法,如何生成单片机程序的bin文件(基于keil)

    最权威的生成单片机程序的bin文件的方法(基于keil) 搞单片机开发的朋友,有一些应该接触过bin文件吧,像孔丙火(微信公众号:孔丙火)开发的一些传感器,有时候需要对传感器内单片机的程序进行升级更新 ...

  • 单片机烧录用的hex文件,文件格式解析

    一hex文件解析hex文件可以通过UltraEdit.Notepad++.记事本等工具打开,用Notepad++打开之后会看到如下数据内容. 使用Notepad++打开后会不同含义的数据其颜色不同.每 ...

  • 单片机下载文件:HEX文件和BIN文件的区别

    单片机程序写好之后,我们都要把程序下载到单片机的内存中,单片机才会按照程序员的逻辑执行命令实现功能.之前也讲过下载单片机的几种方式,比如ISP下载,JTAG下载,下载文件的格式最常见的是hex文件,这 ...

  • 单片机程序烧录的3种方式(ISP、ICP、IAP)是什么

    说起给单片机烧录程序,大家应该都不陌生吧,我最早接触单片机是从51单片机开始的,型号是STC89C52RC,当时烧录程序就是用的下面这种烧录软件--STC-ISP. 这种方式,通过串口连接单片机,选择 ...

  • 远程升级单片机程序怎么设计?

        之前的文章中介绍过串口和U盘的IAP程序设计.在物联网应用中,远程IAP升级MCU的程序是一项非常有用的功能.当设备出现程序问题或者需要更新程序时,只需要在服务器上对设备进行升级,不需要在有专 ...

  • 重复相似代码多,导致单片机程序跑飞

    硬件环境: 国产MCU:华大HC32L130 问题描述: 最近做一款基于Modbus协议的三通道温度采集模块,程序设计是移植之前验证过的两通道温度.压力采集模块的程序,完成后,三通道温度采集程序可正常 ...

  • 使用iMazing将图书应用程序的ePub文件导出至电脑

    在日常生活中我们喜欢用iPad在图书应用程序阅读电子书籍,导致大量的ePub电子书籍文件被保存在iPad中,想要将已经看完的电子书籍备份到电脑,以便节省iPad内存空间,那么我们该如何将这些文件导出至 ...

  • 解决单片机程序丢失的方法有哪些?

    改善电源 尽量改善电源.这是老话了.并不是说单片机能工作就行,电源要设计好,加上104去耦电容改进电路布局等措施. 使用带电压监测的复位芯片. 防止上电/下电时,单片机电压处于工作和不工作的临界时,单 ...

  • 原来这么简单,清晰地知道你的单片机程序有多大?

    原来这么简单,清晰地知道你的单片机程序有多大? Keil是常用的单片机编程环境,在keil下,如何知道自己编写的程序代码有多大呢?有两种方法. (1)点击rebuild,查看编译信息,如图1和2所示, ...