2012实验2 ccs使用和调试实验volume_第1页
2012实验2 ccs使用和调试实验volume_第2页
2012实验2 ccs使用和调试实验volume_第3页
2012实验2 ccs使用和调试实验volume_第4页
2012实验2 ccs使用和调试实验volume_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验2 CCS使用和调试实验一、实验目的1掌握利用CCS建立工程、编译与调试代码的基本过程;2掌握基本调试技术: 如观察窗、图形(断点)、文件I/O(断点)、剖析等。(可直接在simulator下实验)1二、实验内容1.建立工程test1.pjt,然后分别建立源程序(test1.c或.asm)、头文件(test1.h)和连接命令文件(test1.cmd)。并编译、下载和运行程序。(此处为了方便起见,直接将C:CCStudio_v3.3tutorialsim55xxvolume1下的例程volume.c拷贝到test1.c,将volume.h拷贝到test1.h,将volume.cmd拷贝到te

2、st1.cmd。向分别工程中添加源程序、头文件、连接命令文件(.cmd)以及库文件(.lib) 。2二、实验内容 同时将C:CCStudio_v3.3C5500cgtoolslib中C55x DSP的C语言运行支持库文件rts55.lib(存储器为Small Memory Model,注意不是rts55x.lib。本课程其它工程添加的运行支持库函数均为rts55x.lib,存储器为Large Memory Model)添加到工程中。注意:编译选择中,大存储器模式(-ml)对应rts55x.lib,小存储器模式对应rts55.lib32.利用CCS工具调试程序(1) 观察计算结果的数据(2) 观

3、察数据的图形(断点)(3) 观察存储器中的数据(4) 利用断点进行文件I/O,实现外部数据和DSP存储区的交换(5) 利用剖析工具分析程序各段执行的时间4 查看源程序代码 volume.c 简介:主程序打印一个信息,然后进入无限循环。在这个循环中,调用dataIO和进程函数。处理函数将输入缓冲区每个值乘以增益,并将结果放到输出缓冲区。它也调用汇编加载过程,此过程消耗基于将processingLoad值传递到过程的指令周期。例子中的dataIO函数不作任何处理,仅仅返回。除了使用C代码执行I/O,我们将使用CCS中的断点操作进行文件I/O,读取主机的文件中数据到 inp_buffer区域。52.

4、1 编译与运行程序 .选择Project/Rebuild All或单击(Rebuild All)菜单条按钮,CCS重新进行编辑、汇编、连接工程里的所有文件。 这个处理的有关信息在窗口底部一个小框里显示。 .默认时,.out文件编译到位于当前工程文件夹中的调试(debug)目录中;也可以通过CCS工具条选择一个存储目录。 .选择File/Load Program.选中volume1.out,并按Open。 (C:CCStudio_v3.3MyProjectsvolume1Debug文件夹中。) CCS将程序装载到目标DSP上,打开显示程序反汇编指令的 Disassembly窗口。 6选择View

5、/Mixed Source/ASM. 这样可以同时查看C源程序和产生的汇编代码。 在混合窗口单击汇编指令(单击有效指令,而不是指令的地址或指令所传递的区域),单击F1,CCS可以寻找此指令的帮助。 这是学习指令的很好的方法。 选择Debug/Go Main。程序指针跳转到主程序的入口地址main开始执行。 选择Debug/Run或单击(Run)按钮。 选择Debug/ Halt,退出程序运行。 7.从View菜单,选择Mixed Source/ASM.。 允许无须汇编而查看C代码,所以你可以完成下一个任务: 更改程序的选择、定位语法错误。 82.2 更改程序编译选项,查找语法错误 9编译选项(

6、build option)的常用设置 要对工程进行正确的编译连接,必须对build option进行正确的设置。单击菜单Project下Build Option选项,出现编译选择对话框。 1.CompilerPreprocessorInclude Search Path 用来定义include 文件的搜索路径,可以使用绝对路径或相对路径来进行自定义。如C:CCStudio_v3.3C5500cgtoolsinclude 2.CompilerAdvancedMemory Model 大存储器模式(-ml)对应rts55x.lib,小存储器模式对应rts55.lib10编译选项(build opt

7、ion)的常用设置3.LinkerBasicInclude Libraries(-l)用来定义链接库文件,如输入rts55x.lib、csl5502x.lib、55xdsp.lib、55ximagex.lib库等。4.LinkerBasicOutput (-o)用来定义规定可执行文件(.out)的路径和名称5.LinkerBasicMap (-m)用来定义规定存储器映射文件(.map)的路径和名称11 前面含在预处理器命令中的程序的部分 (#ifdef 和 #endif)没有被执行,因为FILEIO未定义。下面可以使用CCS设置预处理器选项,学会并纠正语法错误。 选择菜单Project下Bui

8、ld Options选项在Build Options窗口的Compiler上,选择Category列表的Preprocessor,在Define Symbols区域键入FILEIO,按Tab键。 更改程序编译选项,查找语法错误 12Build Options for Volume1.pjt13单击OK,保存新的选择设置。 选择Project菜单下Rebuild All选项,或单击 (Rebuild All)按钮。 只要工程选择更改,则必须重新编译所有的文件。 . 编译信息显示,程序包含编辑错误。 单击Build,可以看见语法错误信息。146. 双击描述语法错误位置 注意volume.c源程序已

9、打开,且光标位于下面的行上: processing(input, output); 7.语法 错误位于光标位置的上一行(丢了个分号),如: puts(begin processing); 8注意, Edit窗口标题栏中的文件名附近出现星号(*),指示 源程序已经被修改,文件保存后,星号消失。 15使用断点(Breakpoints)观察窗口(Watch Window) 为了程序执行时常常需要检查变量的值 2.3 断点和观察窗16 断点和观察窗1.File/Reload Program. 2.双击Project View 窗中的volume.c。 可以将窗口变大,看到更多的源代码。 3.将光标放在

10、 dataIO( ); 4.单击 (Toggle Breakpoint)工具条,或按F9。 红色图标指示断点已经设置175选择View/Watch Window,在CCS窗口的右下角出现观察窗,显示观察变量的值。缺省时,选中Watch Locals,显示正在执行的函数的本地变量。 6.如果不在主程序,选择Debug/Go Main,然后运行程序。 7. 选择Watch1 8 .单击Name栏中表达式图标 ,键入要观察的变量名dataIO。189.单击观察窗口中的白色区域,保存更改。 这个值将立即出现在下面的例子中。1910 .单击 (Step Over)或按F10,跨过对dataIO()的调用

11、。 Step Into (F11)Step Over (F10)Step Out (Shift +F11) Run to Cursor (Ctrl +F10) 11.完成后,单击 (Remove All Breakpoints),再继续下面的学习。202.4 使用带结构的Watch Window除了观察简单变量的值,也可以观察一个结构的元素的值。 211.选择Watch1 2.单击Name栏中的表达式图标 ,键入要观察表达式名称str。3.单击观察窗口中的白色空间,保存更改。 数值将立即出现在下面的例子中。 观察步骤: 225.单击str上的+号,CCS将结构中所有元素和元素值。 双击结构中元

12、素的Value,编辑元素的值。 6.在Watch window 中Value栏,更改变量的值。 注意,Watch Window中数值的更改,数值也变为红色,表示已经手动修改。 7.选择Watch Window 中str变量,按Delete 键。其他变量同理。8.选择Debug/Breakpoints. 在Breakpoints中,单击Delete All,然后单击OK. 232.5 文件I/O(利用断点) 可以利用断点从PC机中的文件向DSP中读数据。24断点作用 断点可以中断程序执行,更新所有窗口。 断点可以从DSP的存储器中将数据传递输到PC文件中; 断点可以将PC文件数据读到DSP的存储

13、器中。251.选择File/Load Program,选中volume1.out,单击Open。2.双击Project View中的 volume.c 。3.将光标放到主程序中: dataIO(); 4.单击 (Toggle Breakpoint) 。出现红点图标表示断点已经设置。5.从Debug菜单,选择Breakpoints。利用断点将外部文件输入到DSP存储器中266.在Breakpoints对话框中,点击“Action”下的内容Halt Target,在出现的下拉菜单中选中“Read Data from File”。 7.在出现的Parameter对话框,选中File栏空白处,浏览vo

14、lume1工程文件夹,选中sine.dat,单击Open。 sine.dat 文件是正弦波的十六进制数值27 出现sine.dat文件的控制窗口。再后,当运行程序时,可以在数据文件中使用此窗口启动、停止、返回、或快进。 8.在Wrap Around中选中,即True;更改Start Address 为inp_buffer,PAGE为DATA,Length为100。 28Address指定从文件中读取的数据将放在什么地方。 volume.c申明 inp_buffer为整数矩阵BUFSIZE(volume.h中定义) Length指定每次从数据文件中读多少样本。 这里取100,因为volume.h

15、 设置常量为BUFSIZE (0 x64)。Wrap Around选择引起当其到达文件末尾时,CCS开始从文件开 始读。这样允许数据文件被看作为连续的数据流。29 CCS数据文件格式:头信息+数据头信息:MagicNumber Format StartingAddress PageNum Length其中:MagicNumber:固定为1651Format:14,数据存储格式,分别对应: 十六进制数、整数、长整数、浮点数中的一种StartingAddress: 数据存放的起始地址PageNum: 页码,指明数据所在的数据页Length:数据的长度,以word来表示头信息一般缺省为1651 1

16、0 0 0。I/O文件的格式(如:sine.dat)302.6 观察数值的图形 在这个例子中,可以查看关于时间的信号图形。 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属性,下拉或重新拉大对话框,查看所有属性。31Graph Property Dialog对话框324.右击Input g

17、raph窗口,从下拉菜单中选择Clear Display。5.再次选择View/Graph/ Time/Frequency。6.这次更改Graph Title为Output,Start Address 为out_buffer,所有其他设置都正确。7.单击OK,显示输出图形Output graph窗口,右击Output graph 窗口,从下拉菜单中选择Clear Display。3.单击OK。 出现Input Buffer的Input图形窗口。332.7 动态执行程序和显示图形 至此,已经放置断点,将 PC中的数据传输到目标DSP;可暂停目标DSP,或继续目标DSP 应用程序。 本节建立断点

18、(breakpoint),修改图形,使用Animate命令,遇到断点后继续自动执行。1. 在volume.c窗口,将光标放在调用dataIO的行上。2.单击 (Toggle Breakpoint),或按F9,选中空白区域放置红色图标,代表断点。343.调整窗口,使得两个窗口都可以看见。5.每遇到断点一次,CCS就从sine.dat文件获得100个数值,并将它们写入inp_buffer地址。4.单击 (Animate),或按F5运行程序。 Animate=Runhalt continue35 增益Gain=1362.8 调整增益Gain 处理函数将输入缓冲器中的每个值乘以增益,并将结果放在输出缓冲器。在while循环中执行下面的语句。 1.*output+ = *input+ * gain; 这个语句将inp_buffer中的数值乘以增益,并结果放在out_buffer中相应的位置。增益初始化设置在MINGAIN上,在头文件volume.h定义中。如果修改输出,则需要修改增益。办法之一是,修改观查窗的变量数值:371.选择菜单View下Watch Window选项,选中Watch1 。2.单击Name栏中的表达式图标 ,键入观察的变量gain 。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论