一点关于ccs3.3图形显示的理解
- 格式:docx
- 大小:18.09 KB
- 文档页数:3
Part1:ccs3.3中新建一个DM6437的示例工程1、连接好板子,将板子上仿真器的usb口插到电脑上,启动ccs后,ccs会去获取板子信息并在打开的文件目录中自动生成一个文件,如图所示:笔者使用的是6437的板子2、用file-new选择建立一个dsp/bios文件在打开的对话框中选择你使用的板子的型号,如下图:3、这个时候ccs为我们建立了一个bios文件,以图表显示,里面按照所选板子的类型添加相应的硬件和其他模块。
保存这个文件到工程目录下先,文件类型为tcf。
4、保存这个文件的同时,ccs按照bios中的配置在当前目录下自动生成了一个cmd文件。
此时将tcf文件和这个cmd文件同时添加到工程中,使用5、然后需要修改一个编译选项,点击下图所示选项进去:6、打开后在编译选项对话框总会看到一个命令行,其中最后一句是-mv6400,因为用的是6467的板子,所以这个选项要修改成-mv64+;否则编译会报错:编译选项不正确;但并非所有类型的板子都要改,这个只针对型号为64+的板子。
7、file-new-source file建立一个c源文件,保存并加入到工程中。
以下是示例程序:#include <std.h>#include <string.h>#include <stdio.h>Int main(Int argc, String argv[])//main函数的类型必须这样写{unsigned int i;unsigned int sum=0;for(i = 0; i<=100; i++ ){sum += i;}printf("the sum = %d .\n",sum);printf("the program run over!\n");printf("the program run over!\n");}注意:1)如果想要printf正确输出信息,需要添加对应平台的rts64plus.lib文件。
CCS3.3查看变量图形首先声明,觉得ccs3.3中Graph并不是什么量都可以观察的,原因是跟断点有关,反正对于我的仿真器XDS510的是如此。
即程序运行到断点处会有延时,对于普通信号可能没什么影响,但对于高频信号来说,这种延时往往是致命的,整个程序运行就明显不是想要的效果了。
此上为题外话,现说一下自己对Graph的理解。
我们在做一个比较大的项目时,往往习惯于把程序按不同的功能分成不同的功能模块,在调试的时候,可以单个模块的测试。
但单个模块往往只是算法层次的运算,我们想看看某个模块运行后的结果是否符合自己的要求,这时候示波器就显得无用武之地了,这个时候Graph的作用就显得尤为重要,相比较which window 查看变量来说,它会给你做出最直观的显示。
(当然这两者结合看会更好)。
此处只介绍Time/Frequncy 的使用。
我们通常需要监控的有两类,分别为数组和变量,现分别说明之。
(忘了一点,在设置Time/Frequncy之前程序应该已经下载到目标板,RESET CPU ,RESTART,GO TO MAIN)第一步,设置断点在说到Time/Frequncy得设置之前,首先说下程序中需要做的事情,那就是添加断点。
本人喜欢在中断程序中添加断点(软中断,双击语句左侧可出现红色点),这样的好处是既可以观察到程序是否进入了中断,而且可以实现在断点处数据的更新。
(如果不设置断点Time/Frequncy是不可用的,这是尤其需要注意的!!!)第二步,设置Time/Frequncy菜单(以常用的几个选项为例)1.Display Type 显示类型,常用的两个选项分别为single time (单通道),Dual Time (双通道)。
选择单通道模式,则画面只显示一个图形,选择双通道模式,画面显示两个通道的图形,也即分别可用来监控一个或两个变量(数组)。
注:上面所说的是一个弹出画面,当然你可以实现多个弹出画面监控更多的变量了!双通道的实现,能够为图形的对比提供很直观的现实,如在生成Ualpha和Ubata时,可以很方便观察到两个图形相差Pi/2。
CCS 3.3 使用图解1. CCS的布局和结构值得一提的是CC3.3和CCS2.2工具栏的区别,CCS2.2工具栏的图如下面所示,我们将其和CCS3.3的工具栏比对之后发现CCS.2中的探针工具已经不在CCS3.3的工具栏中了,这是因为CCS3.3中的断点就包含了探针功能2. 开始调试程序在编译完成之后,要来下载程序并进行功能调试。
“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给我们提供的调试工具吧。
调试工具栏上分两类,一类是用于在源代码中调试的,另一类是用于在汇编代码中调试的。
Part1:ccs3。
3中新建一个DM6437的示例工程1、连接好板子,将板子上仿真器的usb口插到电脑上,启动ccs后,ccs会去获取板子信息并在打开的文件目录中自动生成一个文件,如图所示:笔者使用的是6437的板子2、用file—new选择建立一个dsp/bios文件在打开的对话框中选择你使用的板子的型号,如下图:3、这个时候ccs为我们建立了一个bios文件,以图表显示,里面按照所选板子的类型添加相应的硬件和其他模块。
保存这个文件到工程目录下先,文件类型为tcf。
4、保存这个文件的同时,ccs按照bios中的配置在当前目录下自动生成了一个cmd文件.此时将tcf文件和这个cmd文件同时添加到工程中,使用5、然后需要修改一个编译选项,点击下图所示选项进去:6、打开后在编译选项对话框总会看到一个命令行,其中最后一句是-mv6400,因为用的是6467的板子,所以这个选项要修改成-mv64+;否则编译会报错:编译选项不正确;但并非所有类型的板子都要改,这个只针对型号为64+的板子。
7、file-new—source file建立一个c源文件,保存并加入到工程中。
以下是示例程序:#include 〈std。
h>#include <string.h〉#include 〈stdio。
h〉Int main(Int argc, String argv[])//main函数的类型必须这样写{unsigned int i;unsigned int sum=0;for(i = 0;i<=100; i++ ){sum += i;}printf("the sum = %d 。
\n”,sum);printf("the program run over!\n");printf(”the program run over!\n");}注意:1)如果想要printf正确输出信息,需要添加对应平台的rts64plus。
今天早上花了半天的时间,帮一个朋友调试出了波形图,自己以前弄过,后来忘记了,在此记录下来,方便以后的查阅。
也给不会的同学做使用方法上一个参考。
调出波形图,有以下几个步骤:1)View -> Graph -> Time/Frequency。
完成这几步之后,就会出来一个表格,如果什么都不填写,能看进一个基本的坐标图。
2)要明确自己需要的图是什么图,输出关于时间变量的图还是关于频率变量的图,如果不明白这两个的意思,好,那就做一个简单的说明吧。
我们一般在示波器上看见的图就是时间图,那什么是频率图呢?比方说,我们需要看一个频率为5HZ的正弦信号,那么看到的正弦波是时间图,频率图就是在横坐标等于5的地方有一个竖线,表示只有频率等于5HZ的时候有值,其他的频率都没有值。
如果你明白什么是FFT的话就更好理解了。
好了开始修改各个参数了。
明确自己要看的是什么图了之后,在第一栏Display Type中选择,Single Time就是时间图,FFT Magnitude 就是频率图,还有一些其他的选型,可以自己去理解一下,比方说眼图Eye Diagram。
根据需要查看。
3)Graph Title,是修改图的名称的,比方说你画了好几个时间图,你怎么知道哪一幅图是哪一个呢?就在这个时候用名字分开吧。
4)Start Address,是填写你的输入地址的,可以写输入的名字,也可以写地址,一般情况都是写名字的,比方说很多时候会用INPUT来命名输入信号,大家都不太关心编译之后生成出来存储块地址。
5)DSP Data Type,这个是填写数据类型的,不然的话是出不来图形的,如果你不知道的话,那肯定不是自己写的程序,对于别人的程序就好好好的研读一番了,看一下数据类型。
6)把这几个主要的改好了之后,基本上就没有什么问题了。
选择OK后,就退出了表格填写部分。
然后在程序中将断点打在输出的语句上,运行,当程序运行到这里的时候,就会有波形图出来了。
第一章CCS概述本章概述CCS (Code Composer Studio)軟體開發過程、CCS組件及CCS 使用的檔案和變量。
CCS提供了配置、建立、調試、跟蹤和分析程式的工具,它便於實時、嵌入式信號處理程式的編製和測試,它能夠加速開發進程,提升工作效率。
1.1 CCS概述CCS提供了基本的代碼生成工具,它們具有一系列的調試、分析能力。
CCS 支援如下所示的開發週期的所有階段。
设计概念性规划编程和编译创建工程文件、编写源程序和配置文件调试语法检查、探测点设置和日志保存等分析实时调试、统计和跟踪在使用本教程之前,必須完成下述工作︰安裝目標板和驅動軟體。
按照隨目標板所提供的說明書安裝。
如果你正在用仿真器或目標板,其驅動軟體已隨目標板提供,你可以按產品的安裝指南逐步安裝。
安裝CCS.遵循安裝說明書安裝。
如果你已有CCS仿真器和TMS320c54X代碼生成工具,但沒有完整的CCS,你可以按第二章和第四章所述的步驟進行安裝。
營運CCS安裝程式SETUP. 你可以按步驟執行第二章和第四章的實驗。
SETUP程式允許CCS使用為目標板所安裝的驅動程式。
CCS包括如下各部分︰CCS代碼生成工具︰參見1.2節CCS集成開發環境(IDE)︰參見1.3節DSP/BIOS插件程式和API︰參見1.4節RTDX插件、主機界面和API︰參見1.5節CCS構成及界面見圖1-1。
圖1-1 CCS構成及界面1.2 代碼生成工具代碼生成工具奠定了CCS所提供的開發環境的基礎。
圖1-2是一個典型的軟體開發流程圖,圖中陰影部分表示通常的C語言開發途徑,其它部分是為了強化開發過程而設定的附加功能。
圖1-2 軟體開發流程圖1-2描述的工具如下︰C編譯器(C compiler) 產生組合語言源代碼,其細節參見TMS320C54x最優化C編譯器用戶指南。
彙編器(assembler) 把組合語言源檔案翻譯成機器語言目標檔案,機器語言格式為公用目標格式(COFF),其細節參見TMS320C54x組合語言工具用戶指南。
CCS3.3, SEED XDS510, 2812安装及使用一、CCS3.3的安装安装软件CCS3.3,双击安装文件:点击下一步,点确定,点击Finish完成安装。
二、安装驱动程序以SEED XDS510为例,如果是HELLO DSP或者其他类型仿真器,请参照其他说明文档。
点击安装文件安装完成后,插入仿真器会提示找到硬件:安装硬件完成后,设备管理器显示如下:三、配置CCS3.3点击程序菜单中的Setup Code Composer Studio v3.3,进入如下界面:按如下步骤进行配置:配置项注意选择seedxds510plus.cfg,其他均为默认值。
配置完成后保存设置。
四、CCS3.3使用主控板插上SEED仿真器,注意对齐,方向不要连错,仿真器插错可能会导致仿真器烧坏。
电脑连接仿真器USB线,打开CCS3.3软件,选择连接,如下图所示:连接成功后,主界面左下角会显示连接成功图标。
点击如下图所示小图标,进入烧写程序界面。
点击左下方的Flash Programmer Settings…按钮,选择FlashAPIInterface2812V2_10.out文件在On-Chip Flash Programme对话框中的Operation栏下,设置为自己编译生成的待烧入Flash的.out文件的路径,如下图所示:选择相应的烧写文件后,点击On-Chip Flash Programme对话框中的Execute Operation按钮,即可执行程序的烧写,如下图所示:如提示File not found,选择No不必理会。
烧写完毕后,可以按F5运行程序观察运行效果。
烧写操作完成后,断电,拔掉仿真器插头,重新上电,程序即可正常运行。
一.软件部分1.双击桌面上的Setup CCStudio v3.3图标如下图:2.选择目标芯片,这里选择TI C54X系列的芯片通过设置Family ,Platform来选择目标芯片(因为是纯软件仿真,不涉及硬件所以选simulator)3.点击左下角的Save&Quit,弹出一个对话框,选“是”,打开CCS软件4.打开的CCS界面如下:二.程序部分首先编辑源程序(有两个源程序:example.asm和example.cmd)程序附在最后(1)点击新建图标,如下图:(2)将源程序输入,并保存在F:\test(路径自己选择,文件名最好用英文和数字)(3)再次点击新建图标,输入连接命令文件,保存在相同路径下,如下图:5.新建工程(1)选择Project-new,出现如下的对话框:和两个源文件放在同一个目录下(2)向工程中添加源文件,右击左面File View中工程名,选择Add Files to Project….出现如下图的对话框:文件类型改为All Files(*.*),依次添加example.asm和example.cmd结果如下图所示:6.编译源文件,点击Rebuild All,如果源文件正确,在Build窗口,会出现0 Errors7.加载可执行文件,点击File-Load Program出现如入对话框:双击Debug,出现.out文件,双击它,出现如下图所示的界面:最左边的一栏是执行程序时需要用到的操作指令,我们选全速运行指令run,如下图:接下来就可以看程序运行结果了(我们观察下数据内存空间):输入0x0300的原因是链接文件中DATA: origin=0x0300,length=0x100。
源程序如下(标号要顶格写,伪指令不能顶格写):example.asm.title"example.asm".mmregsSTACK .usect"STACK",10H ;在所给段名的未初始化段预留空间.bss a,4 ;在.bss段为所给符号预留空间.bss x,4.bss y,1.def start ;.def说明一个在当前模块中定义,并可在其他模块中引用的符号.data ;汇编到.data段table: .word 1,2,3,4;初始化四个16位整数,分别为1,2,3,4.word 8,6,4,2.text ;汇编到.text段start:portr 0x0000,ar2 ;portr PA ,Smem 从PA口读入数据(PA=Smem)stm #0,SWWSR ;stm #lk,MMR 长立即数存到MMR ;SWWSR-软件等待状态寄存器stm #STACK+10h,SPstm #a,AR1rpt #9;重复执行下条指令8次mvpd table,*AR1+ ;程序储存器向数据存储器传送数据call sumend: B endsum:stm #a,AR3stm #x,AR4rptz A,#3 ;重复执行下条指令,A清零mac *AR3+,*AR4+,Astl A,*(y) ;A中低16位存入y中ret.endExample.cmd-e startMEMORY{PAGE 0:PROG: origin=0x3000,length=0x1000PAGE 1:STACKS: origin=0x0200,length=0x100DATA: origin=0x0300,length=0x100}SECTIONS{.text: >PROG.bss: >DATA.data: >PROG}。
最近在使用CCS3.3的时候,看变量的值,直接选中想要看的变量,然后右键点击add to watch window即可,在运行之后就能看这个变量的值。
但是要是想看寄存器中存的值就不能这么看,比如我们想看T1CNT这个寄存器的值。
如何看呢?下面以图文的形式为大家讲解。
一、我们想看寄存器中的数值,根据经验首先想到的是选中T1CNT,然后右击add to watch window,如图1中的①
图1
但是这个时候会在watch window里面看到如下:
图2
如果我们让程序run,会发现这个0x7401不变,按理说,程序要运行,还要用到T1CNT这个时候应该变化,为什么不变呢,后来仔细一分析原来0x7401是T1CNT的地址,这个时候很明显不对,不是我们想看T1CNT这个寄存器内部存储的值。
怎么办呢?其实正确的做法是点击图片1中的②,即view location at T1CNT on data(看其中的数据),那么就会出现图3中的情况。
图3
可以看到0x7401(即T1CNT)对应的数值是1处的值
(很明显0x7402、0x7403、0x7404分别对应的值分别是0000 、09C4、144E ),也即093F,细心的同学会发现根据图3画红的地方就会知
道这个是16进制显示,如果我们想要十进制显示,只需将红线处修改为下面的情况就可以了。
则数据就会变成2367,也即十六进制93F=十进制2367.
好啦!这就是如何看寄存器中数值的方法!Enjoy!!!
版权所有!!!Skzhanghui.。
在ccs3.3里边建立自己的第一个工程心得分享:
上图是建立好的工程目录,新建四个目录,Debug,include,lib,src目录,把头文件.h添加include里,将库文件添加进lib里,将源文件.c添加进src 里,接下来开始设置ccs3.3;
进入ccs中,将.c文件、lib文件和cmd文件分别添加进相应的目录里边,记住不要添加.h进include里边;
问题:在使用CCS3.3时,添加的头文件包含在Document里,怎么加到includ e里?
已经加载到Documents里的头文件,是由于你手动加载造成的,其实头文件不需要手动加载,在编译时,所有源文件中包含的头文件都会自动加载到Include中。
要想将Documents 中的头文件重新加载到Include中,方法:找到工程中的头文件,将其头文件名重命名一下,包含其头文件的源文件也要修改成包含重命名后的头文件,最后重新加载工程到CCS中,此时将提示你可以移除原来加载到Documents中的头文件。
经过上边的步骤即可以建立自己的工程了,根据自己的需要新建自己的.c和.h文件。
第3课CCS的常用操作作者:顾卫钢同学们,大家好,第3课终于姗姗来迟了,大家都等急了吧,实在不好意思。
今天我们要一起来学习的是CCS的一些常用操作,虽然只是一个课时的时间,但是通过本节课内容的学习,我相信您大概能够掌握用CCS对DSP进行开发时所需要的一些必备的知识。
中国有句古话叫“磨刀不误砍柴工”,如果您将CCS这把常用的利刃磨锋利了,那么我相信为您的DSP开发过程节省不少的工夫。
在上节课的学习过程中,其实大家应该已经学会了如何配置CCS Setup,如何在CCS中打开一个工程,如何在工程中移除或者添加文件,如何创建一个新的工程。
那么这些作为您已经具有的知识,我们不再重复讲述了,下面将为您介绍在CCS中如何编译程序,如何调试程序,如何统计代码执行的时间等内容。
今天所用到的工程“volume1.rar”在附件中,这个其实是CCS自带的一个例程,我们只是对其稍微做了些修改。
如果您目前还没有仿真器和开发板,那么只能做一些软仿真的工作,请将您的CCS Setup中的system configuration栏内的My System设置成“F2812 Device Simulator”。
如果您已经有了硬件工具,那么您可以根据各家公司相应的510仿真器的配置信息进行配置。
1.了解CCS的布局和结构上节课已经为大家介绍过目前CCS的各个版本了,现有的资料中很少对CCS3.3版本进行介绍的,所以我们今天主要针对CCS3.3给大家详细介绍,其他的版本您可以参看现有的一些资料,在我们网站上就有很多,大家可以自行下载研究。
首先让我们来了解一下CCS3.3打开时的界面,以及它的布局和结构。
在上面的图中我们可以通过各个工具栏或者窗口的名称就能大概知道这些工具或者区域的功能了。
菜单栏——和CCS所有功能相关的菜单都在这里面。
编译工具栏——编译程序时常用的一些工具。
调试工具栏——调试程序时常用的一些工具。
工程文件框——打开的工程所有文件会按类别放在这里,便于我们编程时在各个文件之间的切换。
目录一、CCS3.3的安装 (3)二、仿真器的安装 (8)三、驱动设置 (11)四、CCS3.3的常用操作 (15)1、创建新的工程 (15)2、打开已经存在的工程 (16)3、新建一个文件 (17)4、向工程添加文件 (18)5、移除工程中的文件 (19)6、给工程添加库文件 (19)7、查找变量 (20)8、替换变量 (21)9、查看源码 (21)10、生成可执行代码 (22)一、CCS3.3的安装1、找到CCS3.3安装程序所在的文件夹,双击setup.exe图标,如下图:图1—12、计算机屏幕显示CCS3.3软件安装欢迎界面,单击Next,如下图:图1-23、显示系统配置信息,单击Next,如下图:图1-34、同意CCS3.3软件安装许可协议信息,选择“I accept the License Agreement”单击Next,如下图:图1-45、安装类型的选择,选择“Typical Install”,单击Next,如下图:图1-5 6、选择安装路径F:\CCS3.3\,如下图:图1-6 7、在安装显示界面选择Install,如下图:图1-78、进入安装界面,如下图:图1-89、安装过程中跳出,如下图所示,单击“确定”:图1-9 10、安装成功,单击“Finish”,如下图:图1-10完成了CCS3.3软件的安装。
二、仿真器的安装CCS3.3安装路径为: F:\CCS3.3\。
在此路径下安装CCS3.3后在桌面上出现如图1-1所示图标的快捷方式。
图2-1SEED-XDS510PLUS 仿真器驱动安装图2-21、点击仿真器驱动的安装程序;2、单击Next,如下图:图2-33、选择“I accept the terms of the License agreement”单击Next,如下图:图2-44、更改安装路径,与Code Composer Studio软件的安装路径相同,如下图:图2-55、单击 Install命令;图2-6 6、单击finish命令;图2-7三、驱动设置设置Code Composer Studio软件: 在桌面上双击‘Setup CCStudio v3.3’图标图3-11、在‘Family Series’中选择“C64xx”。
CCS 使用图解1. CCS的布局和结构值得一提的是和工具栏的区别,工具栏的图如下面所示,我们将其和的工具栏比对之后发现中的探针工具已经不在的工具栏中了,这是因为中的断点就包含了探针功能2. 开始调试程序在编译完成之后,要来下载程序并进行功能调试。
“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源代码单步调试了,就是按一下,走一步的模式。
如何设置CCS3.3中的Probe和File I/O选项一、设置探针Probe point在CCS2.2中单独的菜单,在CCS3.3中和Breakpoint操作合并在一起了。
首先打开源程序:如volume.c ,找到 read_signals(input); 这行,然后双击这行灰色区域(或F9)设置断点1.设置断点2.点击Breakpoint Manager(或者Debug菜单——>Breakpoints,打开断点管理窗口)3.点击Action4. 在Action列表框中,选择Read data from file5.然后在下边的条目中选择文件名,如sine2.dat6. Wrap Around项目打勾,显示为True,让文件读到结尾时反绕到文件开头7. Start Address填写文件数据填充到内存的位置,Length填写数据长度8. 点击该属性页上端的Submit changes按钮,保存设置9. 此时,会出现一个类似播放器的窗口,可以显示和控制从文件读取数据的进度至此,仅仅完成了数据输入工作。
单步运行程序,可以看到输入缓冲区数据和输出缓冲区的变化,证实是从数据文件中读取的数据二、图形的显示使用Graph功能,可以更加直观地显示数据波形。
1.View菜单——>Graph——>Time/Frequency...,打开图形属性对话框2.缺省是单个图形的显示,Single Time,在起始地址处填写inp_buffer,采集缓冲区长度填写100,整个图显示的长度200,即,一张图读取两次文件才能显示完整。
点击OK,显示出图形窗口,右键点击清除显示。
3.F5运行程序,可以看到随着上述播放器的进度,内存数据变化,刷新图形,sine波形也会随之变化。
4.改变Single Time为Dual Time,在起始地址low处填写out_buffer,将输出波形显示在下端。
5.再次运行程序,可以看到输入、输出波形的同时显示6.实时刷新图形时,会发现输入、输出波形反相,这是不对的。
本人也初学,不对之处大家可指出,算作一个总结吧。
首先声明,觉得ccs3.3中Graph并不是什么量都可以观察的,原因是跟断点有关,反正对于我的仿真器XDS510的是如此。
即程序运行到断点处会有延时,对于普通信号可能没什么影响,但对于高频信号来说,这种延时往往是致命的,整个程序运行就明显不是想要的效果了。
此上为题外话,现说一下自己对Graph的理解。
我们在做一个比较大的项目时,往往习惯于把程序按不同的功能分成不同的功能模块,在调试的时候,可以单个模块的测试。
但单个模块往往只是算法层次的运算,我们想看看某个模块运行后的结果是否符合自己的要求,这时候示波器就显得无用武之地了,这个时候Graph的作用就显得尤为重要,相比较watch window 查看变量来说,它会给你做出最直观的显示。
(当然这两者结合看会更好)。
此处只介绍Time/Frequncy 的使用。
我们通常需要监控的有两类,分别为数组和变量,现分别说明之。
(忘了一点,在设置Time/Frequncy之前程序应该已经下载到目标板,RESET CPU ,RESTART,GO TO MAIN)
第一步,设置断点
在说到Time/Frequncy得设置之前,首先说下程序中需要做的事情,那就是添加断点。
本人喜欢在中断程序中添加断点(软中断,双击语句左侧可出现红色点),这样的好处是既可以观察到程序是否进入了中断,而且可以实现在断点处数据的更新。
(如果不设置断点Time/Frequncy是不可用的,这是尤其需要注意的!!!)
第二步,设置Time/Frequncy菜单(以常用的几个选项为例)
1.Display Type 显示类型,常用的两个选项分别为single time (单通道),Dual Time (双通道)。
选择单通道模式,则画面只显示一个图形,
选择双通道模式,画面显示两个通道的图形,也即分别可用来监控一个
或两个变量(数组)。
注:上面所说的是一个弹出画面,当然你可以实现多个弹出画面监控更
多的变量了!双通道的实现,能够为图形的对比提供很直观的现实,如
在生成Ualpha和Ubata时,可以很方便观察到两个图形相差Pi/2。
2.Graph Title 此处定义图形框的标题栏,比如,当你监控旋转矢量的时候,标题定义为Vout&Angle
3.Start Address 变量的地址,这是非常关键的一步!
分监控变量和数组来说明
A:当监控的为数组时,一般我们用数组来存变量的值,也就是自己做了
个变量的缓冲区,缓冲区的长度即为数组的长度,变量的值先存到数组
形式的缓冲区中。
这个时候Address 处写数组名就可以,学过C语言的大家都清楚,数组
名即为首地址是个地址常量,不同于指针。
B:当监控的为变量时,变量的地址如何获得呢?大家当然想到了取地址
符&,对就用它就可以了,&变量名,如我要监控的变量为out,那么此处
为什么呢?当然是&out了。
4. Page 此处基本都是Data(跟地址的分区有关,由于DSP采用哈佛结
构,地址映射为data , program和IO,与CMD文件对照理解可以了解
深入些)
5. 下面到了另一个比较重要的地方了,那就是Acquisition Buffer Size
这个要与第3点结合才能理解清楚,
A:当是数组时(数组存的是一个变量的不同时刻的值),设置为数组的
大小n,当然你也可以设置为1-数组大小n之间的数值,但很显然你会
丢失一部分数据了,我们不会这么做吧我觉得,呵呵。
B:当是变量时,那就是1了,而且我觉得只能是1(也就是当前的意思) 6. Display Data size
它的意思就是我们在画面上要显示的数据的个数,与横坐标的长短有关
了,你设
置的这个量越大则显示的数据越多,我一般设置为1000,即显示1000个点7.DSP Data Type
这个也是很重要的选项啊!你要是类型没选对,那显示的数就肯定不对了(我习惯与whatch window中变量一块看,这样能看出是否自己设置
的对否)
8.未说到得就默认吧,呵呵!点击ok,然后Animate,就可以了,图形上应该就有你要监控的变量了吧
没整两张图片还是不够好啊,呵呵以后吧。
ByZys2008 总结。