您当前的位置:五五电子网电子知识单片机-工控设备嵌入式系统-技术嵌入式开发系统编程文件格式解析 正文
嵌入式开发系统编程文件格式解析

嵌入式开发系统编程文件格式解析

点击数:7268 次   录入时间:03-04 11:59:32   整理:http://www.55dianzi.com   嵌入式系统-技术

  摘要: 嵌入式系统编程文件格式多种多样。为方便嵌入式系统开发和深度理解各种目标系统,论文详细分析了多种主流的嵌入式可执行文件(即机器码文件)格式。比较了不同格式的异同点,并介绍了各种嵌入式文件格式的主要硬件系统及目标器件。

  1  常见文件格式解析

      虽然不同的开发集成环境和不同的硬件架构使得嵌入式设备中可执行文件的格式不尽相同,但基本上包含以下一些典型特征:

  ① 可执行文件的基本信息,如文件大小、时间、权限等。

  ② 与硬件架构相关的二进制代码和数据。

  ③ 符号表与符号重定位表。

  从文件本身所包含的信息来看,嵌入式系统可执行文件主要有:纯数据类文件,记录类文件以及描述类文件。

  1.1  纯数据文件格式纯数据文件就是指文件中不包含地址和校验信息等,只包含纯粹的用户数据。纯数据文件主要包括两种:BIN格式和HEX格式。BIN格式即二进制的文件,使用时每8位作为一个字节来用,传输BIN文件时并不进行ASCII编码。BIN文件格式是没有结束标记的。显然,BIN文件格式是除了一些压缩格式(如ZIP和RAR)之外最节省空间的格式,它主要是用来编程存储器器件的,通常会建议将EPROM数据存储为BIN格式以作为标准文件格式来下载[2].HEX格式相比BIN格式的区别就是,每个字节都转成了2个0~9和A~F之间值的ASCII码。整个文件是分行表示的,每行一般是16或32个字节,行以空格加回车表示结束。

  1.2  记录类文件格式记录类文件中所有的数据行都叫做记录,每一条记录一般都分为多个域来清晰地说明记录的类型、记录中数据的数量、数据的存储地址、数据校验信息等。而且,记录类文件一般都有关于该文件开始和结束的标记信息。各种记录类文件格式的差异就体现在不同公司定义的记录标记以及一些域格式和顺序的差别上。记录类文件常见的就是各种MCU的烧录文件。

  1.2.1  Intel HEX文件格式(.HEX)Intel HEX是一种较老的文件格式。它是用ASCII字符来表示文件中数据域的二进制数据。文件中每一行是一条HEX记录,由一个回车和一个换行结束。Intel HEX文件经常被用于将程序或数据传输存储到ROM、EPROM,大多数编程器和模拟器使用Intel HEX文件。

  记录格式如下:

  :BBAAAATTHHHH…HHHCC:--记录开始标记。

  BB--长度域,占一个字节。代表这条记录中数据的字节数,每条记录最大数据字节数是255字节,通常为32字节。长度域只计数数据域的大小。

  AAAA--地址域,占两个字节,存储方式是MSB.地址域指出这条记录的第一个数据字节的地址,随后地址逐一增加以存储下面的数据。整个文件中各记录的地址顺序是不重要的,文件中有时也会有一段空的地址。

  TT--类型域,1字节。表示该条记录的类型。

  HH--数据域,长度受到记录类型的限制。数据记录以字节为单位。

  CC--校验和,占一个字节。计算方法是将本记录中除了冒号和校验字节之外的所有字节加起来,将模除256得到的余数取补码。

  Intel HEX文件格式的6种记录说明如表1所列。

表1  Intel HEX文件格式的记录类型

1.jpg

1.2.2  Motorola S/EXORciser/EXORmacs/32位格式

Motorola公司的产品主要基于Motorola S记录格式,这种文件格式以一种可打印的格式编码程序和数据文件来实现计算机系统间的传输,可以使下载文件实现可视化编辑。S记录由特殊排列的一串ASCII字符序列组成,最大长度为78字节。一个文件内的S记录一般没有特定的顺序要求。目前主要有3种S记录文件格式:S19格式,地址域是16位,最大可写64 Kb的文件;S28格式,地址域24位,最大可写16 Mb的文件;S37格式,地址域32位,最大可写4 Gb的文件。

S记录的一般格式是:类型域--长度域--地址域--数据域--校验和。S记录的各种记录类型有不同的格式和意义,具体如表2所列。

Motorola S19(又称Motorola EXORciser)格式是以S0记录开始,数据记录都是以S1标识的2字节地址类型的记录,S9标识结束记录格式。Motorola S28(又称Motorola EXORmacs)格式是以S0记录开始,数据记录都是以S2标识的3字节地址类型的记录,S8标识结束记录格式。Motorola S37(又称Motorola 32位)格式是以S0记录开始,数据记录以S3字符标识的4字节地址类型的记录,S7标识的结束记录格式。

表2  S记录的记录类型

2.jpg

  1.2.3  TektrONix HEX/扩展的Tektronix HEX格式

  Tektronix HEX格式如下所示:

  /AAAABBEEDDDDDDDDCC

  /:记录开始标记符。

  AAAA:地址域。占两个字节,记录了第一个数据字节的地址。

  BB:长度域。占1个字节,因此每条记录的最大数据个数为255字节。

  EE:地址和长度数据的校验和域。大小为1个字节。

  DD:数据域。最大为255个数据字节,但一般记录中为32个字节。

  CC:数据的校验和域。

  文件的结束记录中包括记录开始符("/")、传输地址、数值为"00"的长度以及传输地址和长度的校验和字节。一种可选择的中断记录以2个开始符("//")为记录开始,接着是一串任意的ASCII字符串。

  扩展的Tektronix HEX相对Tektronix HEX格式具有较为灵活的记录类型和地址空间。它包括3种类型的记录:数据、符号和结束记录。数据记录中的是目标代码;符号记录中的是编程部分的信息,编程器下载时符号记录是被忽略的;结束记录包括头部、下载地址和目标代码。

  扩展的Tektronix HEX格式模型如下:

  %BBMEEAAAAADDDDDD---DCC

  %:占1个ASCII字符,标示扩展Tek HEX记录开始。

  BB:长度域。占1个字节,表示该记录中除开始标志之外的字节数。

  M:类型域,一个ASCII字符。类型域中:6代表数据记录,3代表符号记录,8代表结束记录。

  EE:地址和长度数据的校验和,大小为1个字节。

  AAAAA:地址域。地址域包括2~17个字符,第1个字符决定了地址的长度,一般为8,0代表16个字符的地址长度。地址域第1个字符之外的字符指出了数据在存储器存放的地址。

  DD:数据域。包括可执行代码,下载到存储器的数据以及传输中的描述信息。

  CC:校验和,占一个字节。校验和域对本条记录中除了"%"和校验数据本身之外的所有数据计算校验和。

  根据是否有数据和结束记录,记录中域的数量是不一样的,2种记录都有6个字符的头以及2~17个字符的地址。

  1.3  描述类文件格式

  描述类文件格式的文件信息有相对丰富的文件格式,文件不仅有关于数据的记录信息,还包含了关于目标机的一些说明信息,改变硬件结构的信息或者测试信息等。该类型的文件最常见的是用于PLD和FPGA的下载文件。

  1.3.1  JEDEC 文件

  JEDEC(Joint EleCTRon DevICe Engineering Council)标准是用于现场可编程逻辑器件的。该标准定义了在开发系统和编程器之间传输熔丝状态的数据格式。它并不涉及诸如逻辑阵列类型和输出宏单元等设备结构信息。现场可编程逻辑器件比可编程的存储器件需要更多的测试信息,所以该标准还定义了一些简单的测试格式。JEDEC格式的合法字符包括所有可打印的ASCII字符和4个控制字符,包括STX(Start of Text)、ETX(End of Text)、CR(Carriage Return)和LF(Line Feed)。一般使用BNF(BackusNaur Form,巴科斯诺尔范式)来定义JEDEC格式的语法。

  JEDEC格式的第1个域是强制的关于设备信息设计规格书,这个域没有开始标记符。在JEDEC文件中每一个域都有域识别符以指明该域的类型,每一个域都是以星号结束。JEDEC文件各种域识别符如表3所列。

  描述及定义域主要用来说明用户和厂商信息、日期和版本号等各种信息。

  N--说明域。用来在JEDEC文件传输中插入说明信息,编程器是忽略这一域的。

  D--器件域。编程器支持的器件并不是遵从这一域,而是由QF和QP域以及手动选择器件而决定。

[1] [2]  下一页


本文关键字:嵌入式开发  嵌入式系统-技术单片机-工控设备 - 嵌入式系统-技术