hex文件分析

转载 2018年04月17日 17:41:15

用文本随便打开一个文件都可以看到hex文件的内容。例如:

:020000040800F2

:1000000080040020690100087101000873010008E4

:1000100000000000000000000000000000000000E0

:100020000000000000000000000000007501000852

:1000300000000000000000007701000879010008BE

“““““

“““““

“““““

:1005E0002001000800000000006CDC020000000098

:1005F00000000000010203040607080900000000D3

:04000005080000C12E

:00000001FF

上面就是一个hex文件内容首尾的一部分数据,从内容中很明显可以看出这不是二进制数据。Hex文件是用ASCII来表示二进制的数值,十六进制数组成的指令或者数据,每一行就是一个hex记录。由于单片机执行的只能是二进制指令和数据,而hex文件是十六进制数,所以烧录器的工作必然有一个进制转换机制。具体机制怎么实现暂时可以不管,知道是烧录器处理的就行了。从这里可以找出第二问题的答案。

hex文件的每一行数据记录都是以行为单位,每行从“:”(0x3a)开始,这从文件内容可以看出。以回车键结束(0x0d,0x0a),每行以换行结束。每行的数据都是由两个字符表示一个16进制字节,例如第一行,:020000040800F2中的“02”表示数为0x02,“F2”就表示为0xF2。如果数据位地址时,地址高位在前低位在后。

以上面内容的第二行数据为例,进行详细解析:

:1000000080040020690100087101000873010008E4

1、“:”表示一行的开始;

2、第1、2个字符1和0,即“0x10”表示本行包含的数据长度为16个;

3、第3、4、5、6个字符,固定这4位表示地址,即“0000”表示数据存储的起始地址,表示在0x0000地址开始存放本行包含的16个数据。

4、第7、8个字符,固定这2位表示本行包含数据数据的类型,即“00”表示本行包含的数据为实际烧写的数据。而数据的类型有如下几种:

“00”表示实际数据记录

“01”表示文件结束记录

“02”表示扩展段地址记录

“04”表示扩展线性地址记录

5、由前两个字符“10”可知本行的数据长度位16个字节,所有往后的32个字符就是本行包含的数据,每两个字符表示一个字节数据,总共有16个字节数据。跟最前两个字符决定的长度一致。但是这个数据的长度不是固定的,例如最后一行00000001FF,这行包含的数据长度0,没有数据。

6、最后两个字符为本行的校验码。

通过上面的几点分析可以总结出hex文件的每一行的格式:

<0x3a>[数据长度1Byte][数据地址2Byte][数据类型1Byte][数据nByte]

[验证码1Byte]<0x0d><0x0a>

校验的算法:

计算从(0x3a)以后的所有各字节的和模256的余。即各字节二进制算术和,不计超过256的溢出值,然后用0x100减去这个算数累加和,得出的值就是此行校验码。举一个简单的例子,如第一行020000040800F2

0x02+0x00+0x00+0x00+0x04+0x08+0x00 = 0x0E

0x100 – 0x0E = 0xF2.

Hex文件分析

Hex格式文件有两种,一种是Intel的Intel HEX,另一种是Motorola(摩托罗拉)的SREC(又称MOT)。 Intel HEX IntelHEX文件是由一行行符合Intel...
  • o274274
  • o274274
  • 2015-01-26 16:53:01
  • 1237

HEX文件格式解析

来自:http://blog.csdn.net/GZFStudy/archive/2008/09/03/2873814.aspx Intel HEX 文件是由一行行符合Intel HEX 文件格式...
  • a1037488611
  • a1037488611
  • 2015-01-31 12:11:32
  • 4484

浅析STM32的hex文件

前段时间需要用到BIN文件 随便把HEX文件也了解了一下 参考查阅了一些网上资料,如有雷同除了巧合还有借鉴参考。。。 正题:HEX文件格式如下 [数据长度1Byte][数据地址2Byte][数据类型1...
  • lincheng15
  • lincheng15
  • 2016-06-29 11:34:03
  • 2008

.hex 文件详解 stm32

我们先来详细分析“方法一”的操作: 1.我们设置编译 程序的编译器(如图),这个设置意思是把程序下载到flash 的 0x0800 0000开头的位置,然后编译程序 2.编译完程序后,在工程...
  • yx_l128125
  • yx_l128125
  • 2013-10-30 11:59:35
  • 12467

Intel HEX文件解析

最近有一个需求就是为Arduino开发板做一个基于蓝牙的无线烧录程序。目前的Arduino程序都是通过USB线连接到电脑的主机上,实际的传输过程是基于USB协议的,这个过程还是比较麻烦的。因为每次的编...
  • u011000290
  • u011000290
  • 2016-04-05 17:22:50
  • 4736

.hex 文件详解 stm32(stm32深入理解机器码)

我们先来详细分析“方法一”的操作: 1.我们设置编译 程序的编译器(如图),这个设置意思是把程序下载到flash 的 0x0800 0000开头的位置,然后编译程序 2.编译完...
  • shenghuaDay
  • shenghuaDay
  • 2017-08-05 12:34:56
  • 576

关于HEX与BIN文件分析

HEX文件:由一条条具有规定格式、由16进制的数据表示特定特定信息的HEX文本记录组成的可烧写文件,每条记录中的数据包含有地址与要烧写的数据以及检验码等信息。每条烧写文本记录中若包含数据记录,那么16...
  • a123421514
  • a123421514
  • 2014-11-27 13:44:05
  • 1048

Intel Hex 文件分析

注:原地址:http://www.upsdn.net/html/2004-12/95.html    原作者:Johnny 问题:什么是Intel HEX格式?回答:Intel HEX文件是记录文本行...
  • zdl1016
  • zdl1016
  • 2009-06-26 15:58:00
  • 1217

HEX文件分析

HEX文件分析 Hex文件是可以烧录到MCU中,被MCU执行的一种文件格式。如果用记事本打开可发现,整个文件以行为单位,每行以冒号开头,内容全部为16进制码(以ASCII码形式显示)。 HEX格式...
  • joqian
  • joqian
  • 2012-12-14 10:23:32
  • 843

51单片机 bin文件转化成hex文件

  • 2009年10月31日 12:10
  • 537KB
  • 下载
收藏助手
不良信息举报
您举报文章:hex文件分析
举报原因:
原因补充:

(最多只允许输入30个字)