实验 1 Code Composer Studio 入门实验1.docx
《实验 1 Code Composer Studio 入门实验1.docx》由会员分享,可在线阅读,更多相关《实验 1 Code Composer Studio 入门实验1.docx(14页珍藏版)》请在冰豆网上搜索。
实验1CodeComposerStudio入门实验1
实验1CodeComposerStudio入门实验
一.实验目的
1.熟悉CCS集成开发环境,掌握工程的生成方法;
2.熟悉ICETEK-DM6437-A实验环境;
3.掌握CCS集成开发环境的调试方法。
二.实验容
1.DSP源文件的建立;
2.DSP程序工程文件的建立;
3.学习使用CCS集成开发工具的调试工具。
三.实验设备
1.PC兼容机
2.WIN7操作系统
3.CodeComposerStudiov5
四.实验背景知识理
(一)、开发TMS3206437应用系统一般需要以下几个调试工具来完成
●软件集成开发环境(CodeComposerStudiov5):
完成系统的软件开发,进行软件和硬件仿真调试。
它也是硬件调试的辅助手段。
●开发系统(ICETEK-XDS100v2+):
实现硬件仿真调试时与硬件系统的通信,控制和读取硬件系统的状态和数据。
●评估模块(ICETEK-DM6437-A等):
提供软件运行和调试的平台和用户系统开发的参照。
CCS主要完成系统的软件开发和调试。
它提供一整套的程序编制、维护、编译、调试环境,能将汇编语言和C语言程序编译、生成COFF(公共目标文件)格式的可执行文件,并能将程序下载到目标DSP上运行调试。
用户系统的软件部分可以由CCS建立的工程文件进行管理。
CCS构成及接口
(二)、工程一般包含文件类型:
●源程序文件:
C语言或汇编语言文件(*.c或*.asm)
●头文件(*.h)
●命令文件(*.cmd)
●库文件(*.lib)
●中间文件(*.obj)
五.实验步骤
1.创建工程:
⑴创建新的工程文件:
选择菜单“View”的“ProjectExplorer”项,打开工程查看界面
在ProjectExplorer窗口的空白地方右键选择New->CCSProject:
在弹出的窗口中设置工程名称,以及工程的设备类型,此处新建工程名为
volume,Device型号为TMS320DM6437,点击Finish完成创建:
⑵在工程文件中添加程序文件:
创建工程后,在ProjectExplorer窗口可以查看该工程的各个文件(若Project
Explorer窗口被隐藏,则可以用菜单的View->ProjectExplorer调出):
双击某个窗口的标题可以使该窗口最大化,此时如要查看别的窗口,可以再次双击标题。
例如双击main.c之后:
再次双击main.c即可回到刚才的界面。
这里工程中的main.c和DM6437.cmd文件我们不需要,在main.c文件上右键选择Delete删除此文件。
在工程上右键选择AddFiles…
在弹出的窗口中找到C:
\ICETEK\ICETEK-DM6437-A\Lab0101-UseCCS目录:
按住“Ctrl”键,选择UseCCS.c、UseCCS.cmd、UseCCS.h和Sine.dat文件。
然后点击打开按钮
:
在弹出的窗口中选择文件导入的方式:
Copyfiles:
刚才选中的3个文件会被拷贝到workspace的刚才新建的工程文件夹中,即C:
\ICETEK\ICETEK-DM6437\volume目录下。
Linktofiles:
则文件不会被拷贝,以的形式把刚才的3个文件加入到工程中。
此时这3个文件还在原始的位置,即C:
\ICETEK\ICETEK-DM6437-A\Lab0101-UseCCS目录下。
此处选择Copyfiles,点击OK完成。
查看C:
\ICETEK\ICETEK-DM6437\volume目录,会发现文件已经被复制过来了:
上述仅仅添加了工程的各个文件,但我们要进行仿真调试的话,还需要一个目标配置文件(TargetConfigurationFile)。
在TargetConfigurations窗口中,找到我们已配置好的文件DM6437-Simulator.ccxml(若没有参见第二部分、第一章、四、3新建一个),点击右键->LinkFileToProject->vloume.
⑶进入仿真调试:
点击菜单栏下方的
图标,CCS开始自动编译,连接和下载程序。
最终的界面大致如下:
可以看到,新增了一个Debug窗口,CCS自动打开UseCCS.c,并且跳转到main函数。
2.编辑修改工程中的文件:
⑴查看工程文件:
点击菜单的View->ProjectExplorer调出工程查看窗口,展开工程各分支,可以看到“volume”工程中包含的各个文件。
可分为四类文件:
●.c源文件
●.cmd文件
●.h头文件
●.ccxml目标配置文件
⑵查看源文件:
双击工程管理窗中的“UseCCS.c”文件,可以查看程序容。
可以看到,用标准C语言编制的程序,大致分成几个功能块:
●头文件
描述标准库程序的调用规则和用户自定义数据、函数头、数据类型等。
具体包含哪一个头文件,需要根据程序中使用了哪些函数或数据而定。
比如:
如果程序中使用了printf函数,它是个标准C提供的输入/输出库函数,选中“printf”关键字,按Shift+F1会启动关于此关键字的帮助,在帮助信息中可发现其头函数为stdio.h,那么在此部分程序中需要增加一条语句:
#include“stdio.h”。
●工作变量定义
定义全局变量。
●子程序调用规则
这部分描述用户编制的子程序的调用规则。
也可以写到用户自己编制的.h文件中去。
主程序。
即main()函数。
它可分为两部分:
变量定义和初始化部分、主循环部分。
主循环部分完成程序的主要功能。
●用户自定义函数
这个程序是一个音频信号采集、处理输出的程序。
程序的主循环中调用自定义的函数read_signals来获得音频数据并存入输入缓存inp_buffer数组;再调用自定义函数write_buffer来处理音频数据并存入输出缓存;output_signals将输出缓冲区的数据送输出设备;最后调用标准C的显示信息的函数printf显示进度提示信息。
整个系统可以完成将输入的音频数据扩大volume倍后再输出的功能。
read_signals子程序中首先应有从外接AD设备获得音频数据的程序设计,但此例中由于未采用实际AD设备,就未写相应控制程序。
此例打算用读文件的方式获得数据,模拟代替实际的AD输入信号数据。
write_buffer子程序中首先将输入缓冲区的数据进行放大处理,即乘以系数volume,然后放入输出缓冲区。
output_signals函数完成将处理后的设备输出的功能,由于此例未具体操作硬件输出设备,所以函数中未写具体操作语句。
双击工程管理窗中的“UseCCS.h”文件,打开此文件显示,可以看到其中有主程序中要用到的一些宏定义如“BUF_SIZE”等。
UseCCS.cmd文件定义程序所放置的位置,此例中描述了ICETEK–VC6748-A评估板的存储器资源,指定了程序和数据在存中的位置。
比如:
它首先将ICETEK–VC6748-A评估板的可用存储器分为五个部分,每个区给定起始地址和长度(区域地址空间不允许重叠);然后指定经编译器编译后产生的各模块放到哪个区。
这些区域需要根据评估板硬件的具体情况来确定。
⑶编辑修改源文件及编译程序:
打开“UseCCS.c”,找到“main()”主函数,将语句“input=&inp_buffer[0];”最后的分号去掉,这样程序中就出现了一个语法错误;在工程上点击右键->BuildProject重新编译连接工程,可以发现编译信息窗口出现发现错误的提示,工程中出现错误的文件会出现红色的"x",
;双击打开出错的文件,可以看到该文件的最右侧有红色小方块的标示
,单击红色×处,CCS自动转到程序中出错的地方;将语句修改正确(将语句末尾的分号加上);重新编译;注意,重新编译时修改过的文件被CCS自动保存。
重新编译工程时,CCS会提示"程序重新编译过,是否重新下载?
"
我们点Yes,则CCS会把最新编译出的文件下载到DSP中。
⑷查看和修改工程文件的设置:
在工程上右键->Properties,打开工程属性设置窗口。
可以看到,在Build一项中,分为C6000Compiler(编译器)和C6000Linker(器),我们点中C6000Linker下的BasicOptions,则在右边可以设置程序的堆栈大小。
3.基本调试功能:
⑴下载程序:
执行Run->Load->LoadProgram,在随后打开的对话框中选择刚刚建立的C:
\ICETEK\ICETEK-DM6437-A\Debug\UseCCS.out文件,手动下载刚才编译生成的最终文件UseCCS.out。
⑵设置软件调试断点:
在项目浏览窗口中,双击UseCCS.c激活这个文件,移动光标到while(TRUE)行上,在行号前双击鼠标左键即在此处设置了一个断点。
⑶利用断点调试程序:
选择Run->Resume或按F8或点击Debug窗口中的运行程序,程序会自动停在while(TRUE)上。
①按F6单步执行到write_buffer()函数。
②再按F5,程序将转到write_buffer函数中运行。
③此时,为了返回主函数,按F7完成write_buffer函数的执行。
4.使用观察窗口:
⑴在volume.c中,用鼠标双击一个变量(比如num),再单击鼠标右键,选择“AddWatch
Expressions”,在弹出的窗口中点击ok,CCS将打开Watch窗口并显示选中的变量。
⑵在观察窗口中双击变量,则可以在这个窗口中改变变量的值。
⑶把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,调出断点观察窗口,可以看到我们刚才设置的断点:
②在Breakpoint窗口中,右键点击刚才设置的断点,选择Breakpointporperties:
做如下设置:
此时,已经配置好了断点和与之关联的事件.进一步的结果在下面实验中显示。
6.图形功能简介:
使用CCS的图形功能检验上一节的结果。
首先进行下面设置操作:
点击菜单Tools->Graph->SingleTime:
在弹出的图形窗口做如下设置:
7.点击Debug窗口的
运行程序,然后程序会停在程序40行。
8.退出CCS,关闭实验设备。
六.实验结果
通过对工程文件“volume”的编译、执行后得到结果的图形显示如下:
七.问题与思考
基本任务:
1.创建工程文件的关键,及对构成文件的理解。
2.软件调试过程中的主要工具及针对的问题。
提高任务:
3.在实例代码的基础上,思考实现实时信号处理的方法。