建设银行临夏分行网站专门做图的网站
- 作者: 五速梦信息网
- 时间: 2026年04月20日 10:43
当前位置: 首页 > news >正文
建设银行临夏分行网站,专门做图的网站,建网站用,施工企业组织目标目录 1 什么是Intel Hex 2 Intel Hex的格式 2.1 Intel Hex的Record结构 2.1.1 “Record type记录类型”的说明 2.1.2 “Record length记录长度”的说明 2.1.3 如何计算“Checksum校验和” 2.2 Record order记录顺序 2.3 Text line terminators文本行终止符 3 Hex文件的…目录 1 什么是Intel Hex 2 Intel Hex的格式 2.1 Intel Hex的Record结构 2.1.1 “Record type记录类型”的说明 2.1.2 “Record length记录长度”的说明 2.1.3 如何计算“Checksum校验和” 2.2 Record order记录顺序 2.3 Text line terminators文本行终止符 3 Hex文件的Variants变体 结尾 优质博文推荐阅读单击下方链接即可跳转 点击返回「《Autosar从入门到精通-实战篇》总目录」 点击返回「《Autosar_BSW高阶配置》总目录」 点击返回《嵌入式硬件/软件开发刷写/烧录文件》专栏 1 什么是Intel Hex Intel Hex格式最初于1973年为Intel的Intellec Microcomputer Development Systems (MDS)设计以便从纸带上加载和执行程序。它还被用于向Intel指定memory内容以便生产ROM。1973年Intel的“软件小组”仅由Bill Byerly和Ken Burget以及作为外部顾问的Gary Kildall组成。从1975年开始该格式被MCS系列II ISIS-II系统所利用使用文件扩展名HEX。后来许多PROM和EPROM编程设备接受了这种格式。 Intel Hex文件格式是一种以ASCII文本形式传达二进制的十六进制值信息的文件格式。它通常用于对Microcontroller微控制器、EPROM和其他类型的可编程逻辑器件和硬件仿真器进行编程。在一个典型的应用程序中compiler编译器或assembler汇编器将程序的源代码例如C或汇编语言转换为machine code机器码并将其输出到HEX文件中。有些人还将其用作容纳流数据包的容器格式。由此产生的文件常用的扩展名是.HEX或.H86。然后programmer编程器读取HEX文件以将机器码写入PROM中或传输到目标系统进行加载和执行。 2 Intel Hex的格式 2.1 Intel Hex的Record结构 一个Intel Hex文件由一系列ASCII text record组成一个record的长度将小于或等于92字符。这些record从左到右有以下结构 : Byte Count Address Type Data Checksum 举例 1. Start code一个ASCII冒号“”ASCII 0x3A字符。在一条record中这个符号之前的所有字符都应该被忽略。事实上该规范的早期版本甚至要求在第一条record之前和最后一条record之后至少25个NUL字符。然而由于这是规范中鲜为人知的部分并非所有编写的软件都能正确的处理这个问题。它允许在同一文件甚至同一行中存储其他相关信息这是各种软件开发工具用来存储符号表或附加注释的设施以及使用其他字符作为Start code的第三方扩展如Keil的数字0Mostek的$或TDL的、、#、\、和。按照惯例“//”经常用于注释。这些扩展都不能包含任何“”字符作为有效负载的一部分。 2. Byte count两个十六进制数字既1个字节表示Data段中的字节数。最大字节计数为2550xFF。80x08160x10和320x20是常用的data byte数。 3. Address四个十六进制数字既2个字节表示Data段的16位起始memory地址偏移量。Data的物理地址是通过将此偏移量添加到先前建立的base address基址来计算的从而允许memory寻址超过16位地址的64千字节限制。基址默认为零可以通过各种类型的record进行更改。Base address和address offset始终表示为big endian大端值。 4. Record type参见下文的record type两个十六进制数字既1个字节00到05定义了Data段的含义。 5. Data由2n个十六进制数字表示的数据组成的序列既n个字节。某些record省略此Data段n等于零。data byte的含义和解释取决于应用程序。4-bit data必须存储在字节的下半部分或上半部分也就是说一个字节只容纳一个可寻址的数据项)。 6. Checksum两个十六进制数字既1个字节一个计算值可用于验证record是否有错误。一个record的checksum字节是checksum之前record中所有解码的字节值之和的least significant byte (LSB)的二进制补码按位取反再加1。 2.1.1 “Record type记录类型”的说明 Intel HEX有六种标准record type Hex code Record type Description Example 00 Data 数据 byte count规定了record中的data byte数量。本例有0B11个data byte。data的16位起始地址本例中从0010起始的地址和data6164647265737320676170。 :0B0010006164647265737320676170A7 01 End Of File 文件的结束 必须在Hex文件的最后一条record中准确出现一次。byte count始终为00address段为0000data段被省略。 :00000001FF 02 Extended Segment Address 扩展段地址 byte count始终为02address段被忽略通常为0000data段包含一个16位段基地址。这个地址乘以16然后加到每个后续的data record address上形成数据的起始地址。这允许寻址到一兆字节1048576字节的地址空间。 :020000021200EA 03 Start Segment Address 起始段地址 对于80x86处理器指定起始执行地址。byte count始终为04address段为0000前两个data byte为CS值后两个为IP值。执行应该从这个地址开始。 :0400000300003800C1 04 Extended Linear Address 扩展的线性地址 允许32位寻址最高可达4GiB。byte count始终为02address段被忽略通常为0000。两个data bytebig endian为所有后续的00型record指定32位绝对地址的上16位这些上地址位适用于下一个04型record。00型record的绝对地址是由最近的04型record的高16位地址位和00型record的低16位地址位组合而成。如果一个00型record前面没有任何04型record那么它的上16位地址位默认为0000。 :020000040800F2 05 Start Linear Address 起始线性地址 byte count始终为04address段为0000。四个data byte代表一个32位的地址值big-endian。在支持它的CPU的情况下这个32位地址是执行开始的地址。 :04000005000000CD2A 其他record type已被用于变体包括Wayne和Layne的06BBC/Micro:bit Educational Foundation的0A、0B、0C、0D和0E以及Digital Research的81、82、83、84、85、86、87和88。 2.1.2 “Record length记录长度”的说明 不同于Motorola S-recordS19/SREC/mot/SX文件Intel Hex文件中的record count仅用来表征Data段的长度一个字节的record count最大为255而80x08160x10和320x20是常用的data byte数。 一个record的总长度最大为521个字符 Start code为1个ASCII字符2个十六进制数字Byte count为2个十六进制数字Address为4个十六进制数字Record type为2个十六进制数字Data最大255*2个十六进制数字Checksum为2个十六进制数字。2.1.3 如何计算“Checksum校验和” 下面的record为例来介绍Checksum的计算 :208800000A3400090A34000A0A34000B0A34000C0A34000D0A34000E0A34000F0A34001004 Checksum计算过程 1.对所有Byte count Address Record type Data十六进制字节求和 20 88 00 00 0A 34 00 09 0A 34 00 0A 0A 34 00 0B 0A 34 00 0C 0A 34 00 0D 0A 34 00 0E 0A 34 00 0F 0A 34 00 10 2FC。 2.保留最后一个LSB字节即十六进制字节FC其二进制为1111 1100。
- LSB的二进制补码取反为0000 0011再加1后为0000 0100即十六进制字节04。或checksumFF - FC 1 04。 2.2 Record order记录顺序 当生成一个Hex文件时需要按照一定的record order将数据和指令写入文件中。下面是Hex文件的record order 1.扩展线性地址记录Record type 04 Extended Linear Address Record 这是Hex文件的第一条record用于设置程序的起始地址。该record的地址段必须设置为0数据段包含扩展线性地址的高16位。这个record只有一个并且是可选的。 2.扩展段地址记录Record type 02 Extended Segment Address Record 这是Hex文件的第二条record用于设置程序的起始地址。该record的地址段必须设置为0数据段包含扩展段地址的高16位。这个record只有一个并且是可选的。 3.数据记录Record type 00 Data Record 数据记录包含程序的代码和数据。每个数据记录包含一个地址和一组数据。数据记录的地址必须按照从小到大的顺序排列。 4.结束记录Record type 01 End of File Record 结束记录表示Hex文件的结束。该record的地址段必须设置为0数据段为空。 在Hex文件中扩展线性地址记录和扩展段地址记录是可选的因为它们只在程序起始地址超过16位时才需要使用。数据记录是Hex文件中最常见的Record type它包含程序的代码和数据。结束记录表示Hex文件的结束并且必须出现在Hex文件的末尾。 需要注意的是record order必须按照上述顺序进行否则程序可能无法正常运行或数据丢失。因此在生成Hex文件时必须按照规定的record order将record写入文件中以确保程序的正确性。 举例 :0200000400E01A :208800000A3400090A34000A0A34000B0A34000C0A34000D0A34000E0A34000F0A34001004 :208820000A3400110A3400120A3400130A3400140A3400150A3400160A3400170A340018A4 …… :20FFC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41 :20FFE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21 :0200000400E119 :20000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 :20002000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 …… :20FFC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41 :20FFE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21 :0200000400E218 :20000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 :20002000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 …… :20FFC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41 :20FFE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21 :0200000400E317 :20000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 :20002000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 …… :20FFC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41 :20FFE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21 :0200000400E416 …… …… :20BF600092FEE1872737CCFFFF6B82EE806CE018EDE0140E4B0115EE8834EE82EDE0143562 :20BF8000C60B874AB21BFE1B84044411EC803BC7874ABA56FE1B826C851827FF31EC851B66 :02BFA0008A0A0B :00000001FF2.3 Text line terminators文本行终止符 Intel HEX record通常由一个或多个ASCII行终止符分隔以便每条record单独显示在一个文本行上。这可以直观地分隔record来增强可读性同时也提供了record之间的填充可以用来提高机器的解析效率。但是line termination character行终止符是可选的因为“”用于检测record的开始。创建HEX record的程序通常使用符合其操作系统约定的行终止符。例如Linux程序使用一个LF换行十六进制值为0A字符来终止行而Windows程序则使用一个CR回车十六进制值为0D后面跟着一个LF。 Intel HEX由ASCII文本行组成这些文本由line feed换行符和/或carriage return回车符分隔。每个文本行都包含编码多个二进制数的十六进制字符。二进制数可以表示data、memory address或其他值具体取决于它们在行中的位置以及行的类型和长度。每个文本行称为一条record。 3 Hex文件的Variants变体 您可能会遇到以下几种类型的hex文件 Intel HEX文件这是最常见的hex文件格式由Intel公司推出用于将二进制数据转换成文本格式。这种格式的hex文件通常用于嵌入式系统的程序下载、烧录和调试。Motorola HEX文件这种格式的hex文件通常用于旧版本的嵌入式系统和一些老式的烧录器。它与Intel HEX文件格式有些不同但基本上还是将二进制数据转换为文本格式。 Motorola HEX文件的格式如下 :BBAAAATT[DDDDDDDD…]CC 其中 :冒号是记录起始的标志。 BB表示该记录中数据的长度以十六进制表示。这个长度不包括起始地址、记录类型和校验和只包括数据部分的长度。 AAAA表示数据的起始地址以十六进制表示。这个地址是一个16位地址也就是说可以表示64KB的内存。 TT表示该记录的类型以十六进制表示。记录类型有四种 00数据记录表示该记录包含数据。 01结束记录表示该文件的结束。 02扩展线性地址记录表示该记录包含一个扩展线性地址用于超过64KB的内存空间。 04扩展段地址记录表示该记录包含一个扩展段地址用于超过64KB的内存空间。 DDDDDDDD…表示该记录中的数据以十六进制表示。数据的长度由BB指定。 CC表示校验和以十六进制表示。校验和是整个记录中除了冒号以外的所有数据的累加和的反码加1。 TI-TXT文件这种格式的文件由德州仪器公司开发通常用于烧录 TI 微控制器和数字信号处理器DSP。 TI-TXT文件的格式如下 HDR length address type D0 D1 D2 … DN checksum CRLF 其中 HDR是文件头指示该行是一个数据记录。 length是数据的长度以十六进制表示。 address是数据在内存中的地址以十六进制表示。 type是数据的类型以十六进制表示。类型有以下几种 00数据记录。 01文件结束记录。 02扩展段地址记录。 03起始段地址记录。 04扩展线性地址记录。 05起始线性地址记录。 D0 D1 D2 … DN是数据以十六进制表示。 checksum是校验和以十六进制表示。校验和是数据记录中所有字节的和取反加1。 CRLF表示一个回车换行符用于分隔每一行数据记录。 S-Record文件这是一种通用的记录格式S19/SREC/mot/SX由Motorola公司推出可以用于表示不同类型的二进制数据。S-Record文件通常用于嵌入式系统的程序下载和烧录。无论是哪种类型的hex文件它们都包含了可执行程序的二进制数据和相关的元数据信息。在程序下载和烧录过程中这些文件可以帮助确保程序正确地加载到嵌入式系统中。 部分内容摘自 Intel Hex - 维基百科https://en.wikipedia.org/wiki/Intel_HEX 结尾 获取更多“汽车电子资讯”和“工具链使用” 请关注CSDN博客“汽车电子助手”做您的好助手。
相关文章
-
建设银行联号查询网站移动互联网开发的发展历史
建设银行联号查询网站移动互联网开发的发展历史
- 技术栈
- 2026年04月20日
-
建设银行境外购物网站东莞网站没计
建设银行境外购物网站东莞网站没计
- 技术栈
- 2026年04月20日
-
建设银行锦州分行网站青岛网站建设效果
建设银行锦州分行网站青岛网站建设效果
- 技术栈
- 2026年04月20日
-
建设银行普卡申请网站如何让WordPress上传媒体
建设银行普卡申请网站如何让WordPress上传媒体
- 技术栈
- 2026年04月20日
-
建设银行企业网站访问不了软文有哪些推广渠道
建设银行企业网站访问不了软文有哪些推广渠道
- 技术栈
- 2026年04月20日
-
建设银行签名通在网站哪里下载百度导航是哪个国家的
建设银行签名通在网站哪里下载百度导航是哪个国家的
- 技术栈
- 2026年04月20日
