DSP原理及应用——TMS320DM6437 课件 第4、5章 DSP集成开发环境、 TMS320DM6437的C语言程序设计与优化.pptx

DSP原理及应用——TMS320DM6437 课件 第4、5章 DSP集成开发环境、 TMS320DM6437的C语言程序设计与优化.pptx

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

DSP原理及应用

第四章:DSP集成开发环境;第四章DSP集成开发环境

;4.1DSP软件开发工具;4.1DSP软件开发工具;4.1DSP软件开发工具;4.1DSP软件开发工具;4.1DSP软件开发工具;4.1DSP软件开发工具;4.1DSP软件开发工具;4.1DSP软件开发工具;4.2CCS集成开发环境;4.2CCS集成开发环境;4.2CCS集成开发环境;4.2CCS集成开发环境;4.2CCS集成开发环境;4.2CCS集成开发环境;4.3CCS的应用;4.3CCS的应用;4.3CCS的应用;4.3CCS的应用;4.3CCS的应用;4.3CCS的应用;4.4DSP/BIOS实时操作系统;4.4DSP/BIOS实时操作系统;4.4DSP/BIOS实时操作系统;4.4DSP/BIOS实时操作系统;4.4DSP/BIOS实时操作系统;4.4DSP/BIOS实时操作系统;4.5实验和程序实例;本章小结;DSP原理及应用

;第5章TMS320DM643的C语言程序设计与优化;5.1TMS320C64x系列DSP的C/C++语言的特点;5.1TMS320C64x系列DSP的C/C++语言的特点;5.1TMS320C64x系列DSP的C/C++语言的特点;5.2TMS320C64x系列DSP的C/C++语言程序设计基础;5.2TMS320C64x系列DSP的C/C++语言程序设计基础;5.2TMS320C64x系列DSP的C/C++语言程序设计基础;5.2TMS320C64x系列DSP的C/C++语言程序设计基础;5.2TMS320C64x系列DSP的C/C++语言程序设计基础;5.2TMS320C64x系列DSP的C/C++语言程序设计基础;5.3运行时环境;5.3运行时环境;5.3运行时环境;5.3运行时环境;5.4DSP的C/C++代码优化;5.4DSP的C/C++代码优化;5.4.3.选用C编译器提供的优化选项优化

-o:使能软件流水和其他优化方法。

-pm:使能程序级优化。

-mt:使能编译器假设程序中没有数据存储混淆,可进一步优化代码。

-mg:使能分析(profile)优化代码。

-ms:确保不产生冗余循环,从而减小代码尺寸。

-mh:允许投机执行。

-mx:使能软件流水循环重试,基于循环次数对循环试用多个方案,以便选择最佳方案。;5.4.4软件流水

在编译代码时,可以选择编译器的-o2或-o3选项,编译器将根据程序尽可能地安排软件流水线。使用软件流水线还有下面几点限制:

(1)循环结构不能包含代码调用,但可以包含内联函数;

(2)循环计数器应该是递减的;

(3)循环结构不能包含break,if语句不能嵌套,条件代码应当尽量简单;

(4)循环结构中不能包含改变循环计数器的代码;

(5)循环体代码不能过长,因为寄存器(32个)的数量有限,应该分解为多个循环;

(6)在软件流水线的运用上,尽量使复杂的循环分解成简单的小循环,以避免寄存器的数量不够;对于过于简单的循环,应该适当展开,以增加代码数量,增加流水线中的迭代指令。;

5.4.5使用内联函数(Intrinsics)

内联函数是C64x编译器提供的专门函数,它们与嵌入式的汇编指令一一对应,C编译器以内联函数的形式支持所有C语言代码不易表达的指令,其目的是快速优化C源程序。在C源程序中调用内联函数,与调用一般的函数相同,只不过内联函数名称前有下划线作特殊标识。当汇编指令功能不易采用C语言表达时,可采用内联函数表示。

Intrinsics是直接与C6000汇编指令映射的在线函数,不易用C/C++语言实现其功能的汇编指令都有对应的intrinsics函数,使用方法与调用函数一样,也可使用C/C++变量。

如以下程序:

;5.4DSP的C/C++代码优化;5.4.6调整数据类型

C64xDSP内部数据总线和寄存器宽度是32位的。一般遵守的规则如下:

(1)在使用过程中,注意int和long两种类型的宽度不一致,long型数据为40位,会产生额外的指令和占用更多的功能单元。

(2)在使用loopcounts时应尽量使其为int型或unsignedint型数据,以避免不必要的符号位扩展。

(3)尽量使用short类型进行乘法运算,因为这种数据类型适应C6000中的16位乘法器。如进行一次short*short运算只需1个时钟周期,而进行一次int*int运算则需5个时钟周期。

;(4)循环计数器应使用int或无符号int类型,不用short。

(5)short型数据的int

文档评论(0)

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

精品资料

版权声明书
用户编号:7040145050000060

1亿VIP精品文档

相关文档