《实验 1 Code Composer Studio 入门实验(1)》由会员分享,可在线阅读,更多相关《实验 1 Code Composer Studio 入门实验(1)(13页珍藏版)》请在金锄头文库上搜索。
1、实验 1 Code Composer Studio 入门实验一实验目的1. 熟悉 CCS 集成开发环境,掌握工程的生成方法;2. 熟悉 ICETEK-DM6437-A 实验环境;3. 掌握 CCS 集成开发环境的调试方法。二.实验内容1. DSP 源文件的建立;2. DSP 程序工程文件的建立;3.学习使用 CCS 集成开发工具的调试工具。三实验设备1.PC 兼容机2.WIN7 操作系统3.Code Composer Studio v5四实验背景知识理(一)、开发 TMS3206437 应用系统一般需要以下几个调试工具来完成l 软件集成开发环境(Code Composer Studio v5)
2、:完成系统的软件开发,进行软件和硬件仿真调试。它也是硬件调试的辅助手段。l 开发系统(ICETEK-XDS100v2+):实现硬件仿真调试时与硬件系统的通信,控制和读取硬件系统的状态和数据。l 评估模块(ICETEK-DM6437-A 等):提供软件运行和调试的平台和用户系统开发的参照。CCS主要完成系统的软件开发和调试。它提供一整套的程序编制、维护、编译、调试环境,能将汇编语言和C语言程序编译、链接生成 COFF (公共目标文件)格式的可执行文件,并能将程序下载到目标 DSP 上运行调试。用户系统的软件部分可以由 CCS 建立的工程文件进行管理。CCS构成及接口(二)、工程一般包含文件类型:
3、l 源程序文件: C 语言或汇编语言文件(*.c 或*.asm)l 头文件(*.h)l 命令文件(*.cmd)l 库文件(*.lib)l 中间文件(*.obj)五实验步骤1创建工程: 创建新的工程文件:选择菜单“View”的“Project Explorer”项,打开工程查看界面在 Project Explorer 窗口的空白地方右键选择 New-CCS Project:在弹出的窗口中设置工程名称,以及工程的设备类型,此处新建工程名为 volume,Device型号为 TMS320DM6437, 点击 Finish 完成创建: 在工程文件中添加程序文件:创建工程后,在 Project Expl
4、orer 窗口可以查看该工程的各个文件(若 ProjectExplorer 窗口被隐藏,则可以用菜单的 View-Project Explorer 调出):双击某个窗口的标题可以使该窗口最大化,此时如要查看别的窗口,可以再次双击标题。例如双击 main.c 之后:再次双击 main.c 即可回到刚才的界面。 这里工程中的 main.c 和 DM6437.cmd 文件我们不需要,在 main.c 文件上右键选择 Delete 删除此文件。在工程上右键选择 Add Files在弹出的窗口中找到 C:ICETEKICETEK-DM6437-ALab0101-UseCCS 目录: 按住“Ctrl”键,
5、选择 UseCCS.c、 UseCCS.cmd、 UseCCS.h 和 Sine.dat 文件。然后点击打开按钮 :在弹出的窗口中选择文件导入的方式:Copy files: 刚才选中的 3 个文件会被拷贝到 workspace 的刚才新建的工程文件夹中,即C:ICETEKICETEK-DM6437volume 目录下。Link to files: 则文件不会被拷贝,以链接的形式把刚才的 3 个文件加入到工程中。此时这 3 个文件还在原始的位置,即 C:ICETEKICETEK-DM6437-ALab0101-UseCCS 目录下。此处选择 Copy files,点击 OK 完成。查看 C:IC
6、ETEKICETEK-DM6437volume 目录,会发现文件已经被复制过来了:上述仅仅添加了工程的各个文件,但我们要进行仿真调试的话,还需要一个目标配置文件(Target Configuration File)。在 Target Configurations 窗口中,找到我们已配置好的文件 DM6437-Simulator.ccxml(若没有参见第二部分、第一章、四、 3 新建一个),点击右键-Link File To Project-vloume. 进入仿真调试:点击菜单栏下方的 图标, CCS 开始自动编译,连接和下载程序。 最终的界面大致如下:可以看到,新增了一个 Debug 窗口,
7、 CCS自动打开 UseCCS.c,并且跳转到 main 函数。2.编辑修改工程中的文件: 查看工程文件:点击菜单的 View-Project Explorer 调出工程查看窗口, 展开工程各分支,可以看到“volume”工程中包含的各个文件。 可分为四类文件:l .c 源文件l .cmd 文件l .h 头文件l .ccxml 目标配置文件 查看源文件:双击工程管理窗中的“UseCCS.c”文件,可以查看程序内容。可以看到,用标准 C 语言编制的程序,大致分成几个功能块:l 头文件描述标准库程序的调用规则和用户自定义数据、函数头、数据类型等。具体包含哪一个头文件,需要根据程序中使用了哪些函数或
8、数据而定。比如:如果程序中使用了 printf 函数,它是个标准 C 提供的输入/输出库函数,选中“printf”关键字,按 Shift+F1会启动关于此关键字的帮助,在帮助信息中可发现其头函数为 stdio.h,那么在此部分程序中需要增加一条语句: #include “stdio.h”。l 工作变量定义定义全局变量。l 子程序调用规则这部分描述用户编制的子程序的调用规则。也可以写到用户自己编制的.h 文件中去。主程序。即 main()函数。它可分为两部分:变量定义和初始化部分、主循环部分。主循环部分完成程序的主要功能。l 用户自定义函数这个程序是一个音频信号采集、处理输出的程序。程序的主循环
9、中调用自定义的函数read_signals 来获得音频数据并存入输入缓存 inp_buffer 数组;再调用自定义函数 write_buffer来处理音频数据并存入输出缓存; output_signals 将输出缓冲区的数据送输出设备;最后调用标准 C 的显示信息的函数 printf 显示进度提示信息。整个系统可以完成将输入的音频数据扩大 volume 倍后再输出的功能。read_signals 子程序中首先应有从外接 AD 设备获得音频数据的程序设计,但此例中由于未采用实际 AD 设备,就未写相应控制程序。此例打算用读文件的方式获得数据,模拟代替实际的 AD 输入信号数据。write_buf
10、fer 子程序中首先将输入缓冲区的数据进行放大处理,即乘以系数 volume,然后放入输出缓冲区。output_signals 函数完成将处理后的设备输出的功能,由于此例未具体操作硬件输出设备,所以函数中未写具体操作语句。双击工程管理窗中的“UseCCS.h”文件,打开此文件显示,可以看到其中有主程序中要用到的一些宏定义如“BUF_SIZE”等。UseCCS.cmd 文件定义程序所放置的位置,此例中描述了 ICETEKVC6748-A 评估板的存储器资源,指定了程序和数据在内存中的位置。比如:它首先将 ICETEKVC6748-A 评估板的可用存储器分为五个部分,每个区给定起始地址和长度(区域
11、地址空间不允许重叠);然后指定经编译器编译后产生的各模块放到哪个区。这些区域需要根据评估板硬件的具体情况来确定。 编辑修改源文件及编译程序:打开“UseCCS.c”,找到“main()”主函数,将语句“input = &inp_buffer0;”最后的分号去掉,这样程序中就出现了一个语法错误; 在工程上点击右键-Build Project 重新编译连接工程,可以发现编译信息窗口出现发现错误的提示,工程中出现错误的文件会出现红色的x,;双击打开出错的文件,可以看到该文件的最右侧有红色小方块的标示,单击红色处, CCS 自动转到程序中出错的地方;将语句修改正确(将语句末尾的分号加上);重新编译;注
12、意,重新编译时修改过的文件被 CCS 自动保存。重新编译工程时, CCS 会提示程序重新编译过,是否重新下载? 我们点 Yes,则 CCS会把最新编译出的文件下载到 DSP 中。 查看和修改工程文件的设置:在工程上右键-Properties,打开工程属性设置窗口。可以看到,在 Build 一项中,分为 C6000 Compiler(编译器)和 C6000 Linker(链接器), 我们点中 C6000 Linker 下的 Basic Options,则在右边可以设置程序的堆栈大小。3基本调试功能: 下载程序:执行 Run-Load-Load Program ,在随后打开的对话框中选择刚刚建立的
13、C:ICETEKICETEK-DM6437-A DebugUseCCS.out 文件,手动下载刚才编译生成的最终文件 UseCCS .out。 设置软件调试断点:在项目浏览窗口中,双击 UseCCS.c 激活这个文件,移动光标到while(TRUE)行上,在行号前双击鼠标左键即在此处设置了一个断点。 利用断点调试程序:选择 Run-Resume 或按 F8 或点击 Debug 窗口中的 运行程序,程序会自动停在 while(TRUE)上。按 F6 单步执行到 write_buffer()函数。再按 F5,程序将转到 write_buffer 函数中运行。此时,为了返回主函数,按 F7 完成 w
14、rite_buffer 函数的执行。4使用观察窗口:在 volume.c 中,用鼠标双击一个变量(比如 num),再单击鼠标右键,选择“Add WatchExpressions”, 在弹出的窗口中点击 ok, CCS 将打开 Watch 窗口并显示选中的变量。在观察窗口中双击变量,则可以在这个窗口中改变变量的值。把str 变量加到观察窗口中,点击变量左边的 ,观察窗口可以展开结构变量,并且显示结构变量的每个元素的值。 把 str 变量加到观察窗口中;执行程序进入 write_buffer 函数,此时 num 变量超出了作用范围,可以看到 num 变量无法查看了: 5文件输入/输出下面介绍如何从
15、 PC 机上加载数据到 DSP 上。用于利用已知的数据流测试算法。在完成下面的操作以前,先介绍 Code Composer Studio 的断点, 断点允许用户在指定位置提取/注入数据。断点可以设置在程序的任何位置,当程序运行到断点时, 相关的事件将会被触发,当事件结束后,程序会继续执行。在这一节里,断点触发的事件是:从 PC 机存储的数据文件中的一段数据加载到 DSP 的缓冲区中。 (1)在真实的系统中, read_signals 函数用于读取 A/D 模块的数据并放到 DSP 缓冲区中。在这里,代替 A/D 模块完成这个工作的是断点。当执行到函数 read_signals 时,断点完成这个工作。 在 程 序 行 read_signals(input); 上 单 击 鼠 标 右 键 选 择 “Breakpoint(Code composer Studio)-Breakpoint”, 设置软件断点。 点击 CCS 菜单的 View-Breakpoints,调出断点观察窗口,可以看到我们刚才设置的断点:在 Breakpoint 窗口中,右键点击刚才设置的断点,选择 B