Download presentation
Presentation is loading. Please wait.
1
第五章 软件开发工具CCS的使用
2
一、 CCS集成开发环境简介 CCS(Code Composer Studio)是一个完整的DSP集成开发环境,是目前最优秀、最流行的DSP开发软件之一。现在TI所有的DSP都可以使用该软件工具进行开发,只有‘C5000和‘C6000的CCS中才提供DSP/BIOS功能,而在‘C2000和‘C3X的中是没有DSP/BIOS功能的。所以有时也将用于‘C2000和‘C3X开发的集成开发环境称为 cc(Code Composer),以示区别。 CCS支持软仿真器、各种型号硬件仿真器、各种DSK和EVM板,需要向相应的生产厂家索取驱动程序,然后在CCS中安装即可。
3
CCS的功能介绍 集成可视化代码编辑界面,可直接编写c、汇编、.H文件、.cmd文件等。
基本调试工具,如装入执行代码(.OUT文件),查看寄存器窗口,存储器窗口,反汇编窗口,变量窗口等,支持c源代码级调试。 支持多DSP调试。 断点工具,包括硬件断点、数据空间读/写断点,条件断点(使用GEL编写表达式)等等。 探针工具(probe points),可用于算法仿真,数据监视等。 剖析工具(profile points),可用于评估代码执行的时钟数。
4
数据的图形显示工具,可绘制时域/频域波形、眼图、星座图、图象等,并可自动刷新(使用Animate命令运行)。
提供GEL工具,令用户可以编写自己的控制面板/菜单,从而方便直观地修改变量,配置参数等。 支持RTDX(Real Time Data exchange)技术,利用该技术可在不中断目标系统运行的情况下,实现DSP与其他应用程序(OLE)实现数据交换。 开放式的plug—ins技术,支持其它第三方的ActiveX插件,支持各种仿真器包括软仿真(只需安装相应的驱动程序)。 提供DSP/BIOS工具,利用该工具可增强对代码的实时分析能力,如分析代码执行的效率,调度程序执行的优先级,方便管理或使用系统资源(代码/数据占用空间,中断服务程序的调用,定时器使用等等),从而减小开发人员对硬件资源熟悉程度的依赖性。
5
二、CCS的安装及使用概述 包括以下内容: CCS的安装与设置。 CCS的使用概述
6
1. CCS的安装 将CCS安装光盘放入CDROM驱动器中,运行光盘根目录下的setup.exe,按照安装向导的提示将CCS安装到硬盘中,默认安装目录为c:\ti。 安装完成后,在计算机桌面上创建“CCS 2 (‘C5000)”“Setup CCS 2 (’C5000)”两个图标。
7
CCS安装完成之后,在第一次运行CCS软件之前必须运行CCS设置程序。
CCS中集成了TI DSP的Simulator和Emulator的驱动程序,用户可以根据需要有选择的进行设置。 当使用其它公司的DSP产品时,需要索取并安装相应的驱动程序。
8
2. CCS的文件组织 CCS安装完成之后,将在ccs安装目录下建立以下子目录: bin:应用程序目录
c5400\cgtools:ti代码产生工具目录 c5400\example:源代码例子目录 c5400\rtdx:实时数据交换文件目录 c5400\tutorial:ccs程序使用教程目录 cc\bin:ccs环境的程序文件目录 cc\gel:ccs中使用的gel文件目录 docs:存放ccs的相关说明文档 myprojects:可以存放用户的工程设计文档
9
3. CCS中的文件类型 project.mak:CCS1.2中使用的工程文件 project.pjt:CCS2.0之后使用的工程文件
program.c: c程序源文件 program.asm:asm源文件 filename.h: c程序和DSP/BIOS API头文件 filename.lib:库文件 project.cmd:链接命令文件 program.obj:编译或汇编产生的目标文件 program.out:可执行的程序文件 program.wks:用于保存环境设置的工作文件 program.cdb:配置数据库文件
10
4. CCS的启动 双击桌面上的CCS 2 (‘C5000)图标,运行CCS程序。
如果在CCS中有多项配置,将会出现并行调试管理器窗口(Parallel Debug Manager),在Open下拉菜单下,选择程序。
11
打开配置窗口
12
添加自己的配置
13
复位目标板
14
5. CCS的使用 使用CCS开发程序的一般步骤: (1) 打开或创建一个工程文件,包括源程序、目标文件、库文件、链接命令文件和头文件。
(2) 编辑各类文件,如头文件、命令文件和源程序。 (3) 对工程文件进行编译,如有错误则需要改正。 (4) 对程序进行调试,对计算结果、输出数据进行分析,评估算法性能。
15
创建、打开和关闭工程 Project→New:用于创建一个新的工程文件 Project→Open:用于打开一个已有的工程文件
Project→Close:用于关闭当前的工程文件
16
在工程中添加/删除文件 用命令Project →Add File to Project,在对话窗口中选择需要的源程序和需要的文件
在工程视图窗口单击鼠标右键,在弹出的菜单中选择Move from Project,可以从工程中删除文件 源文件、链接命令文件、库文件需要用户指定加入,头文件可以通过扫描相关性(Scan All Dependencies)自动加入到工程中
17
扫描相关联性文件 使用命令Project →Show Dependecies或Project →Scan All Dependecies创建相关文件 在源文件中以“#include ”、 “.include”、 “ .copy”、 “.h”标识的文件被自动加入到工程中
18
编辑源程序 File → New→ Source File:弹出编辑窗口进行编辑 CCS下可以编辑任何文本文件,可以打开多个窗口
可以在其它的编辑环境下先对源程序或链接命令文件进行编辑
19
构建工程 当工程所需文件完成之后,就可以对工程进行编译链接,生成可执行文件,为调试作准备 构建工程有4条命令:
编译文件:Project → Compile File 构建:Project → Build 重新构建:Project → Rebuild 停止构建:Project → Stop Build 上述四条命令也可以通过单击工程工具条的相应按钮来实现 编译器所用参数可以通过Project →Option菜单设置
20
程序调试 一般调试步骤: 调入编译成功的可执行程序 在程序需要的地方设置断点
执行程序停在断点处,查看寄存器或内存单元的值,对中间数据进行分析 如果需要的话,对程序进行修改 反复上述过程,直至程序达到预期的功能
21
调入可执行程序 使用命令File →Load Program载入编译链接好的可执行程序(.out文件)
也可以修改“Program Load”属性,使构建工程后自动装入可执行程序。设置方法为选择命令Option →Program Load
22
使用反汇编工具 使用反汇编工具查看汇编级的程序 当源程序是C代码时,可以选择使用c和asm的混合显示或纯汇编代码的显示模式
方法:View →Mixed Source/Asm
23
程序的执行控制—复位目标板 Reset DSP:Debug →Reset CPU 初始化所有的寄存器内容,并暂停程序的运行。
复位目标板的方法 Reset DSP:Debug →Reset CPU 初始化所有的寄存器内容,并暂停程序的运行。 Restart:Debug →Restart 将pc恢复到当前载入程序的入口地址。 Go Main: Debug→Go Main PC指向主程序入口。
24
程序的执行控制—执行程序 执行程序的4种命令: Debug→ Run:运行程序,直到遇到断点为止 Debug→ Halt :暂停程序的执行
Debug→ Animate:动画执行程序 Debug→ Run Free :全速运行程序,禁止所有断点 注意:在仿真器中,Run Free 命令无效 4种单步执行命令: 单步进入:Debug →Step Into(快捷键F8) 单步执行:Debug →Step Over(快捷键F10) 单步跳出:Debug →Step Out (SHIFT+F7) 执行到当前光标处: Debug →Run to Cursor (快捷键Ctrl+F10)
25
程序的执行控制— 断点操作 软件断点设置 使用断点对话框:使用命令 Debug →Break points 弹出对话框
采用工程工具条:将光标移到需设置断点的语句上,单击设置断点按钮设置断点 断点删除 在设置断点对话框中选中列表中一个断点,单击Delete按钮可删除断点。 允许和禁止断点 在设置断点对话框中单击Enable all 或Disable all 将允许或禁止所有断点。 硬件断点:用于在Rom存储器中设置断点或读写内存时产生中断
26
程序的执行控制—内存、寄存器和变量操作 内存块操作:包括拷贝数据块和填充数据块,主要用于数据初始化。 查看编辑内存:View memory
查看CPU寄存器:View CPU Register 编辑变量:Edit →Edit Variable 通过观察窗口查看变量。 删除观察变量。 观察数组或结构变量。
27
程序的执行控制—其他操作 变量显示格式 数据输入与结果分析 装入保存数据 文件输入/输出 数据文件格式 利用图形窗口分析数据 评估代码性能
测量时钟
28
三、DSP集成开发环境 Code Composer Studio 开发指南
29
主要内容 (一)、CCS的初步使用 1、打开一个已有的工程,并进行编译、链接和执行。 2、新工程的建立、设置、编译链接和执行。
3、工程的基本调试。 (二)、CCS的高级使用 断点和观察窗口的使用、探针与文件I/O的使用、图形显示窗口的使用以及代码的执行统计。 (三)、Code Composer Studio 开发例程。 (四)、Code Composer Studio深入学习和使用
30
(一)、CCS的初步使用
31
1、打开已有的工程并进行编译链接和运行 Project-Open:打开工程tutorial\hello1\hello.pjt 。
在工程窗口中,展开source项,双击hello.c察看源文件内容。 Project-Rebuild All对当前工程进行编译,编译结果应该是0 Errors, 0 Warnings, 0 Remarks。
32
File-Load Program打开装载程序窗口,装入tutorial\\hello1\debug\hello.out可执行文件。
Debug-Go main 将程序指针指向main函数入口。 Debug-Run(或按F5键)运行程序,在stdout 输出窗口应显示hello world! Debug-Restart 重新将程序指针指向main函数入口,并运行程序。
33
2. 建立新工程,并设置、编译链接和执行 在myproject目录下,使用project-new建立一个新的工程hello.pjt ,键入工程名称,生成相应名称的子目录及工程文件。 将tutorial\hello1\ 目录下的文件除了hello.pjt工程文件之外全部拷贝到目录myproject\hello\ 下面。 往工程中添加文件 在工程栏中,在工程的名字上单击鼠标右键,或在工程project菜单中,选中 Add Files to Project,往工程中添加文件。
34
一般地,需要往工程中手动添加以下几种文件:
.c C程序源文件 .asm 汇编程序源文件 .lib 库文件 .cmd 链接命令文件 .h 头文件 使用project—Scan All File Dependencies 由CCS集成开发环境自动添加 .H头文件,但需要在编译选项中正确设置include搜索路径。 设置编译链接选项(Build Options): 在工程栏中,在工程的名字上单击鼠标右键,或在工程project菜单中,选中 Build Options,设置编译链接选项。
35
Build Options主要需要设置几个地方:
Compiler—Preprocessor—Include Search Path,include 文件搜索路径,可以使用绝对路径,也可以使用相对路径来进行定义。假设一个自定义工程在myproject目录下,则文件搜索路径可定义为..\..\c5400\dsk5402\include。 Link—Basic—Include Libraries(-l) 定义链接库文件,输入rts.lib(运行时链接库)即可。 根据需要设置其它选项,例如.out文件和.map文件的输出路径和名称。
36
Rebuid All 对工程进行编译链接,产生用于调试执行的.out文件
在Build窗口中提示编译链接的过程、错误和结果,如果有错误则需要改正错误之后重新对工程进行编译链接。双击错误提示可以自动进行错误定位。 当Build窗口中提示 0 Errors, 0 Warnings, 0 Remarks 时,说明工程已经成功进行了编译链接。 装载程序(load program)myproject\hello\debug\hello.out
37
Debug-Go Main 将程序指针指向main函数入口
Debug-Run(或按F5键)运行程序。 Debug-Halt暂停程序运行。 Debug-Restart 重新将程序指针指向main函数入口,并运行程序。
38
3. 工程的调试 Load Program,装载程序 将工程正确Build后,需要把 .out 文件装入DSP目标板进行调试
Debug-Go Main 将程序指针指向main函数入口 Debug -Run(或按F5键)断点运行程序 Debug -Run Free 全速运行程序 Debug -Animate 动画运行程序 Debug -Halt 停止运行程序
39
单步运行程序 Step Into、Step Out、Step Over。 断点(Breakpoints)的设置与使用 快捷图标 。 变量察看(View—Watch Window)。遇到断点程序停止执行后,可以使用变量观察窗口察看变量。
40
(二)、CCS的高级使用
41
包括以下内容: 1、各种观察窗口的使用 2、探针与文件I/O的使用 3、图形显示窗口的使用 4、代码的执行统计
42
1. 准备工作 打开工程tutorial\volume1\volume.pjt 进行编译链接(Build All)
装载程序(Load Program) Debug—Go Main指向main函数的入口
43
2. 各种观察窗口的使用 View—Disassembly反汇编察看窗口。
View—Memory程序存储器、数据存储器、I/O空间数据观察窗口。 View—Registers—Cpu Registers cpu寄存器观察窗口。 View—Registers—Peripheral Reg 片上外设寄存器观察窗口。 View—Graph—Time/Frequency 时域/频域图形观察窗口。 View—Mixed Source/ASM 察看源程序/汇编程序混合显示窗口。
44
CCS的各种观察窗口
45
3. 探测点(探针)与文件I/O的使用 探测点(Probe point)与文件I/O的关系。 文件I/O使用探测点来停止当前程序的执行。
设置程序探测点时注意以下两点: 不要将探测点设置在任何延迟分支或调用指令的地方。 不要将探测点设置在重复的块指令倒数1、2行指令的地方。 文件I/O不支持实时数据交换。如果要进行实时数据交换,应使用RTDX功能。
46
探测点的设置与删除 将光标移动到需要设置探测点的代码行。 单击图标 设置探测点,在代码行前出现蓝色小菱形。 将光标移动到需要删除探测点的代码行。 单击图标 探测点将被删除。 利用探测点来观察CPU寄存器的值。 设置探测点。 在Break/Probe point 窗口中Probe point选项下的Connect栏中选择C54X Registers <Type0>选项,然后单击确定按钮。 View Cpu Registers
47
I/O文件的格式 CCS数据文件格式:头信息+数据。 头信息: MagicNumber Format StartingAddress PageNum Length MagicNumber:固定为1651。 Format:1-4,数据存储格式,是十六进制数、整数、长整数、浮点数中的一种。 StartingAddress:数据存放的起始地址。 PageNum:页码,指明数据所在的数据页。 Length:数据的长度,以word来表示。 头信息一般缺省为 。这时,可以在弹出的文件I/O对话框中输入起始地址和数据长度,输入的信息将自动替换数据文件的头信息。
48
数据文件举例sine.dat: 1651 1 0 1 0 0x0000 0x000f 0x001e 0x002d 0x003a 0x0046
……
49
设置PC数据文件与探测点相关联 设置探测点 。 执行File — File I/O菜单命令。
设置探测点 。 执行File — File I/O菜单命令。 在File I/O对话框中,在文件输入栏单击 按钮打开sine.dat。 在Address栏中输入inp_buffer,在length栏中输入0x100。 单击 按钮。 首先在probe point栏中选中要关联的探测点。 其次在Connect栏,从列表中选择sine.dat文件。 单击Replace按钮,Probe Point列表中显示探测点与文件sine.dat相关联。
50
4. 设置图形显示窗口 观察时域波形: View—Graph→Time/Frequency弹出Graph Property对话框。
可以更改图形显示的标题、起始地址、缓冲区大小、显示数据大小、DSP数据类型等选项。 单击OK,出现波形的图形窗口。 在图形窗口中单击鼠标右键,在弹出菜单中选择Clear Display,清除已有的图形。 在图形窗口中可同时显示输入输出信号的时域波形显示类型为Dual Time,除了起始地址不同外,其它参数均相同。
51
5. 程序的动画执行 在代码行设置探测点。 同时在代码行设置断点,该行同时有红色小圆点和蓝色小菱形。这可以使程序暂停执行一次的情况下进行两种操作:传输数据和更新图形窗口显示。 单击Animate图标或按F12键动画执行程序。 当程序执行遇到断点后会临时中断程序的运行,更新图形窗口的显示,并继续执行程序。 可以将Animate命令理解为:运行—中断—继续运行。
52
6. 改变增益,察看变量的值 View—Watch Window
53
7. 从文件读入数据到内存 直接将PC机数据文件装载到DSP目标系统的内存: File→Data→Load,打开文件sine.dat。
7. 从文件读入数据到内存 直接将PC机数据文件装载到DSP目标系统的内存: File→Data→Load,打开文件sine.dat。 弹出Load File Into Memory对话框,修改Address栏、Length栏、Page栏,单击OK按钮。 View→Memory 观察内存中inp_buffer中的数据。 Data→Save ,可将程序运行的结果保存到文件。
54
(三)Code Composer Studio
开发例程
55
适用对象: CCS 初学者 功能: 在CCS IDE 中开发一个简单的应用程序。 目标: 学习如何建立一个工程 学习基本调试技术 工程名称:tutorial\target\volume1\volume1
56
学习内容 新建一个工程(project) ■向工程中添加文件 ■浏览代码 编译和运行程序 ■利用编译选项对话框改变编译选项
■使用编译器确定并改正代码错误 基本调试技术 ■断点(breakpoints) ■观察窗口(watch windows) ■文件I/O
57
新建一个新工程 1、在CCS中的Project 菜单,选择 New。
58
新建一个新工程(续) 2.在Location域中,浏览并确定建立工程所使用的文件夹。
3. 在Project Name域中,键入工程名称volume1,CCS自动在 c:\ti\myprojects中建立文件夹 volume1以及volume1.pjt文件 4.在Project Type域中,选择Executable (.out)。 5.在Target域中,选择CCS配置的目标,并单击完成。 6. 将c:\ti\tutorial\volume1拷贝到c:\ti\myprojects\volume1。
59
向工程中添加文件 1、从Project Add Files to Project,在Files of type对话框中,选择C Source Files (*.c ;*.ccc)。选择 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。
60
4.选择ProjectAdd Files to Project, 定位到编译器的库文件夹(C:\ti\c5400\cgtools\lib),在Files of type对话框中选择Object and Library Files (*.o*, *.lib)。选择DSP 运行时支持库文件rts.lib,单击Open。 5、Project View窗口,右键单击volume1.pjt,选择Scan All Dependencies. volume.h将出现在Project View窗口中的Libraries文件夹。 6、 单击 volume1.pjt上的 + 号,展开工程列表。 这个列表称为工程视图(Project View).
61
Project view
62
查看源程序代码 双击Project View中 volume.c文件,CCS窗口的右半窗中出现C源代码。 volume.c 简介:
主程序打印一个信息,然后进入无限循环。在这个循环中,调用dataIO和处理函数。 在输入缓冲区中,处理函数将每个值乘以增益,并将结果放到输出缓冲区。它也调用汇编装载程序,此程序消耗了传递到子程序的processingLoad个指令周期。 例子中的dataIO函数不作任何处理,仅仅返回。文件I/O功能不使用C代码完成,而是使用CCS中的探测点(Probe Point),从主机的文件中读取数据到 inp_buffer缓冲区。
63
编译与运行程序 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源程序和对应的汇编代码。
64
5.在混合窗口单击汇编指令(单击实际的指令,而不是指令的地址或指令所在的区域),按下F1键可以寻找此指令的帮助。
6.选择Debug Go Main。程序指向main函数的入口。 7.选择Debug Run或单击 (Run)按钮运行程序。 8.选择Debug Halt,退出程序运行。 9. 从View菜单,选择Mixed Source/ASM。这样就可以看到没有汇编指令的C代码。
65
更改程序选择,定位语法错误 本节学习使用CCS设置预处理器选择,并纠正语法错误。 1.选择Project Build Options.
2.在Build Options窗口的Compiler上,选择Category列表的 Preprocessor,在Define Symbols区域键入FILEIO,按Tab键。 3.单击OK,保存设置。
66
Build Options for Volume1.pjt
67
4.选择Project Rebuild All或单击 (Rebuild All)按钮。
只要工程选项更改,则必须重新编译所有的文件。 5. 编译信息显示,程序包含编译错误。 单击Build,你可以看见语法错误信息。
68
6. 双击描述语法错误位置的红色文字(第68行) 注意volume.c源程序已打开,且光标定位于下面的行: processing(input, output); 7. 语法错误位于光标位置的上一行(分号丢失),如: puts("begin processing"); 8.注意, Edit窗口标题栏中的文件名附近出现星号(*),指示 源程序已经被修改,文件保存后,星号消失。 9.选择File Save,或按Ctrl+S,将更改保存到volume.c.
69
10.选择Project Build,或 (Incremental Build)单击工具条,CCS重新编译已经修改的文件。
11.选择File Load Program, 选中volume1.out装载程序。 12.选择Debug Go Main,程序指向main函数的入口。执行暂停在主程序,并且由 符号标识。 13.选择Debug Run或单击 (Run)菜单条运行程序。 14.选择 Debug Halt,退出程序运行。
70
使用断点和观察窗口 程序执行时常常需要检查变量的值 1. File Reload Program.重新装载程序。
2、双击Project View 窗中的volume.c观察源程序代码。 可以将窗口变大,看到更多的源代码。 3、将光标放在 dataIO( )程序行。 4、单击 (Toggle Breakpoint)工具条,或按F9设置断点。 代码左侧空白区的红色图标指示断点已经设置。
71
5.选择View Watch Window打开变量观察窗口,用于观察程序运行时变量的值。
缺省时选中Watch Locals,显示正在执行的函数的局部变量。 6. 如果不在主程序的入口,选择Debug Go Main. 7.选择Debug/Run,或按F5,或单击图标 运行程序。 8 . 选择Watch1 9. 单击Name栏中表达式图标 ,键入要观察的变量名dataIO。 10. 单击观察窗口中的白色区域,保存更改。 这个值将立即出现在下面的例子中。
72
11. 单击 (Step Over)或按F10,跨过对dataIO( )的调用。
Step Into (F8) Step Over (F10) Step Out (Shift F7) Run to Cursor (Ctrl F10) 12. 完成后,单击 移除所有的断点,再继续下面的学习。
73
使用带结构的观察窗口 除了观察简单变量的值,也可以观察一个结构变量的值。 1. 选择Watch1 。
2. 单击Name栏中的表达式图标 ,键入要观察表达式名称str。 3. 单击观察窗口中的白色空间,保存更改。 数值将立即出现在下面的例子中。
74
4. 重新浏览源代码volume.c,在其中声明并初始化了全局结构变量PARMS。在volume.h中定义了PARMS的结构类型。
5. 单击str上的+号,CCS将显示结构中的所有元素和元素值。 双击结构中元素的Value,编辑元素的值。 6. 在观察窗口的Value栏,改变变量的值。注意,观察窗口的变量值更改后,数值也变为红色,表示已经手动修改。 7. 选择Watch Window 中str变量,按Delete 键删除。同样可删 除其它变量。 8. 选择Debug Breakpoints。 在Breakpoints中,单击Delete All删除所有断点,然后单击OK。
75
为了文件I/O添加探针Probe Point
探针(Probe Point)用于与PC机中的文件交换数据。探针是算法开发的有利工具。 探针的使用方式: 将主计算机文件中的输入数据,传递到算法所使用的目标缓冲器中; 将目标缓冲器中的输出数据,传递到PC机的文件中; 用数据更新窗口,例如图形窗口。
76
探针的使用 使用探针将PC文件中的内容作为测试数据传递到目标DSP。
1. 选择File Load Program,选中volume1.out,单击Open。 2. 双击Project View中的 volume.c 。 3. 将光标放到主程序中dataIO( )程序行; 4.单击 (Toggle Probe Point)。 空白区域用兰色图标指示探针已经设置,如果禁止了空白 区(Option Customize Editor Properties) ,此行将高亮为兰色。 5.从File菜单,选择File I/O。 出现File I/O对话框,可以继续选择输入、输出文件。
77
6. 在File Input栏,单击Add File。
7. 浏览volume1工程文件夹,选中sine.dat,单击Open。 sine.dat 文件是正弦波的十六进制数据文件。 出现sine.dat文件的控制窗口。当以后运行程序时,可以在 数据文件中使用此窗口启动、停止、返回、或快进。
78
8. 在File I/O对话框,更改Address 为inp_buffer,Length为100,
在Wrap Around中可以添加选中符号。
79
Address指定从文件中来的数据将放在什么地方。inp_buffer 在volume.c中声明为大小为BUFSIZE的整型数组。
Length指定每次到达探测点时从数据文件中读取多少样点。这里取100,因为volume.h中设置BUFSIZE常量为0x64。 Wrap Around选项使CCS到达文件末尾时,重新从文件开始处读取数据。这允许数据文件成为连续的数据流。 9. 单击Add Probe Point。 出现 Break/Probe Points对话框中的 Probe Points。
80
10. 在 Probe Point列表中,显亮行为:
VOLUME.C line 61 --> No Connection. 11. 在Connect To域中,单击下箭头,从列表中选中 sine.dat 。
81
12. 单击 Replace按钮,Probe Point列表显示此Probe Point连接到sine.dat文件。
13. 单击OK。 File I/O 对话框显示文件sine.dat现在连接到Probe Point。 14. 单击OK,关闭File I/O对话框。
82
显示图形 在这个例子中,可以查看关于时间的信号图形。 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图形窗口。
84
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。
85
程序的动画执行 至此,已经放置断点,将主机中的数据传递到目标DSP;
可暂停或继续目标DSP 的应用程序。但是,Probe Point不修改图形。 本节使用断点和探针,配合 Animate命令,使程序遇到断点后继续自动执行,同时动态更新图形显示窗口。 1. 在volume.c窗口,将光标放在调用dataIO的行上。 2. 单击 (Toggle Breakpoint)或按F9,在空白区域显示红色 图标代表断点。 在同一行设置探测点Probe Point,这样传递数据和修改图形时目标程序只需暂停一次。
86
3. 调整窗口,使两个窗口都可以看见。 4. 单击 (Animate),或按F12运行程序。 Animate=Run—halt — continue 5. 每遇到探测点Probe Point一次,CCS就从sine.dat文件获得100个数值,并将它们写入inp_buffer地址。
87
增益 Gain=1
88
6. 选择Debug/Halt,退出程序运行。
注意:目标DSP 在探测点暂停。CCS遇到探测点时,暂停目标。因此,如果使用探测点,目标应用程序不能满足实时要求。在开发阶段,你可以检测算法,然后可以使用RTDX和DSP/BIOS 分析实时特性。
89
调整增益Gain 处理函数将输入缓冲区中的每个值乘以增益,并将结果放在 输出缓冲区。在while循环中执行下面的语句。
*output++ = *input++ * gain; 这个语句将inp_buffer中的数值乘以增益,并将结果放在out_buffer中相应的位置。增益初始化设置在定义在头文件volume.h中的MINGAIN符号常量 。 如果修改输出,则需要修改增益。方法之一是使用观察变量。
90
1. 选择View/Watch Window,选中Watch1 。
2. 单击Name栏中的表达式图标 ,键入gain ,作为观察的变量。 3. 单击观察窗口中的白色空间,保存更改。 在下面的例子中将立即出现这个数值。
91
4. 如果程序已经暂停,单击 (Animate),重新启动程序,
观察前面建立的输入输出图形。 5. 从Debug菜单,选中Halt。 6. 在观察窗口,选中增益值(1),将其改为10。 7. 从Debug菜单,选中 Animate 。 注意更改 Output graph 中信号幅度,在反映在下面的例子中的增益。
92
增益 Gain=10
93
8. 从Debug菜单,选择Halt。 9. 从Project菜单,选择Close。 10. 关闭所有的其他窗口和图形。 至此,开发一个简单的程序全部结束。
Similar presentations