当前位置:首页 » 编程软件 » ccs编译器优化for

ccs编译器优化for

发布时间: 2022-04-19 07:05:03

① 对DSP而言,CCS用C语言编程和汇编编程,二者的效率相差多少

我用的是28XX系列的,不知道经验对你有没有用,因为不同系列的芯片多少有些差别。
TI提供的库已经相当可以了,兼顾易用与效率。我当时做过这样的测试
1. 用IQMATH实现
2. 直接C语言实现
3. C语言优化实现
4. 原生汇编实现
IQMATH的运行周期在1000左右,比方案3快几十个周期,比方案4慢几个周期,方案2是10000多个周期。
另外,因为只是单独测的算法,汇编之所以快是快在寄存器的使用上,操作数可以直接入寄存器,但是考虑到程序其他部分是用C语言编写的话,把操作栈的时间也加上,并不比方案1快。毕竟我对TI的汇编吃的也不透。
在编写上,无疑是方案1提供了最接近C语言风格的实现,几乎不用考虑ISA方面的问题。
另外对于执行效率,我觉得主要考虑三点:
1.分支的使用
CCS对C语言的优化我没做过太多比对。其实单从反汇编的结果看,我接触过的嵌入式开发环境的编译器都能做出很好的优化。但是几乎每个编译器都会在逻辑的优化上有欠缺——它只能对一些显而易见的判断条件进行优化,而在写程序的过程中,我们经常出于易读性的考虑,或者稳定性的考虑,或者其他的考虑加入几乎不会发生的分支,这样的分支判断会消耗一定比率的代码段执行效率,视乎代码段内有用功能的长度而定,越长这个比率越小,越短这个比率越高。
2.一般操作,就是各种赋值操作
在一般的操作上,编译器的优化已经很令人满意了,基本上可以作为编写汇编的范本。我觉得所谓效率能达到90%就是针对这个部分说的。
3.特殊操作,比如对整块内存的操作,或者是浮点运算上。
在一些特殊的操作上,就要看是否有现成的库,或者看硬件是否支持。比如对整块内存操作就别用循环一个字节一个字节的搬了。
以上三点都能考虑到的话,相信执行效率方面已经没有太大的提升空间了。

另外如果你的代码发生在初始化部分,也就是只在系统运行开始的时候运行一次,那么优化不优化其实没有太大的必要,除非你对系统初始化的时间有严格的要求。但是如果你的代码是作为任务要被反复运行的,那就有优化的必要了。

在CCS里有代码消耗时钟周期的统计,如果你觉得某段代码效率低下的话,可以先分段进行消耗时钟周期的计算,这样优化比较有针对性。

② 同样的一段程序,CCS 和 IAR 编译运行的结果不同

优化举个简单例子:int
i;i=1;i=2;i=3;i=4;i=5;i=6;i=7;i=8;i=9;i=10;这段代码会被直接优化成
i=10;连续10次给i赋值,只有最后一次才有意义。前面的赋值没有意义,会被直接优化掉。如果后面i也没有被使用,则变量i本身没有意义,直接优化掉。最后编译出来的代码就是空。进一步,把上面的赋值换成循环int
i;for(i=1;i<10;i++);这段代码也会被优化成i=10;循环相当于连续给i赋值9次,循环里面i的值是多少,是没有意义的,最后循环退出时的i值才有意义,相当于最后一次的赋值i=10;如果后面的程序没有用到i,则变量i本身没有意义,直接优化掉。最后编译出来的代码就是空。谨记:空循环是没有意义的,有点优化能力的编译器,都会将空循完全环优化掉。如果需要延时,请加上volatile,或者调用编译器的延时函数,或者用编译参数禁止优化,或者使用内嵌汇编。总之,不要使用没有volatile的空循环带实现延时,这是不规范的。

③ 如何使用ccs c编译器中的优化选项

CCS3.3既支持c程序设计又支持C++,当你的源程序的文件后缀采用.c时,CCS用c编译器编译程序,当使用.cpp后缀时,用C++编译器。

④ CCS PIC编译器的使用和安装方法

c程序设计又支持c++,当你的源程序的文件后缀采用.c时,ccs用c编译器编译

⑤ ccs4.1首次使用 编译时出现这个错误怎么解决

这个地方其实应该是“code-start”而不是“code-strat”,应该是原工程笔误,这是用来设定代码的入口(entry-point)的 DSP2833x_CodeStartBranch.asm 文件中定义的符号是“code-start”,那么告诉CCS编译器的也应该是这个符号。而如何告诉CCS编译器,在property-->build-->C2000-->advanced options-->symbol management中可以找到entry-point的定义,将code-strat改为code-start即可。

⑥ 【求助】关于CCS编译器的问题

你运行的程序出错。因为你本机安装了VS所以有这个调试代码的提示。
如果你不安装VS等开发或调试功能。就能看到运行程序的错误提示了。

⑦ dsp程序汇编优化

指令之间能否并行主要是依据内核资源和指令间是否存在相互依赖的关系来决定的。你把你的C源码经过CCS的C编译器后生成的汇编语言(ASM文件)来改是现实的,因为已经进过了编译器的汇编优化,基本上就没有可读性,而且也不能作为源文件来输入的。要想做汇编优化,第一步可以考虑从写线性汇编指令开始,因为相对于汇编语言而言,对编码者的要求低不少。积累到一定的基础了,再可以考虑使用汇编语言。

⑧ ccsv5 导入ccsv6建的工程提示编译器版本低 请问怎么更新

低版本是无法兼容高版本的文件的,只能升级cssv6,下载后,然后在项目右键 properties中选到general,选complier version 旁边的more就可以选你安装。
利用CCSv5导入之前版本工程(*.pjt)的方法
其实很简单,使用File-Import

只不过是不要选择(General)Existing Projects into Workspace,那里会提示“Some projects cannot be imported because they already exist in the workspace”,而是要在Import的时候选择(Code Composer Studio)Legacy CCSv3.3 Projects

进入后直接选择相应的*.pjt文件

之后没有特殊要求就一路Next直到Finish就好啦。导入后Build应该没问题。
至于Debug的需求,还是需要新建Target Configuration File,按需要选择仿真器,就可以了。

热点内容
python3range 发布:2025-03-21 23:42:56 浏览:346
安卓国外手机在哪个平台买 发布:2025-03-21 23:39:40 浏览:116
androidx86卡 发布:2025-03-21 23:38:06 浏览:802
linux限制访问目录权限 发布:2025-03-21 23:35:19 浏览:414
海泰克如何使用密码 发布:2025-03-21 23:35:17 浏览:640
php连接加密 发布:2025-03-21 23:18:55 浏览:833
ftp上传和下载命令 发布:2025-03-21 22:59:45 浏览:85
压缩包如何在电脑解压 发布:2025-03-21 22:47:06 浏览:95
java气候 发布:2025-03-21 22:37:19 浏览:143
外文期刊数据库检索 发布:2025-03-21 22:37:05 浏览:10