使用CCS进行DSP编程(一)——CCS编程入门(精)
- 格式:doc
- 大小:753.00 KB
- 文档页数:10
CCS编程教程第一章CCS概述本章概述CCS(Code Composer Studio)软件开发过程、CCS组件及CCS使用的文件和变量。
CCS提供了配置、建立、调试、跟踪和分析程序的工具,它便于实时、嵌入式信号处理程序的编制和测试,它能够加速开发进程,提高工作效率。
1.1 CCS概述CCS提供了基本的代码生成工具,它们具有一系列的调试、分析能力。
CCS支持如下所示的开发周期的所有阶段。
在使用本教程之前,必须完成下述工作:o安装目标板和驱动软件。
按照随目标板所提供的说明书安装。
如果你正在用仿真器或目标板,其驱动软件已随目标板提供,你可以按产品的安装指南逐步安装。
o安装CCS.遵循安装说明书安装。
如果你已有CCS仿真器和TMS320c54X代码生成工具,但没有完整的CCS,你可以按第二章和第四章所述的步骤进行安装。
o运行CCS安装程序SETUP. 你可以按步骤执行第二章和第四章的实验。
SETUP程序允许CCS使用为目标板所安装的驱动程序。
CCS包括如下各部分:oCCS代码生成工具:参见1.2节oCCS集成开发环境(IDE):参见1.3节oDSP/BIOS插件程序和API:参见1.4节oRTDX插件、主机接口和API:参见1.5节2006-11-9 09:59 回复闪电狐狸0位粉丝2楼1.2 代码生成工具代码生成工具奠定了CCS所提供的开发环境的基础。
oC编译器(C compiler) 产生汇编语言源代码,其细节参见TMS320C54x最优化C编译器用户指南。
o汇编器(assembler)把汇编语言源文件翻译成机器语言目标文件,机器语言格式为公用目标格式(COFF),其细节参见TMS320C54x汇编语言工具用户指南。
o连接器(linker)把多个目标文件组合成单个可执行目标模块。
它一边创建可执行模块,一边完成重定位以及决定外部参考。
连接器的输入是可重定位的目标文件和目标库文件,有关连接器的细节参见TMS320C54x最优化C编译器用户指南和汇编语言工具用户指南。
实验一 开发一个简单的应用程序本实验使用hello world实例介绍在CCS中创建、调试和测试应用程序的基本步骤;介绍CCS的主要特点,为在CCS中深入开发DSP软件奠定基础。
在使用本实例之前,你应该已经根据安装说明书完成了CCS安装。
1.1 创建工程文件在本章中,将建立一个新的应用程序,它采用标准库函数来显示一条hello world 消息。
1. 如果CCS 安装在c:\ti 中,则可在c:\ti\myprojects 建立文件夹hello1 。
( 若将CCS 安装在其它位置, 则在相应位置创建文件夹hello1。
)2. 将c:\ti\tutorial\sim54xx\hello1 中的所有文件拷贝到上述新文件夹。
3. 从Windows Start 菜单中选择Programs→ Texas Instruments→Code Composer Studio ‘C5000→CCS。
(或者在桌面上双击CCS图标。
)注:CCS 设置在正确打开CCS开发平台前,首先应通过Setup对CCS进行软件设置,通过设置正确的驱动完成CCS集成开发环境与目标板或Simulator之间的通信接口。
有关Emulator设置的具体过程可参考实验箱配套使用说明。
本次实验使用的是Simulator,所以只需执行Edit->Add to System(或直接在Import窗口中进行添加),将C54xSimulator添加到系统中即可使用。
4. 选择菜单项Project→New。
5. 在Save New Project As 窗口中选择你所建立的工作文件夹并点击Open。
键入myhello 作为文件名并点击Save,CCS 就创建了myhello.pjt的工程文件,它存储你的工程设置,并且提供对工程所使用的各种文件的引用。
1.2 向工程添加文件1. 选择Project→Add Files to Project,选择hello.c 并点击Open。
实验一 CCS使用及DSP 基本数学运算一、实验目的:1、熟悉CCS 集成开发环境,掌握工程的生成方法;2、熟悉SEED-DTK5416实验环境;3、掌握CCS 集成开发环境的调试方法;4、了解数在计算过程中的定标,掌握数的定点、浮点表示方法,定点、浮点基本运算以及定点、浮点间的相互转换。
二、实验内容:1、 DSP源文件的建立;2、 DSP程序工程文件的建立;3、编译与链接的设置,生成可执行的DSP 文件;4、进行DSP 程序的调试与改错;5、学习使用CCS 集成开发工具的调试工具;6、观察实验结果;三、实验知识背景:在DSP 编程过程中,数以二进制、十进制、与十六制表示均可。
在定点DSP 的运算过程中,数一般采用二进制与二进制补码的形式进行运算的。
其中二进制数只能代表正数不能代表负的数,而二进制补码记数系统弥补了这一缺点。
它的构成如下;在二进制的基础上,加一符号位。
符号位位于二进制数的最高位当为正数时,符号位为0,为负数时,符号位为1当采用二进制补码进行数的运算时,具有如下的两个优点:可以将加法与减法统一成加法运算符号位可以进行扩展,而其数值不变,这可以使一个比较小的数存放到比较大的寄存器当中例:1×2 + 0×1 = -2 (11110)2 = 1×(-16)+ 1×8 + …… +当将其符号位扩展三位,放入一8位的寄存器中1×2 + 0×1 = -2 (11111110)2 = 1×(-128)+ 1×64 + …… +这将为运算提供极大的方便,因而在定点的DSP 中,大多数情况采用二进制补码形式。
C5000系列的DSP 硬件只支持定点运算,浮点运算要通过软件来实现。
其运算字长为16位,也就是说,DSP 所能表示的整数的范围也就决定了,其范围为-32768到32767。
而在很多情况下,数学运算过程中不一定是整数,而且动态范围也不是固定不变的。
实验一 CCS使用及DSP 基本数学运算一、实验目的:1、熟悉CCS 集成开发环境,掌握工程的生成方法;2、熟悉SEED-DTK5416实验环境;3、掌握CCS 集成开发环境的调试方法;4、了解数在计算过程中的定标,掌握数的定点、浮点表示方法,定点、浮点基本运算以及定点、浮点间的相互转换。
二、实验内容:1、 DSP源文件的建立;2、 DSP程序工程文件的建立;3、编译与链接的设置,生成可执行的DSP 文件;4、进行DSP 程序的调试与改错;5、学习使用CCS 集成开发工具的调试工具;6、观察实验结果;三、实验知识背景:在DSP 编程过程中,数以二进制、十进制、与十六制表示均可。
在定点DSP 的运算过程中,数一般采用二进制与二进制补码的形式进行运算的。
其中二进制数只能代表正数不能代表负的数,而二进制补码记数系统弥补了这一缺点。
它的构成如下;在二进制的基础上,加一符号位。
符号位位于二进制数的最高位当为正数时,符号位为0,为负数时,符号位为1当采用二进制补码进行数的运算时,具有如下的两个优点:可以将加法与减法统一成加法运算符号位可以进行扩展,而其数值不变,这可以使一个比较小的数存放到比较大的寄存器当中例:1×2 + 0×1 = -2 (11110)2 = 1×(-16)+ 1×8 + …… +当将其符号位扩展三位,放入一8位的寄存器中1×2 + 0×1 = -2 (11111110)2 = 1×(-128)+ 1×64 + …… +这将为运算提供极大的方便,因而在定点的DSP 中,大多数情况采用二进制补码形式。
C5000系列的DSP 硬件只支持定点运算,浮点运算要通过软件来实现。
其运算字长为16位,也就是说,DSP 所能表示的整数的范围也就决定了,其范围为-32768到32767。
而在很多情况下,数学运算过程中不一定是整数,而且动态范围也不是固定不变的。
使用CCS进行DSP编程(二)——实现FFTpacificxu现在讨论使用TI公司的CCS进行DSP编程,首先假定读者对CCS的使用已经比较了解,如果读者还不太了解,请参阅《使用CCS进行DSP编程(一)——CCS编程入门》及其他CCS的学习文档。
作数字信号处理的同志们总是喜欢用FFT来对信号处理系统做检验,下面用闻亭公司的C6xP板、C6xPa板硬件实现FFT算法,本算法对其他的C6x板同样实用(只是硬件资源稍微有差异),并通过闻亭公司的PCI仿真器对目标板加载运行,运行结果在CCS中可视化显示。
首先启动CCS Setup,对仿真器硬件进行设置,本人使用的是闻亭公司PCI 的仿真器自带的驱动wtxds6xxxpci.dvr,设置画面如下:下面就可以运行CCS了,在CCS中,创建一个新的Project,我的工程文件放置在如下的目录中,读者可以放在自己喜欢的目录下:双击“+”展开fft.mak,可以看到整个工程文件是空的,我们需要把*.c、*.cmd、*.lib文件添加到工程文件中,首先是*.c文件,本例中是test.c文件,同样的方法可以用来添加其他的文件。
双击工程中的源文件,会在右边的窗口中看见原码:如果*.c文件不存在,可以在CCS集成开发环境中生成,本例中test.c的主程序源代码如下:调用的子程序有三个:从上面的源程序可以看到,使用CCS的C语言编程跟普通的C语言编程没有太大的区别,这正是TI所追求的,兼容的ANSI C标准和如此的编译高效率也正是TI的领先之处。
读者可以不必学习烦琐的汇编和线性汇编,直接对数字信号处理的算法进行研究,同时享受高速的处理速度,只有在对速度要求极严的条件下,不得不使用汇编和线性汇编,那时读者已经有了一定的基础,再学习汇编语言已是水到渠成。
而使用C语言编程是大势所趋。
如果有人对算法本身感兴趣,请参阅胡广书老师的《数字信号处理—理论、算法与实现》第5章快速傅立叶变换,这里不在对算法进行展开讨论。
CCS_DSP开发环境教程第二步:配置DSP开发板在开始使用CCS_DSP开发环境之前,你需要将DSP开发板与你的计算机连接,并配置好相关硬件设置。
连接开发板到计算机的方法因开发板型号而异,你可以参考TI的开发板用户手册来了解具体的连接方法和配置过程。
第三步:创建新的CCS_DSP项目启动CCS_DSP开发环境后,你将看到一个工程资源视图,该视图列出了你所有的项目和文件。
要创建一个新的CCS_DSP项目,你可以右键单击工程资源视图中的空白处,然后选择“新建项目”选项。
在弹出的对话框中,选择DSP型号和目标设备,并为你的新项目指定一个名称和存储路径。
第四步:配置项目设置创建完新项目后,你需要配置一些项目设置,以便让CCS_DSP开发环境正确地编译、运行和调试你的应用程序。
在新项目的属性设置中,你可以指定编译器选项、调试器选项和目标设备选项等。
这些设置可能因具体项目而异,你可以根据实际需求进行修改。
第五步:编写代码第六步:编译和构建项目完成代码编写后,你可以利用CCS_DSP开发环境的编译器将你的代码编译成可执行文件。
首先,你需要选择“生成”选项来编译你的代码。
如果代码没有错误,编译过程将会成功完成,并生成可执行文件。
你还可以在编译过程中查看编译日志和编译警告等信息。
第七步:调试和测试应用程序在构建完成后,你可以使用CCS_DSP开发环境提供的调试器工具来调试和测试你的应用程序。
通过连接开发板和计算机,你可以在CCS_DSP中启动调试会话,并逐步执行你的代码,查看变量的值和程序的执行路径等信息。
你还可以设置断点、监视表和观察窗口等来辅助调试。
第八步:优化和部署应用程序一旦你的应用程序在调试过程中没有问题,你可以将它优化并部署到目标设备上。
CCS_DSP提供了许多优化选项和工具,可以帮助你提高DSP 应用程序的性能。
你可以根据具体需求选择合适的优化方式,并通过CCS_DSP将优化后的应用程序烧录到目标设备上。
ccs编译教程CCS(Code Composer Studio)是德州仪器(Texas Instruments)提供的一个集成开发环境(IDE),用于开发和调试基于TI的DSP(数字信号处理器)和微控制器(MCU)的嵌入式应用程序。
以下是一个简单的CCS 编译教程,涵盖从创建项目到编译的基本步骤:步骤1:安装Code Composer Studio首先,确保你已经成功安装了Code Composer Studio。
你可以从TI 的官方网站下载并按照说明进行安装。
步骤2:创建新项目1. 启动Code Composer Studio。
2. 选择"File" > "New" > "CCS Project"。
3. 在弹出的对话框中,输入项目的名称,选择项目类型(例如,C Project or C++ Project),选择合适的目标(Target)和配置,最后点击"Finish"。
步骤3:配置项目属性1. 在项目资源管理器中,右键点击项目名称,选择"Properties"。
2. 在弹出的对话框中,配置项目属性,包括代码生成器、编译器、链接器等。
这些设置取决于你的项目类型和目标设备。
步骤4:编写代码在"src" 目录中创建你的源代码文件。
例如,创建一个名为`main.c` 的文件,并在其中编写你的应用程序代码。
```c#include <stdio.h>int main() {printf("Hello, CCS!\n");return 0;}```步骤5:构建项目1. 在CCS 中,点击工具栏上的"Build" 图标,或者使用"Project" > "Build Project" 菜单。
新排程去处理其他的工作。
DMA 传输对于高效能嵌入式系统算法和网络是很重要的。
DMA请求CPU对DMA控制器初始化,并向I/O接口发出操作命令,I/O接口提出DMA请求。
DMA响应DMA控制器对DMA请求判别优先级及屏蔽,向总线裁决逻辑提出总线请求。
当CPU 执行完当前总线周期即可释放总线控制权。
此时,总线裁决逻辑输出总线应答,表示DMA 已经响应,通过DMA控制器通知I/O接口开始DMA传输。
DMA传输DMA控制器获得总线控制权后,CPU即刻挂起或只执行内部操作,由DMA控制器输出读写命令,直接控制RAM与I/O接口进行DMA传输。
在DMA控制器的控制下,在存储器和外部设备之间直接进行数据传送,在传送过程中不需要中央处理器的参与。
开始时需提供要传送的数据的起始位置和数据长度。
DMA结束当完成规定的成批数据传送后,DMA控制器即释放总线控制权,并向I/O接口发出结束信号。
当I/O接口收到结束信号后,一方面停止I/O设备的工作,另一方面向CPU提出中断请求,使CPU从不介入的状态解脱,并执行一段检查本次DMA传输操作正确性的代码。
最后,带着本次操作结果及状态继续执行原来的程序。
由此可见,DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为RAM与I/O设备开辟一条直接传送数据的通路,使CPU 的效率大为提高。
2DMA传送方式DMA技术的出现,使得外围设备可以通过DMA控制器直接访问内存,与此同时,CPU 可以继续执行程序.那么DMA控制器与CPU怎样分时使用内存呢?通常采用以下三种方法:(1)停止CPU访内存;(2)周期挪用;(3)DMA与CPU交替访内存.停止CPU访问内存当外围设备要求传送一批数据时,由DMA控制器发一个停止信号给CPU,要求CPU 放弃对地址总线、数据总线和有关控制总线的使用权.DMA控制器获得总线控制权以后,开始进行数据传送.在一批数据传送完毕后,DMA控制器通知CPU可以使用内存,并把总线控制权交还给CPU.图(a)是这种传送方式的时间图.很显然,在这种DMA传送过程中,CPU基本处于不工作状态或者说保持状态.优点: 控制简单,它适用于数据传输率很高的设备进行成组传送。
CCS入门与使用CCS是一种被广泛应用于嵌入式系统开发的集成开发环境(IDE),能够帮助开发人员简化代码编写和调试的过程。
CCS最早由德州仪器(TI)公司开发,它提供了一组功能强大而且易于使用的工具,适用于多种微控制器和数字信号处理器(DSP)平台。
本文将详细介绍CCS的入门和使用方法。
完成安装后,打开CCS软件,新建一个项目。
点击菜单栏上的“File”选项,在下拉菜单中选择“New”->“CCS Project”,然后根据对话框中的指示填写项目名称和路径。
接下来,选择你所用的微控制器或DSP平台,并点击“Finish”按钮完成项目的创建。
接下来,我们需要将你的硬件平台与CCS连接起来。
首先,确保你的硬件通过USB或者JTAG接口连接到计算机。
然后,点击CCS界面左侧的“Debug”选项卡,在弹出的窗口中选择你的硬件平台。
CCS会自动识别连接的硬件设备。
点击“Connect”按钮,CCS会尝试与你的硬件建立连接。
编写完成代码后,可以进行编译和烧录操作。
点击CCS界面上方的“Build”按钮,CCS会自动进行代码编译。
如果没有错误发生,编译过程将会顺利完成。
接下来,点击“Debug”按钮,CCS会自动将编译好的代码烧录到你的硬件平台上。
完成烧录后,可以进行代码调试。
点击CCS界面上的“Debug”按钮,进入调试模式。
你可以设置断点、监视变量的值、单步执行代码等。
CCS提供了很多强大的调试功能,帮助你找出代码中的错误并进行修复。
除了编写和调试代码,CCS还提供了其他一些有用的工具和功能,如性能分析、能耗分析、代码覆盖率分析等。
这些工具和功能可以帮助你优化代码性能和节约能源。
总结起来,CCS是一款功能强大而易用的嵌入式系统开发工具。
通过CCS,开发人员可以简化代码编写和调试的过程,提高开发效率。
CCS提供了丰富的工具和功能,帮助开发人员优化代码性能、节约能源等。
希望以上介绍对CCS的入门和使用有所帮助。
使用CCS进行DSP编程(一)
——CCS编程入门
TI公司提供了高效的C编译器和集成开发环境Code Composer Studio,学习‘C6X 的编程应该从学习CCS的使用开始。
首先安装CCS,CCS的安装有详细的说明,并配有简短的Quick Time的多媒体介绍,对于没有购买CCS的用户,可以从TI处得到30天的试用版(没有硬件仿真功能)。
使用CCS前需要对CCS进行设置,以Simulator为例,运行Setup CCS C6000 1.20,安装Device Driver,对于有硬件支持的仿真器,可以选择配套的CCS驱动,设置完成的画面如下图所示:用户的界面大致相同。
接下来就可以运行CCS了,CCS提供了比较好的例子,对于初学者,仔细学习这些例子,会起到事半功倍的效果。
在CCS的Help菜单的Tutorial子菜单下,给出了四个教程,分别是:Code Composer Studio Tutorial、Advanced DSP/BIOS Tutorial、Compiler Tutorial和RTDX Tutorial,用户可以从简单的CCS功能
开始,如创建一个工程文件Project,到创建一个完善的用户程序一步一步的进行。
下面是Code Composer Studio Tutorial的例子:
分别从生成一个简单的“Hello World”程序,到使用DSP/BIOS功能,到程序的调试,实时分析,I/O操作等分6课来讲解,可以领略TI的CCS的强大功能。
下面以“Hello World”程序为例讲一下CCS的使用。
首先打开一个Project文件
这些文件的路径如下图所示:
打开hello.mak,会看到如下图所示的界面。
将File View栏中的“+”号都打开,会看到整个项目工程中的所有资源。
其中*.c文件和*.h文件与普通的C语言编程中是一致的(TI编译器支持ANSI C 标准)。
需要指出的是三个文件:HELLO.CMD、RTS6201.LIB、VECTORS.ASM。
HELLO.CMD文件给出了程序空间和数据空间的设置、及编译后各程序段在程序或数据空间的具体位置。
RTS6201.LIB文件为DSP运行时库,VECTORS.ASM为中断
向量表,都是区别于纯软件编程的独到之处,熟悉以后会有更深的体会。
下图为HELLO.CMD文件的代码,MEMORY分为程序空间IPRAM和数据空间IDRAM,并分别给出了起始地址origin和长度len,各段在MEMORY空间的分配也作了定义。
对于实际的目标板硬件系统,由实际的存储器空间及DSP芯片上的存储空间决定。
对于软件仿真,可以不考虑有没有MEMORY资源。
直接对该工程进行编译,会得到如下结果,试一下吧!也可以试一下快捷工具条上的按钮,随便点击鼠标右键,也会有意外的收获。
怎么样?没有错误吧!
自己在编写工程项目文件时,经常会遇到下面的问题,没有C语言程序的入口函数,细心比较一下会发现工程文件中缺少了一个运行时支持库RTS6201.LIB,不同的DSP芯片需要不同的运行时库来支持。
下面向项目工程中加上运行时库RTS6201.LIB来纠正刚才的编译错误,同样的方法可以用来向工程中添加*.c、*.cmd、*.asm文件。
*.h文件在编译时会自己找到(当然需要在环境变量中设置好啦,一般不需要改动)。
运行时库在TI的缺省路径下,注意将文件类型改为*.lib,
大家可能注意到,在HELLO.C文件中有这样的定义:
#ifdef FILEIO
int i;
char scanStr[BUFSIZE];
char fileStr[BUFSIZE];
size_t readSize;
FILE *fptr;
#endif
#ifdef FILEIO
/* clear char arrays */
for (i = 0; i < BUFSIZE; i++) {
scanStr[i] = 0 /* deliberate syntax error */
fileStr[i] = 0;
}
/* read a string from stdin */
scanf("%s", scanStr);
/* open a file on the host and write char array */
fptr = fopen("file.txt", "w");
fprintf(fptr, "%s", scanStr);
fclose(fptr);
/* open a file on the host and read char array */ fptr = fopen("file.txt", "r");
fseek(fptr, 0L, SEEK_SET);
readSize = fread(fileStr, sizeof(char), BUFSIZE, fptr);
printf("Read a %d byte char array: %s \n", readSize, fileStr); fclose(fptr);
#endif
其中还有一些变量的定义和对文件的操作,运行编译好的程序后好象这些语句都没有执行,因为在CCS的编译环境中这个参数还没有定义。
按下图进行设置:
设置完成后可以进行重新编译,会发现新的错误(如果没有出现这个错误,说明设置的不对)。
双击这个错误,在HELLO.C文件中,光标会出现在出错的地方。
在第52行的这一句,可以看到语句的后面没有加“分号”,
scanStr[i] = 0
加上“分号”后重新编译,ok?!加载hello.out运行,会出现下面的输入界面,
输入一串文字并确定,在“Stdout”窗口会有下面的显示,
小结:在这里简单介绍了CCS的使用,包括CCS的设置、帮助文件的使用,(TI的帮助文件系统、详细地介绍了CCS的使用,强烈建议用户认真学习。
)并以“Hello World”程序为例对CCS的使用中容易出现问题的一些地方作了一般的介绍,包括运行时库的添加、预编译定义设置等,用户在使用过程中会不断发现问题,通过使用TI的帮助文件及配套的资料会不断提高,不可急于求成,如果
用户对Visual C++比较熟悉,学起来会快很多;相反,那肯定要多花一些时间来学习了,学习CCS跟学习Visual C++一样(简单/复杂?),但需要对硬件有一定的了解。