1、7章 CCS软件及C语言编程20+6new第7章 CCS软件及C语言编程Code Composer Studio (简称CCS)是TI公司推出的用于开发DSP程序的集成开发环境,它采用Windows风格界面,集编辑、编译、链接、软件仿真、硬件调试以及实时跟踪等功能于一体,极大地方便了DSP程序的开发与设计,是目前使用最为广泛的DSP开发软件之一。本章将概述DSP程序的开发过程、CCS组件及CCS使用的文件和变量以及C语言编程。 7.1 CCS的简介图7.1 DSP程序的开发阶段CCS是一种针对TMS320系列DSP的集成开发环境,在Windows操作系统下,采用图形接口界面。CCS提供了基本的
2、代码生成工具,它们具有一系列的调试、分析能力。CCS 支持如图7.1所示的DSP程序开发周期的所有阶段。在使用CCS之前,必须完成下述工作:(1)安装DSP目标板和驱动软件。按照随DSP目标板所提供的说明书安装。如果你正在用仿真器或目标板,其驱动软件已随目标板提供,你可以按产品的安装指南逐步安装。(2)安装CCS环境。遵循安装说明书进行安装,如果你已有CCS仿真器和TMS320C64X代码生成工具,但没有完整的CCS,你可以按安装说明书进行安装。(3)设置CCS仿真环境。运行CCS安装程序SETUP,你可以将CCS设置成Simulator或Emulator工作方式。CCS包括如下各部分: CC
3、S代码生成工具 CCS集成开发环境(IDE) DSP/BIOS插件程序和API RTDX插件、主机接口和API 由TI公司之外的第三方提供的各种应用模块插件等CCS构成及接口如图7.2所示。7.2 代码生成工具代码生成工具奠定了CCS所提供的开发环境的基础。图7.3是一个典型的软件开发流图7.2 CCS构成及接口程图,图中阴影部分表示通常的C语言开发途径,其它部分是为了强化开发过程而设置的附加功能。图7.3描述的工具如下: C编译器(C compiler) 产生汇编语言源代码,其细节参见TMS320C6000最优化C编译器用户指南。 汇编器(assembler)把汇编语言源文件翻译成机器语言目
4、标文件,机器语言格式为公用目标格式(COFF),其细节参见TMS320C6000汇编语言工具用户指南。 连接器(linker)把多个目标文件组合成单个可执行目标模块。它一边创建可执行模块,一边完成重定位以及决定外部参考。连接器的输入是可重定位的目标文件和目标库文件,有关连接器的细节参见TMS320C6000最优化C编译器用户指南和汇编语言工具用户指南。 归档器(archiver)允许你把一组文件收集到一个归档文件中。归档器也允许你通过删除、替换、提取或添加文件来调整库,其细节参见TMS320C6000汇编语言工具用户指南。 助记符到代数汇编语言转换公用程序(mnimonic_to_algebr
5、ic assembly translator utility)把含有助记符指令的汇编语言源文件转换成含有代数指令的汇编语言源文件,其细节参见TMS320C6000汇编语言工具用户指南。 你可以利用建库程序(library_build utility)建立满足你自己要求的“运行支持库”,其细节参见TMS320C6000最优化C编译器用户指南。 运行支持库(run_time_support libraries) 它包括C编译器所支持的ANSI标准运图7.3 软件开发流程行支持函数、编译器公用程序函数、浮点运算函数和C编译器支持的I/O函数,其细节参见TMS320C6000最优化C编译器用户指南。
6、十六进制转换公用程序(hex conversion utility) 它把COFF目标文件转换成TI-Tagged、ASCII-hex、 Intel、 Motorola-S、或 Tektronix 等目标格式,可以把转换好的文件下载到EPROM编程器中,其细节参见TMS320C6000汇编语言工具用户指南。 交叉引用列表器(cross_reference lister)它用目标文件产生参照列表文件,可显示符号及其定义,以及符号所在的源文件,其细节参见TMS320C6000汇编语言工具用户指南。 绝对列表器(absolute lister)它输入目标文件,输出.abs文件,通过汇编.abs文件可
7、产生含有绝对地址的列表文件。如果没有绝对列表器,这些操作将需要冗长乏味的手工操作才能完成。7.3 CCS集成开发环境CCS集成开发环境(IDE)允许编辑、编译和调试DSP目标程序。7.3.1 编辑源程序CCS允许编辑C源程序和汇编语言源程序,你还可以在C语句后面显示汇编指令的方式来查看C源程序。集成编辑环境支持下述功能: 用彩色加亮关键字、注释和字符串。 以圆括弧或大括弧标记C程序块,查找匹配块或下一个圆括弧或大括弧。 在一个或多个文件中查找和替代字符串,能够实现快速搜索。 取消和重复多个动作。 获得“上下文相关”的帮助。 用户定制的键盘命令分配。7.3.2创建应用程序应用程序通过工程文件来创
8、建。工程文件中包括C源程序、汇编源程序、目标文件、库文件、连接命令文件和包含文件。编译、汇编和连接文件时,可以分别指定它们的选项。在CCS中,可以选择完全编译或增量编译,可以编译单个文件,也可以扫描出工程文件的全部包含文件从属树,也可以利用传统的makefiles文件编译。7.3.3 调试应用程序CCS提供下列调试功能: 设置可选择步数的断点 在断点处自动更新窗口 查看变量 观察和编辑存储器和寄存器 观察调用堆栈 对流向目标系统或从目标系统流出的数据采用探针工具观察,并收集存储器映象 绘制选定对象的信号曲线 估算执行统计数据 观察反汇编指令和C指令CCS提供GEL语言,它允许开发者向CCS菜单
9、中添加功能。7.4 硬件仿真和实时数据交换TI DSPs提供在线硬件仿真支持,它使得CCS能够控制程序的执行,实时监视程序运行。增强型JTAG连接提供了对在线硬件仿真的支持,它是一种可与任意DSP系统相连的低侵扰式的连接。仿真接口提供主机一侧的JTAG连接,如TI XSD510。为方便起见,DSP评估板都会提供在板JTAG仿真接口。在线硬件仿真提供多种功能: DSP的启动、停止或复位功能 向DSP下载代码或数据 检查DSP的寄存器或存储器 硬件指令或依赖于数据的断点 包括周期的精确计算在内的多种记数能力 主机和DSP之间的实时数据交换(RTDX)CCS提供在线硬件能力的嵌入式支持;另外,RTD
10、X通过主机和DSPAPIs提供主机和DSP之间的双向实时数据交换,它能够使开发者实时连续地观察到DSP应用的实际工作方式。在目标系统应用程序运行时,RTDX也允许开发者在主机和DSP设备之间传送数据,而且这些数据可以在使用自动OLE的客户机上实时显示和分析,从而缩短研发时间。RTDX由目标系统和主机两部分组成。小的RTDX库函数在目标系统DSP上运行。开发者通过调用RTDX软件库的API函数将数据输入或输出目标系统的DSP,库函数通过在线硬件仿真硬件和增强型JTAG接口将数据输入或输出主机平台,数据在DSP应用程序运行时实时传送给主机。在主机平台上,RTDX库函数与CCS一道协同工作。显示和分
11、析工具可以通过COM API与RTDX通信,从而获取目标系统数据,或将数据发送给DSP应用例程。开发者可以使用标准的显示软件包,诸如National Instruments LabVIEW,Quinn-Curtis Real-Time Graphics Tools,或Microsoft Excel。同时,开发者也可研制他们自己的Visual Basic或Visual C+应用程序。RTDX能够记录实时数据,并可将其回放用于非实时分析。下述样本由National Instruments LabVIEW 软件产生。在目标系统上,一个原始信号通过FIR滤波器,然后与原始信号一起通过RTDX发送给主机
12、。在主机上,LabVIEW显示屏通过RTDX COM API获取数据,并将它们显示在显示屏的左边。利用信号的功率谱可以检验目标系统中FIR滤波器是否正常工作。处理后的信号通过LabVIEW,将其功率谱显示在右上部分;目标系统的原始信号通过LabVIEW的FIR滤波器,再将其功率谱显示在右下部分。比较这两个功率谱便可确认目标系统的滤波器是否正常工作。RTDX适合于各种控制、伺服和音频应用。例如,无线电通信产品可以通过RTDX捕捉语音合成算法的输出以检验语音应用程序的执行情况;嵌入式系统也可从RTDX获益;硬磁盘驱动设计者可以利用RTDX测试他们的应用软件,不会因不正确的信号加到伺服马达上而与驱动
13、发生冲突;引擎控制器设计者可以利用RTDX在控制程序运行的同时分析随环境条件而变化的系数。对于这些应用,用户都可以使用可视化工具,而且可以根据需要选择信息显示方式。未来的 TI DSPs 将增加RTDX的带宽,为更多的应用提供更强的系统可视性。关于RTDX的详细资料,请参见CCS中RTDX在线帮助。7.5 CCS文件和变量本节简述CCS文件夹、CCS的文件类型及CCS环境变量。7.5.1安装文件夹安装程序在安装CCS时(默认安装目录为:c:ti),建立的主要子文件夹如下图所示。其中 C:ti 包含的主要子目录及所含内容如下: bin. 各种应用程序; c6000bios。DSP/BIOS AP
14、I的程序编译时使用的各种相关文件; c6000cgtools. Texas instruments源代码生成工具; myprojects examples. 源程序实例; c6000rtdx.RTDX文件; tutorial. 实例文件; ccbin. 关于CCS环境的文件; ccgel. 与CCS一起使用的GEL文件; docs. PDS格式的文件和指南; myprojects. 用户文件夹;7.5.2扩展文件夹以下目录结构被添加到Windows目录: tidrivers.各种DSP板驱动文件; tiplugins.和CCS一起使用的插件程序; tiuninstall.支持卸载CCS软件的文
15、件;当使用CCS时,你将经常遇见下述扩展名文件: project.mak. CCS使用的工程文件; program.c. C程序源文件; program.asm. 汇编程序源文件; filename.h. C程序的头文件,包含DSP/BIOS API模块的头文件; filename.lib. 库文件; project.cmd. 连接命令文件; program.obj. 由源文件编译或汇编而得的目标文件; program.out. (经完整的编译、汇编以及连接的)可执行文件; project.wks. 存储环境设置信息的工作区文件; program.cdb. 配置数据库文件。采用DSP/BIOS
16、 API的应用程序需要这类文件,对于其它应用程序则是可选的。保存配置文件时将产生下列文件: programcfg.cmd. 连接器命令文件; programcfg.h. 头文件; programcfg.asm. 汇编源文件。7.6 CCS的安装与配置下面以Wintech公司的“DSP教学实验系统”为例,详细说明构造与设置DSP软件开发环境CCS的方法与步骤:7.6.1 安装CCS软件准备通用PC机一台,且安装Windows XP或Windows 2000操作系统。(1)安装CCS 2.2:进入“CCS V2.2安装文件”目录,双击“Setup”文件,启动安装程序,如下图7.4所示。点“Inst
17、all”开始安装,建议在安装过程中,均采用默认安装,即安装到 c:ti 目录下。安装成功后,若提示电脑重启,则重新启动一下电脑。图7.4 CCS安装界面(2)升级到2.20.18版本:进入“AddOns CCS2.20.18”目录,双击其中的升级文件“C6000-2.20.00-FULL-to-C6000-2.20.18-FULL.exe”,升级过程中,均采用默认安装。(3)安装DDK,NDK1.6和RF软件包:进入“AddOns”目录,可以看到这些软件包,按顺序分别将它们都安装到默认目录,即c:ti目录。(4)安装TDS510 DSP仿真器:需要安装如下二部分的程序。进入“仿真器安装程序TD
18、S510USB Emulator”目录,双击“Setup_510USB_Plus.exe”文件,按默认方式进行安装;先将TDS510 DSP仿真器USB端口通过USB线连接到PC机的USB接口,DSP试验箱加电后,则仿真器的电源灯会亮。这时,PC机则会提示安装USB驱动程序,通过手动的方式指定安装文件的目录为“仿真器安装程序TDS510USB Emulatordriver”,PC机则自动从该目录获得USB的配置信息,完成USB的正常驱动。(5)安装Wintech实验程序:进入“Wintech实验程序”目录,双击实验箱安装包 “TS-DM64Xsetup(NTSC).exe”,实验程序与相关文档
19、自动安装到默认目录c:ti之中。7.6.2设置CCS C CS安装成功之后,要使用CCS进行DSP程序开发,则先对CCS进行配置,就是建立CCS与目标板或软件仿真器之间的通信。CCS可以配置成如下二同不同的工作环境:、设置CCS工作在软件仿真环境(Simulator):CCS可以工作在纯软件仿真环境(Simulator环境)中,就是由软件在PC机内在中构造一个虚拟的DSP环境,可以调试、运行DSP程序。由于软件无法构造DSP的外设,所以软件仿真通常只用于调试纯软件的算法和进行效率分析等。在使用软件仿真环境工作时,不需要连接板卡或仿真器等硬件。具体配置方法如下:(1)双击桌面上的“Setup C
20、CS 2 (C6000)”图标,进入CCS设置窗口。(2)在出现的窗口中,如图7.5所示,按标号的顺序进行设置。图7.5 CCS的软件仿真环境设置方法(3)选择“是”保存设置,退出CCS Setup,进入CCS。此时,CCS已经被设置成Simulator方式,如果一直使用此工作方式,使用CCS前则不需要重新进行上述设置操作。2、设置CCS工作在硬件仿真环境(Emulator):设置CCS通过TDS510 DSP仿真器连接Wintech的TS-DM64x试验箱的硬件环境进行DSP程序的调试与开发。将实验箱、仿真器和PC机进行正确的连接(具体可参考试验箱的手册),实验箱加上电之后,进行如下设置:(
21、1)双击桌面上的“Setup CCS 2 (C6000)”图标,进入CCS设置窗口。(2)在出现的窗口中,按照图7.6所示方法选择仿真器配置:图7.6 CCS的硬件仿真环境设置方法(3)接着在下面的窗口按标号顺序进行相应操作。图7.7 硬件仿真环境的属性配置(4)接着图7.8所示的方法进行“Board Properties”设置:(A)选择配置文件 (B)配置端口(C)添加处理器 (D)选择Gel文件图7.8 CCS的硬件仿真“Board Properties”设置(5)保存设置,退出CCS Setup, CCS被设置为Emulator工作方式。7.6.3启动与关闭CCS1、启动CCS:1)在
22、Simulator方式下启动CCS。设置CCS,使其工作在Simulator方式中(若已设置为Simulator工作方式,此步可省略),设置方法详见7.6.2节。双击桌面的“CCS 2 (C6000)”图标,启动CCS。2)在Emulator方式下启动CCS。连接硬件,打开电源。具体方法请参考DSP实验箱或开发板的使用说明。设置CCS,使其工作在Emulator方式中(若已设置为Emulator工作方式,此步可省略),设置方法详见7.6.2节。双击桌面的“CCS 2 (C6000)”图标,启动CCS。2、退出CCS:在CCS开发环境中,单击菜单中的“FileExit”,即可退出CCS,或直接关
23、闭CCS的窗口也可退出CCS。7.7 CCS入门实验CCS主要用于DSP软件的开发与调试,它提供了一整套的DSP程序编写、维护与编译的调试环境,能将汇编或C语言的DSP程序编译连接成COFF(公共目标文件)格式的可执行文件,并能将程序下载到目标DSP系统上运行调试。CCS通过工程来管理文件,一般包括如下几种类型的文件: 源程序文件:C语言或汇编语言文件(*.c 或*.asm文件) 头文件(*.h) 命令文件(*.cmd) 库文件(*.lib或*.obj)本节将通过一个简单的实例来介绍在CCS中创建、调试和测试应用程序的基本步骤,为在CCS中深入开发DSP软件奠定基础。在使用本实例之前,你应该已
24、经根据安装说明书完成了CCS安装与配置。本试验的主要目的如下: 学习创建和管理DSP工程的方法 了解CCS基本的编译与调试功能 学习使用CCS的观察窗口 了解CCS图像查看功能的使用7.7.1 建立DSP工程1、设置CCS工作于Simulator或Emulator仿真模式,并启动CCS。2、创建工程:(1)创建新的工程文件:选择菜单“Project”中的“New”项,打开如图7.10所示的“新建工程”窗口,按编号顺序建立UseCCS.pjt工程文件。图7.9 新建DSP工程展开主窗口左侧工程管理窗口中“Project”下的“UseCCS.pjt”,可以看到各项文件均为空(因为它是刚刚新建的工程
25、)。(2)在工程文件中添加程序文件:打开本书的配套光盘,从 DSP源程序中的“Lab-Chap7”目录中找到如下四个文件:main.c, useccs.cmd, rts6400.lib, volume.h,并将它们拷贝到新工程“useccs” 目录之下。选择菜单“Project”的“Add File to Project”项,在“Add Files to Project”对话框中选择工程“useccs” 目录,改变文件类型为“C Soure Files (*.c; *.ccc)”,添加“main.c”文件到工程; 选择菜单“Project”的“Add File to Project”项,在“A
26、dd Files to Project”对话框中选择工程“useccs” 目录,改变文件类型为“Linker Command FIle (*.cmd; *.lcf)”,添加“useccs.cmd”文件到工程;选择菜单“Project”的“Add File to Project”项,在“Add Files to Project”对话框中选择工程“useccs” 目录,改变文件类型为“Object and Library Files (*.o; *.l*)”,添加“rts6400.lib”文件到工程。(3)编译链接工程:选择菜单“Project”的“Rebuild All”项,或单击工具条中的“”
27、按钮;注意编译过程中CCS主窗口底部“Build”提示窗中显示的编译信息,最后将给出错误和警告的统计数。7.7.2 编辑与修改工程文件1、查看工程文件:展开CCS主窗口左侧工程管理窗口中的工程文件,可以看到“useccs.pjt”工程中包含main.c, useccs.cmd, rts6400.lib, volume.h四个文件,其中volume.h文件为程序在编译过程中,根据include语句自动加入的。2、查看源文件:双击工程管理窗口中的“main.c”文件,可以查看程序内容如下:/*= 头文件引用=*/#include stdio.h#include volume.h/*= 工作变量定义
28、=*/int inp_bufferBUFSIZE; / processing data buffersint out_bufferBUFSIZE; / BUF_SIZE的定义见volume.h int Gray100; / BUF_SIZE的定义见volume.h int Gray1100; / BUF_SIZE的定义见volume.h int *input; /指针定义 unsigned charint *output;#pragma DATA_SECTION(Voltage0,data); int Voltage040000;#pragma DATA_SECTION(Voltage1,da
29、ta);int Voltage140000;#pragma DATA_SECTION(Voltage2,data);int Voltage240000;#pragma DATA_SECTION(Voltage3,data);int Voltage340000;int volume = 2;struct PARMS str = 2934,9432,213,9432,&str;/*= 调用子程序规则=*/int read_signals(int *input);int write_buffer(int *input,int *output,int count);int output_signals
30、(int *output);/*= 主程序 =*/main() int num = BUFSIZE; int i;/*= 初始化 =*/ i=0; input=inp_buffer; output=out_buffer;/*= 无限循环=*/ while ( TRUE ) read_signals(input); / 加软件断点和探针 write_buffer(input, output, num); output_signals(output); i+; printf(Number: %dn,i); /*= 子程序 =*/ 读取输入信号int read_signals(int *input) / 在此读取采集数据信号放到输入缓冲区input return(TRUE);/ 将数据进行处理后搬移到输出缓冲区int write_buffer(int *input,int *output,int count) int i; for ( i=0;icount;i+ ) ou
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1