第十讲 程序调试及错误观察CC进阶教程



《第十讲 程序调试及错误观察CC进阶教程》由会员分享,可在线阅读,更多相关《第十讲 程序调试及错误观察CC进阶教程(36页珍藏版)》请在装配图网上搜索。
1、,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第十讲 程序调试及错误观察,CC,进阶,(,1,)使用断点(,Breakpoints,),和观察窗口(,Watch Window,),程序执行时常常需要,检查变量的值,1、File,/,Reload Program.,2、双击,Project View,窗中的,volume.c,(源文件),。,可以将窗口变大,看到更多的源代码。,3、将光标放在,dataIO();,4、,单击,(,Toggle Breakpoint),工具条,或按,F9。,选择空白区指示,断点已经设置(红色图标)。,5,选择,View,/
2、,Watch Window,,,在,CCS,窗口的右下角出现,单个区域,同时,这个区域显示观察变量的值。,6、,如果不在主程序,选择,Debug,/,Go Main,.,7,选择,Debug,/,Run,,,或按,F5,,,或按图标 。,8、,选择,Watch1,9 单击,Name,栏中表达式图标 ,键入要观察的变量,名,dataIO。,10、单击观察窗口中的白色区域,保存更改。,这个值将立即出现在下面的例子中。,11、,单击,(,Step Over),或按,F10,,,跨过对,dataIO(),的调用。,Step Into(F8),Step Over(F10),Step Out(Shift
3、F7),Run to Cursor(Ctrl F10),12,、,完成后,,,单击 (,Remove All Breakpoints),,再继续下面的学习。,(,2,)使用带结构的,Watch Window,除了观察简单变量的值,也可以观察一个结构的元素的值。,1、,选择,Watch1,2,、,单击,Name,栏中的表达式图标 ,键入要观察表达式名称,str,。,3、,单击观察窗口中的白色空间,保存更改。,数值将立即出现在下面的例子中。,4,、从,Reviewing the Source Code,调出,volume.c,中全局申明,、,并,初始化的类型为,PARMS,的结构,。,volume
4、.h,定义了,PARMS,的结构类型,5、单击,str,上的,+,号,,CCS,将结构中所有元素和元素值。,双击结构中元素的,Value,,编辑元素的值。,6、在,Watch window,中,Value,栏,更改变量的值。,注意,,Watch Window,中数值的更改,数值也变为红色,,表示已经手动修改。,7、选择,Watch Window,中,str,变量,按,Delete,键。其他变量同理。,8、选择,Debug,/,Breakpoints.,在,Breakpoints,中,单击,Delete All,,然后单击,OK.,(,3,)添加探针,Probe Point,(为了文件,I/O)
5、,可以添加探针(,Probe Point),,从,PC,机中的文件读数据。,按照下面的步骤 使用探针:,从主,PC,中传递输入数据,到算法所使用的目标的缓冲器中;,从目标的缓冲器中传递输出数据,到主,PC,中;,用数据修改窗口。,探针与断点的,相同之处是它们都可以停止程序的运行,,不同之处有如下几点:,(,1,)探针只是暂时中断程序的运行,当程序执行到探点时会自动更新与之相连接的窗口,然后自动继续运行程序。,(,2,)断点中断程序后,将更新所有打开的窗口,且只能通过人工干预的方法恢复程序继续运行。,(,3,)探针运行时,文件能够自动完成从,PC,机和目标处理器之间的输入、输出,而断点没有此功能
6、。,下面将学习如何使用,Probe Point,,,将,PC,文件中的内容,作为,测试数据,传递到目标,DSP,中。,另外,也可以使用断点修改所有打开的窗口。,1、,选择,File,/,Load Program,,,选中,volume1.out,,单击,Open,。,2、,双击,Project View,中的,volume.c。,3、,将光标放到主程序中,dataIO();,4、单击,(,Toggle Probe Point),。,选择空白区域指示探针已经设置(兰色图标),如果废止,选择区,此行为兰色显亮。,5,、,从,File,菜单,选择,File I/O,。,出现,File I/O,对话框
7、,因此可以选择输入输出文件。,6、,在,File Input,,,单击,Add File。,7、,浏览,volume1,工程文件夹,选中,sine.dat,,单击,Open,。,sine.dat,文件,是,正弦波的十六进制数值,出现,sine.dat,文件的控制窗口。再后,当运行程序时,可以在,数据文件中使用此窗口启动、停止、返回、或快进。,8、,在,File I/O,对话框,更改,Address,为,inp_buffer,,,Length,为,100,,,在,Wrap Around,中可以添加选中符号。,Address,指定从文件中来的数据将放在什么地方。,volume.c,申明,inp_b
8、uffer,为整数矩阵,BUFSIZE,(,volume.h,中定义为常量),Length,指定每次使用,Probe Point,时从数据文件中读多少,样本,。,这里取100,因为,volume.h,设置常量为,BUFSIZE(0 x64)。,Wrap Around,选择引起当其到达文件末尾时,,CCS,开始从文件开始读。,这允许数据文件被看作为连续的数据流。,9、,单击,Add Probe Point,。,出现,Break/Probe Points,对话框中的,Probe Points,10,、,在,Probe Point,列表中,显亮行为,:,VOLUME.C line 61-No Con
9、nection.,11、,在,Connect To,区域,中,,单击下箭头,从列表中,选中,sine.dat,12,、,单击,Replace,。,Probe Point,列表改向显示这个,Probe Point,连接,到,sine.dat,文件。,13,、,单击,OK,。,File I/O,对话框显示文件现在连接到,Probe Point,。,14,、,单击,OK,,,关闭,File I/O,对话框。,CCS,支持的,.dat,文件,的格式为:,定数数据格式起始地址页类型数据块大小,定数,固定为“,1651”,,,数据格式,可以选择“,1”,(十六进制整型)、“,2”,(十进制整型)、“,3”
10、,(十进制长整型)、“,4”,(十进制浮点型)。,起始地址,为存储的地址,,页类型,标示为程序或者数据,,1,为数据,2,为程序。,比如一个,.dat,文件:,1651 1 800 1 10,0 x0000,0 x0000,0 x0000,0 x0000,0 x0000,0 x0000,0 x0000,0 x0000,0 x0000,0 x0000,0 x0000,0 x0000,0 x0000,制作,.dat,文件的方法也很简单,可以用,VC+,或者,MATLAB,来实现。,matlab,向,dsp,传递,.dat,文件,x=2*sin(2*pi*100*m*dt);,M*i+m0,for
11、m=1:200;,if x(m)=0 y(m)=x(m);,else y(m)=4+x(m);,end;,end;,y=y*16384;,fid=fopen(input.dat,w);%,打开文件,w,是将此文件定义为可写的,,fid,是此文件的整数标示,fprintf(fid,1651 1 0 1 0n);%,输出文件头,文件头必须是,dsp,所能识别的,就如此句程序所设定的,fprintf(fid,0 x%xn,round(y);%,输出,y,数组,并写到与,fid,标示符相同的文件,即,yinput.dat,文件里。,round,是取,y,值的最近的数,即如果是,1.2,,就取,1,,如
12、果,1.6,,就取,2.,fclose(fid);%,关闭,fid,标示符的文件。,fid=fopen(input.dat,w);%,打开文件,属性设置为写,fprintf(fid,1651 1 0 1 0n);%,输出文件头,只有此文件头,dsp,芯片才能识别,fprintf(fid,0 x%xn,round(x);%,输出十六进制的,x,fclose(fid);%,关闭,这里,x,要转换成二进制补码,其在,CCS,中的使用方法可以有一下命令:,File-Data-Load,File-Data-Store,File-File I/O,(,4,)显示图形,在这个例子中,可以查看关于时间的信号图
13、形。,1、选择,View/Graph,/,Time/Frequency,。,2、在,Graph Property Dialog,对话框,更改,Graph Title,Start Address,Acquisition Buffer Size,Display Data Size,DSP Data Type,Autoscale,和,Maximum Y-value,属性,下拉或重新拉大对话框,查看所有属性。,3、单击,OK,。,出现,Input Buffer,的,Input,图形窗口。,4、右击,Input graph,窗口,从下拉菜单中选择,Clear Display。,5、再次选择,View/G
14、raph/Time/Frequency。,6、这次更改,Graph Title,为,Output,,Start Address,为,out_buffer,,所有其他设置都正确。,7、单击,OK,,显示输出图形,Output graph,窗口,右击,Output graph,窗口,从下拉菜单中选择,Clear Display。,激活程序和图形,至此,已经放置断点,传递主,PC,中的数据,到目标,DSP;,可暂停目标,DSP,,或继续目标,DSP,应用程序。但是,,Probe Point,不修改图形。本节建立断点(,breakpoint),,修改图形,使用,Animate,命令,遇到断点后继续自动
15、执行。,1、在,volume.c,窗口,将光标放在调用,dataIO,的行上。,2、单击 (,Toggle Breakpoint),,或按,F9,,选中空白区域,放置红色图标,代表断点。,将断点,breakpoin,和探测点,Probe Point,放在同一行,,这样传递数据和修改图形时目标只须暂停一次。,3、调整窗口,使得两个窗口都可以看见。,5、每遇到探测点,Probe Point,一次,,CCS,就从,sine.dat,文件,获得100个数值,并将它们写入,inp_buffer,地址。,4、单击 (,Animate),,或按,F12,运行程序。,Animate=Runhalt conti
16、nue,增益,Gain=1,注意:,DSP,在探测点暂停。,CCS,遇到探测点时,暂停目标。,因此,如果使用探测点,不能保证实时性。,这一阶段开发,你可以检测算法,然后可以使用,RTDX,和,DSP/BIOS,分析实时特性。,6、选择,Debug,/,Halt,,,退出程序运行。,剖析(,Profile,),在,CCS,中可以统计某段代码的执行时间。代码剖析不仅可以迅速地评估程序的性能以便优化代码,还可以统计其它的处理器事件,如执行跳转的次数、子程序调用的次数和中断次数等。,剖析时钟(,Profile Clock,),使用剖析时钟测量代码执行时间的方法如下:,(,1,)首先允许时钟,选择菜单,Profile-Enable Clock,。,(,2,)选择菜单,Profile-View Clock,打开时钟窗口。,(,3,)假定要测量,A,、,B,两条指令间的执行时间,那么在,B,至少,4,条指令的,C,处设置断点。,(,4,)在,A,处设置断点并运行到该处,双击时钟窗口使其清,0,,之后清除,A,断点。,(,5,)运行到,C,处并记下当前的,CLK,值,该值为,A,、,C,之间程序的运行
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。