EDN China > 技术文章 > 微处理器与DSP > 多媒体处理器 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

C6000软件优化经验总结(1)

来源:无忧电子开发网?? 2006年07月05日 ?? 收藏0

???? (五)其它类型

?????? -mln:生成大内存模式的程序。

????????-ml0:缺省情况下将集合变量(数组和结构)作为far型。

????????-ml1:缺省情况下将全部函数作为far型

????????-ml2: 等于-ml0加-ml1

????????-ml3: 缺省情况下将全部数据和函数作为far型

?????? (六)建议使用的编译方式

?????? Cl6x -gk -mt? -o3 -mw -ss

“filename”

?????? 方式1用于程序的调试,这种方式具有比较强的优化能力,并且支持符号调试。在编译的过程中不会发生错误。由于生成的“out”文件中包含了符号信息和行号信息,所以比较大。

?????? Cl6x -k -mgt? -o3 -mw -ss “filename”

?????? 方式2用于程序的剖析(profile),这种方式的优化能力几乎最强(绝大多数情况下与方式3相同),并且支持对程序进行profile。文件中只包含了符号信息和很少的行号信息,所以“out”文件比较小。

?????? Cl6x -k -mt? -o3? -mw -ss “filename”

?????? 方式3用于最终的发行版本程序,可以对程序进行最强的优化,并且去掉了全部的符号和行号信息,所以“out”文件比较小。

?????? 由多个文件组成的程序应该编写makefile,将编译参数放在该文件中,并在其中说明使用的编译器的版本号。

?????? (七)连接参数

?????? -heap:指定堆的大小

?????? -stack: 指定栈的大小

?????? 连接的各种选项应该统一放在“cmd”文件中

?????? 二、双重循环和多重循环的优化总结

??????? 双重循环多重循环看起来比较复杂,但实际上多重循环优化方法比较简单,就在于一个字:“拆”,一旦完成这一步之后,多重循环就成为单层循环,优化就可以按照普通的单层循环来做了。

??????? 多重循环的特点是在优化器优化时只在最内层循环中形成一个pipeline,这样循环语句就不能充分利用C6的软件流水线,而且对于内部循环的次数较少的情况,消耗在prolog和eplog上的cycle数也是不可忽视的。针对这种状况可以考虑将多重循环拆开形成一个单层循环,可以拆外层循环也可以拆内层循环,一般视具体情况而定。这样就可以充分利用优化器构成的Pipeline。如下例:

?? void fir2(const short input[], const short coefs[], short out[])

?? {

???? int i, j;

???? int sum = 0;

???? for (i = 0; i < 40; i++)

???? {


?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

软件优化? C6000? 总结?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈