第5章 TMS320C54xTM_DSP应用系统的软硬件设计汇.ppt

第5章 TMS320C54xTM_DSP应用系统的软硬件设计汇.ppt

  1. 1、本文档共126页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 TMS320C54xTM_DSP应用系统的软硬件设计汇

5.4.1 汇编源文件(.asm)格式 C54x DSP汇编源文件以段(Section)为基本单元构成,一个程序文件由若干段构成,每一段由若干语句(Statement)构成。 C54x DSP的程序段分为初始化段(Initialized)和未初始化段(Uninitialized)两大类。初始化段可以是程序代码,也可以是程序中用到的常量、数据表等。初始化段就是下载程序时往程序空间写数据(代码或数据)的段。未初始化段为变量,在下载时,这些变量是没有值的,只需留出一段空间以便在运行时存放变量的值。 段的名称和属性可以由用户自定义,如果用户不定义,C54x DSP汇编器将产生三个默认的名称的段:“.text”、“.data”、“.bss”。其中,“.text”为程序代码段,“.data”为数据段,“.bss”为未初始化段。用户可以使用“.sect”和“.usect”两个汇编指示符来定义初始化段和未初始化段。使用方法如下: [ symbol ] .sect “section_name” [ symbol ] .usect “section_name”,length 5.4.2 汇编器 汇编器把汇编语言源文件(或C语言源程序编译后得到的汇编文件)汇编成COFF目标文件。汇编器可完成如下工作: (1) 处理汇编语言源文件中的源语句,生成一个可重新定位的目标文件; (2) 根据要求,产生源程序列表文件,并提供对源程序列表文件的控制; (3) 将代码分成段,并为每个目标代码段设置一个段程序计数器,并把代码和数据汇编到指定的段中,在存储器中为未初始化段留出空间; (4) 定义(.def)和引用(.ref)全局符号(global symbol),根据要求,将交叉参考列表加到源程序列表中; (5) 汇编条件段; (6) 支持宏调用,允许在程序中或在库中定义宏。 常用的汇编命令如表5.10所示。 表5.10 常用的汇编命令 表5.10 常用的汇编命令 5.4.3 COFF目标文件 C54x DSP的汇编器和链接器都会生成公共目标文件格式(COFF)的目标文件,汇编器生成的文件称为COFF的目标文件,链接器生成的文件称为COFF的执行文件。COFF目标文件格式已被广泛使用,因为它支持模块化(段)的编程,提供了有效灵活的管理代码段和目标系统存储空间的方法。 COFF文件结构如下: (1) 一个文件头 长度为22字节,包含COFF文件结构的版本号、段头的数量、创建日期、符号表起始地址和入口数量、可选文件头的长度等信息。 (2) 可选的文件头信息 由链接器生成,包含执行代码的长度(字节)和起始地址、初始化数据的长度和起始地址、未初始化段的长度、程序入口地址等信息,以便在下载时进行重定位。 (3) 各个段的头信息列表 每个段都有一个头,用于定义各段在COFF文件中的起始地址位置。段头包含段的名称、物理地址、虚拟地址、长度、原始数据长度等信息。 (4) 每个初始化段的原始数据 包含每个初始化段的原始数据,即需要写入程序存储空间的代码和初始化数据。 (5) 每个初始化段的重定位信息 汇编器自动生成每个初始化段的重定位入口信息,链接时再由链接器读取该入口信息并结合用户对存储空间的分配进行重定位。 (6) 每个初始化段的行号入口 主要用于C语言程序的符号调试。因为C程序先被翻译为汇编程序,这样,汇编器就会在汇编代码前生成一个行号,并将该行号映射到C 源程序里相应的行上,便于调试程序。 (7) 一个符号表 用于存放程序中定义的符号的入口,以便调试。 (8) 一个字符串表 表中直接使用符号名称,当符号名称超过8个字符时,就在符号表中使用指针,该指针指向字符串表中对应的符号名称。 5.4.4 链接器 汇编器生成COFF目标文件后,就可以调用链接器进行链接了,链接器把COFF目标文件链接生成可执行文件(.out)(COFF目标模块)和存储器映像文件(.map),它允许用户自行配置目标系统的存储空间,也就是为程序中的各段分配存储空间。链接器能根据用户的配置,将各段重定位到指定的区域,包括各段的起始地址、符号的相对偏移等。因为汇编器并不关心用户的定义,而是直接将“.text”的起始地址设为000000h,后面接着是“.data” 和用户自定义段。如果用户不配置存储空间,链接器也将按同样的方式

文档评论(0)

liwenhua00 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档