一、实验目的
1.掌握Code Composer Studio 5的安装和配置步骤过程;
2.了解DSP开发系统和计算机与目标系统的连接方法;
3.了解Code Composer Studio 5软件的操作环境和基本功能,了解TMS320C28xx软件发过程。
(1)学习创建工程和管理工程的方法。
(2)了解基本的编译和调能。
(3)学习使用观察窗口。
(4)了解图形功能的使用。
二、实验设备
PC兼容机一台,操作系统为WindowsXP或者以上版本,安装了CodeComposerStudiov5软件。
三、实验原理
开发TMS320C28xx应用系统一般需要以下几个调试工具来完成:
软件集成开发环境(CodeComposerStudio5.x):完成系统的软件开发,进行软件和硬件仿真调试。它也是硬件调试的辅助手段。
开发系统(ICETEK-XDS100V2+):实现硬件仿真调试时与硬件系统的通信,控制和读取硬件系统的状态和数据。CodeComposerStudio5.x主要完成系统的软件开发和调试。它提供一整套的程序编制、维护、编译、调试环境,能将汇编语言和C语言程序编译连接生成COFF(公共目标文件)格式的可执行文件,并能将程序下载到目标DSP上运行调试。用户系统的软件部分可以由CCS建立的工程文件进行管理,工程一般包含以下几种文件:
源程序文件:C语言或汇编语言文件(*.ASM或*.C)
头文件(*.H)
命令文件(*.CMD)
库文件(*.LIB,*.OBJ)
四、实验步骤
1.创建工程
⑴创建新的工程文件:选择菜单“View”的“ProjectExplorer”项,打开工程查看界面
在ProjectExplorer窗口的空白地方右键选择New->CCSProject:
在弹出的窗口中设置工程名称,以及工程的设备类型,这里我们新建工程volume,Device型号为TMS320F28335,点击Finish完成创建:
⑵在工程文件中添加程序文件:
当我们创建完工程后,在ProjectExplorer窗口可以查看该工程的各个文件(若ProjectExplorer窗口被隐藏,则可以用菜单的View->ProjectExplorer调出,或者把最大化的窗口还原):
这里工程中的main.c和28335_RAM_link.cmd文件我们不需要,在这2个文件上右键选择Delete删除。
在弹出的窗口中找到C:\ICETEK\F28335-V5.0\Lab101-useccs目录:
按住“Ctrl”键,选择volume.c、volume.h、volume.cmd和sine2.dat文件。然后点击打开按钮:
在弹出的窗口中选择文件导入的方式:
Copyfiles:刚才选中的3个文件会被拷贝到workspace的刚才新建的工程文件夹中,即C:\ICETEK\workspace-28335\volume目录下。Linktofiles:则文件不会被拷贝,以链接的形式把刚才的3个文件加入到工程中。此时这3个文件还在原始的位置,即C:\ICETEK\F28335-V5.0\Lab101-useccs目录下。这里我们先选择Copyfiles,点击OK完成。
上述仅仅添加了工程的各个文件,但我们要进行仿真调试的话,还需要一个目标配置文件(TargetConfigurationFile)。
在TargetConfigurations窗口中(若没有此窗口,可以用View菜单调出),找到我们已配置好的文件F28335-Simulator.ccxml(若没有参见第三部分、第一章、四、2新建一个),点击右键->LinkFileToProject->volume.
⑶进入仿真调试:
点击菜单栏下方的图标 ,CCS开始自动编译,连接和下载程序。最终的界面大致如下(可能会有所不同):
我们可以看到,新增了一个Debug窗口,ccs自动打开volume.c,并且跳转到main函数。
2.编辑修改工程中的文件:
⑴查看工程文件:
点击菜单的View->ProjectExplorer调出工程查看窗口,展开工程各分支,可以看到“volume”工程中包含的各个文件。可分为四类文件:
.c源文件
.cmd文件
.h头文件
.ccxml目标配置文件
⑵查看源文件:
*双击工程管理窗中的“volume.c”文件,可以查看程序内容。可以看到,用标准C语言编制的程序,大致分成几个功能块:
头文件。描述标准库程序的调用规则和用户自定义数据、函数头、数据类型等。
⑶编辑修改源文件及编译程序:打开“volume.c”,找到“main()”主函数,将语句“input=inp_buffer;”最后的分号去掉,这样程序中就出现了一个语法错误;
重新编译工程时,CCS会提示"程序重新编译过,是否重新下载?"
我们点Yes,则ccs会把最新编译出的文件下载到DSP中。
⑷查看和修改工程文件的设置:
在工程上右键->Properties,打开工程属性设置窗口。
可以看到,在Build一项中,分为C2000Compiler C2000Linker(链接器),我们点中C2000Linker下的BasicOptions,则在右边可以设置程序的堆栈大小。
3.基本调试功能:
⑴下载程序:执行Run->Load->LoadProgram,在随后打开的对话框中选择刚刚建立的C:\ICETEK\workspace-28335\volume\Debug\volume.out文件,手动下载刚才编译生成的最终文件volume.out。
⑵设置软件调试断点:在项目浏览窗口中,双击volume.c激活这个文件,移动光标到
while(TRUE)行上,在行号前双击鼠标左键即在此处设置了一个断点。或者在该行右键->Breakpoint->Breakpoint:
⑶利用断点调试程序:选择Run->Resume或按F8或点击Debug窗口中的 运行程序,程序会自动停在while(TRUE)上。
①按F6单步执行到write_buffer()函数。
②再按F5,程序将转到write_buffer函数中运行。
③此时,为了返回主函数,按F7完成write_buffer函数的执行。
4.使用观察窗口:
⑴在volume.c中,用鼠标双击一个变量(比如num),再单击鼠标右键,选择“AddWatchExpressions”,在弹出的窗口中点击ok,CCS将打开Watch窗口并显示选中的变量。
⑵在观察窗口中单击变量值(Value栏),此时Value变为可编辑状态,我们可以输入一个值,然后回车,即可改变变量的值。
⑶把str变量加到观察窗口中,点击变量左边的,观察窗口可以展开结构变量,并且显示结构变量的每个元素的值。
⑷把str变量加到观察窗口中;执行程序进入write_buffer函数,此时num变量超出了作用范围,可以看到num变量无法查看了:
5.文件输入/输出
下面介绍如何从PC机上加载数据到DSP上。用于利用已知的数据流测试算法。在完成下面的操作以前,先介绍CodeComposerStudio的断点,断点允许用户在指定位置提取/注入数据。断点可以设置在程序的任何位置,当程序运行到断点时,相关的事件将会被触发,当事件结束后,程序会继续执行。在这一节里,断点触发的事件是:从PC机存储的数据文件中的一段数据加载到DSP的缓冲区中。
(1)在真实的系统中,read_signals函数用于读取A/D模块的数据并放到DSP缓冲区中。在这里,代替A/D模块完成这个工作的是断点。当执行到函数read_signals时,断点完成这个工作。
①在程序行read_signals(input);上单击鼠标右键选择“Breakpoint(CodecomposerStudio)->Breakpoint”,设置软件断点。点击CCS菜单的View->Breakpoints,调出断点观察窗口,可以看到我们刚才设置的断点。若我们设置了多个断点,则通过行号来区分,例如我们这个断点是line40,而line38则是刚才我们设置的while(TRUE)行的断点:
②在Breakpoint窗口中,右键点击刚才设置的断点,选择Breakpointporperties:做如下设置:
此时,已经配置好了断点和与之关联的事件,进一步的结果在下面实验中显示。
6.图形功能简介:
下面我们使用CCS的图形功能检验上一节的结果。首先进行下面设置操作:点击菜单Tools->Graph->SingleTime:
在弹出的图形窗口做如下设置,然后点击OK:
此时我们打开了图形观察窗口:
7.观察图形观察窗口SingleTime的显示。
继续运行程序,程序会再次停在断点处,SingleTime里面的波形有变化,且控制台会有输出。
8.退出CCS,关闭实验设备。
五.实验结果
通过对工程文件“volume”的编译、执行后得到结果的图形显示如下: