CCS中文教程
- 格式:pdf
- 大小:469.14 KB
- 文档页数:34
Code Composer Studio 教程(一)
—开发一个简单的程序
步骤1:创建一个新项目
1) 创建一个工作文件夹,D:\han\study1。
2) 进入CCS环境中,并编译源文件:
File ——> New ——> Source File ,
编译完毕,分别存为hello.c,hello.cmd ,vectors.asm,hello.h。
3) project ——> New,保存于D:\han\study1目录下,项目名称为myhello.mak。
步骤2:在项目中加载源文件
1) project ——> Add File to project ,分别选择hello.c 、hello.cmd 、vectors.asm
和Ti\C6000\cgtools\lib目录下的rts6201.lib 。
步骤3:浏览源代码
1) 双击,打开hello.c,浏览源代码。
步骤4:建立并运行程序
1) project ——> Rebuild All 。在此项目中CCS编译、汇编,并链接所有文件。
生成myhello.out、hello.obj和hello.asm文件。
2) File ——> Load Program,选择myhello.out 。这样CCS将此程序加载入目标
板DSP中,并同时打开此程序的反汇编文件。
3) Debug ——> Run ,运行程序,输出结果hello world 。
步骤5:改变程序设置并修改语法错误
在以上步骤中,处理器指令#ifdef 和#endif没有运行,因为FILEIO没有定义。
在此,设置CCS处理器设置选择,以运行之,并找出、更正其中的错误。
1) project ——> Options 。
2) 在Category列表中点击preprocessor,并在Define symbol框中输入FILEIO。
3) OK,保存新的选项控制设置。
4) Project ——> rebuild All 。
1
注意:无论何时,项目选项(project options)发生改变,都必须重新建立(rebuild
All)所有文件。
5) 提示:有错误,是否继续链接?取消,改正错误并保存。
6) project ——> Build 。
注意:CCS将重新建立(Buill)更改过数据的文件。
步骤6:使用断点和观察窗口
当你正在开发和测试程序时,经常需要检查程序执行期间的变化值。在此,使
用断点和观察窗口来观察这些值。在到达断点后,也可以使用单步执行命令。
1) File ——> Reload Program 。
2) 双击hello.c。
3) 将光标放置在fprintf(fptr,“%s”,scanStr);行上。
4) 点击“手形图案”(Toggle Breakpoint)或F9。此行此时呈高亮色(紫色亮条)。
5) View ——> Watch window 。
6) 在Watch window窗口中右击,选择Insert New Expression。
7) 在消息框中输入*scanStr,OK。
8) 此时在 Watch window窗口中*scanStr为尚未定义。因为,当前程序还未在
main()函数的局域变化处运行。
9) Debug ——> Run 或F5。
10) 在提示框中输入goodbye,OK。此时,在Watch window中,为*scanStr=goodbye。
而程序运行并停止在断点处(黄色亮条),并在结果窗口中显示goodbye。
11) 点击step over 图标或F10来单步调用fpritf()。
12) step into(F8)、step over(F10)、step out(F7)、Run to Cursor(Ctrl F10)。
13) 点击运行(Run)或F5,完成程序的运行。
步骤7:用Watch window观察指令
1) 在Watch window窗口中右击,选择Insert New Expression项。
2) 在提示框中输入str,OK。则在Watch window中出现+str={…}。“+”表示此
乃一指令,此指令为PARMS类型,并在hello.c中有所描述。此指令类型在
hello.h中定义。
2
3) 点击“+”,则出现所有元素:
-str={…}
Beta=2934
EchoPower=9432
ErrorPower=213
Ratio=9432
+Link=0x80000174
4) 双击其中任意一个元素行,则打开一个元素编辑窗口,改变元素值,则Watch
window中值亦随之改变。
5) 注意:操作完毕,必须从Watch window中移走指令str,并关闭Watch window,
撤去断点。
步骤8:代码执行时间的性能分析
在此,使用CCS的描述特性来获得有关标准puts()函数的运行统计,并使之与
使用DSP/BIOS API来显示hello world信息相比较。
1) File ——> Reload Program。
2) Profiler ——> Enable clock。此时钟计数指令周期,其必须对profiler-points使
能来计数指令周期。
3) 打开hello.c。
4) View ——> Mixed Source/ASM。在C源代码下出现此指令的汇编指令。
5) 将光标置于指令行puts(“hello world!\n”); ,并点击时钟符号(Toggle
Profiler-point),则此行C代码与其下第一行汇编指令变为绿色亮条,其下一
条指令亦如此。
6) Profiler ——> View Statistics。在右下角出现一显示框,以显示对测试点
(profiler-point)的统计。
7) 点击运行符号或F5,运行程序,在弹出的提示框中输入字符串“goodbye”,
OK。
8) 观察小窗口中数字的变化:注意第二个profiler-point的周期数,其周期数应在
1600-1700间,此乃运行puts()所需要的周期数。
3
Code Composer Studio 教程(二)
——开发一个DSP/BIOS程序
在此教程中,通过使用DSP/BIOS来优化hello程序。此教程需要一个目标板,而
且不可以用一软件模拟器来实现。同时,此教程需要CCS的DSP/BIOS部分。
步骤1:创建一个配置文件
另一种实现hello程序的方法是使用配有DSP/BIOS API的LOG模块(API——
应用程序接口)。你可以在加载入的程序中使用DSP/BIOS来提供基本的运行时间服
务。API模块使实时DSPs进行最优化。不同于C库调用如puts(),DSP/BIOS在不暂
停目标硬件的情况下进行实时分析。另外,API代码占用更小的空间,同时比C标准
的I/O运行更快。一个程序可使用一个或更多的DSP/BIOS模块。
在此,修改hello 文件以使用DSP/BIOS API。为应用DSP/BIOS API,一个程序
必须拥有一个程序所使用的定义了DSP/BIOS对象的配置文件。
1) 打开项目myhello.mak。(在D:\han\study2目录下)
2) File ——> New ——> DSP/BIOS Config。
3) 选择对DSP板的类型,确定。此时弹出一界面窗口。
4) 右击LOG-Event Log Manager,并选择Insert LOG,这样建立一个名为LOG0
的LOG对象。
5) 右击LOG0,选择Rename,改名为“trace”。
6) File ——> Save。保存于工作目录下,配置文件名为myhello.cmd。保存此配
置直接产生以下文件:
① myhello.cdb:保存配置的设置。
② myhellocfg.cmd:连接器命令文件。
③ myhellocfg.s62:汇编语言源文件。
④ myhellocfg.h62:包含在myhellocfg.s62中的汇编语言头文件。
尽管这些文件拥有.s62和.h62的扩展名,它们也可应用在TMS320C6701中。
DSP/BIOS不需要使用TMS320C6701支持的浮点指令,因此支持二者DSPs
只需一种版本的软件。
- 1 -
步骤2:加载DSP/BIOS文件到项目中
在此,加载上面生成的新文件于工作目录中,并移走它们替代的文件。
1) Project ——> Add Files to Project 。选择myhello.cdb。这样在项目下DSP/BIOS
Config中加入了myhello.cdb。此外,CCS自动地在项目下源文件夹中加入
myhellocfg.s62文件。
2) 输出文件的文件名必须与.cdb文件名相匹配(myhello.out和myhello.cdb)。选
择Project ——> Options,点击Linker标签,在output文件框中,确认
myhello.out为文件名。
3) project ——> Add File to project。选择myhellocfg.cmd文件,确定。此时,出
现一警告板,单击“Yes”。这样,在保存配置文件是生成的新的.cmd文件代
替旧的文件(hello.cmd)。
4) 在项目目录树中,右击源文件vectors.asm,选择Rename from project,从项目
中移走此文件。硬件中断向量会被DSP/BIOS配置文件自动定义。
5) 同样移走rts6201.lib文件。此库文件自动包含于myhellocfg.cmd文件中。
6) 双击打开hello.c文件,选择View ——> Mixed Source/Asm来隐藏其汇编代码。
7) 改变源文件的内容,替换主函数,因为puts()与LOG_printf使用相同的资源。
注意:此代码的下列部分:
① 此代码包括std.h和log.h头文件。所有使用DSP/BIOS API的程序必须包含
std,h文件,而且头文件适合于任何程序所使用的模块。log.h头文件定义
LOG_Obj结构,,并且声明API在LOG模块中的运行。Std.h文件必须优先
包含。而包含的拥有模块顺序并不重要。
② 此代码亦声明在配置文件中生成的LOG对象。
③ 在主函数中,此例调用LOG_printf并忽略LOG对象(&trace)和hello world
信息的地址。
④ 最后主函数返回,而导致程序进入DSP/BIOS空循环。在此循环中,DSP/BIOS
等待软中断和硬中断的出现。
8) 保存文件。Project ——> option。在Compiler标签下,Category框中选择
Preprocessor,移走右边Define symbols框中的FILEIO。
9) Project ——> Rebuild All 。
- 2 -