第15章 DSP的C语言编程.pdf
《第15章 DSP的C语言编程.pdf》由会员分享,可在线阅读,更多相关《第15章 DSP的C语言编程.pdf(49页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第1 5 章D S P 的C 语言编程1 5.1 D S P C 语言简介第1 5 章D S P 的C 语言编程1 5.1 D S P C 语言简介DSP生产厂商及第三方为生产厂商及第三方为DSP软件开发提供了软件开发提供了C编译器,使得利用高级语言实现编译器,使得利用高级语言实现DSP程序的开发成为可能。在程序的开发成为可能。在TI公司的公司的DSP软件开发平台软件开发平台CCS中,又提供了中,又提供了优化的优化的C编译器编译器,可以对,可以对C语言程序进行优化编译,提高程序效率,目前语言程序进行优化编译,提高程序效率,目前在某些应用中在某些应用中C语言优化编译的结果可以达到手工编写的汇编语
2、言效率的语言优化编译的结果可以达到手工编写的汇编语言效率的90%以上以上。DSP生产厂商和相关公司也在不断对生产厂商和相关公司也在不断对C优化编译器进行改进设计,相信日后优化编译器进行改进设计,相信日后C语言程序优化编译的效果会有进一步的改善。语言程序优化编译的效果会有进一步的改善。TMS320C2000系列提供有优化的系列提供有优化的C编译器,它支持编译器,它支持ANSI(American National Standards Institute,美国国家标准委员会)开发的,美国国家标准委员会)开发的C语言标准。该语言标准。该C语言标准是使用最广泛的语言标准是使用最广泛的C语言标准,语言标准
3、,ANSI标准具有一些受目标处理器、运行期环境或主机环境影响的标准具有一些受目标处理器、运行期环境或主机环境影响的C语言特性,从有效性或实现上的考虑,这些特征在各种标准的语言特性,从有效性或实现上的考虑,这些特征在各种标准的C编译器之间可能有不同。编译器之间可能有不同。1 5.2 D S P C 语言特性1 5.2.1 T MS 3 2 0 C 2 0 0 0 C 语言的特征1 5.2 D S P C 语言特性1 5.2.1 T MS 3 2 0 C 2 0 0 0 C 语言的特征(1)标识符和常数所有标识符的)标识符和常数所有标识符的前前100个字符有意义个字符有意义,区分大小写区分大小写。
4、源(主机)和执行(目标)字符集为。源(主机)和执行(目标)字符集为ASCII码,码,不存在多字节字符不存在多字节字符。具有多个字符的字符常数按序列中最后一个字符来编码,例如:。具有多个字符的字符常数按序列中最后一个字符来编码,例如:abc=c(2)数据转换浮点到整数的转换)数据转换浮点到整数的转换取整数部分取整数部分。指针和整数可以自由转换。指针和整数可以自由转换。(3)表达式当两个有符号整数相除时,若其中一个为负,则其商为负,)表达式当两个有符号整数相除时,若其中一个为负,则其商为负,余数的符号与分子的符号相同余数的符号与分子的符号相同。斜杠(。斜杠(/)用来求商,百分号()用来求商,百分号
5、(%)用来求余数。例如:)用来求余数。例如:10/-3=-3,-10/3=-3,10%-3=1,-10%3=-1(4)声明)声明寄存器变量寄存器变量对所有对所有char,short,int和指针类型有效。和指针类型有效。interrupt关键字关键字仅可用于没有参量的仅可用于没有参量的void函数。(函数。(5)预处理预处理器)预处理预处理器忽略任何不支持的忽略任何不支持的#pragma伪指令伪指令。预处理器支持的伪指令包括:。预处理器支持的伪指令包括:nCODE_SECTOINnDATA_SECTIONnFUNC_EXT_CALLED1 5.2.2 T MS 3 2 0 C 2 0 0 0
6、C 语言的数据类型1 5.2.2 T MS 3 2 0 C 2 0 0 0 C 语言的数据类型注:注:在T M S 3 2 0 C 2 x/C 2 x x/C 5 xC 语言中,在T M S 3 2 0 C 2 x/C 2 x x/C 5 xC 语言中,字节长度为1 6 位字节长度为1 6 位,s i z e o f 操作符返回的对象长度是以1 6 位为字节长度的字节数。例如,s i z e o f 操作符返回的对象长度是以1 6 位为字节长度的字节数。例如s i z e o f(i n t)=1s i z e o f(i n t)=1。1 5.2.3 T MS 3 2 0 C 2 0 0 0
7、 C 语言的关键字1 5.2.3 T MS 3 2 0 C 2 0 0 0 C 语言的关键字nc o n s t(常数)c o n s t(常数)ni o p o r t(I/O 端口)i o p o r t(I/O 端口)ni n t e r r u p t(中断)i n t e r r u p t(中断)nn e a r(近)n e a r(近)nf a r(远)f a r(远)nv o l a t i l e(可变的)v o l a t i l e(可变的)1 5.2.4 寄存器变量1 5.2.4 寄存器变量TMS320C2000 C编译器在一个函数中编译器在一个函数中最多可以使用两个寄
8、存器变量最多可以使用两个寄存器变量。寄存器变量的声明必须在变量列表或函数的起始处进行寄存器变量的声明必须在变量列表或函数的起始处进行,在嵌套块中声明的寄存器变量被处理为一般的变量。编译器使用,在嵌套块中声明的寄存器变量被处理为一般的变量。编译器使用AR6和和AR7作为寄存器变量:作为寄存器变量:nAR6被赋给第一个寄存器变量被赋给第一个寄存器变量nAR7被赋给第二个寄存器变量寄存器变量的地址会被放入分配的寄存器中,这样变量的访问速度会更快。被赋给第二个寄存器变量寄存器变量的地址会被放入分配的寄存器中,这样变量的访问速度会更快。16位类型的变量位类型的变量(char、short、int和指针)都
9、可以被定义为寄存器变量。但在运行时,设置一个寄存器变量大约需要和指针)都可以被定义为寄存器变量。但在运行时,设置一个寄存器变量大约需要4条指令,为了更有效地使用这个功能,条指令,为了更有效地使用这个功能,仅当变量被访问超过仅当变量被访问超过2次时,才使用寄存器变量。次时,才使用寄存器变量。程序优化编译器也会定义寄存器变量,但使用方式不同。编译器会自己决定哪些变量作为寄存器变量,程序中声明的寄存器变量会全部被忽略。声明的格式为:程序优化编译器也会定义寄存器变量,但使用方式不同。编译器会自己决定哪些变量作为寄存器变量,程序中声明的寄存器变量会全部被忽略。声明的格式为:register type r
10、eg;1 5.2.5 p r a g ma 伪指令1 5.2.5 p r a g ma 伪指令pragma伪指令通知编译器的预处理器如何处理函数。伪指令通知编译器的预处理器如何处理函数。TMS320C2000 C编译器支持下列编译器支持下列pragma:nCODE_SECTIONnDATA_SECTIONnFUNC_EXT_CALLED1.CODE_SECTION这个伪指令在名称为这个伪指令在名称为section name的命名段中为的命名段中为symbol分配空间。语法为:分配空间。语法为:#pragma CODE_SECTION(symbol,“section name”);2.DATA_
11、SECTION这个伪指令在名称为这个伪指令在名称为section name的命名段中为的命名段中为symbol分配空间。语法为:分配空间。语法为:#pragma DATA_SECTION(symbol,“section name”);3.FUNC_EXT_CALLED当使用当使用-pm选项时,编译器将使用程序级的优化。在这个优化层次中,编译器将删除所有未被选项时,编译器将使用程序级的优化。在这个优化层次中,编译器将删除所有未被main函数直接或间接调用的函数。而用户程序里可能包含要被手工编写的汇编语言程序调用而没有被函数直接或间接调用的函数。而用户程序里可能包含要被手工编写的汇编语言程序调用而
12、没有被main函数调用的函数,这时就应该用函数调用的函数,这时就应该用FUNC_EXT_CALLED来通知编译器保留此函数和被此函数调用到的函数,这些函数将作为来通知编译器保留此函数和被此函数调用到的函数,这些函数将作为C程序的入口点程序的入口点。这个伪指令必须出现在对要保留的函数的任何声明或引用之前,其语法为:。这个伪指令必须出现在对要保留的函数的任何声明或引用之前,其语法为:#pragma FUNC_EXT_CALLED(func);1 5.2.6 a s m语句1 5.2.6 a s m语句TMS320C2000 C编译器可以在编译器输出的汇编语言程序中直接输出汇编指令或语句。利用编译器
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第15章 DSP的C语言编程 15 DSP 语言 编程
限制150内