[计算机硬件及网络]DSP技术-04 电子通信08.ppt

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

TI公司推出的CCS集成开发环境集成了非集成开发环境的所有功能,并扩展了许多其他的功能。CCS在Windows操作系统下运行,用户在开发DSP应用程序时只需在窗口下拉菜单中选择相应操作即可自动执行各工具程序,极大地方便了DSP的软件设计与调试。 段是COFF文件中最重要的概念,一个段就是 最终在存储器映像中占据连续空间的一个数据块或代码块,汇编器和链接器都需要一些汇编伪指令来建立和管理各种各样的段。 COFF 目标文件中有两种基本类型的段:已初始化段和未初始化段。 分段的优点:在目标文件中将程序、数据、变量的代码分开放置,便于在链接时作为一个单独的部分分配存储器空间。由于大多数 DSP系统都有几种形式的存储器,通过对各个段重新定位,可以使目标存储器得到更为有效的利用。 COFF目标文件中至少应包含3个默认的段: .text段(文本段):包含可执行程序代码 .data段(数据段):包含已初始化的数据 .bss段(保留空间段):为未初始化的数据预留空间 未初始化段主要用来在存储器中保留一定空间,通常将它们定位到RAM中。这些段在目标文件中没有实际内容,只是保留空间。程序可以在运行时利用这些空间建立和存储变量。未初始化段通过使用2个汇编伪指令建立的: .bss 未初始化段 .usect 未初始化自定义段 已初始化段中包含可执行程序代码或已初始化的数据。这些段的内容存储在目标文件中,加载程序时再放到TMS320C54x存储器中。三个用于建立已初始化段的伪指令为: .text 已初始化程序正文段 .data 已初始化程序数据段 .sect 已初始化自定义段 命名段就是程序员自己定义的段,它与缺省的.text、.data和.bss段一样使用,但与缺省段分开汇编。 .Data段不同的存储器中,将未初始化的变量汇编到与.bss段不同的存储器中。产生命名段的伪指令为: 符号 .usect “段名”,字数 .sect “段名”[,段起点] 子段(Subsections)是大段中的小段。链接器可以像处理段一样处理子段。采用子段可以使存储器图更加紧密。子段的命名句法为: 基段名:子段名 子段也有两种,用.sect命令建立的是已初始化段,用.usect命令建立的是未初始化段。 3. 链接器对段的处理 链接器对段的处理有两个功能。首先,它将汇编器产生的COFF目标文件(.obj文件)中的各种段作为输入段,当有多个文件进行链接时,它将输入段组合起来,在可执行的COFF输出模块中建立各个输出段。其次,链接器为输出段配置存储器绝对地址。 链接器通过两个链接命令完成上述功能,即: MEMORY 命令——定义目标系统的存储器配置图,包括对存储器各部分的命名,以及规定它们的起始地址和长度。 SECTIONS命令——告诉链接器如何将输入段组合成输出段,以及在存储器何处存放输出段。子段可以更精确地编排段,可用链接器SECTIONS命令指定子段。 4.链接器对程序的重新定位 1)链接时重新定位 汇编器处理每个段都是从地址0开始,所以链接时需要对各段重新定位: 将各个段定位到存储器中,每个段都从合适的地址开始。 将符号(标号)值调整到相对于新的段地址的数值。 调整对重新定位后符号的引用。 2)运行时重新定位 将代码装入存储器的一个地方,而运行在另一个地方时,例如一些关键的执行代码必须装入系统的ROM中,但希望在较快的RAM中运行。 链接器提供了一个简单的处理该问题的方法。利用SECTIONS命令选项让链接器定位两次。第一次使用装入关键字设置装入地址,再用运行关键字设置运行地址。 5.程序装入 有几种方式可以将程序装入,具体采样哪种方式取决于执行环境。 采用调试工具,如硬件在线仿真器和CCS集成开发环境,它们都具有内部装入器,调用装入器的LOAD命令即可将可执行程序复制到目标系统的存储器中。 采用Hex转换工具将代码固化在片外存储器中,例如Hex500将可执行的COFF目标模块(.out文件)转换成几种其他目标格式文件,然后将转换后的文件用编程器将代码写入EPROM/Flash。 COFF文件中有一个符号表,用于存储程序中有关的符号信息。链接器对符号重新定位时使用该符号表,调试工具也使用该表来提供符号调试。 外部符号指在一个模块中定义、又可在另一个模块中使用的符号。可使用.def、.ref或.global汇编伪指令将符号定义为外部符号。 为便于链接器

文档评论(0)

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

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

1亿VIP精品文档

相关文档