包括CCS3.3和CCS5.5两个版本的调试教程。

CCS3.3

3.3教程来自http://zhujlhome.blog.163.com/blog/static/20562109220126103288550/

 

  1. CCS的布局和结构

 

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

  我们将其和CCS3.3的工具栏比

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

 

  1. 开始调试程序

 

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

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

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

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

1) 如何添加断点

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

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

 

2) 单步调试

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

---Source-single step 源代码单步调试了,就是按一下,走一步的模式。

---Source-step over   这个按钮是指在单步执行时,如果在函数内遇到子函数,那么不会进入子函数内单步执行,而是将子函数整个执行完再停止,也就是把子函数整个作为一步。

---Source-step out   当单步执行到子函数内时,用step out就可以执行完子函数余下部分,并返回到上一层函数。

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

3) 使用watch window

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

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

4)其他一些

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

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

  1. 统计代码运行时间

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

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

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

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

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

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

 

 

  1. 如何使用CCS3.3来显示图表?

CCS3.3的探针功能使用:首先设置断点,点击breakpoint manager按钮(中间有个红色圆),出现窗口

选择"Action"下的"read from File"

出现并设置以下窗口

同时我们还可看到。这个是用来控制数据输入的停止和开始,便于观测正弦图形的输出然后就是选择图形菜单观察了

设置输入输出地址等参数

点击"Animate"开始仿真,就能看到我们想要的图像了   

 

 

CCS5.5

变化很大,对照着3.3的调试教程尝试着写一下教程

  1. CCS5.5的布局和结构

Edit模式

右上角可以改变模式为Debug模式,进入Debug模式后菜单栏会有变化。

Debug模式

 

进入Debug

打开各种需要的窗口

  1. 开始调试程序

完成之后,Debug窗口

 

 

 

添加断点

方法和3.3一样

调试

  • step into就是单步执行,遇到子函数就进入并且继续单步执行;(F5)
  • step over是在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完再停止,也就是把子函数整个作为一步。(F6)
  • step return就是单步执行到子函数内时,用step return就可以执行完子函数余下部分,并返回到上一层函数。(F7)

step into:进入子函数

step over:越过子函数,但子函数会执行

step return:跳出子函数

使用Watch Expression

选中变量,右击选择Add Watch Expression

其它

上电顺序不正确可能导致CCS连接不上板子,

可以尝试这个顺序:

  1. 板子上点
  2. 插上jtag
  3. 连接仿真器和电脑的USB接口

CCS调试教程的更多相关文章

  1. IntelliJ远程调试教程

    概述 对于分布式系统的调试不知道大家有什么好的方法.对于我来说,在知道远程调试这个方法之前就是在代码中打各种log,然后重新部署,上线,调试,这样比较费时.今天咱们来了解了解Java远程调试这个牛逼的 ...

  2. 【转】iOS开发Xcode7真机调试教程

    原文网址:https://www.skyfox.org/ios-xcode7-debug-device.html 从Xcode7开始,Xcode 不需要$99/$299升级开发者直接可以进行真机调试 ...

  3. Chrome浏览器及调试教程

    ==>(微信公众号:IT知更鸟)欢迎关注<^>@<^> Chrome浏览器及调试教程 在web开发过程中,我们在写JavaScript脚本时难免会遇到各种bug,这时,我 ...

  4. 使用CCS调试基于AM335X的SPL、Uboot(原创)

    使用CCS调试基于AM335X的SPL.Uboot 一.开发环境 1.硬件平台:创龙AM3359核心板 2.SDK版本:ti-processor-sdk-linux-am335x-evm-03.00. ...

  5. 4张图看懂delphi 10生成ipa和在iPhone虚拟器上调试(教程)

    4张图看懂delphi 10生成ipa和在iPhone虚拟器上调试(教程) (2016-02-01 03:21:06) 转载▼ 标签: delphi ios delphi10 教程 编程 分类: 编程 ...

  6. Idea IntelliJ远程调试教程

    总结 第一步:修改startup.sh 在倒第二行加上export JPDA_ADDRESS=8787 最后一行在start前面加上"   jpda   " 第二步:配置Idea, ...

  7. Android Studio连接手机调试教程已决解

    Android Studio连接手机调试教程 Windows电脑连接安卓手机需要下载安装驱动,确保电脑联上网络. 准备条件: 1.电脑上安装应用宝软件. 2.手机开发者选项里面打开USB调试,USB安 ...

  8. RASP | 远程Java应用的RASP调试教程

    远程Java应用的RASP调试教程 介绍 Java RASP是基于Java Agent技术实现的,而Java Agent代码无法独立启动,必须依赖于一个Java运行时程序才能运行. 如何调试一个Jav ...

  9. Code blocks调试教程

    特别声明:本教程已转移至百度经验:https://jingyan.baidu.com/article/6b182309939a87ba58e159bf.html 一.题外话 之前一直想用Code bl ...

随机推荐

  1. 简化的INSERT语句

    INSERT语句中也并不需要我们指定表中的所有列,比如在插入数据的时候某些字段没有值,我们可以忽略这些字段.下面我们插入一条没有备注信息的数据: INSERT INTO T_Person(FAge,F ...

  2. NOIP 2015 跳石头

    题目背景 一年一度的“跳石头”比赛又要开始了! 题目描述 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间,有 N 块岩石(不 ...

  3. 【模拟】bzoj2760 [JLOI2011]小A的烦恼

    注意细节和初始化. #include<cstdio> #include<string> #include<algorithm> #include<iostre ...

  4. O2S.Components.PDFRender4NET.dll 图片空白BUG问题

    在用网上的2.0.1.0破解版的时候,会出现莫名的错误,大多数pdf转成图片都是Ok的,但是有部分转出来是空白,因为我这里要涉及大量的pdf转图片,不允许出现错误. 后来经过实验发现是这个版本存在bu ...

  5. subprocess使用,进入到某个目录下执行shell命令

    subprocess是用来fork一个子进程的.这个子进程可以运行一个外部程序. 函数: subprocess.call() subprocess.check_output() subprocess. ...

  6. 反向传播BP为什么高效

    之前有一篇文章讲了反向传播的原理: 下面这篇文章讲了反向传播为什么高效: https://blog.csdn.net/lujiandong1/article/details/52716726 主要通过 ...

  7. PHP正则表达式之快速学习法

    1.入门简介 简单的说,正则表达式是一种可以用于模式匹配和替换的强有力的工具.我们可以在几乎所有的基于UNIX系统的工具中找到正则表达式的身影,例如,vi编辑器,Perl或PHP脚本语言,以及awk或 ...

  8. char p[]与char *p的区别

    #include <iostream> using namespace std; int main(void) { char *pp = "abc";//*pp指向的是 ...

  9. [转载]Java 反射机制(包括组成、结构、示例说明等内容)

    FROM:http://www.cnblogs.com/skywang12345/p/3345205.html 第1部分 Java 反射机制介绍 Java 反射机制.通俗来讲呢,就是在运行状态中,我们 ...

  10. hadoop2.2.0伪分布式安装

    修改主机名和IP的映射关系 vi /etc/hosts 192.168.61.134 hadoop 关闭防火墙 #查看防火墙状态 service iptables status #关闭防火墙 serv ...