预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

使用CCS进行DSP编程(一) ——CCS编程入门 pacificxu TI公司提供了高效的C编译器和集成开发环境CodeComposerStudio,学 习‘C6X的编程应该从学习CCS的使用开始。 首先安装CCS,CCS的安装有详细的说明,并配有简短的QuickTime的多媒 体介绍,对于没有购买CCS的用户,可以从TI处得到30天的试用版(没有硬件 仿真功能)。 使用CCS前需要对CCS进行设置,以Simulator为例,运行SetupCCSC6000 1.20,安装DeviceDriver,对于有硬件支持的仿真器,可以选择配套的CCS驱 动,设置完成的画面如下图所示:用户的界面大致相同。 接下来就可以运行CCS了,CCS提供了比较好的例子,对于初学者,仔细学 习这些例子,会起到事半功倍的效果。在CCS的Help菜单的Tutorial子菜单下, 给出了四个教程,分别是:CodeComposerStudioTutorial、AdvancedDSP/BIOS Tutorial、CompilerTutorial和RTDXTutorial,用户可以从简单的CCS功能 开始,如创建一个工程文件Project,到创建一个完善的用户程序一步一步的进 行。 下面是CodeComposerStudioTutorial的例子: 分别从生成一个简单的“HelloWorld”程序,到使用DSP/BIOS功能,到程序的 调试,实时分析,I/O操作等分6课来讲解,可以领略TI的CCS的强大功能。 下面以“HelloWorld”程序为例讲一下CCS的使用。 首先打开一个Project文件 这些文件的路径如下图所示: 打开hello.mak,会看到如下图所示的界面。将FileView栏中的“+”号 都打开,会看到整个项目工程中的所有资源。 其中*.c文件和*.h文件与普通的C语言编程中是一致的(TI编译器支持 ANSIC标准)。需要指出的是三个文件: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文件中有这样的定义: #ifdefFILEIO inti; charscanStr[BUFSIZE]; charfileStr[BUFSIZE]; size_treadSize; FILE*fptr; #endif #ifdefFILEIO /*clearchararrays*/ for(i=0;i<BUFSIZE;i++){ scanStr[i]=0/*deliberatesyntaxerror*/ fileStr[i]=0; } /*readastringfromstdin*/ scanf("%s",scanStr); /*openafileonthehostandwritechararray*/ fptr=fopen("file.txt","w"); fprintf(fptr,"%s",scanStr); fclose(fptr); /*openafileonthehostandreadchararray*/ fptr=fopen("file.txt","r"); fseek(fptr,0L,SEEK_SET); readSize=fread(fileStr,sizeo