7章 CCS软件及C语言编程20+6new.docx
《7章 CCS软件及C语言编程20+6new.docx》由会员分享,可在线阅读,更多相关《7章 CCS软件及C语言编程20+6new.docx(32页珍藏版)》请在冰豆网上搜索。
7章CCS软件及C语言编程20+6new
第7章CCS软件及C语言编程
CodeComposerStudio(简称CCS)是TI公司推出的用于开发DSP程序的集成开发环境,它采用Windows风格界面,集编辑、编译、链接、软件仿真、硬件调试以及实时跟踪等功能于一体,极大地方便了DSP程序的开发与设计,是目前使用最为广泛的DSP开发软件之一。
本章将概述DSP程序的开发过程、CCS组件及CCS使用的文件和变量以及C语言编程。
7.1CCS的简介
图7.1DSP程序的开发阶段
CCS是一种针对TMS320系列DSP的集成开发环境,在Windows操作系统下,采用图形接口界面。
CCS提供了基本的代码生成工具,它们具有一系列的调试、分析能力。
CCS支持如图7.1所示的DSP程序开发周期的所有阶段。
在使用CCS之前,必须完成下述工作:
(1)安装DSP目标板和驱动软件。
按照随DSP目标板所提供的说明书安装。
如果你正在用仿真器或目标板,其驱动软件已随目标板提供,你可以按产品的安装指南逐步安装。
(2)安装CCS环境。
遵循安装说明书进行安装,如果你已有CCS仿真器和TMS320C64X代码生成工具,但没有完整的CCS,你可以按安装说明书进行安装。
(3)设置CCS仿真环境。
运行CCS安装程序SETUP,你可以将CCS设置成Simulator或Emulator工作方式。
CCS包括如下各部分:
■CCS代码生成工具
■CCS集成开发环境(IDE)
■DSP/BIOS插件程序和API
■RTDX插件、主机接口和API
■由TI公司之外的第三方提供的各种应用模块插件等
CCS构成及接口如图7.2所示。
7.2代码生成工具
代码生成工具奠定了CCS所提供的开发环境的基础。
图7.3是一个典型的软件开发流
图7.2CCS构成及接口
程图,图中阴影部分表示通常的C语言开发途径,其它部分是为了强化开发过程而设置的附加功能。
图7.3描述的工具如下:
●C编译器(Ccompiler)产生汇编语言源代码,其细节参见TMS320C6000最优化C编译器用户指南。
●汇编器(assembler) 把汇编语言源文件翻译成机器语言目标文件,机器语言格式为公用目标格式(COFF),其细节参见TMS320C6000汇编语言工具用户指南。
●连接器(linker) 把多个目标文件组合成单个可执行目标模块。
它一边创建可执行模块,一边完成重定位以及决定外部参考。
连接器的输入是可重定位的目标文件和目标库文件,有关连接器的细节参见TMS320C6000最优化C编译器用户指南和汇编语言工具用户指南。
●归档器(archiver)允许你把一组文件收集到一个归档文件中。
归档器也允许你通过删除、替换、提取或添加文件来调整库,其细节参见TMS320C6000汇编语言工具用户指南。
●助记符到代数汇编语言转换公用程序(mnimonic_to_algebricassemblytranslatorutility)把含有助记符指令的汇编语言源文件转换成含有代数指令的汇编语言源文件,其细节参见TMS320C6000汇编语言工具用户指南。
●你可以利用建库程序(library_buildutility)建立满足你自己要求的“运行支持库”,其细节参见TMS320C6000最优化C编译器用户指南。
●运行支持库(run_time_supportlibraries)它包括C编译器所支持的ANSI标准运
图7.3软件开发流程
行支持函数、编译器公用程序函数、浮点运算函数和C编译器支持的I/O函数,其细节参见TMS320C6000最优化C编译器用户指南。
●十六进制转换公用程序(hexconversionutility)它把COFF目标文件转换成TI-Tagged、ASCII-hex、Intel、Motorola-S、或Tektronix等目标格式,可以把转换好的文件下载到EPROM编程器中,其细节参见TMS320C6000汇编语言工具用户指南。
●交叉引用列表器(cross_referencelister)它用目标文件产生参照列表文件,可显示符号及其定义,以及符号所在的源文件,其细节参见TMS320C6000汇编语言工具用户指南。
●绝对列表器(absolutelister)它输入目标文件,输出.abs文件,通过汇编.abs文件可产生含有绝对地址的列表文件。
如果没有绝对列表器,这些操作将需要冗长乏味的手工操作才能完成。
7.3CCS集成开发环境
CCS集成开发环境(IDE)允许编辑、编译和调试DSP目标程序。
7.3.1编辑源程序
CCS允许编辑C源程序和汇编语言源程序,你还可以在C语句后面显示汇编指令的方式来查看C源程序。
集成编辑环境支持下述功能:
●用彩色加亮关键字、注释和字符串。
●以圆括弧或大括弧标记C程序块,查找匹配块或下一个圆括弧或大括弧。
●在一个或多个文件中查找和替代字符串,能够实现快速搜索。
●取消和重复多个动作。
●获得“上下文相关”的帮助。
●用户定制的键盘命令分配。
7.3.2创建应用程序
应用程序通过工程文件来创建。
工程文件中包括C源程序、汇编源程序、目标文件、库文件、连接命令文件和包含文件。
编译、汇编和连接文件时,可以分别指定它们的选项。
在CCS中,可以选择完全编译或增量编译,可以编译单个文件,也可以扫描出工程文件的全部包含文件从属树,也可以利用传统的makefiles文件编译。
7.3.3调试应用程序
CCS提供下列调试功能:
●设置可选择步数的断点
●在断点处自动更新窗口
●查看变量
●观察和编辑存储器和寄存器
●观察调用堆栈
●对流向目标系统或从目标系统流出的数据采用探针工具观察,并收集存储器映象
●绘制选定对象的信号曲线
●估算执行统计数据
●观察反汇编指令和C指令
CCS提供GEL语言,它允许开发者向CCS菜单中添加功能。
7.4硬件仿真和实时数据交换
TIDSPs提供在线硬件仿真支持,它使得CCS能够控制程序的执行,实时监视程序运行。
增强型JTAG连接提供了对在线硬件仿真的支持,它是一种可与任意DSP系统相连的低侵扰式的连接。
仿真接口提供主机一侧的JTAG连接,如TIXSD510。
为方便起见,DSP评估板都会提供在板JTAG仿真接口。
在线硬件仿真提供多种功能:
●DSP的启动、停止或复位功能
●向DSP下载代码或数据
●检查DSP的寄存器或存储器
●硬件指令或依赖于数据的断点
●包括周期的精确计算在内的多种记数能力
●主机和DSP之间的实时数据交换(RTDX)
CCS提供在线硬件能力的嵌入式支持;另外,RTDX通过主机和DSP APIs提供主机和DSP之间的双向实时数据交换,它能够使开发者实时连续地观察到DSP应用的实际工作方式。
在目标系统应用程序运行时,RTDX也允许开发者在主机和DSP设备之间传送数据,而且这些数据可以在使用自动OLE的客户机上实时显示和分析,从而缩短研发时间。
RTDX由目标系统和主机两部分组成。
小的RTDX库函数在目标系统DSP上运行。
开发者通过调用RTDX软件库的API函数将数据输入或输出目标系统的DSP,库函数通过在线硬件仿真硬件和增强型JTAG接口将数据输入或输出主机平台,数据在DSP应用程序运行时实时传送给主机。
在主机平台上,RTDX库函数与CCS一道协同工作。
显示和分析工具可以通过COMAPI与RTDX通信,从而获取目标系统数据,或将数据发送给DSP应用例程。
开发者可以使用标准的显示软件包,诸如NationalInstruments’LabVIEW,Quinn-Curtis’Real-TimeGraphicsTools,或MicrosoftExcel。
同时,开发者也可研制他们自己的VisualBasic或VisualC++应用程序。
RTDX能够记录实时数据,并可将其回放用于非实时分析。
下述样本由NationalInstruments’LabVIEW软件产生。
在目标系统上,一个原始信号通过FIR滤波器,然后与原始信号一起通过RTDX发送给主机。
在主机上,LabVIEW显示屏通过RTDXCOMAPI获取数据,并将它们显示在显示屏的左边。
利用信号的功率谱可以检验目标系统中FIR滤波器是否正常工作。
处理后的信号通过LabVIEW,将其功率谱显示在右上部分;目标系统的原始信号通过LabVIEW的FIR滤波器,再将其功率谱显示在右下部分。
比较这两个功率谱便可确认目标系统的滤波器是否正常工作。
RTDX适合于各种控制、伺服和音频应用。
例如,无线电通信产品可以通过RTDX捕捉语音合成算法的输出以检验语音应用程序的执行情况;嵌入式系统也可从RTDX获益;硬磁盘驱动设计者可以利用RTDX测试他们的应用软件,不会因不正确的信号加到伺服马达上而与驱动发生冲突;引擎控制器设计者可以利用RTDX在控制程序运行的同时分析随环境条件而变化的系数。
对于这些应用,用户都可以使用可视化工具,而且可以根据需要选择信息显示方式。
未来的TIDSPs将增加RTDX的带宽,为更多的应用提供更强的系统可视性。
关于RTDX的详细资料,请参见CCS中RTDX在线帮助。
7.5CCS文件和变量
本节简述CCS文件夹、CCS的文件类型及CCS环境变量。
7.5.1安装文件夹
安装程序在安装CCS时(默认安装目录为:
c:
\ti),建立的主要子文件夹如下图所示。
其中C:
\ti包含的主要子目录及所含内容如下:
●bin.各种应用程序;
●c6000\bios。
DSP/BIOSAPI的程序编译时使用的各种相关文件;
●
c6000\cgtools.Texasinstruments源代码生成工具;
●myprojects\examples.源程序实例;
●c6000\rtdx. RTDX文件;
●tutorial.实例文件;
●cc\bin.关于CCS环境的文件;
●cc\gel.与CCS一起使用的GEL文件;
●docs.PDS格式的文件和指南;
●myprojects.用户文件夹;
7.5.2扩展文件夹
以下目录结构被添加到Windows目录:
●ti\drivers.各种DSP板驱动文件;
●ti\plugins.和CCS一起使用的插件程序;
●ti\uninstall.支持卸载CCS软件的文件;
当使用CCS时,你将经常遇见下述扩展名文件:
●project.mak.CCS使用的工程文件;
●program.c.C程序源文件;
●program.asm.汇编程序源文件;
●filename.h.C程序的头文件,包含DSP/BIOSAPI模块的头文件;
●filename.lib.库文件;
●project.cmd.连接命令文件;
●program.obj.由源文件编译或汇编而得的目标文件;
●program.out.(经完整的编译、汇编以及连接的)可执行文件;
●project.wks.存储环境设置信息的工作区文件;
●program.cdb.配置数据库文件。
采用DSP/BIOSAPI的应用程序需要这类文件,对于其它应用程序则是可选的。
保存配置文件时将产生下列文件:
●programcfg.cmd.连接器命令文件;
●programcfg.h.头文件;
●programcfg.asm.汇编源文件。
7.6CCS的安装与配置
下面以Wintech公司的“DSP教学实验系统”为例,详细说明构造与设置DSP软件开发环境CCS的方法与步骤:
7.6.1安装CCS软件
准备通用PC机一台,且安装WindowsXP或Windows2000操作系统。
(1)安装CCS2.2:
进入“CCSV2.2安装文件”目录,双击“Setup”文件,启动安装程序,如下图7.4所示。
点“Install”开始安装,建议在安装过程中,均采用默认安装,即安装到c:
\ti目录下。
安装成功后,若提示电脑重启,则重新启动一下电脑。
图7.4CCS安装界面
(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)安装TDS510DSP仿真器:
需要安装如下二部分的程序。
①进入“仿真器安装程序\TDS510USBEmulator”目录,双击“Setup_510USB_Plus.exe”文件,按默认方式进行安装;
②先将TDS510DSP仿真器USB端口通过USB线连接到PC机的USB接口,DSP试验箱加电后,则仿真器的电源灯会亮。
这时,PC机则会提示安装USB驱动程序,通过手动的方式指定安装文件的目录为“仿真器安装程序\TDS510USBEmulator\driver”,PC机则自动从该目录获得USB的配置信息,完成USB的正常驱动。
(5)安装Wintech实验程序:
进入“Wintech实验程序”目录,双击实验箱安装包“TS-DM64Xsetup(NTSC).exe”,实验程序与相关文档自动安装到默认目录c:
\ti之中。
7.6.2设置CCS
CCS安装成功之后,要使用CCS进行DSP程序开发,则先对CCS进行配置,就是建立CCS与目标板或软件仿真器之间的通信。
CCS可以配置成如下二同不同的工作环境:
1、设置CCS工作在软件仿真环境(Simulator):
CCS可以工作在纯软件仿真环境(Simulator环境)中,就是由软件在PC机内在中构造一个虚拟的DSP环境,可以调试、运行DSP程序。
由于软件无法构造DSP的外设,所以软件仿真通常只用于调试纯软件的算法和进行效率分析等。
在使用软件仿真环境工作时,不需要连接板卡或仿真器等硬件。
具体配置方法如下:
(1)双击桌面上的“SetupCCS2('C6000)”图标,进入CCS设置窗口。
(2)在出现的窗口中,如图7.5所示,按标号的顺序进行设置。
图7.5CCS的软件仿真环境设置方法
(3)选择“是”保存设置,退出CCSSetup,进入CCS。
此时,CCS已经被设置成Simulator方式,如果一直使用此工作方式,使用CCS前则不需要重新进行上述设置操作。
2、设置CCS工作在硬件仿真环境(Emulator):
设置CCS通过TDS510DSP仿真器连接Wintech的TS-DM64x试验箱的硬件环境进行DSP程序的调试与开发。
将实验箱、仿真器和PC机进行正确的连接(具体可参考试验箱的手册),实验箱加上电之后,进行如下设置:
(1)双击桌面上的“SetupCCS2('C6000)”图标,进入CCS设置窗口。
(2)在出现的窗口中,按照图7.6所示方法选择仿真器配置:
图7.6CCS的硬件仿真环境设置方法
(3)接着在下面的窗口按标号顺序进行相应操作。
图7.7硬件仿真环境的属性配置
(4)接着图7.8所示的方法进行“BoardProperties”设置:
(A)选择配置文件
(B)配置端口
(C)添加处理器
(D)选择Gel文件
图7.8CCS的硬件仿真“BoardProperties”设置
(5)保存设置,退出CCSSetup,CCS被设置为Emulator工作方式。
7.6.3启动与关闭CCS
1、启动CCS:
1)在Simulator方式下启动CCS。
①设置CCS,使其工作在Simulator方式中(若已设置为Simulator工作方式,此步可省略),设置方法详见7.6.2节。
②双击桌面的“CCS2('C6000)”图标,启动CCS。
2)在Emulator方式下启动CCS。
①连接硬件,打开电源。
具体方法请参考DSP实验箱或开发板的使用说明。
②设置CCS,使其工作在Emulator方式中(若已设置为Emulator工作方式,此步可省略),设置方法详见7.6.2节。
②双击桌面的“CCS2('C6000)”图标,启动CCS。
2、退出CCS:
在CCS开发环境中,单击菜单中的“FileExit”,即可退出CCS,或直接关闭CCS的窗口也可退出CCS。
7.7CCS入门实验
CCS主要用于DSP软件的开发与调试,它提供了一整套的DSP程序编写、维护与编译的调试环境,能将汇编或C语言的DSP程序编译连接成COFF(公共目标文件)格式的可执行文件,并能将程序下载到目标DSP系统上运行调试。
CCS通过工程来管理文件,一般包括如下几种类型的文件:
⏹源程序文件:
C语言或汇编语言文件(*.c或*.asm文件)
⏹头文件(*.h)
⏹命令文件(*.cmd)
⏹库文件(*.lib或*.obj)
本节将通过一个简单的实例来介绍在CCS中创建、调试和测试应用程序的基本步骤,为在CCS中深入开发DSP软件奠定基础。
在使用本实例之前,你应该已经根据安装说明书完成了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”,可以看到各项文件均为空(因为它是刚刚新建的工程)。
(2)在工程文件中添加程序文件:
打开本书的配套光盘,从DSP源程序中的“Lab-Chap7”目录中找到如下四个文件:
main.c,useccs.cmd,rts6400.lib,volume.h,并将它们拷贝到新工程“useccs\”目录之下。
选择菜单“Project”的“AddFiletoProject…”项,在“AddFilestoProject”对话框中选择工程“useccs\”目录,改变文件类型为“CSoureFiles(*.c;*.ccc)”,添加“main.c”文件到工程;
选择菜单“Project”的“AddFiletoProject…”项,在“AddFilestoProject”对话框中选择工程“useccs\”目录,改变文件类型为“LinkerCommandFIle(*.cmd;*.lcf)”,添加“useccs.cmd”文件到工程;
选择菜单“Project”的“AddFiletoProject…”项,在“AddFilestoProject”对话框中选择工程“useccs\”目录,改变文件类型为“ObjectandLibraryFiles(*.o;*.l*)”,添加“rts6400.lib”文件到工程。
(3)编译链接工程:
选择菜单“Project”的“RebuildAll”项,或单击工具条中的“
”按钮;注意编译过程中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"
/*=============工作变量定义======*/
intinp_buffer[BUFSIZE];//processingdatabuffers
intout_buffer[BUFSIZE];//BUF_SIZE的定义见volume.h
intGray[100];//BUF_SIZE的定义见volume.h
intGray1[100];//BUF_SIZE的定义见volume.h
int*input;//指针定义unsignedchar
int*output;
#pragmaDATA_SECTION(Voltage0,"data");
intVoltage0[40000];
#pragmaDATA_SECTION(Voltage1,"data");
intVoltage1[40000];
#pragmaDATA_SECTION(Voltage2,"data");
intVoltage2[40000];
#pragmaDATA_SECTION(Voltage3,"data");
intVoltage3[40000];
intvolume=2;
structPARMSstr=
{
2934,9432,213,9432,&str
};
/*===============调用子程序规则===============*/
intread_signals(int*input);
intwrite_buffer(int*input,int*output,intcount);
intoutput_signals(int*output);
/*=================主程序================*/
main()
{
intnum=BUFSIZE;
inti;
/*===========初始化==========*/
i=0;
input=inp_buffer;
output=out_buffer;
/*===========无限循环=========*/
while(TRUE)
{
read_signals(input);//加软件断点和探针
write_buffer(input,output,num);
output_signals(output);
i++;
printf("Number:
%d\n",i);
}
}
/*==============子程序=============*/
//读取输入信号
intread_signals(int*input)
{
//在此读取采集数据信号放到输入缓冲区input[]
return(TRUE);
}
//将数据进行处理后搬移到输出缓冲区
intwrite_buffer(int*input,int*output,intcount)
{inti;
for(i=0;iou