分享
 
 
 

[翻译]什么是Intel HEX文件格式?

王朝other·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

http://www.netpu.net

网普科技版权所有,转载请注明作者和出处并保持文章原貌

(网普科技优质廉价美国主机、美国LINUX虚拟主机服务)

原文地址

http://bbs.netpu.net/viewthread.php?tid=1690

说明:

以前做格式转换的时候翻译的一篇文章。那时候对这些东西了解不够深入,所以翻译的不好。大概3、4年没有接触这方面的信息,所以即便有错误,现在也无法修正了。整理电脑的时候无意中看到,贴出来,但愿不会遭到嘲笑。欢迎批评指正。

问题:

什么是Intel HEX文件格式?

回答:

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

记录格式

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

:llaaaatt[dd...]cc

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

: 每个Intel HEX记录都由冒号开头.

ll 是数据长度域,它代表记录当中数据字节(dd)的数量.

aaaa 是地址域,它代表记录当中数据的起始地址.

tt 是代表HEX记录类型的域,它可能是以下数据当中的一个:

00 – 数据记录

01 – 文件结束记录

02 – 扩展段地址记录

04 – 扩展线性地址记录

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

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

数据记录

Intel HEX文件由任意数量以回车换行符结束的数据记录组成.数据记录外观如下:

:10246200464C5549442050524F46494C4500464C33

其中:

10 是这个记录当中数据字节的数量.

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

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

464C…464C是数据.

33 是这个记录的校验和.

扩展线性地址记录(HEX386)

扩展线性地址记录也叫作32位地址记录或HEX386记录.这些记录包含数据地址的高16位.扩展线性地址记录总是有两个数据字节,外观如下:

:02000004FFFFFC

其中:

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

0000 是地址域,对于扩展线性地址记录,这个域总是0000.

04 是记录类型 04(扩展线性地址记录)

FFFF 是地址的高16位.

FC 是这个记录的校验和,计算方法如下:

01h + NOT(02h + 00h + 00h + 04h + FFh + FFh).

当一个扩展线性地址记录被读取,存储于数据域的扩展线性地址被保存,它被应用于从Intel HEX文件读取来的随后的记录.线性地址保持有效,直到它被另外一个扩展地址记录所改变.

通过把记录当中的地址域与被移位的来自扩展线性地址记录的地址数据相加获得数据记录的绝对存储器地址.

以下的例子演示了这个过程..

来自数据记录地址域的地址 2462

扩展线性地址记录的数据域 + FFFF

------------

绝对存储器地址 FFFF2462

扩展段地址记录(HEX86)

扩展段地址记录也叫HEX86记录,它包括4-19位数据地址段.扩展段地址记录总是有两个数据字节,外观如下:

:020000021200EA

其中:

02 是记录当中数据字节的数量.

0000 是地址域.对于扩展段地址记录,这个域总是0000.

02 是记录类型 02(扩展段地址记录)

1200 是地址段.

EA 是这个记录的校验和,计算方法如下:

01h + NOT(02h + 00h + 00h + 02h + 12h + 00h).

当一个扩展段地址记录被读取,存储于数据域的扩展段地址被保存,它被应用于从Intel HEX文件读取来的随后的记录.段地址保持有效,直到它被另外一个扩展地址记录所改变.

通过把记录当中的地址域与被移位的来自扩展段地址记录的地址数据相加获得数据记录的绝对存储器地址.

以下的例子演示了这个过程..

来自数据记录地址域的地址 2462

扩展段地址记录数据域 + 1200

---------

绝对存储器地址 00014462

文件结束(EOF)记录

Intel HEX文件必须以文件结束(EOF)记录结束.这个记录的记录类型域的值必须是01.EOF记录外观总是如下:

:00000001FF

其中:

00 是记录当中数据字节的数量.

0000 是数据被下载到存储器当中的地址.在文件结束记录当中地址是没有意义被忽略的.0000h是典型的地址.

01 是记录类型 01(文件结束记录)

FF 是这个记录的校验和,计算方法如下:

01h + NOT(00h + 00h + 00h + 01h).

Intel HEX文件例子:

下面是一个完整的Intel HEX文件的例子:

:10001300AC12AD13AE10AF1112002F8E0E8F0F2244

:10000300E50B250DF509E50A350CF5081200132259

:03000000020023D8

:0C002300787FE4F6D8FD7581130200031D

:10002F00EFF88DF0A4FFEDC5F0CEA42EFEEC88F016

:04003F00A42EFE22CB

:00000001FF

总结

如果您有问题,请与tech[AT]netpu.net联系。{ 请将[AT]替换成@ }

http://www.netpu.net

网普科技版权所有,转载请注明作者和出处并保持文章原貌

(网普科技优质廉价美国主机、美国LINUX虚拟主机服务)

附:英文原文

QUESTION

What is the Intel HEX file format?

ANSWER

The Intel HEX file is an ASCII text file with lines of text that follow the

Intel HEX file format. Each line in an Intel HEX file contains one HEX record.

These records are made up of hexadecimal numbers that represent machine

language code and/or constant data. Intel HEX files are often used to transfer

the program and data that would be stored in a ROM or EPROM. Most EPROM

programmers or emulators can use Intel HEX files.

Record Format

An Intel HEX file is composed of any number of HEX records. Each record is made

up of five fields that are arranged in the following format:

:llaaaatt[dd...]cc

Each group of letters corresponds to a different field, and each letter

represents a single hexadecimal digit. Each field is composed of at least two

hexadecimal digits-which make up a byte-as described below:

: is the colon that starts every Intel HEX record.

ll is the record-length field that represents the number of data bytes (dd) in

the record.

aaaa is the address field that represents the starting address for subsequent

data in the record.

tt is the field that represents the HEX record type, which may be one of the

following:

00 - data record

01 - end-of-file record

02 - extended segment address record

04 - extended linear address record

dd is a data field that represents one byte of data. A record may have multiple

data bytes. The number of data bytes in the record must match the number

specified by the ll field.

cc is the checksum field that represents the checksum of the record. The

checksum is calculated by summing the values of all hexadecimal digit pairs in

the record modulo 256 and taking the two's complement.

Data Records

The Intel HEX file is made up of any number of data records that are terminated

with a carriage return and a linefeed. Data records appear as follows:

:10246200464C5549442050524F46494C4500464C33

where:

10 is the number of data bytes in the record.

2462 is the address where the data are to be located in memory.

00 is the record type 00 (a data record).

464C...464C is the data.

33 is the checksum of the record.

Extended Linear Address Records (HEX386)

Extended linear address records are also known as 32-bit address records and

HEX386 records. These records contain the upper 16 bits (bits 16-31) of the

data address. The extended linear address record always has two data bytes and

appears as follows:

:02000004FFFFFC

where:

02 is the number of data bytes in the record.

0000 is the address field. For the extended linear address record, this field

is always 0000.

04 is the record type 04 (an extended linear address record).

FFFF is the upper 16 bits of the address.

FC is the checksum of the record and is calculated as

01h + NOT(02h + 00h + 00h + 04h + FFh + FFh).

When an extended linear address record is read, the extended linear address

stored in the data field is saved and is applied to subsequent records read

from the Intel HEX file. The linear address remains effective until changed by

another extended address record.

The absolute-memory address of a data record is obtained by adding the address

field in the record to the shifted address data from the extended linear

address record. The following example illustrates this process..

Address from the data record's address field 2462

Extended linear address record data field FFFF

--------

Absolute-memory address FFFF2462

Extended Segment Address Records (HEX86)

Extended segment address records-also known as HEX86 records-contain bits 4-19

of the data address segment. The extended segment address record always has two

data bytes and appears as follows:

:020000021200EA

where:

02 is the number of data bytes in the record.

0000 is the address field. For the extended segment address record, this field

is always 0000.

02 is the record type 02 (an extended segment address record).

1200 is the segment of the address.

EA is the checksum of the record and is calculated as

01h + NOT(02h + 00h + 00h + 02h + 12h + 00h).

When an extended segment address record is read, the extended segment address

stored in the data field is saved and is applied to subsequent records read

from the Intel HEX file. The segment address remains effective until changed by

another extended address record.

The absolute-memory address of a data record is obtained by adding the address

field in the record to the shifted-address data from the extended segment

address record. The following example illustrates this process.

Address from the data record's address field 2462

Extended segment address record data field 1200

--------

Absolute memory address 00014462

End-of-File (EOF) Records

An Intel HEX file must end with an end-of-file (EOF) record. This record must

have the value 01 in the record type field. An EOF record always appears as

follows:

:00000001FF

where:

00 is the number of data bytes in the record.

0000 is the address where the data are to be located in memory. The address in

end-of-file records is meaningless and is ignored. An address of 0000h is

typical.

01 is the record type 01 (an end-of-file record).

FF is the checksum of the record and is calculated as

01h + NOT(00h + 00h + 00h + 01h).

Example Intel HEX File

Following is an example of a complete Intel HEX file:

:10001300AC12AD13AE10AF1112002F8E0E8F0F2244

:10000300E50B250DF509E50A350CF5081200132259

:03000000020023D8

:0C002300787FE4F6D8FD7581130200031D

:10002F00EFF88DF0A4FFEDC5F0CEA42EFEEC88F016

:04003F00A42EFE22CB

:00000001FF

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有