视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
很棒的CCS使用详细讲义-好
2025-09-30 23:19:15 责编:小OO
文档
DSP -实验

实验二  TI DSP集成开发环境CCS的使用

昆明理工大学信息工程与自动化学院电工电子教学实验中心

主讲:杨秋萍  讲师

CCS是TI公司推出的用于开发DSP芯片的集成开发环境,它采用Windows风格界面,集编辑、编译、链接、软件仿真、硬件调试以及实时跟踪等功能于一体,极大地方便了DSP芯片的开发与设计,是目前使用最为广泛的DSP开发软件之一。  00

一、CCS的简介 

CCS是一种针对TMS320系列DSP的集成开发环境,在Windows操作系统下,采用图形接口界面,提供环境配置、源文件编辑、程序调试、跟踪和分析等工具。 CCS有两种工作模式:

1、软件仿真器模式:可以脱离DSP芯片,在PC机上模拟DSP的指令集和工作机制,主要用于前期算法实现和调试。

2、硬件在线编程模式:可以实时运行在DSP芯片上,与硬件开发板相结合在线编程和调试应用程序。

本次实验主要采用软件仿真器模式。

二、CCS系统配置  00

采用标准配置文件进行系统配置的步骤:

步骤1:启动CCS配置程序。双击桌面上的Setup CCS快捷图标,弹出对话框。

步骤2:清除以前定义的配置。

步骤3:选择与目标系统相匹配的配置文件。

步骤4:将所选中的配置文件加入到系统配置中。

步骤5:安装驱动程序。点击“Intall a Device Driver”,弹出选择器件驱动程序对话框。

步骤6:保存系统配置。打开“File”菜单,单击“Save”按钮,将系统配置保存在系统寄存器中,完成CCS的系统配置。

三、CCS中常用文件名和应用界面

1、常用文件名 

*.cmd —— 链接命令文件;

*.obj —— 由源文件编译或汇编后所生成的目标文件;

*.out —— 完成编译、汇编、链接后所形成的可执行文件,可在CCS监控下调试和执行。

2、应用界面

四、实验举例

1.创建新工程

利用CCS创建一个新工程,然后向该工程中添加源代码文件和库文件。

1)CCS的安装目录为c:\i,首先在文件夹c:\i\\myprojects\下建立一个新的文件夹,命名为volume1。

2)将c:\i\utorial\arget(sim54xx或dsk5402等)\\volume1文件夹中的内容拷贝到该新建的文件夹中。

3)启动CCS。如果需要的话,对CCS进行配置,使其工作在C54x simulator模式下。

4)从CCS的Project菜单下选择子菜单New。将出现Project Creation对话框。在对话框中“Project Name”处输入volume1,“Location”处用浏览方式选入在第一步中所建立的文件夹volume1的位置,在“Project Type”处选择Executable(.out)类型,在“Target”中选择CCS所配置的目标DSP类型。最后单击“Finish”完成。

5)通过上述步骤Code Composer Studio就建立了一个工程文件,名为volume1.pjt,该工程文件用于存储工程配置以及在工程中所用到的若干文件。可在“工程项目观察窗口(Project view)”处看到。

2.向工程中添加文件

一个工程项目包括源程序、库文件、链接命令文件和头文件等。

1)在CCS中选择菜单Project→Add Files to Project,然后选文件volume.c,并单击Open。(也可在工程图标处单击鼠标右键在快捷菜单中选Add Files to Project,或将文件拖入工程视图窗口的文件夹中。)

2)在CCS中选择菜单Project→Add Files to Project,并在文件类型选框中选汇编源文件(*.a*, *.s*),然后选vectors.asm 和 load.asm 这两个文件并单击Open。这些文件中包含了设置复位RESET中断到程序的C入口c_int00的一些汇编指令。(对于更加复杂的程序,可在vectors.asm 文件中定义更多的中断向量。也可利用DSP/BIOS来自动定义所有的中断向量。)

3)在CCS中选择菜单Project→Add Files to Project,并在文件类型选框中选择链接命令文件(*.cmd),然后选volume.cmd并单击Open,该命令文件将汇编程序的段映射到DSP的存储空间中。

4)在CCS中选择菜单Project→Add Files to Project,进入编译库文件夹(c:\i\\c5400\\cgtools\\lib),在文件类型选框中选择目标文件类型和库文件类型(*.o*, *.lib),为所配置的目标DSP选rts.lib文件并单击Open。该库文件为目标DSP提供了运行时间(runtime)支持。(对于一些目标DSP,运行时间库可以是一个更特殊的文件名,如rts_ext.lib 。)

5)在工程视图窗口,用鼠标右键单击工程文件volume.pjt 并在快捷菜单中选择 Scan All Dependencies。这时volume.h应出现于工程视图窗口中的库(Libraries)文件夹中。

6)单击Project左边的小加号+,将展开工程列表:volume1.pjt,Libraries,以及 Source。该列表即为工程视图。

无需手工向工程中加入include文件,因为CCS将会在编译过程中自动找到这些文件。编译之后在工程视图中将出现这些include文件.。

如果要从工程中移出一个文件,只要在相应文件处单击鼠标右键在弹出的快捷菜单中选Remove from project 即可。

编译时CCS在以下路径依次查找工程文件:包含有源文件的文件夹;在compiler 或 assembler 选项中从左到右依次列出的文件夹。

3.察看源代码

在工程视图中volume.c上双击,就可在CCS右边窗口中察看源代码。

请注意该程序中的以下部分:

•在进入main函数后打印出一条消息,并进入死循环。循环体中程序调用了dataIO以及其他一些过程函数。

•在过程函数中,将输入缓冲区(input buffer)中的每一个数值乘以增益(gain),并将结果放入输出缓冲区(output buffer)。程序也将调用汇编载入例程,该例程按照传递给它的processingLoad取值来消耗指令周期。

•本例中dataIO函数除了返回之外不做其他任何动作。我们在这里不使用C代码来完成I/O,而是利用CCS中的一个探针Probe Point 来从主机的文件中读入数据并放入inp_buffer区域。

4.编译并运行程序

编译并运行程序的步骤:

1)选Project→Rebuild All 或单击工具按钮      (Rebuild All)。CCS重新编译,并链接工程中的全部文件。编译过程信息显示在CCS下部的窗口中。

2)在默认情况下,将当前工程目录下的debug子目录中生成.out文件。通过CCS工具条可改变生成文件的存放位置。

3)选File→Load Program,并在对话框中选刚刚编译生成的文件volume1.out,单击Open打开。(默认在目录c:\i\\myprojects\\volume1\\Debug\\ 文件夹下)这样CCS就将程序载入目标DSP,并打开一个反汇编窗口,显示出相应的反汇编指令。CCS也将在窗口底部自动打开一个标签区域来显示程序送往stdout的输出。

4)选View→Mixed Source/ASM,将同时看到c源代码和汇编结果代码。

5)在混合模式窗口中单击一条汇编伪指令本身,并按F1键,CCS将搜索该条指令的帮助。

6)选Debug→Go Main开始从main 函数处执行程序。程序暂停在main处,并用黄色的箭头标识。

7)选Debug→Run或单击工具按钮    (Run)来运行程序。

8)选Debug→Halt来暂停程序执行。

9)从菜单View中选Mixed Source/ASM。将看到不带相应汇编的c代码。从而可以方便地进行下一个任务:修改程序选项,修正语法错误。

5.修改并运行程序

在前面的介绍中,预处理命令(#ifdef and #endif)包围的程序部分不会被执行,因为没有定义FILEIO。在这一部分将在CCS中设置一个预处理选项。

1)选Project→Build Options。

2)在Build Options窗口的Compiler标签下,从列表栏选择Processor, 在Define Symbols域键入FILEIO,然后按Tab键。

(注:窗口上部的编译命令中含有了选项-d。再次编译时程序中的#ifdef FILEIO之后的语句将被包含。根据所使用的DSP板的不同其他选项也将发生变化。)

3)单击OK保存新的选项设置。

4)选Project→Rebuild All 或单击工具按钮     (Rebuild All)。只要改变了工程选项,就必须重新编译所有的文件。

5)选File→Load Program并选择文件volume1.out。(也可以在编译之后自动装入,选择Option→Customize,并单击Program Load Options标签,然后选中Load Program After Build Option)

6)选Debug→Go Main开始从main 函数处执行程序。程序暂停在main处,并用黄色的箭头标识。

7)选Debug→Run或单击工具按钮    (Run)来运行程序。

8)选Debug→Halt来暂停程序执行。

6.使用断点以及变量观察窗口

在开发测试程序的过程中,经常需要在程序执行中察看变量的取值,将利用断点以及变量观察窗口来达到此目的。在达到断点后,使用单步执行命令。

1)选File→Reload Program。

2)在工程视图中双击文件volume.c,打开代码窗口。将光标置于下面的语句行:

dataIO;

3)单击工具按钮(Toggle Breakpoint)或按F9。选择边区(编辑区左边的灰色竖条部分)标示出断点已经设置(红色点图标)。如果选择边区无效(用Option→Costomize→Editor Properties 来设置),择行显示用粉红色高亮显示。(用Option→Costomize→Color可改变颜色。)

4)选View→Watch Window,在CCS的右下角将出现一个分离区域,程序运行时该区域显示观察变量的取值。默认时选中局部观察标签Watch Locals,显示当前执行的函数中的局部变量。

5)如果程序没有停留在main处,选Debug→Go Main。

6)选Debug→Run,或按F5,或图标      。

7)选Watch1标签。在Name栏单击并键入dataIO ,即键入要观察的变量名称。

8)单击watch window 的白色区域来保存。这时变量取值将立即显示出来。

9)单击工具按钮     (Step Over)或按F10数次,将跳到调用dataIO()处。

10)单击      (Remove All Breakpoints)。

7.为文件I/O添加探针(测试点)

利用探针来从计算机中的文件读取数据,对于算法开发来说是很有用的。探针的用途:

•将主机文件中的数据(如利用Matlab产生)传输到目标DSP板的缓冲区中,供相应算法使用。

•将计算输出从目标板的缓冲区中取出并存放到主机的文件中,以便分析。

•用来利用数据更新某窗口,如图形显示窗口。

本部分利用探针将主机文件数据传送到目标板作为测试数据,另外,当到达探针位置时,利用断点来更新所有打开的窗口。

1)File→Load Program,选择volume1.out,并单击Open。

2)双击工程视图文件volume.c。

3)将光标置于main函数中的语句处:dataIO();

此处dataIO()函数作为一个占位符(无任何功能的函数)。现在该函数是一个方便的位置来设置探针,以便从主机传入数据。

4)单击工具按钮 (Toggle Probe Point),选择边区标出一个菱形小蓝点,标示探针已经设置。若选择边区无效,可以使用Option→Customize→Editor Properties来设置,在该行用蓝色高亮来显示,用Option→Customize→Color来改变颜色。

5)从File菜单选择File I/O。File I/O对话框出现以便选择输入、输出文件。

6)在File Input 标签下,单击Add File。

7)浏览到建立的volume1工程文件夹并选择sine.dat单击Open。(可在文件类型项目下选择数据文件格式。sine.dat文件包含了一个正弦波形的16进制数值)

接着出现了sine.dat的控制窗口。当执行程序时,可利用该控制窗口来在数据文件中作开始、停止、回卷、快进操作。

8)在File/IO对话框中,改变Address为inp_buffer,修改Length为100,并选中Wrap Around 框。

•Address域定义了来自文件的数据应放到哪里。inp_buffer是在volume.c中声明的大小为BUFSIZE的一个整型数组(BUFSIZE 是定义于volume.h的一个常量。)

•Length域定义了每次探针点能从数据文件中读取多少样本。由于在volume.h中定义了常量BUFSIZE为(0x),所以这里设置Length域为100。

•Wrap Around选项使得当CCS读取数据到文件末尾时能够再次从文件头开始读取。这就允许数据文件可以被视为一个连续数据流,尽管该文件中只包含1000各数据,而探针每次读取100个数据值。

9)单击Add Probe Point,使得Break/Probe Points对话框中的Probe Points标签出现。

10)在Probe Point列表中,单击VOLUME.C line 61→No Connection行使之高亮。

11)在 Connect To域,单击下拉箭头并从列表中文件选择sine.dat 。

12)单击Replace,这样Probe Point列表将显示为探针与文件sine.dat已经连接。单击OK,那么现在File I/O对话框就将显示文件与探针相连。单击OK关闭File I/O对话框。

8.显示图形

如果现在运行程序,那么程序的运行结果将无法显示出来。通过设置观察变量来观察与inp_buffer和out_buffer数组相关联的地址中的数据。但是需要观察许多数据,并且显示的只是数据,而不是数据相应的曲线图(波形图)。

CCS提供了多种方式来将程序处理的数据可视化。

1)选菜单View→Graph→Time/Frequency。

2)在Graph Property对话框中,修改Graph Title 为 Input,Start Address为inp_buffer,Acquisition Buffer Size 为100,Display Data Size为100,DSP Data Type为 16-bit signed integer,Autoscale为 Off,Maximum Y-value为1000。

3)单击OK,显示 Input Buffer 的一个 Input图形窗口就出现了。

4)在Input graph 窗口单击鼠标右键并在弹出菜单中选择Clear Display。

5)再次选菜单View→Graph→Time/Frequency。将Graph Title修改为Output,并将Start Address修改为out_buffer,其余值默认。

6)单击OK,显示Output图形窗口。在该窗口中单击鼠标右键,从弹出菜单中选择Clear Display。

五、实验操作

同学按上述讲解步骤完成实验的操作并熟悉CCS的使用。下载本文

显示全文
专题