登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Life++

今天要充实...

 
 
 

日志

 
 
关于我

毕业于南京航空航天大学测试计量技术及仪器专业,曾就职于中科院宁波材料所,现智能家居创业中(www.ThinkHome.com.cn)。 有思想,重行动,能坚持。 不折不扣的理想主义者,不折不扣的行动派! 微信ID:Senple_Chan

CCS调试及代码运行时间统计  

2011-06-21 10:35:38|  分类: 软件-其它 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

工欲善其事,必先利其器

中国有句古话叫“磨刀不误砍柴工”,如果您将CCS这把常用的利刃磨锋利了,那么我相信为您的DSP开发过程节省不少的工夫。

1. CCS的布局和结构

CCS调试及代码运行时间统计 - Senple Chan - Life++

菜单栏——和CCS所有功能相关的菜单都在这里面。

编译工具栏——编译程序时常用的一些工具。

调试工具栏——调试程序时常用的一些工具。

工程文件框——打开的工程所有文件会按类别放在这里

代码编辑区——代码都是在这里编辑完成的了,最主要的工作区域。

编译信息输出区——编译时产生的信息会在这个区域内输出

值得一提的是CC3.3CCS2.2工具栏的区别,CCS2.2工具栏的图如下面所示,

  CCS调试及代码运行时间统计 - Senple Chan - Life++我们将其和CCS3.3的工具栏比

对之后发现CCS.2中的探针工具已经不在CCS3.3的工具栏中了,这是因为CCS3.3中的断点就包含了探针功能

2. 开始调试程序

在编译完成之后,要来下载程序并进行功能调试。“File”,”Load Program”,在工程文件夹下面的Debug文件夹下,选中**.out文件,点击打开,便开始下载程序了。将**.out文件下载到目标板上2812的RAM中。

注意,这里是调试,所以将程序下载到RAM。等到最后您要固化程序时候,就得下载到FLASH了,因为断电之后,RAM里面所有的数据都会消失。

调试程序常用的一些按钮:

CCS调试及代码运行时间统计 - Senple Chan - Life++

RunAnimate的区别,Run是如果遇到断点的话它就停下来了。而Animate就算遇到断点时先停止DSP内核,刷新窗口,然后接着继续启动运行,常用来连续刷新变量窗口和生成graph图形等

1) 如何添加断点

我们调试代码时有时候想看看某一行或者某几行代码是否有执行,或者想看看执行前后变量的一些变化,那么我们就需要在这行或者这几行代码前加上断点了。加上断点的方法很简单,只要在该行代码前双击就行。双击之后,这行代码前面会出现一个红色圆块。另外一种添加断点的方法,就是在刚才的编译工具栏上,点一下那个小手图形的按钮,前提是你要把光标移动到想要设置断点的哪一行上。这时运行Run按钮,程序就会在断点处停下,黄色的小箭头又出现了。

CCS调试及代码运行时间统计 - Senple Chan - Life++

那如何取消断点呢,在刚刚设置断点的那行再双击一下,代表断点的红色标记就消失了,断点也就被取消了。如果想要清除文件内的所有断点,那么我们可以按一下刚才小手按钮旁边的那个打了叉叉的小手按钮“Debug:Remove all breakpoints”

(2) 单步调试

让我们来了解一下CCS给我们提供的调试工具吧。调试工具栏上分两类,一类是
用于在源代码中调试的,另一类是用于在汇编代码中调试的。

CCS调试及代码运行时间统计 - Senple Chan - Life++---Source-single step 源代码单步调试了,就是按一下,走一步的模式。

CCS调试及代码运行时间统计 - Senple Chan - Life++ ---Source-step over   这个按钮是指在单步执行时,如果在函数内遇到子函数,那么不会进入子函数内单步执行,而是将子函数整个执行完再停止,也就是把子函数整个作为一步

CCS调试及代码运行时间统计 - Senple Chan - Life++---Source-step out   当单步执行到子函数内时,用step out就可以执行完子函数余下部分,并返回到上一层函数

用于汇编调试的两个工具Assembly-single stepAssembly-step over含义和上面源文件调试的两个类似,就不再重复叙述了。

(3) 使用watch window

Watch window的作用是来观察程序运行过程中的各个变量的值。调用watch window的方法是点击菜单栏的"View ","watch window",这时watch window就会显示在CCS下方的信息区域,如下图所示:

CCS调试及代码运行时间统计 - Senple Chan - Life++

如果想观察某个特定的变量,在代码中选中这个变量,然后右键"Add to watch window"

CCS调试及代码运行时间统计 - Senple Chan - Life++

CCS调试及代码运行时间统计 - Senple Chan - Life++

(4)其他一些

我们在调试程序的时候经常想让程序从Main函数开使运行,点击"Debug"--"Go main"。 既能看到源文件中代码的执行情况,又能看到汇编指令的执行情况----"View","Mixed Source/Asm"

CCS调试及代码运行时间统计 - Senple Chan - Life++

我们看到,每一行源代码下面就会有相应的汇编代码,黄色的指针指示源代码绿色的指针指示汇编代码。如果要取消源代码和汇编代码在一个文件内的话,重复刚才的操作就可以了。

3. 统计代码运行时间

在CCS3.3中如何统计代码的运行时间,首先,将代码的阅览模式设置成前面的源码和汇编同时显示的模式。

点击"Profile"--"Clock"--"Enable",来使能CLOCK功能。接下来点击"Profile"--"Clock"--"View",在CCS最下面会出现一个类似于秒表的工具,旁边显示数字“0”。

CCS调试及代码运行时间统计 - Senple Chan - Life++

我们关注main函数这一块,在代码“int *input = &inp_buffer[0];”前面设置断点,然后点击Run,这样程序就会停在这一行代码前面,而且黄色指针指示源码,绿色指针指向汇编

CCS调试及代码运行时间统计 - Senple Chan - Life++

这时,底下的CLOCK工具开始显示的是753,当然不同的环境显示的数字应该是不一样的。这就是从开始执行到这一语句所花的时间了,那753的单位是“CPU Cycles”,CPU的时钟周期

CCS调试及代码运行时间统计 - Senple Chan - Life++

统计汇编指令的执行时间,点击一下Assembly-single step。汇编指令下移一行,CLOCK工具显示754,也就是刚才这句代码执行了1个CC。统计执行一段代码所花的时间,在需要统计的那段代码开始和结束的地方分别设置断点,如下图所示。

CCS调试及代码运行时间统计 - Senple Chan - Life++

将两个地方的CLOCK工具显示的值相减就能得到这一段代码的执行时间了。

  评论这张
 
阅读(5957)| 评论(3)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018