ihex文件格式介绍

Intel HEX(ihex)是一种广泛用于微控制器和嵌入式系统编程的文件格式,主要用于存储可执行机器代码或程序数据。这种格式简单、易读,通常由十六进制编码表示二进制数据。以下是对 Intel HEX 文件格式的详细介绍。

1. 基本结构

Intel HEX 文件由多行记录组成,每行记录称为“记录行”,以 ASCII 字符表示,每一行都遵循以下格式:

:LLAAAATT[DATA]CC

:冒号 (0x3A): 每行记录的开头,表示该行为一条有效的记录。
LL (2 字节): 数据字节数(一个记录行中有效数据的字节数,范围 0~255)。
AAAA (4 字节): 数据的起始地址,表示当前记录中数据存储在目标内存的地址偏移量。
TT (2 字节): 记录类型,表示记录的用途(见记录类型说明)。
[DATA] (2×LL 字节): 数据内容,十六进制编码。
CC (2 字节): 校验和,确保数据传输的完整性。

2. 记录类型

TT 字段表示记录的类型,常见的类型如下:
值 (TT) 名称 说明
00 数据记录 (Data Record) 包含实际的数据,用于加载到内存中的目标地址。
01 文件结束记录 (EOF) 指示文件结束,没有数据,仅用于标记结束。
02 扩展段地址记录 提供 16 位段基址,允许表示超过 64KB 的地址空间。
04 扩展线性地址记录 提供 32 位地址的高 16 位,适用于 32 位地址空间。
05 起始线性地址记录 指示代码执行的起始地址,通常用于指定启动向量地址。

3. 详细字段解释

  1. 数据字节数(LL)

    表示当前记录中 [DATA] 的长度,单位为字节,如果没有数据,则 LL 为 00。

  2. 地址字段(AAAA)

    用于指定数据的存储地址,对于扩展段地址记录和扩展线性地址记录,这一字段通常为 0000,地址信息通过扩展记录提供。

  3. 校验和(CC)

校验和通过以下公式计算:

1. 计算从 LL 到 [DATA] 字段所有字节的和;
2. 取此和的最低字节(低 8 位);
3. 用 0x100 减去上述结果的低字节,即:
校验和=0x100−((LL+AAAA+TT+DATA 字节总和) & 0xff)

接收方会验证校验和是否正确,确保数据未损坏。

4. 举例说明

以下是一个典型的 Intel HEX 文件示例:

:10000000214601360121470136007EFE09D2190140
:00000001FF

解析第一行:
:10010000214601360121470136007EFE09D2190140
:(冒号): 开头符号。
10: 数据字节数(16 字节)。
0000: 起始地址 0x0000。
00: 记录类型(数据记录)。
214601360121470136007EFE09D21901: 数据内容,共16个字节数据(从左到右默认是MSB)。
40: 校验和。

解析最后一行:
:00000001FF
:(冒号): 开头符号。
00: 数据字节数(0字节)。
0000: 起始地址 0x0000。
01: 文件结束记录 (EOF) 指示文件结束。
FF: 校验和。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容