Hex文件介绍及制作

一、文件格式介绍

Hex文件是一种十六进制文件格式,可由notpad++打开或者HexView app打开进行查看数据,以下以Notpad++打开为例

数据格式

:llaaaatt[dd...dd]cc

其中:

:”:记录开始标志。
ll”:长度字段,表示后面数据字段的长度(以字节为单位)。
aaaa”:地址字段,表示数据在内存中的地址(以字节为单位)。
tt”:类型字段,表示记录的类型。不同的类型对应不同的数据含义。
dd…dd”:数据字段,表示实际的数据,长度由长度字段指定。
cc”:校验和字段,用于检测数据的正确性。

Hex文件例子

在这里插入图片描述
:020000040127D2

长度字段为 02 字节,表示后面的数据长度为2个字节。(即0127 为2个字节)
地址字段为 0000,表示起始地址为0。
类型字段为 04,表示这是扩展线性地址记录。
数据字段为 0127,表示高位地址(扩展线性地址的值)。
校验和字段为 D2

:20FF000000000001010200000025FF000A01C6CDBEFA5C75151A99EF969C96FE0D2CE1D922
长度字段为 20 字节,表示后面的数据长度为32个字节。
地址字段为 FF00,表示起始地址为0xFF00。
类型字段为 00,表示这是数据记录。
数据字段包含32个字节,00000001010200000025FF000A01C6CDBEFA5C75151A99EF969C96FE0D2CE1D9
校验和字段22

如果校验和错误在notpad++里会显示飘红
在这里插入图片描述
:00000001FF

长度字段为 00,表示没有数据字段。
地址字段为 0000,没有实际意义。
类型字段为 01,表示文件结束。
校验和字段为 FF
文件结束这一行字段没有实际意义,但是不可少,目前我见过的Hex文件,文件结束字段都如上

常见类型字段

地址类型记录详解

  • 00(数据记录):包含实际的数据。数据的起始地址由地址字段表示。

例如::10 0000 00 0102030405060708090A0B0C0D0E0F10 62

  • 01(文件结束记录):表示文件的结束。通常出现在文件的最后一条记录。

例如::00 0000 01 FF

  • 02(扩展段地址记录):指定后续数据记录的起始地址向左移4位

例如::02 0000 04 0102 F7

  • 04(扩展线性地址记录):指定后续数据记录的起始地址的高16位。

例如::04 0000 00 0127 D2

  • 05(起始线性地址记录):指定程序的起始执行地址

例如::04 0000 05 0102 0000 F4

二、CRC校验计算

eg.地址文件CRC计算

:020000040127D2

在这里插入图片描述

:020000040127D2
除了CRC校验值,其他数据都要参与计算。如上:通过计算020000040127 得出0xD2值
计算公式:即将每个byte的值相加对0x100求余得X(或者"与0xFF"),0x100减去X得到CRC值
计算方式:
step1:0x02+0x00+0x00+0x04+0x01+0x01+0x27=0x2E
step2:0x2E&0xFF=0x2E(或者0x2E%0x100=2E)
step3:0x100-0x2E=0xD2

:0200000400FFFB

在这里插入图片描述
通过计算0200000400FF 得出0xFB值
step1:0x02+0x00+0x00+0x00+0x04+0x00+0xFF=0x105
step2:0x2E&0xFF=0x5
step3:0x100-0x5=0xFB

eg.数据文件计算

在这里插入图片描述
step1:0x20+0x00+0x20+0x00+0x5E+0xED+0x45+0xEC+0x01+0xAA+0xFF+0xFF+0x01+0x02+0x00+0x20+0x00+0x25+0xFF+0xE0+0x01+0x27+0xF8+0xC0+0xFF+0xFF+0xFF+0xFF+0xFF+0xFF+0xFF+0xFF+0xFF+0xFF+0xFF+0xFF=0x1560(我用ChatGPT3.5给我算,气死我了,一直算不对,还是得用计算器算,可以用电脑自带的计算器程序员模式计算)
step2:0x1560&0xFF=0x60
step3:0x100-0x60=0xA0

三、生成hex文件

用Excel生成

在这里插入图片描述

C列和D列输入对应数据,F列计算出CRC值,将完成数据计算结果写入E列中
在这里插入图片描述

有飘红的行,将CRC值手动填充成2位,第一位添0
在这里插入图片描述

ps:用excel表格处理少量数据还行,大量数据就不太方便了。使用excel这个需要手动处理的部分太多了(小尝分享~)

  • 21
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值