Hex文件

那么什么是Hex文件呢?Intel Hex文件是由一行行符合Intel Hex文件格式的文本所构成的ASCII文本文件。在Intel Hex文件中,每一行包含一个Hex记录。这些记录由对应机器语言码和常量数据的十六进制编码数字组成。Intel Hex文件通常用于传输将被存于ROM或者EPROM中的程序和数据,如图19.3-1。大多数EPROM编程器或模拟器使用Intel Hex文件。

19.3.1 Hex的结构

Intel Hex由任意数量的十六进制记录组成。每个记录包含5个域,它们按以下格式排列:

  :llaaaatt[dd...]cc

  每一组字母对应一个不同的域,每一个字母对应一个十六进制编码的数字。每一个域由至少两个十六进制编码数字组成,它们构成一个字节,就像以下描述的那样:

1)   “:”: 每个Intel Hex记录都由冒号开头。

2)   “ll”:数据长度域,它代表记录当中数据字节(dd...)的数量。

3)   “aaaa ”:地址域,它代表记录当中数据的起始地址。

4)   “tt” :代表Hex记录类型的域,它可能是以下数据当中的一个:

                00 – 数据记录

                01 – 文件结束记录

                02 – 扩展段地址记录

                04 – 扩展线性地址记录

5) “dd” :数据域,它代表一个字节的数据.一个记录可以有许多数据字节。记录当中数据字节的数量必须和数据长度域(ll)中指定的数字相符。

6) “cc” :校验和域,它表示这个记录的校验和。校验和的计算是通过将记录当中所有十六进制编码数字对的值相加,以256为模进行以下补足。

19.3.2 Hex的数据记录

Intel Hex文件由任意数量以回车换行符结束的数据记录组成,数据记录(从GPIO实验的GPIO.hex提取出来,可以用NotePad++打开Hex文件)如图19.3-2。

图19.3-2 GPIO.hex记录

   从图19.3-2可以观察到GPIO.hex第一行数据记录“020000040000FA”,

  其中

  02是这个记录当中数据字节的数量。

  0000 是数据将被下载到存储器当中的地址。

  00 是记录类型(数据记录)。

  00040000是数据。

FA 是这个记录的校验和。

检验值计算方法如下:

0x01+~(0x02+0x00+0x00+0x04+0x00+0x00+0x00)=0xFA

更方便的计算方式可以使用“单片机多功能调试助手”进行计算,在【数据校验】中填入“020000040000”,点击计算,在“Intex Hex 校验和”文本框得出计算结果,如图19.3-3。

图19.3-3 快捷计算Intel Hex校验和

……………………………………………………

书籍下载地址(复制到下载工具进行下载):

http://files.cnblogs.com/wenziqi/ARMCortex-M0原理与应用实践.part1.rar

http://files.cnblogs.com/wenziqi/ARMCortex-M0原理与应用实践.part2.rar

注:书籍内容会不定期进行更新!

时间: 2024-11-08 04:41:06

Hex文件的相关文章

Intel HEX文件解析

近期有一个需求就是为Arduino开发板做一个基于蓝牙的无线烧录程序.眼下的Arduino程序都是通过USB线连接到电脑的主机上,实际的传输过程是基于USB协议的,这个过程还是比較麻烦的.由于每次的编译完以后都须要通过一个USB线来完毕传输烧录的工作,这个还是非常麻烦的. 原理解读 在Arduino中.利用USB来完毕传输烧录大概是这么一个过程. 每一个Arduino源程序.即sketch文件,经过一系列的编译处理以后.终于会形成一个Intel HEX格式的文件.这个HEX文件事实上就一个被封装

Keil提示premature end of file错误 无法生成HEX文件

今天舍友在使用Keil UV4的时候遇到一个问题:Keil提示premature end of file,无法生成hex文件. 代码是没有错误的.那么问题就出在设置上面了. 百度了一圈,发现很少人解答这个问题.所以特意把自己的经验发上来供后来人参考. 解决办法: 1. 确保已经使用管理员身份运行Keil:同时,工程保存目录尽量不要有中文(不要放在桌面). 2.  生成的文件名不要手动加上.hex后缀[这是重点]. 解决步骤:Keil里依次点击Flash - Configure Flash Too

bin文件转换为hex文件C语言实现

对于嵌入式而言,hex文件可能大家再熟悉不过了,对,我们大学时学习的51单片机编写的代码在keil上编译后就生成了hex文件.那bin文件又是什么意思呢,它又和hex文件的区别在哪?这也不是本文的重点,下面简单的描述下: 最通俗的来讲,hex是带地址的,用下载器下载时,不需要设置偏移地址,它是文件流格式的,都是标准的ASCII码.而bin文件是不带地址的,全部是二进制数据流,打住一下,其实就是我们所谓的机器代码.有兴趣的同学,可以尝试着用反汇编,得到的就是汇编代码了.我所用的开发板S3C2440

读懂 Intel Hex 文件

1.问题描述 在生成Atmega128的固件程序时,常指定格式为"intel-extended",如下: 今天要生成一版新的含Boot的程序,这就涉及到hex的拼接工作. 那首先要搞清楚的问题就是intel hex的具体格式是什么? 2. intel hex 的具体格式 Intel Hex文件是遵循Intel Hex文件格式的ASCII文本文件.在Intel Hex 文件的每一行中都包含了一个hex记录.这些记录是由一些代表机器语言代码和常量的16进制数据组成. Intel Hex文件

(转)HEX文件详解

原文来自:http://blog.csdn.net/yx_l128125/article/details/13624947 我们先来详细分析“方法一”的操作: 1.我们设置编译 程序的编译器(如图),这个设置意思是把程序下载到flash 的 0x0800 0000开头的位置,然后编译程序 2.编译完程序后,在工程目录的output文件夹中找到编译后生产的.hex文件: 用 notepad++  或者 UltraEdit 打开 程序 的.hex文件 hex文件格式: (1)以行为单位,每行以冒号开

CC2530 Hex文件解析

参考: http://blog.csdn.net/lanmanck/article/details/5099354 http://www.cnblogs.com/starspace/archive/2009/01/15/1376280.html http://techlife.blog.51cto.com/212583/95624 Intel hex文件格式说明文档:Hexfrmt.pdf Near模式 部分Hex文件如下: :020000040000FA :100000000206C10208

hex文件快速转换为bin文件

我在stm32下面做信号分析,经常要将sram里的内存信号数据转为hex,又通过hex2bin.exe这个网上现成的转换软件进行转换为bin文件,这样数据才能在PC机器上做分析.每次都要在控制台下,输入转换命令,非常麻烦.于是就想到能不能直接对hex文件进行转换. 很容易想到在文件夹选项中设置对hex文件关联的程序,但直接使用hex2bin.exe ,由于它需要输入三个参数,默认只能使用一个参数,况且hex2bin对于输入参数有些要求,如文件名的长度不能超过8.没办法,我自己再写了一个控制台程序

java 实现hex文件转换bin保存至内存中

hex 文件的格式,以文件中某一行字符串(16进制)为例: :10 0830 00 020C5D0224B3FFFFFFFFFFFFFFFFFFFF 7E 10,长度,转换成10进制,也就是16B 大小,这里是32个字符,因为16进制中,2个字符占一个字节,可以不管. 0830,地址,转换成10进制好计算,数据存入字节数组时,可以当做数组下标来使用,方便计算两个地址间的差值. 00,这里表示数据记录,还有其他类型百度便知,可以不管. 02...FF,数据部分.主要就是把这一部分转成bin文件.

PICKIT 3 烧录hex文件

软件版本:MPLAB 4.15 烧录工具:PICKIT 3.0 实现:使用PICKIT 3.0 给目标芯片供电并烧录hex文件 1.打开软件MPLAB IPE v4.15,连接PICKIT 3.0 和目标硬件芯片,选择对应的芯片型号,点击connect按钮 若出现提示"找不到目标器件.你必须连接一个目标器件来使用PICkit 3",首先检查物理接线是否正确: 接线正确情况下,测量烧录器引脚2"目标器件的VDD"是否有电压,若没有电压,可以使用外部电源给芯片供电,也可