1
Code Composer Studio Tutorial V3.3 Translate by xingguangyi 西安 2011 年
第一章:快速入门
1.1 创建一个新工程
在本节中,你将使用 Code Composer Studio 创建一个工程,并向其中添加源码文件和库文
件。在本工程中,将涉及以下几种文件类型:
TI 库文件,提供了目标 DSP 芯片的运行支持
• lib
• .c 工程中的源码文件
• .h 头文件
• .pjt 工程文件,包含了工程编译和配置的各种信息
• .asm 汇编指令文件
• .cmd 存储器映射文件
1. 如果你的 CCS 安装位置为 c:\CCStudio_v3.3,需要在 C:\CCStudio_v3.3\MyProjects 文件夹创建
一个名为 volume1 的文件夹。
2. 将 C:\CCStudio_v3.3\tutorial\target\volume1 文件夹中的内容复制到该文件夹。
3. 做完以上工作,就可以打开 CCS 了。
2
Code Composer Studio Tutorial V3.3 Translate by xingguangyi 西安 2011 年
4. 从 Project 菜单,选择 New.
5. 在 Project Name 一栏中,输入“volume1”
6. 在 Location 一栏中,定位到第一步创建的文件夹
7. 在 Project Type 一栏,选择 Executable (.out)
3
Code Composer Studio Tutorial V3.3 Translate by xingguangyi 西安 2011 年
8. 在 Target 一栏,选择目标配置,然后点击 Finish
9. CCS 将创建一个名为 volume1.pjt 的工程
1.2 向工程中添加文件
1. 选择 Project-Add Files to Project 分别向工程中添加 volume.c,vectors.asm,load.asm,
volume.cmd
2. 选择 Project-Add Files to Project. 定位到文件夹 C:\CCStudio_v3.3\c2000\cgtools\lib,选择对
应的库文件。对于 F28xx Cycle Accurate Simulators,需要选择大存储器模型库文件
rts2800_ml.lib
3. 展开工程,在 volume1.pjt 上点击右键,选择 Scan All File Dependencies,将会添加相关头
文件。
你不需要手动添加头文件,程序在编译时,会自动将相关头文件添加到工程中。
1.3 查看源代码
双击文件 volume.c,CCS 将显示源代码。在代码中有以下几个重要函数:
在 main 函数输出一条消息后,将进入无限循环,在该循环中,调用了 dataIO 和 processing
4
Code Composer Studio Tutorial V3.3 Translate by xingguangyi 西安 2011 年
函数
Processing 函数将输入缓冲中的值乘以增益,然后将结果输出到输出缓冲中。该函数还调
用汇编加载程序。
dataIO 函数在本例中不执行任何动作,然后返回。我们不使用 C 代码来执行 IO,而是采用
断点的方式。
Volume.c
2934,
9432,
213,
9432,
&str
#include
#include "volume.h"
/* 全局声明 */
int inp_buffer[BUFSIZE]; /* 处理数据的缓冲 */
int out_buffer[BUFSIZE];
int gain = MINGAIN; /* volume 控制变量 */
unsigned int processingLoad = BASELOAD; /* processing load */
struct PARMS str =
{
};
/* 函数声明 */
extern void load(unsigned int loadValue);
static int processing(int *input, int *output);
static void dataIO(void);
/* ======== main ======== */
void main()
{
int *input = &inp_buffer[0];
int *output = &out_buffer[0];
puts("volume example started\n");
/* 无限循环 */
while(TRUE)
{
/* Read using a breakpoint connected to a host file. */
/* Write output to a graph connected through a breakpoint. */
dataIO();
#ifdef FILEIO
#endif
puts("begin processing");
5
Code Composer Studio Tutorial V3.3 Translate by xingguangyi 西安 2011 年
*output++ = *input++ * gain;
/* apply gain */
processing(input, output);
}
}
/* ======== processing ======== *
* FUNCTION: apply signal processing transform to input signal.
* PARAMETERS: address of input and output buffers.
* RETURN VALUE: TRUE. */
static int processing(int *input, int *output)
{
}
/* ======== dataIO ======== *
* FUNCTION: read input signal and write output signal.
* PARAMETERS: none.
* RETURN VALUE: none. */
static void dataIO()
{
}
int size = BUFSIZE;
while(size--)
{
}
/* additional processing load */
load(processingLoad);
return(TRUE);
/* do data I/O */
return;
1.4 编译并运行程序
要编译并运行程序,请按以下步骤:
1. 选择 Project®Rebuild All o,程序将编译、集合、链接。
2. 默认情况下,在工程文件的 debug 文件夹中,将生成.out 文件。该文件位置也可以通过工
具栏进行选择。
3. 选择 File®Load Program. 选择刚才生成的 Volume1.out,然后点击 Open
4. 在汇编窗口,选择一条指令,并按下 F1,可以打开该条指令对应的帮助
5. 选择 Debug®Go Main 可以从 main 函数开始执行
6
Code Composer Studio Tutorial V3.3 Translate by xingguangyi 西安 2011 年
6. 选择 Debug®Run, 将在 CCS 屏幕的底部显示"volume example started"
7. 选择 Debug®Halt 可以推出运行的程序
1.5 使用断点和观察窗口
使用断点和观察窗口,可以在程序执行过程中查看变量值。中断分为软件中断和硬件中断,在
这里只讨论软件中断。
1. 选择 File®Reload Program.
2. 双击打开文件 volume.c
3. 将光标放置于第 61 行的函数 dataIO();
4. 按下 F9 添加断点 。
5. 选择 View®Watch Window. 将出现一个窗口,这里显示了观察的变量值,默认情况下,该
窗口显示的是断点函数中的局部变量值
6. 如果起点不在 main,选择 Debug®Go Main.
7. 选择 Debug®Run, 或按下 F5
8. 选择 Watch1 选项卡
9. 点击表达式图标 ,在 Name 列输入 dataIO
10. 点击空白处,将立即显示值
7
Code Composer Studio Tutorial V3.3 Translate by xingguangyi 西安 2011 年
11. 点击 按钮(Step Over)或按下 F10 跳过 dataIO 函数
12. 完成以后,点击 按钮可以清除所有的断点。
1.6 Using the Watch Window with Structures
1.7 添加文件读写断点
在这里,你将添加一个具有动作的断点,可以从文件中读取数据,这样可以:
将文件中的数据传入目标缓冲,供算法使用
将输出缓冲中的数据输出到文件中,以进行分析
用来更新图形窗口数据
下面将阐述如何使用断点来向目标传送测试数据并更新所有打开的窗口数据,这里仅使用软件
断点:
1. 选择 File®Load Program 选择 volume1.out,然后点击 Open.
2. 双击打开文件 volume.c
3. 将光标移动到 61 行,在 dataIO()函数上设置断点
4. 从菜单 Debug 中选择 Breakpoints,打开断点管理器,断点将显示在列表中。
5. 在断点管理器中,点击 Action 列,从下拉列表中选择“Read Data from File”,此时将出现一
个参数对话框
6. 在 File 一栏,浏览并选择文件 sine.dat,设置 Start Address 为 inp_buffer,设置 Length 为 100,
同时勾选 Wrap Around ,其它选项保持默认值
Start Address 指定了数据文件中的数据放置在什么位置。inp_buffer 是在 volume.c 中声
明的变量
Length 指定了每次断点触发时读取的数据个数,这里设置为 100 是由于缓冲大小为 100
8
Code Composer Studio Tutorial V3.3 Translate by xingguangyi 西安 2011 年
(0x64)
Wrap Around 将使文件被循环读取,这样可以无限次读取数据
7. 点击 OK ,将出现一个控制窗口(有可能被主窗口挡住),你可以使用该窗口控制文件的读
取
8. 在断点管理器窗口,将显示断点已连接。
9. 你现在以及成功创建了输入断点
1.8 显示图形
如果你现在运行程序,你将看不到任何程序运行的信息。你希望图形化方式查看大量的变量数
据。