0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Hex文件内容详细解析

汽车ECU开发 来源:电控技术大师 2023-01-06 10:43 次阅读

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

22180588-8d39-11ed-bfe3-dac502259ad0.png221e3a3e-8d39-11ed-bfe3-dac502259ad0.png2228e6e6-8d39-11ed-bfe3-dac502259ad0.jpg

#HEX记录格式

Intel HEX由任意数量的十六进制记录组成。每个记录包含5个域, 它们按以下格式排列[:LLAAAATT[DD…]CC]。每一组字母对应一个不同的域, 每一个字母对应一个十六进制编码的数字。每一个域由至少两个十六进制编码数字组成, 它们构成一个字节。

详细解释如下:

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

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

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

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

00– 数据记录

01– 文件结束记录

02– 扩展段地址记录

04– 扩展线性地址记录

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

CC是校验和域,它表示这个记录的校验和。校验和的计算是通过将记录当中所有十六进制编码数字对的值相加,以256为模进行以下补足。也就是说LLAAAATT[DD…]CC一共的校验和永远为0。

#数据记录格式

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

数据记录外观如下:

[:10246200464C5549442050524F46494C4500464C33]

其中:

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

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

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

464C…464C是数据。

33是这个记录的校验和的补足码。

#扩展线性地址记录(HEX386)格式

扩展线性地址记录也叫作32位地址记录或HEX386记录。这些记录包含数据地址的高16位。扩展线性地址记录总是有两个数据字节。

外观如下:

[:02000004FFFFFC]

其中:

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

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

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

FFFF是地址的高16位。

FC是这个记录的校验和的补足码。

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

通过把记录当中的地址域与被移位(16位)的来自扩展线性地址记录的地址数据相加获得数据记录的绝对存储器地址。以下的例子演示了这个过程:

来自数据记录地址域的地址 2462 扩展线性地址记录的数据域*10000H + FFFF0000 --------------------- 绝对存储器地址 FFFF2462

#扩展段地址记录(HEX86)

扩展段地址记录也叫HEX86记录,它包括4-19位数据地址段。扩展段地址记录总是有两个数据字节。

外观如下:

[:020000021200EA]

其中:

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

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

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

1200是地址段。

EA是这个记录的校验和的补足码。

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

通过把记录当中的地址域与被移位(4位)的来自扩展段地址记录的地址数据相加获得数据记录的绝对存储器地址。以下的例子演示了这个过程:来自数据记录地址域的地址 2462

扩展段地址记录数据域*10H + 12000 ----------------- 绝对存储器地址 00014462

#文件结束(EOF)记录。

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

[:00000001FF]

其中:

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

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

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

FF是这个记录的校验和的补足码。

#Intel HEX文件例子

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

:10001300AC12AD13AE10AF1112002F8E0E8F0F2244
:10000300E50B250DF509E50A350CF5081200132259
:03000000020023D8
:0C002300787FE4F6D8FD7581130200031D
:10002F00EFF88DF0A4FFEDC5F0CEA42EFEEC88F016
:04003F00A42EFE22CB
:00000001FF

看了这个例子,我自己也打开了之前写的51单片机的hex文件:

:2000000002000E75210675225B75230200267B007C00900090758140758901758CF1758A45
:2000200028D28C75A882758CF1758A280BBBFA157B00EC75F00A8485F020F5210CBC64027A
:200040007C00120051C0E0C0D0120051D0D0D0E032E52193F580D2A2C2A27580FED2A3C29C
:20006000A3120087E52093F580D2A2C2A27580FDD2A3C2A3120087227D327E287FF81151AA
:1A008000DFFEDEF8DDF4227E047FF8DFFEDEFA223F065B4F666D7D077F6FBC
:00000001FF

#英文原文

QUESTION:WhatistheIntelHEXfileformat?
ANSWER:
8.1TheIntelHEXfileisanASCIItextfilewithlinesoftextthatfollowtheIntelHEXfileformat.EachlineinanIntelHEXfilecontainsoneHEXrecord.Theserecordsaremadeupofhexadecimalnumbersthatrepresentmachinelanguagecodeand/orconstantdata.IntelHEXfilesareoftenusedtotransfertheprogramanddatathatwouldbestoredinaROMorEPROM.MostEPROMprogrammersoremulatorscanuseIntelHEXfiles.
8.2RecordFormat.
AnIntelHEXfileiscomposedofanynumberofHEXrecords.Eachrecordismadeupoffivefieldsthatarearrangedinthefollowingformat:
:LLAAAATT[DD…]CC
Eachgroupofletterscorrespondstoadifferentfield,andeachletterrepresentsasinglehexadecimaldigit.Eachfieldiscomposedofatleasttwohexadecimaldigits-whichmakeupabyte-asdescribedbelow:
8.2.1:isthecolonthatstartseveryIntelHEXrecord.
8.2.2LListherecord-lengthfieldthatrepresentsthenumberofdatabytes(dd)intherecord.
8.2.3AAAAistheaddressfieldthatrepresentsthestartingaddressforsubsequentdataintherecord.
8.2.4TTisthefieldthatrepresentstheHEXrecordtype,whichmaybeoneofthefollowing:
8.2.4.100-datarecord
8.2.4.201-end-of-filerecord
8.2.4.302-extendedsegmentaddressrecord
8.2.4.404-extendedlinearaddressrecord
8.2.5DDisadatafieldthatrepresentsonebyteofdata.Arecordmayhavemultipledatabytes.Thenumberofdatabytesintherecordmustmatchthenumberspecifiedbythellfield.
8.2.6CCisthechecksumfieldthatrepresentsthechecksumoftherecord.Thechecksumiscalculatedbysummingthevaluesofallhexadecimaldigitpairsintherecordmodulo256andtakingthetwo'scomplement.
8.3DataRecords.
TheIntelHEXfileismadeupofanynumberofdatarecordsthatareterminatedwithacarriagereturnandalinefeed.Datarecordsappearasfollows:
:10246200464C5549442050524F46494C4500464C33
where:
8.3.110isthenumberofdatabytesintherecord.
8.3.22462istheaddresswherethedataaretobelocatedinmemory.
8.3.300istherecordtype00(adatarecord).
8.3.4464C...464Cisthedata.
8.3.533isthechecksumoftherecord.
8.4ExtendedLinearAddressRecords(HEX386).
Extendedlinearaddressrecordsarealsoknownas32-bitaddressrecordsandHEX386records.Theserecordscontaintheupper16bits(bits16-31)ofthedataaddress.Theextendedlinearaddressrecordalwayshastwodatabytesandappearsasfollows:
:02000004FFFFFC
where:
8.4.102isthenumberofdatabytesintherecord.
8.4.20000istheaddressfield.Fortheextendedlinearaddressrecord,thisfieldisalways0000.
8.4.304istherecordtype04(anextendedlinearaddressrecord).
8.4.4FFFFistheupper16bitsoftheaddress.
8.4.5FCisthechecksumoftherecordandiscalculatedas01h+NOT(02h+00h+00h+04h+FFh+FFh).
8.4.6Whenanextendedlinearaddressrecordisread,theextendedlinearaddressstoredinthedatafieldissavedandisappliedtosubsequentrecordsreadfromtheIntelHEXfile.Thelinearaddressremainseffectiveuntilchangedbyanotherextendedaddressrecord.
8.4.7Theabsolute-memoryaddressofadatarecordisobtainedbyaddingtheaddressfieldintherecordtotheshiftedaddressdatafromtheextendedlinearaddressrecord.Thefollowingexampleillustratesthisprocess..
Addressfromthedatarecord'saddressfield2462

ExtendedlinearaddressrecorddatafieldFFFF
-----------
Absolute-memoryaddressFFFF2462
8.5ExtendedSegmentAddressRecords(HEX86).
Extendedsegmentaddressrecords-alsoknownasHEX86records-containbits4-19
ofthedataaddresssegment.Theextendedsegmentaddressrecordalwayshastwo
databytesandappearsasfollows:
:020000021200EA
where:
8.5.102isthenumberofdatabytesintherecord.
8.5.20000istheaddressfield.Fortheextendedsegmentaddressrecord,thisfieldisalways0000.
8.5.302istherecordtype02(anextendedsegmentaddressrecord).
8.5.41200isthesegmentoftheaddress.
8.5.5EAisthechecksumoftherecordandiscalculatedas01h+NOT(02h+00h+00h+02h+12h+00h).
8.5.6Whenanextendedsegmentaddressrecordisread,theextendedsegmentaddressstoredinthedatafieldissavedandisappliedtosubsequentrecordsreadfromtheIntelHEXfile.Thesegmentaddressremainseffectiveuntilchangedbyanotherextendedaddressrecord.
8.5.7Theabsolute-memoryaddressofadatarecordisobtainedbyaddingtheaddressfieldintherecordtotheshifted-addressdatafromtheextendedsegmentaddressrecord.Thefollowingexampleillustratesthisprocess.
Addressfromthedatarecord'saddressfield2462
Extendedsegmentaddressrecorddatafield1200
--------
Absolutememoryaddress00014462
8.6End-of-File(EOF)Records.
AnIntelHEXfilemustendwithanend-of-file(EOF)record.Thisrecordmusthavethevalue01intherecordtypefield.AnEOFrecordalwaysappearsasfollows:
:00000001FF
where:
8.6.100isthenumberofdatabytesintherecord.
8.6.20000istheaddresswherethedataaretobelocatedinmemory.Theaddressinend-of-filerecordsismeaninglessandisignored.Anaddressof0000histypical.
8.6.301istherecordtype01(anend-of-filerecord).
8.6.4FFisthechecksumoftherecordandiscalculatedas01h+NOT(00h+00h+00h+01h).
8.7ExampleIntelHEXFile.
FollowingisanexampleofacompleteIntelHEXfile:
:10001300AC12AD13AE10AF1112002F8E0E8F0F2244
:10000300E50B250DF509E50A350CF5081200132259
:03000000020023D8
:0C002300787FE4F6D8FD7581130200031D
:10002F00EFF88DF0A4FFEDC5F0CEA42EFEEC88F016
:04003F00A42EFE22CB
:00000001FF
审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • intel
    +关注

    关注

    19

    文章

    3480

    浏览量

    185732
  • HEX文件
    +关注

    关注

    0

    文章

    26

    浏览量

    12723
  • 文件
    +关注

    关注

    1

    文章

    561

    浏览量

    24692
  • EPROM
    +关注

    关注

    3

    文章

    123

    浏览量

    54371
  • HEX
    HEX
    +关注

    关注

    0

    文章

    37

    浏览量

    16796

原文标题:Hex文件内容详细解析

文章出处:【微信号:eng2mot,微信公众号:汽车ECU开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    使用psoc编程器写入Modus生成的Hex文件时,Hex文件解析失败的原因?

    我们正在使用 pSoC6 CY8C6137BZI-F14 做软件, 我们使用 Modus 集成开发环境。 但当我们使用 psoc 编程器写入 Modus 生成的 Hex 文件时, psoc 编程器显示以下错误: Hex
    发表于 05-21 06:57

    Hex文件格式是什么意思

    Hex文件格式解析Hex文件如果用特殊的程序来查看(一般记事本就可以实现)。打开后可发现,整个文件
    发表于 01-12 06:17

    Hex文件格式解析

    hex文件格式是可以烧写到单片机中,被单片机执行的一种文件格式,生成Hex文件的方式有很多种,可以通过不同的编译器将C程序或者汇编程序编译生
    发表于 03-02 06:34

    bin文件转换为hex文件操作步骤解析

    在做单片机开发时,用不同的下载工具,要求下载的固件格式也不一样,有的要求是HEX文件,有的则要求是BIN文件,如果只有一个BIN文件如何将它转换成H
    发表于 11-14 09:04 7.8w次阅读
    bin<b class='flag-5'>文件</b>转换为<b class='flag-5'>hex</b><b class='flag-5'>文件</b>操作步骤<b class='flag-5'>解析</b>

    单片机hex和bin文件的区别

    hex文件是可以烧写到单片机中,被单片机执行的一种文件格式,生成Hex文件的方式由很多种,可以通过不同的编译器将C程序或者汇编程序编译生成
    发表于 11-15 09:07 5131次阅读
    单片机<b class='flag-5'>hex</b>和bin<b class='flag-5'>文件</b>的区别

    stm32之.hex 文件

    的output文件夹中找到编译后生产的. hex 文件; 用 notepad++ 或者 UltraEdit 打开 程序 的.hex文件
    发表于 04-20 09:28 4125次阅读
    stm32之.<b class='flag-5'>hex</b> <b class='flag-5'>文件</b>

    如何使用FlyMcu将hex文件下载到智芯一号详细步骤教程免费下载

    本文档的主要内容详细介绍的是如何使用FlyMcu将hex文件下载到智芯一号详细步骤教程免费下载。
    发表于 07-24 17:37 2次下载
    如何使用FlyMcu将<b class='flag-5'>hex</b><b class='flag-5'>文件</b>下载到智芯一号<b class='flag-5'>详细</b>步骤教程免费下载

    使用单片机进行推箱子游戏的HEX文件资料免费下载

    本文档的主要内容详细介绍的是使用单片机进行推箱子游戏的HEX文件资料免费下载。
    发表于 05-08 08:00 11次下载
    使用单片机进行推箱子游戏的<b class='flag-5'>HEX</b><b class='flag-5'>文件</b>资料免费下载

    使用单片机控制LED灯的HEX文件免费下载

    本文档的主要内容详细介绍的是使用单片机控制LED灯的HEX文件免费下载。
    发表于 10-31 08:00 4次下载
    使用单片机控制LED灯的<b class='flag-5'>HEX</b><b class='flag-5'>文件</b>免费下载

    用于STM32hex文件合并的应用程序免费下载

    本文档的主要内容详细介绍的是用于STM32hex文件合并的应用程序免费下载。
    发表于 03-05 08:00 11次下载

    hex是如何解析的?

    具有完整的格式规范。今天和大家分享一下,hex是如何解析的。 一 hex文件解析 hex
    的头像 发表于 10-23 15:31 8821次阅读
    <b class='flag-5'>hex</b>是如何<b class='flag-5'>解析</b>的?

    单片机烧录hex文件是如何解析

    含有单片机的电子产品在量产的时候会用到.hex文件或者.bin。hex是十六进制的,包含地址信息和数据信息,而bin文件是二进制的,只有数据而不包含地址。任何
    的头像 发表于 11-07 10:33 6747次阅读
    单片机烧录<b class='flag-5'>hex</b><b class='flag-5'>文件</b>是如何<b class='flag-5'>解析</b>

    JLINK下载Hex文件详细步骤

    JLINK下载Hex文件详细步骤
    发表于 06-27 09:23 0次下载

    简述hex文件解析源码

    简述hex文件解析源码
    发表于 09-12 09:20 8次下载

    TSMaster 中 Hex 文件编辑器使用详细教程

    TSMaster软件的Hex文件编辑器提供了文件处理的功能,这一特性让使用TSMaster软件的用户可以更便捷地对Hex、bin、mot、s19和tsbinary类型的
    的头像 发表于 06-01 08:21 666次阅读
    TSMaster 中 <b class='flag-5'>Hex</b> <b class='flag-5'>文件</b>编辑器使用<b class='flag-5'>详细</b>教程