Intel HEX file结构

https://en.wikipedia.org/wiki/Intel_HEX

1, Intel Hex每行的组成

开始标志+Byte数+地址+数据类型+数据+Checksum

2, 开始标志

冒号:,ASCII码 0x3A

3, Byte数量

1 Byte,实际有效数据的个数,即数据段的字节数。从1开始计数。

4, 地址

2 Bytes,指示接下来的数据段数据存储的偏移地址。

为什么是偏移地址呢?因为该地址段长度只有2 Bytes,假如存储区大小超过64KB,如果采用绝对地址,将有部分空间无法访问。

5, 数据类型

简单解释:

(1) 00 :16位寻址空间的数据数据;

(2) 01:文件结束。此时数据长度应标记为00。

(3) 02:扩展段地址。2 Bytes。

为了访问 1MB 的空间,需要的地址长度为 220,而“开始地址”段只有2 Bytes,能访问的空间只有 (1~216)。为此,只需增加一个地址定义,协定该地址里面的值应该先乘以16再使用,如此,该地址能访问的空间即为:216 ~ (216 x 24 = 220)。

当为此数据类型时,地址段的值应被忽略(通常标为0x00)。

(4) 03:RSVP

(5) 04:扩展线性地址。数据长度 2 Bytes。

a) 为访问 4GB 地址而定义。4G = 232。该段表示高16位。

b) 低16位由接下来的00数据类型定义。假如接下来没有00类型数据,默认高16位地址为0x0000。

c) 该高位地址保持到下一个04类型数据为止。

( 6) 05:RSVP

6, 数据

7, checksum

除开开始标志和Checksum本身的所有数据异或结果的补码。

时间: 2025-01-15 00:40:18

Intel HEX file结构的相关文章

Intel HEX文件解析

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

file结构体中private_data指针的疑惑【转】

本文转载自:http://www.cnblogs.com/pengdonglin137/p/3328984.html hi all and barry, 最近在学习字符设备驱动,不太明白private_data在字符驱动中的作用,我们在 驱动中添加一个设备结构体,然后定义了这个结构体的全局指针变量,接着我们就能在 驱动程序中使用这个指针了.我看到很多驱动程序中都把结构体指针付给private_data, 然后对private_data操作. 为什么要使用private_data,难道仅仅是避免使

FILE结构体

FILE结构体用于文件操作,定义在C语言的stdio.h头文件中 我们通常所写的FILE *fp; 定义了一个指向该结构体的指针,通过fopen()返回一个指向要打开(或写入.创建)文件的指针 结构体中的成员_file实际上是一个描述符,用于进入打开文件表索引的指针 下图是我在VS2013中截的图 #ifndef _FILE_DEFINEDstruct _iobuf { char *_ptr;      //文件输入的下一个位置 int _cnt;        //当前缓冲区的相对位置 cha

Linux--struct file结构体

struct file(file结构体): struct file结构体定义在include/linux/fs.h中定义.文件结构体代表一个打开的文件,系统中的每个打开的文件在内核空间都有一个关联的 struct file. 它由内核在打开文件时创建,并传递给在文件上进行操作的任何函数.在文件的所有实例都关闭后,内核释放这个数据结构.在内核创建和驱动源码中, struct file的指针通常被命名为file或filp.其有两个非常重要的字段:文件描述符和缓冲区.  文件描述符fd: fd只是一个

FILE 结构体的定义,inode ,软链接和硬链接的理解

一.FILE结构体: C将每个文件简单地作为顺序字节流.每个文件用文件结束符结束,或者在特定字节数的地方结束,这个特定的字节数可以存储在系统维护的管理数据结构中.当打开文件时,就建立了和文件的关系. 在开始执行程序的时候,将自动打开3个文件和相关的流:标准输入流.标准输出流和标准错误.流提供了文件和程序的通信通道.例如,标准输入流使得程序可以从键盘读取数据,而标准输出流使得程序可以在屏幕上输出数据.打开一个文件将返回指向FILE结构(在stdio.h中定义)的指针,它包含用于处理文件的信息,也就

Linux struct file 结构

struct file结构体定义在/linux/include/linux/fs.h(Linux 2.6.11内核)中,其原型是:struct file {        /*         * fu_list becomes invalid after file_free is called and queued via         * fu_rcuhead for RCU freeing         */        union {                struct l

file 结构体

FILE结构体 VC6.0中: #ifndef _FILE_DEFINED struct _iobuf { char *_ptr; //文件输入的下一个位置 int _cnt; //当前缓冲区的相对位置 char *_base; //指基础位置(即是文件的其始位置) int _flag; //文件标志 int _file; //文件的有效性验证             这个文件记录可以在FCB表中找到 int _charbuf; //检查缓冲区状况,如果无缓冲区则不读取 int _bufsiz;

FILE 结构体及缓冲区

FILE:为C语言中包含在stdio.h中的对文件进行操作的一个结构体,该结构体包含有文件名.文件状态和文件当前位置等信息. 不同的编译器stdio头文件对FILE的定义略有差异,标准C中如下定义: struct _iobuf {     char *_ptr; //下一个要被读取的字符的地址     int   _cnt; //剩余的字符,如果是输入缓冲区,那么就表示缓冲区中还有多少字符未被读取     char *_base;//缓冲区基地址     int   _flag;//读写状态标志

读懂 Intel Hex 文件

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