ccs的基本操作 下载本文

实验一 CCS基本操作实验

1.1 实验目的

? 新建一个工程(project) ■向工程中添加文件 ■复习代码 ? 编译和运行程序

■利用编译选择对话框改变编译选择 ■使用编译器确定代码错误 ? 基本调试技术 ■断点(breakpoints)

■观察窗口(watch windows) ■文件I/O

1.2 实验内容

开发一个简单的程序 ? 学习如何建立简单程序 ? 学习基本调试技术

? 理解CCS、如何开发更容易 工程名称:volume1

建立新工程

任务:建立CCS工程,向工程中添加源代码文件和库。

建立一个新工程,并向工程中添加源代码文件和库。 1、在c:\\ti\\myprojects中建立文件夹 volume1 (如果CCS安装在其他d:\\ti ,则在d:\\ti\\myprojects中。)

2、将c:\\ti\\tutorial\\target\\volume1拷贝到c:\\ti\\myprojects\\ volume1 。

3、从在CCS 中的Project 菜单,选择 New。 4、在Project Name域中,键入volume1

5.在Location区域中,浏览步骤1所建立的工作文件夹。 6.在Project Type 域中,选择Executable (.out)。 7.在Target域中,选择CCS配置的目标,并单击完成。

向工程中添加文件

1、从Project/Add Files to Project,选择 volume.c ,单击 Open.(或右击Project View图标,选择Add Files to Project ) 2.选择Project/Add Files to Project, 在Files of type对话框中,选择Asm Source Files (*.a*, *.s*)。选择vectors.asm 和 load.asm,单击Open。

3.选择 Project/Add Files to Project, 在Files of type对话框中选择 Linker Command File (*.cmd) ,选择volume.cmd,单击Open。 (这个文件将片段映射到存储器中) 4.选择Project/Add Files to Project, 到编辑器库文件夹 (C:\\ti\\c5400\\cgtools\\lib),在Files of type对话框中选择Object and Library Files (*.o*, *.lib)。选择rts.lib文件,单击Open。这个库提供目标DSP 运行时间支持(runtime-support)。

5. Project View窗口,右击volume1.pjt,选择Scan All Dependencies. volume.h将出现在Project View窗中的Libraries文件夹。头文件不要手动添加,自动到:当前目录(源文件所在)或预编译器的“include Search Path (-i)”option所指定的位置。显示头文件:Project—>show Dependencies.

6、 单击 volume1.pjt上的 + 号,展开工程列表。这个列表称为Project View.

查看源程序代码

双击Project View中 volume.c文件,CCS窗口的右半窗中出现C源代码。 volume.c 简介:

1、主程序打印一个信息,然后进入无限循环。在这个循环中,调用dataIO和进程函数。 2、在输入缓冲区中,处理函数将每个值乘以增益,并将结果放到输出缓冲区。它也调用汇编加载过程,此过程消耗基于将processingLoad值传递到过程的指令周期。

3、例子中的dataIO函数不作任何处理,仅仅返回。除了使用C代码执行I/O,我们将使用CCS中的Probe Point,从主机的文件中读取数据到 inp_buffer区域。 编译与运行程序

1.选择Project/Rebuild All或单击 (Rebuild All)菜单条按钮, CCS重新进行编辑、汇编、连接工程里的所有文件。这个处理的有关信息在窗口低部一个小框里显示。

2.默认时,.out文件编译到位于当前工程文件夹中的调试(debug)目录中,也可以通过CCS工具条选择一个存储目录。 3.选择File/Load Program.选中volume1.out,并按Open。(c:\\ti\\myprojects\\volume1\\Debug\\ 文件夹中。)CCS将程序装载到目标DSP上,打开显示程序反汇编指令的Disassembly窗口。 4.选择View/Mixed Source/ASM.,这样可以同时查看C源程序和产生的汇编代码。 5.在混合窗口单击汇编指令(单击有效指令,而不是指令的地址或指令所传递的区域),单击F1,CCS可以寻找此指令的帮助。这是学习指令的很好的方法。 6.选择Debug/Go Main。从主程序开始执行。 7.选择Debug/Run或单击 (Run)按钮。 8.选择Debug/ Halt,退出程序运行。

9.从View菜单,选择Mixed Source/ASM.。允许无须汇编而查看C代码,所以你可以完成

下一个任务:更改程序的选择、定位语法错误。 在前一节,含在预处理器命令中的程序的部分(#ifdef 和 #endif)不执行,因为FILEIO未定义。这一节,你可以使用CCS设置预处理器选择,学会并纠正语法错误。 更改程序选择,定位语法错误 1.选择Project/Build Options. 2.在Build Options窗口的Compiler上,选择Category列表的Preprocessor,在Define Symbols区域键入FILEIO,按Tab键。

3.单击OK,保存新的选择设置。

4.选择Project/Rebuild All或单击 (Rebuild All)按钮。只要工程选择更改,则必须重新编译所有的文件。

5. 编译信息显示,程序包含编辑错误。单击Build,你可以看见语法错误信息。

6、 双击描述语法错误位置的红色文字(第68行)注意volume.c源程序已打开,且光标位于下面的行上:processing(input, output);

7、语法错误位于光标位置的上一行(丢了个分号),如:puts(\ 8.注意, Edit窗口标题栏中的文件名附近出现星号(*),指示源程序已经被修改,文件保存后,星号消失。

9.选择File/Save,或按Ctrl+S,将更改保存到volume.c. 10.选择Project/Build,或 (Incremental Build)单击工具条,CCS重新编译已经修改的文件。 11.选择File/Load Program, 选中volume1.out.

12.选择Debug/Go Main,从主函数开始执行。由 执行可以暂停。 13.选择Debug/Run或 (Run)单击菜单条。 14.选择 Debug/Halt,退出程序运行。

使用断点(Breakpoints)和观察窗口(Watch Window) 程序执行时常常需要检查变量的值 1、File/Reload Program

2、双击Project View 窗中的volume.c。可以将窗口变大,看到更多的源代码。 3、将光标放在 dataIO( );

4、单击 (Toggle Breakpoint)工具条,或按F9。 选择空白区指示 断点已经设置(红色图标)。

5.选择View/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 F7)

Run to Cursor (Ctrl F10)

12、完成后,单击 (Remove All Breakpoints),再继续下面的学习。 使用带结构的Watch Window

除了观察简单变量的值,也可以观察一个结构的元素的值。 1、选择Watch1

2、单击Name栏中的表达式图标 ,键入要观察表达式名称str。

3、单击观察窗口中的白色空间,保存更改。数值将立即出现在下面的例子中。

4、从Reviewing the Source Code调出 volume.c中全局申明、并初始化的类型为PARMS的结构。volume.h定义了PARMS的结构类型

5、单击str上的+号,CCS将结构中所有元素和元素值。双击结构中元素的Value,编辑元素的值。

6、在Watch window 中Value栏,更改变量的值。 注意,Watch Window中数值的更改,数值也变为红色,表示已经手动修改。

7、选择Watch Window 中str变量,按Delete 键。其他变量同理。

8、选择Debug/Breakpoints. 在Breakpoints中,单击Delete All,然后单击OK. 添加探针Probe Point (为了文件I/O) 可以添加探针(Probe Point),从PC机中的文件读数据。 按照下面的步骤 使用探针:

?从主PC中传递输入数据,到算法所使用的目标的缓冲器中; ?从目标的缓冲器中传递输出数据,到主PC中; ?用数据修改窗口。

下面将学习如何使用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对话框,因此可以选择输入输出文件。

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_buffer为整数矩阵BUFSIZE(volume.h中定义为常量) ? Length指定每次使用Probe Point 时从数据文件中读多少样本。

这里取100,因为volume.h 设置常量为BUFSIZE (0x64)。 ? Wrap Around选择引起当其到达文件末尾时,CCS开始从文件开始读。 这允许数据文件被看作为连续的数据流。

9、单击Add Probe Point。出现 Break/Probe Points对话框中的 Probe Points

10、在 Probe Point列表中,显亮行为: VOLUME.C line 61 --> No

Connection.

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对话框。 显示图形

在这个例子中,可以查看关于时间的信号图形。 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/Graph/ 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命令,遇到断点后继续自动执行。

1、 在volume.c窗口,将光标放在调用dataIO的行上。 2、单击

(Toggle Breakpoint),或按F9,选中空白区域放置红色图标,代表断点。

将断点breakpoin和探测点Probe Point放在同一行,这样传递数据和修改图形时目标只须暂停一次。

3、调整窗口,使得两个窗口都可以看见。 4、单击

(Animate),或按F12运行程序。

Animate=Run—halt — continue

5、每遇到探测点Probe Point一次,CCS就从sine.dat文件获得100个数值,并将它们写入inp_buffer地址。

增益Gain=1 6、选择Debug/Halt,退出程序运行。

注意:DSP 在探测点暂停。CCS遇到探测点时,暂停目标。因此,如果使用探测点,不能保证实时性。这一阶段开发,你可以检测算法,然后可以使用RTDX和DSP/BIOS分析实时特性。

调整增益Gain

处理函数将输入缓冲器中的每个值乘以增益,并将结果放在输出缓冲器。在while循环中执行下面的语句。

1.*output++ = *input++ * gain;

这个语句将inp_buffer中的数值乘以增益,并结果放在out_buffer中相映的位置。增益初始化设置在MINGAIN上,定义在头文件volume.h中。如果修改输出,则需要修改增益。办法之一是,使用观察变量:

1、选择View/Watch Window,选中Watch1 。 2、单击Name栏中的表达式图标

,键入gain ,作为观察的变量。

3、单击观察窗口中的白色空间,保存更改。在下面的例子中将立即出现这个数值。

4、如果程序已经暂停,单击

(Animate),重新启动程序, 观察前面建立的输入输

出图形。

5、从Debug菜单,选中Halt。 6、在观察窗口,选中增益值(1),将其改为10。 7、 从Debug菜单,选中 Animate 。

注意更改 Output graph 中信号幅度,反映在下面的例子中的增益。

增益Gain=10

8、从Debug菜单,选择Halt。 9、从Project菜单,选择Close。 10、关闭所有的其他窗口和图形。 至此,开发一个简单的程序全部结束。