DSP第八章TMS320C54x混合编程合编.ppt

  1. 1、本文档共45页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * 访问在.bss块中定义的变量 采用.bss命令定义变量; 用.global命令定义为外部变量; 在变量名前加下划线; 在C程序中说明为外部变量. * 对于访问不在.bss块中定义的变量 必须定义一个指向该变量的指针,然后在C程序中间接地访问这个变量. 对于在汇编程序中用.set和.global伪指令定义的全局常数,也可以使用特殊的操作从C程序中访问它们。 在C程序中访问汇编中的常数不能直接用常数的符号名,而应在常数名之前加一个地址操作符. * 在C程序中直接嵌入汇编语句 在C程序中嵌入汇编语句是一种直接的C模块和汇编模块接口方法。采用这种方法一方面可以在C程序中实现用C语言难以实现的一些硬件控制功能。另一方面,也可以用这种方法在C程序中的关键部分用汇编语句代替C语句以优化程序。 采用这种方法的一个缺点是它比较容易破坏C环境,因为C编译器在编译嵌入了汇编语句的C程序时并不检查或分析所嵌入的汇编语句。 * 8.5 混合编程设计实例 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 第八章 TMS320C54x混合编程 * 8.1 概述 通常有以下三种软件设计方式: (1)完全用C语言开发。TI公司提供了用于C语言开发的CCS(CODE COMPOSER STUDIO)平台。该平台包括了去,从而可以在C源程序级进行开发调方式。这种方式大大提高了软件的开发速度和可读性,方便了软件的修改和移植。但是,在某些情况下,C代码的效率还是无法与手工编写的汇编代码的效率相比,如FFT编程。这是因为即使最佳的C编译器,也无法在所有的飞速下都能够最合理地利用DSP芯片所提供的各种资源。此外,用C语言实现DSP芯片的某些硬件控制也不如汇编程序方便,有些甚至无法用C语言实现。 * (2)完全用汇编语言开发,TI公司提供了用于汇编语言开发的针对TMS320C54X的汇编语言。用户可以用它进行软件开发。此种方式可以更为合理地充分利用 DSP芯片提供的硬件资源,其代码效率高,程序执行速度快。但是用DSP芯片的汇编语言编写程序是比较繁杂的。一般来说,不同公司的芯片汇编语言是不同的,即使是同一公司的芯片,由于片类型的不同(如定点和浮点),芯片的升级换代,其汇编语言也不同。因此,用汇编语言开发基于某种DSP芯片的产品周期较长,并且软件的修改和升级较困难,这些都是因为汇编语言的可读性和可移植性较差所致。 * 用C语言和汇编语言混合编程开发。为了充分利用DSP芯片的资源,更好地发挥C语言和汇编语言进行软件开发的各自的优点,可以将两者有机结合起来,兼顾两者的优点,避免其弊端。因此,在很多情况下,采用混合编程方法能更好地达到设计要求,完成设计功能。但是,采用C语言和汇编语言混合编程必须遵循一些有关的规则,否则会遇到一些意想不到的问题,给开发设计带来许多麻烦。 * 8.2 存储器模式 1.段 C54x将存储器处理为程序存储器和数据存储器两个线性块。程序存储器包含可执行代码;数据存储器主要包含外部变量、静态变量和系统堆栈。编译器的任务是产生可重定位的代码,允许链接器将代码和数据定位进合适的存储空间。C编译器对C语言编译后除了生成3个基本段,即.text、.switch、.bss外,还生成.cinit、.const、.stack、.system段。 * 初始化段包括数据表和可执行代码。C编译器创建下初始化段: ???? ◆.text段一包含所有的可执行代码和浮点常数; ???? ◆.cinit段一包含用于初始化全局变量和静态变量的表: ???? ◆.const段一包含字符常量以及用关键字const声明的全局和静态变量: ???? ◆.switch段一包含switch语句的跳转表。 ???? 未初始化段在内存(通常是RAM)中保留空间。程序在运行时用这些空间创建和保存变量。编译器创建以下未初始化段: ???? ◆.bss段一为全局变量和静态变量保存空间,在程序开始运行时,C初始化boot程序将数据从.cinlt拷贝到.bss段中; ???? ◆.stack段——为系统堆栈分配存储空间,用于将变量传递至函数以及为局部变量分配空间; ???? ◆.system段一为动态内存分配保留空间,为动态存储函数malloc、calloc和realloc分配存储空间。当然,若C程序没有用到这些函数,那么编译器就不用创建system段了。 * TI公司CCS集成开发环境下的C语言编译器将针对DSP的结构特点自动产生7个初始化段)并且对他们所在的存储空间有严格要求: .bss,

文档评论(0)

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

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

1亿VIP精品文档

相关文档