硬件基础之HEX文件格式

前言

hex文件用于烧写到单片中的一种格式。本文主要讲解其格式的意义。
本文主要参考资料:

格式解析

首先,我们可以用记事本打开一个hex文件。如下:
在这里插入图片描述
上图展示的是一个DSP跑马灯程序生成的HEX文件。通过观察可以发现:所有的数据都是以:开始,内容都是16进制数。其具体的格式如下所示:

012345
:数据长度偏移地址数据类型数据校验
所占字节121n1

其中,数据类型的取值含义为:

00:数据记录(Data Record)
01:文件结束(End of File Record)
02:扩展段地址记录(Extended Segment Address Record)
03:开始短地址记录(Start Segment Address Record)
04:扩展线性地址记录(Extended Linear Address Record)
05:开始线性地址记录(Start Linear Address Record)

校验方式为:

所有字节的数据和模256的余数。
也可以理解为,所有字节数据的负数和,且取低8位。
可以计算所有字节的二进制算数和,不超过256的溢出值,再用0x100减去这个算数和。

距离说明

:020000040032C8
:08000000190156C3FFFF0006C1
:048000000072887012
:20800400761BFFF0E20000BDE63006002942561676256F00761BFFF0E20000BDE630060005
...
:00000001FF

选取HEX文件的前四行和最后一行数据。先看第一行数据

:020000040032C8

其对应表格中为:

012345
:数据长度偏移地址数据类型数据校验
所占字节12121
:020000040032C8

第一部分:02。表示其数据长度为02,对应数据位0032,占用两个字节。
第二部分:0000。表示偏移地址为0000。
第三部分:04。表示数据类型为04,对应前文可知数据类型为: 扩展线性地址记录(Extended Linear Address Record)。
第四部分:数据内容为:0032。也就是扩展线性地址为0032。
第五部分:校验位:C8。其计算方法为:

0xC8=(0x0100-(0x02+0x00+0x00+0x40+0x00+0x32))&0x00FF

同样,可以如下计算:

0xC8=(-0x02-0x00-0x00-0x40-0x00-0x32)&0xFF

综上,该帧数据表示:
提供了一个基础地址为(0x000000032<<16),即基础地址为0x00320000。其后的数据存放位置以该地址为基准地址。

接着,我们分析第二帧数据:

:08000000190156C3FFFF0006C1

其对应表格中为:

012345
:数据长度偏移地址数据类型数据校验
所占字节12181
:08000000190156C3FFFF0006C1

该帧数据的数据类型为:00,也就是此帧是烧写到Flash中的数据,其数据长度为08,具体内容为:190156C3FFFF0006。其烧写的地址为:基准地址+偏移地址——0x00320000+0x0000=0x320000。

同样的,下一帧数据位:

:048000000072887012

代表的是将数据00728870写入到0x00320000+0x8000=0x328000位置中。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作为 ChitGPT AI,我的认知能力主要是建立在自然语言处理与机器学习技术上的。对于您提出的问题,我们需要先了解一些基础知识: Arduino 是以 ATmega 系列微控制器为核心的开源电子原型平台,其编程语言基于 C 和 C++,可以快速地制作电子原型。Arduino IDE(集成开发环境)是一个用于编写和上传代码到 Arduino 板的软件。而 HEX 文件是一种可执行文件,其中包含处理器的二进制机器代码,可以直接写入到微控制器中,从而实现对设备的控制。 而 AT90USB1286 是 Atmel 公司推出的高性能 8 位 AVR 微控制器,配备128KB Flash 存储器、4KB EEPROM 存储器、8KB SRAM 存储器,支持 USB 2.0、SPI、TWI 等多种通讯协议,广泛应用于各种嵌入式设备中。 回到您的问题,如果有arduino编译的hex文件,可以通过以下步骤直接烧录到 AT90USB1286 中: 1. 确认 AT90USB1286 开发板的硬件接口,包括 JTAG、ISP、PDI 等。选择一种可用的编程方式,并连接编程器到 AT90USB1286 开发板上。 2. 打开 Arduino IDE,并选择 AT90USB1286 开发板的型号。 3. 将 HEX 文件导入 Arduino IDE,打开“文件”->“将 sketch 或库导出为 HEX 文件”。 4. 将 HEX 文件上传到 AT90USB1286 开发板。具体步骤可以参考编程器的厂家提供的使用手册或者开发板的用户手册,通常需要使用编程器提供的命令行或者 GUI 工具进行操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值