《2.DSP第5章.pptVIP

  • 1
  • 0
  • 约5.97千字
  • 约 25页
  • 2017-01-01 发布于北京
  • 举报
《2.DSP第5章

第5章 基于C语言的DSP芯片开发 5.1 引言 5.2 CCS支持的C语言 5.3 C语言程序代码的优化 5.4 小结 5.5 习题与思考题 5.1 引言 DSP芯片厂商都推出了基于高级语言的开发环境。 重点讨论在CCS环境中如何利用C语言进行DSP程序的开发。 5.2 CCS支持的C语言 C语言编译器基本上都符合ANSI C标准 ; CCS环境中集成了DSP代码的生成工具,其中包括优化的C/C++编译器、汇编器、链接器以及一系列相应的辅助工具 5.2 CCS支持的C语言 CCS的C语言程序运行环境对DSP芯片中影响运算结果的各状态比特位中进行了默认设置。 表5-1列出了C54x芯片C语言环境中各状态比特位取值。 提供了运行支持库(run time support library)文件rts.lib 5.2 CCS支持的C语言 1、变量和常数 5.2 CCS支持的C语言 局部变量和全局变量 动态存储变量和静态存储变量 自动的(auto) 静态的(static) 寄存器的(register) 外部的(extern) 5.2 CCS支持的C语言 const关键字确保变量或数组的值不会被改变 ioport是端口变量声明的关键字 使用volatile关键字可确保编译器不会对这些变量进行优化 5.2 CCS支持的C语言 2、函数 CCS中C语言程序的函数定义和声明符合ANSI C标准。 使用C语言编写DSP程序时,芯片的复位中断程序默认为c_int00,这实际上就是C/C++程序的入口位置。 c_int00并不保护任何寄存器的内容。 5.2 CCS支持的C语言 2、函数 利用interrupt关键字定义函数,可以声明该函数是一个中断函数。 中断函数的编译服从专门的寄存器保护规则和堆栈返回过程。 当C/C++代码被中断后,中断服务程序必须对该程序和其他程序的函数使用的所有寄存器进行保护。 当使用interrupt关键字后,编译器将为该中断提供寄存器保护和返回处理。 5.2 CCS支持的C语言 3、预处理 TMS320C5000的C/C++编译器支持预处理功能。 5.3 C语言程序代码的优化 为充分利用资源,需要在保证程序正确性的同时,尽可能地对程序代码进行优化。 DSP的C编译器中包含了一个优化器,可以用于C/C++程序的速度和空间优化。 在编写C/C++程序时,也有一定的优化规则。 5.3 C语言程序代码的优化 1、C语言程序代码编译分析 A)表达式分析 : 在利用C语言编写DSP程序时,会大量运用计算表达式。如果程序中需要计算整型表达式,必须注意以下几点: 算术上溢和下溢 ; 整除和取模 ; 32位表达式分析 ; C代码访问16位乘法结果的高16位 ; 5.3 C语言程序代码的优化 1、C语言程序代码编译分析 B)存储模式 : 程序存储器----主要包含可执行的程序代码 数据存储器----主要包含外部变量、静态变量和系统堆栈 系统堆栈完成存储局部变量、向函数传递参数、保护处理器状态等功能。必须放置于单一的连续存储块中,其增长方向从高地址向低地址增长。 5.3 C语言程序代码的优化 1、C语言程序代码编译分析 C)存储空间分配 : 在C语言程序中说明的每一个外部或静态变量被分配给一个唯一的连续空间。 空间的地址由链接器确定。 编译器保证这些变量的空间分配在多个字中以使每个变量按字边界对准。 5.3 C语言程序代码的优化 1、C语言程序代码编译分析 D)寄存器规则 (TMS320C2x/C5x ) 浮点C编译器和定点C编译器都定义了严格的寄存器使用规则。 C编译器使用寄存器的方法在使用和不使用优化器时是不一样的。 函数调用时保护寄存器的规则在使用和不使用优化器时是一样的。 5.3 C语言程序代码的优化 1、C语言程序代码编译分析 E)函数调用 函数调用涉及参数传递、内存使用等问题。 C编译器规定了一组严格的函数调用规则。 除特殊的运行支持函数外,任何调用C语言函数或被C语言函数调用的函数都必须遵循规则。 5.3 C语言程序代码的优化 2、C语言程序的优化方法 算法优化 : 指对程序要完成的功能合理选择算法及其实现方法。这是代码优化中最重要和最关键的一步。 5.3 C语言程序代码的优化 2、C语言程序的优化方法 编译优化 : 为了提高代码的运行速度,减少代码的占用空间,编译器可以根据程序员的要求对

文档评论(0)

1亿VIP精品文档

相关文档