第7章CCS开发工具及应用_第1页
第7章CCS开发工具及应用_第2页
第7章CCS开发工具及应用_第3页
第7章CCS开发工具及应用_第4页
第7章CCS开发工具及应用_第5页
已阅读5页,还剩281页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章CCS开发工具及应用7.1CCS概述7.2CCS的安装及窗口7.3开发一个简单的应用程序7.4算法和数据测试的例子7.5使用DSP/BIOS的语音实例7.1CCS概述7.1.1CCS的发展

CCS提供了基本代码生成工具,它具有一系列的调试、分析能力。CCS支持如图7-1所示的开发周期中的所有阶段。图7-1CCS开发周期在学习本章之前,读者需要完成下述工作:●安装好目标板和相应的驱动程序。安装时请参考硬件厂商提供的安装说明书。●安装CCS软件。安装时也根据安装说明书安装。如果你已经有了CCS仿真器和TMS320C54x代码生成工具,但是没有完整的CCS,可按照7.2节的步骤进行安装。●运行CCS安装程序。安装程序为目标板提供驱动程序,安装完成后就可以使用目标板上所提供的设备。

CodeComposerStudio(CCS)是TI公司推出的一个集成性DSP软件开发工具。在一个开放式的插件(Plug-In)结构下,CCS内部集成了以下软件工具:●TMS320C54x代码生成工具(参见7.1.2节);●CCS集成开发环境(IDE)(参见7.1.3节);●DSP/BIOS插件程序和API(参见7.1.4节);●RTDX插件、主机接口和API(参见7.1.5节)。

CCS的构成及其在主机和目标系统中的接口如图7-2所示。图7-2CCS构成及其接口7.1.2代码生成工具代码生成工具是CCS开发环境的基础部分。图7-3示出了一个典型的软件开发流程图。大多数DSP软件开发流程都和C程序的开发流程相似,只是DSP开发的一些外围器件的功能得到了一定的增强和提高。图7-3软件开发流程图7-3中的部分工具描述如下:●C编译器(CCompiler)将C语言源代码编译成为汇编语言代码。 ●汇编器(Assembler)将汇编语言源文件翻译成机器语言目标文件,机器语言使用的是通用目标文件格式(COFF)。●连接器(Linker)把多个目标文件连接成一个可执行的目标文件。连接器的输入是可重定位的目标文件和目标库文件。●归档器(Archiver)允许将一组文件保存到一个存档文件里,称为库。存档器也允许开发人员通过删除、替换、提取和添加文件来修改一个库。●助记符到代数汇编语言转换程序(Memoric-to-algebraicTranslatorUtility)将含有助记符的汇编语言文件转换成含有代数指令的汇编语言源文件。●建库程序(Library-buildUtility)创建满足开发者需要的运行支持库。●运行支持库(Run-time-supportLibrary)包括C编译器所支持的ANSI标准运行支持函数、编译器公用程序函数、浮点运算函数和C编译器支持的I/O函数。●十六进制转换程序(HexConversionUtility)能够将一个COFF目标文件转化成TI-Tagged、十六进制ASCII码、Intel、Motorola-S或者Tektronix等目标格式,也可以把转换好的文件下载到EPROM编程器中。●交叉引用列表器(Cross-ReferenceLister)用目标文件参考列表文件,可显示符号及其定义,以及符号所在的源文件。●绝对列表器(AbsoluteLister)输入为目标文件,输出为.abs文件。通过汇编.abs文件,产生含有绝对地址的列表文件。7.1.3CCS集成开发环境

CCS集成开发环境允许创建、编辑、编译和调试DSP目标程序。1.编辑源程序

CCS允许编辑C语言源程序和汇编语言源程序,开发人员还可以通过在C语句后面显示汇编命令的方式来查看C语言源程序,如图7-4所示。图7-4“hello.c”源程序集成编辑环境支持下述功能:●用彩色加亮关键字、注释和字符串。●以圆括号和花括号标记C语言块,并可以查找匹配块或下一个圆括号和花括号;可以在一个或者多个文件中进行查找和替换;可以向前或者向后查找和快速查找C语言块。●可以对多个操作进行撤销操作或者重新操作。●获得上下文相关的帮助。●定制个性化的键盘命令。图7-5“hello.pjt”工程文件目录2.创建应用程序在CCS中,应用程序通过向一个工程中添加文件来创建。工程文件中包括C语言源程序、汇编语言源程序、目标文件、库文件、连接命令文件和包含文件,如图7-5所示。编译、汇编和连接文件时,可以分别指定它们要使用的选项。在CCS中,可以通过一个窗口来详细为一个工程指定相应的编译、汇编和连接选项。CCS可以选择完全编译或增量编译,可以编译单个文件,也可以扫描出工程文件的全部包含文件从属树,还可以利用传统的makefiles文件进行编译。3.调试应用程序CCS提供下列调试功能:●设置可选择步数的断点;●在断点处自动更新窗口;●查看变量;●观察和编辑存储器和寄存器的值;●观察和调用堆栈;●对流入目标系统或从目标系统流出的数据采用探针工具观察,并收集存储器映像;●绘制选定对象的信号曲线图;●估算执行程序性能的统计数据;●观察目标程序的反汇编指令和C指令。

CCS还提供GEL语言,这种语言允许开发者向CCS通常的运行菜单中添加功能。7.1.4DSP/BIOS插件在软件开发周期的分析阶段,当调试依赖于时间的程序时,传统的调试方法效率低下。

DSP/BIOS插件支持用于可视化的探测、跟踪和监视一个DSP应用程序的实时分析,而这种探测对程序的实时性能影响很小。例如,图7-6显示了一个执行了多个线程的应用程序的时序。图7-6应用程序的时序

DSP/BIOS应用编程接口(API,ApplicationProgrammingInterface)具有下列实时分析功能:●程序跟踪(ProgramTracing)在程序执行期间显示写入目标系统日志(TargetLog)的事件并反映程序执行过程中的动态控制流。●性能监视(PerformanceMonitoring)跟踪反映目标资源利用情况的统计表,诸如处理器负荷和线程时序等。●文件流(FileStreaming)把常驻目标系统的I/O对象捆绑成主机文档。1.DSP/BIOS配置在CCS环境中,可以利用DSP/BIOSAPI定义的对象创建配置文件,这类文件简化了存储器映像和硬件中断服务程序矢量映像,因此,即使没有使用DSP/BIOS应用编程接口,也可以使用配置文件。

配置文件有两个作用:●设置全局运行参数;●可视化创建和设置运行对象的属性。这些运行对象由目标系统应用程序的DSP/BIOSAPI函数调用,它们包括软中断、I/O通道和事件日志。在CCS中打开一个配置文件时,会出现如图7-7所示的窗口。图7-7“hello.cdb”窗口2.DSP/BIOS应用编程接口模块传统的调试(Debugging)手段相对于正在执行的程序而言是外部的,而DSP/BIOSAPI要求将目标系统程序与特定的DSP/BIOS应用编程接口模块连接在一起。通过在配置文件中定义DSP/BIOS对象,一个应用程序可以使用一个或者多个DSP/BIOS模块。在源程序代码中,这些对象被声明为外部的,并调用DSP/BIOS应用编程接口。

DSP/BIOSAPI被分成下列模块,模块内的任何API的调用均以下面列出来的代码开头。●ATM:提供用来处理共享数据的函数。●C54:提供特殊函数来处理DSP中断。●CLK:片内定时器模块,控制片内定时器并且提供一个高精度的32bit的实时逻辑时钟信号。●DEV:用于创建和使用用户定义的设备驱动程序。●HST:主机输入/输出模块,管理主机通道对象,允许应用程序在主机和目标系统之间传送数据。主机通道通过静态配置为输入或输出。●HWI:硬件中断模块,提供对硬件中断服务程序的支持,可以在配置文件中指定当硬件中断发生时需要运行的函数。●IDL:空闲函数模块,管理空闲函数。空闲函数在目标系统程序中没有更高优先权的函数运行时启动。●LCK:锁定模块,管理全局共享资源。当不同的任务请求使用同一资源时,对资源的分配做出裁决。●LOG:日志模块,管理LOG对象。LOG对象在目标系统程序执行的时候实时捕捉所发生的事件,并加以记录。开发者可以使用系统日志或者定义自己的日志,并可以在CCS中利用它实时查看这些日志文件。●MBX:邮箱模块,管理任务之间传递的消息。●MEM:存储器模块,允许指定存放一个目标程序的不同的代码和数据段所使用的存储器段。●PIP:数据通道模块,管理数据通道。●PRD:周期函数模块,管理周期函数对象,它可以控制一个应用程序的周期性执行。●QUE:队列模块,管理数据的队列结构。●RTDX:实时数据交换模块,允许主机和目标系统之间进行实时的数据交换,在主机上使用自动OLE的客户都可以对数据进行实时显示和分析。●SEM:信号量模块,管理用来使任务同步或者互斥的信号量。●SIO:流模块,管理那些能够提供有效、实时的独立设备I/O对象。●STS:统计模块,管理统计累加器。●SWI:软件中断模块,管理软件中断。●SYS:系统服务模块,提供执行基本系统服务的多种用途函数,这些系统服务包括执行挂起程序和打印格式化文本等。●TRC:跟踪模块,管理一套跟踪控制位,这些控制位通过事件日志和统计累加器来控制程序信息的实时捕获。●TSK:任务管理模块,管理任务线程,用来对优先级低于软件中断的线程进行调度。7.1.5硬件仿真和实时数据交换

美国德州仪器公司(TI)的DSP设备提供在片仿真支持,它使得CCS能够控制程序的执行和实时监视程序的运行。增强型的JTAG连接提供了对在片仿真的支持,这种连接是一种可与任意DSP系统相连的低干扰式的连接方法。仿真接口提供主机一侧的JTAG连接,如TIXDS510。为方便起见,评估板上提供了一个在板的JTAG仿真器接口。在片仿真硬件提供了如下功能:●DSP的启动、停止或复位功能;●向DSP中下载代码或者数据;●检测DSP的寄存器或者存储器;●设置数据断点;●包括周期的精确计算在内的多种计数能力;●主机和DSP之间的实时数据交换(RTDX)。

CCS提供在片能力的嵌入式支持,另外,RTDX通过主机和DSP的APIs提供主机和DSP之间的双向实时数据交换,它能够使开发者实时连续地观察到DSP应用的实际工作方式。在目标系统应用程序运行的情况下,RTDX也允许系统开发者在主机和DSP设备之间传送数据,而且这些数据可以在使用自动OLE的客户机上实时分析和显示,从而可以缩短开发时间。

如图7-8所示,RTDX由目标系统和主机两部分共同组成,一个小的RTDX软件库需要依靠目标DSP才能运行。开发者通过调用RTDX软件库里面的应用程序接口将数据输入或者输出目标系统的DSP,库函数通过在片仿真硬件和一个增强型的JTAG接口将数据输入或者输出主操作平台,在DSP应用程序运行时数据可实时传送给主机。图7-8RTDX系统组成图7-9RTDX实例7.1.6CCS小结

CCS是继“一体化的DSP解决方案”后,TI公司为巩固自己在DSP业界的地位而在开发工具方面的一次重拳出击。CCS的集成开发环境使得代码开发过程从编辑、编译到调试及代码性能测试都集成在一个环境下进行,而且各项功能都有了一定程度的提升,简化了开发过程,并降低了代码开发的难度。7.2CCS的安装及窗口7.2.1CCS的安装1.系统配置要求(1)机器类型:IBMPC及兼容机。(2)操作系统:MicrosoftWindows95/98/2000或WindowsNT4.0。(3)当使用硬件开发时需要主机空余一条ELSA插槽,以便插入驱动板。2.安装CCS

安装过程包括两个阶段。(1)安装CCS到系统中。将CCS安装光盘放入光盘驱动器,运行CCS安装程序setup.exe。如果在WindowsNT下安装,则用户必须要具有系统管理员的权限。安装完成后在桌面上会有“CCS2('C5000)”和“SetupCCS2('C5000)”两个快捷方式图标(如图7-10所示),分别对应CCS应用程序和CCS配置程序。图7-10CCS快捷方式图标(2)运行CCS配置程序,设置驱动程序。如果CCS在硬件目标板上运行,则先要安装目标板驱动卡,然后运行CCS配置驱动程序,最后才能执行CCS。除非用户改变CCS应用平台类型,否则只需运行一次CCS配置程序。3.CCS配置程序

CCS配置程序用来定义DSP芯片和目标板类型。单击桌面上的SetupCCS2快捷方式图标,弹出如图7-11所示的对话框。图7-11CCS配置对话框7.2.2CCS的文件和变量1.安装目录在安装CCS的过程中将会在CCS的安装目录(默认的安装目录是:c:\ti)里创建如下的子目录,如图7-12所示。在Windows系统目录(c:\windows或者c:\winnt)里也会创建一些子目录。

图7-12CCS安装目录下的子目录

c:\ti目录包含下面这些目录:●bin:各种不同用途的程序文件。●c5400\bios:DSP/BIOS应用程序接口在创建应用程序时需要用到的文件。●c5400\cgtools:德州仪器公司的源代码生成工具。●c5400\examples:源程序实例。●c5400\rtdx:对RTDX有用的一些文件。

●c5400\tutorial:TICCS教程所用到的示例。●cc\bin:关于CCS环境的程序文件。●cc\gel:CCS所用到的GEL文件。●docs:一些pdf格式的文件和手册。如果安装时没有选择安装全部文件,则需要在CD-ROM里查看pdf格式的用户手册。图7-13Windows系统目录下的子目录●myprojects:用户自己的文件或者工程文件的存放地点。图7-13所示的目录结构是被添加到Windows系统目录里面的子目录:●ti\drivers:各种DSP板的驱动程序文件。●ti\plugins:和CCS一起使用的一些插件程序。●ti\uninstall:CCS卸载时要用到的文件。2.文件扩展名当使用CCS的时候,所使用的文件都具有以下的文件命名规则:●project.prj:CCS在定义一个工程或者创建应用程序时用的工程文件。●program.c:C语言源程序。●program.asm:汇编语言源程序。●filename.h:C程序的头文件,DSP/BIOS应用程序接口的包含文件。

●filename.lib:库文件。●program.cmd:连接命令文件。●program.obj:从源文件里组合或者编译成的目标文件。●program.out:经过组合、编译、连接后生成的可执行文件,可以在CCS里加载和执行这个文件。●project.wks:是CCS用来保存环境设置的文件。●program.cdb:CCS所创建的配置数据库文件。这个文件是要用到DSP/BIOS应用程序接口的用户程序所需要的,也是其他一些应用程序可选择的。保存配置文件时还将产生下列文件:*programcfg.cmd:连接命令文件。*programcfg.h54:头文件。*programcfg.s54:汇编语言源程序文件。3.环境变量安装程序将会在autoexec.bat(对Windows95或者Windows98而言)文件中定义如表7-1所示的变量,或者将其作为环境变量(对WindowsNT而言)。

表7-1环境变量变量描述C54x_A_DIR汇编程序用来寻找所需要的库和DSP/BIOS、RTDX以及代码生成工具所包含文件的一个搜寻列表。具体内容可参见TMS320C54x汇编语言工具用户手册C54x_C_DIR由编译程序和连接程序使用的用来寻找所需要的库和DSP/BIOS、RTDX以及代码生成工具所包含文件的一个搜寻列表。具体内容可参见TMS320C54x最优化C编译器用户手册PATH加到你的路径定义里的文件夹列表。默认路径是C:\TI\C5400\CGTOOLS和C:\TI\BIN7.2.3CCS的窗口、主菜单和工具条1.CCS应用窗口图7-14为一个典型CCS集成开发环境窗口的示例。整个窗口由主菜单、工具条、工程窗口、编辑/调试窗口、图形显示窗口、内存单元显示窗口和寄存器显示窗口等构成。图7-14CCS应用窗口示例图7-15工程窗口关联菜单2.关联菜单在任一CCS活动窗口中单击鼠标右键都可以弹出与此窗口内容相关的菜单,我们称其为关联菜单(ContextMenu)。利用此菜单,用户可以对本窗口内容进行特定操作。例如,在图形显示窗口中单击鼠标右键,弹出如图7-15所示的菜单。选择不同的条目,可以完成添加程序、扫描相关性、关闭当前工程等功能。3.主菜单主菜单中各选项的使用在后面的小节中会结合具体使用详细介绍,在此仅对菜单项功能做简要说明。用户如果需要了解更详细的信息,请参阅CCS在线帮助“Commands”。CCS主菜单如图7-16所示,各项功能介绍如表7-2所述。图7-16CCS主菜单表7-2主菜单简要介绍菜单项功能File(文件)文件管理,载入执行程序、符号及数据,文件输入/输出等Edit(编辑)字符串查找替换,内存变量、寄存器变量的编辑等View(查看)工具条显示设置,内存、寄存器对话框的显示等Project(工程)工程的管理、创建、打开和关闭,以及编译、构建工程等Debug(调试)断点、探针设置,程序的运行和复位Profiler性能菜单,包括时钟设置等GEL(扩展功能)利用通用扩展语言产生的扩展功能菜单Option(选项)选项设置,设置字体、颜色、键盘属性等Tools(工具)包括管脚连接、命令窗口、链接配置等DSP/BIOSDSP/BIOS设置,包括实时分析、可视化探测等Window(窗口)窗口管理,包括窗口列表等Help(帮助)CCS在线帮助菜单4.常用工具条

CCS将主菜单中常用的命令筛选出来,形成4类工具条:标准工具条、编辑工具条、工程工具条和调试工具条,依次如图7-17~图7-20所示。用户可以单击工具条上的按钮执行相应的操作。图7-17标准工具条图7-18编辑工具条图7-19工程工具条图7-20调试工具条7.2.4TMS320C5402DSK的配置和使用

TMS320C5402DSK是TI公司提供的一款廉价、独立的开发平台,用于C54x系列DSP的开发。系统开发者可以用DSK来进行C54xDSP应用系统的开发,同时,TMS320C5402DSK提供了DSP硬件设计的一个范例。利用TI公司提供的TMS320C5402DSK的电路图纸和DSK应用手册,DSP开发者能够大大缩短系统的设计时间。

TI的TMS320C5402DSK工具包包括:CCS安装光盘、TMS320C5402DSK、TMS320C5402DSK使用说明、并行口线、配套电源等(如图7-21所示)。图7-21TMS320C5402DSK工具包

TMS320C5402DSK的结构如图7-22所示,它包括以下硬件资源:●一片100MHzTMS320VC5402DSP。●一片外部64K字SRAM。●一片256K字FlashMemory。●与CCS调试器兼容的JTAG(IEEEStd.1149.1)测试接口和主机接口,可以用于和主机并行口相连。

●电话接口。DSP通过模拟网络接口(DAA,AnalogNetworkInterface)和AD50AIC与电话接口相连,电话接口接在DSP的第一个McBSP(McBSP0)上。●一片AD50AIC,用作耳机和麦克风音频接口(3.5mm的耳机插孔),与DSP的第二个McBSP(McBSP1)相连。●RS-232异步数据传输接口。●扩展子板(DaughterBoard)接口。

●8键双列直插开关,用于用户设置、手动复位DSP的复位开关。●板上有电压转换芯片,用于提供1.8V的DSP内核电压、3.3V数字电压和5V模拟电压。图7-22TMS320C5402DSK的结构框图

TMS320C5402DSK上面有8键双列直插开关和4个跳线,用于用户配置DSK。表7-3描述了8键双列直插开关每一键的功能。表7-4给出了C5402DSP的时钟模式(CLKMD)选择。表7-38键双列直插开关功能开关号码名称关开1JTAG选择外部,比如XDS510PP内部测试控制总线2MP/MC微处理器模式微控制器模式3,4,5时钟模式见表7-4见表7-46外部存储器选择板上外部存储器板外外部存储器7用户0用户软件定义(1)用户软件定义(0)8用户1用户软件定义(1)用户软件定义(0)表7-4时钟模式选择开关5(CLKMD1)开关4(CLKMD2)开关3(CLKMD3)CLKMD复位默认值DSPCPU时钟频率000E007H×15(无效)0019007H×10(无效)0104007H×5(100 MHz)1001007H×2(40 MHz)110F007H×1(20 MHz)1110000H×0.5(10 MHz)101F000H×0.25(5 MHz)011—保留表7-5跳线功能及默认设置名称描述1和2脚相连的功能2和3脚相连的功能默认值JP1CPLD编程选择CPLD通过J1和JTAG编程CPLD通过并行口编程1和2脚相连JP2Boot模式控制从HPI自举加载从内部或外部存储器自举加载2和3脚相连JP3麦克风输出控制无缓冲输出低阻抗驱动输出2和3脚相连JP4DAA回路电流选择125 mA(插入跳线)45 mA(拔出跳线)插入跳线

TMS320C5402DSK的配置和使用步骤如下:(1)关闭计算机并且关闭计算机的电源。(2)将TITMS320C5402DSK工具包提供的并口(打印机接口)线与DSK板相连,如图7-23所示。(3)将并口线的另外一端与计算机的并行口相连,如图7-24所示。如果要接入耳机、麦克风或者子板卡,则一定要保证在DSK板上电前完成这些接入工作。

图7-23并口线与DSK板相连示意图图7-24并行线与计算机的并行口相连示意图图7-25DSK双列直插开关定义(4)将DSK上的8键双列直插开关设置为1、2、3、4、7、8键开启,5、6键关闭。其中,1、2、3、4、5、6、7、8键的定义如图7-25所示。(5)将电源线与DSK板相连。(6)将模拟电源线与TI工具包提供的变压器相连,并将插销插入插座。(7)启动计算机,在使用CCS和DSK之前,确保计算机的并行口被配置为ECP或者EPP模式。图7-26DSK配置对话框(8)如果此时没有安装CCS软件,可按照7.2.1节介绍的安装步骤安装CCS;如果已经安装了CCS软件,则按照以下步骤对CCS进行配置:①双击桌面上的“SetupCCS2('C5000)”图标,出现如图7-11所示的对话框。②在“Family”中选择“c54x”,在“Platform”中选择“dsk”,得到如图7-26所示的对话框。③选择“C54xParallelPortEmulator(DSK5402)”,单击“Import”按钮,得到的结果如图7-27所示。图7-27配置结果④在“C54xParallelPort”上单击鼠标右键,选择“Properties”,得到的“BoardProperties”对话框如图7-28所示。⑤在该对话框中的“I/OPort”后填入前面得到的并行口地址0x378,如图7-29所示。⑥关闭SetupCCS,选择保存系统设置(SystemConfiguration),选择启动CCS。图7-28“BoardProperties”对话框图7-29I/O端口设置7.2.5XDS510PP的配置和使用仿真器,即扩展开发系统(XDS),可用来进行系统级的集成调试,是进行DSP芯片软硬件开发的最佳工具。目前主要有两种类型的仿真器:一种是传统的电路仿真器,主要用于早期的TMS320C1x和TMS320C2x两代DSP芯片的仿真,这两代DSP芯片没有仿真信号线;另一种是先进的扫描仿真器,主要用于TMS320C3x、TMS320C4x、TMS320C5x、TMS320C54x、TMS320C2xx和TMS320C8x等DSP芯片的仿真,在这些DSP芯片上提供了用于仿真的信号线。采用传统的电路仿真器对用户设计的系统进行硬件仿真时,仿真器的电缆插头必须插入到用户硬件电路中DSP芯片的相应位置,也就是说,仿真电缆的插头引脚必须与DSP芯片的引脚一一对应。TI的XDS/22仿真器就属于这一类,主要用于TMS320C1x和TMS320C2x等芯片的仿真。

SEED-XDSpp仿真器的配置和使用步骤如下:(1)关闭计算机并且关闭计算机的电源。(2)使用SEED-XDSpp仿真器工具包提供的25芯仿真器连接电缆,将PC机并口与仿真盒连接(如图7-30所示)。(3)将5V直流电源插接到220V交流电源上,并将直流5V输出插头插入仿真盒的插孔。(4)使用仿真器的JTAG电缆,将仿真器插到目标系统的JTAG接口上,这里使用TMS320C5402DSK作为目标系统。图7-30PC机并口与仿真盒(5)将DSK上的8键双列直插开关设置为2、3、4、7、8键开启,1、5、6键关闭。这种设置将DSK设置为:JTAG与外部仿真器相连;DSP工作于微控制器模式;DSPCPU时钟频率为40MHz;外部存储器使用DSK板上的外部存储器。跳线按照表7-5中的默认值设置。连接好的系统如图7-31所示。图7-31仿真器与目标系统JTAG接口连接示意图(6)启动计算机,插入SEED-XDSpp仿真器工具包提供的驱动光盘,双击SEED-XDSPP的驱动程序SetupCC54x.exe,安装SpectrumDigitalTMS320C5000Drivers及CCS2.xDebugTools,得到如图7-32所示的安装画面。图7-32“SpectrumDigitalTMS320C5000Drivers,CCS2.xDebugTools”的安装画面图7-33“SDConfig”图标(7)单击“Next”按钮,安装SpectrumDigitalTMS320C5000CCSDebugTools,接受所有的默认选项。安装完成后,桌面上出现“SDConfig”图标(如图7-33所示)。(8)双击“SDConfig”图标,对计算机的并行口进行配置,如图7-34所示。图7-34“SpectrumDigitalTMS320C5000CCSDebugTools”的进入画面(9)双击需要配置的端口名称,如“378”,单击“Emu”,在“Nameofhardware”中选择“XDS510PP”,在“Emulatorport”中选择“SPP8”,如图7-35所示。(10)单击图标可以测试XDS510PP与DSK板上的JTAG是否连接正常。图7-35XDS510PP的端口配置示意图(11)如果此时没有安装CCS软件,可按照7.2.1节介绍的安装步骤安装CCS;如果已经安装了CCS软件,则按照以下步骤对CCS进行配置:①双击桌面上的“SetupCCS2('C5000)”图标,在出现的如图7-36所示的对话框的“Family”中选择“c54x”,在“Platform”中选择“emu”,在“AvailableConfigurations”中选择“C54xPPEmulator-0x378”,单击“Import”按钮。图7-36XDS510PP配置对话框②在sdgo5xx(SpectrumDigital)上单击鼠标右键,选择“Properties”,在弹出的“BoardProperties”对话框中选择“StartupGELFile(s)”选项卡,然后在StartupGEL中选择“c5402_dsk.gel”,如图7-37所示。图7-37XDS510PP属性配置③关闭SetupCCS,保存系统设置(SystemConfiguration),启动CCS。这样用户就完成了对CCS的配置,从而可以使用SEED-XDSpp仿真器,并且与TITMS320C5402DSK配合来完成本章后面几个CCS的实例了。7.3开发一个简单的应用程序7.3.1创建一个新的工程在本章中,将使用CCS来创建一个工程,并向这个工程里添加源程序文件和库文件,它采用标准的C语言库函数来显示一条“helloworld”消息。创建一个新的工程的操作步骤如下:(1)如果用户的CCS是安装在c:\ti目录下,在c:\ti\myprojects目录里新建立一个名字为“hello1”的文件夹。(如果将CCS安装在其他的目录下,那么就在相应的安装目录中的“myprojects”文件夹里新建一个文件夹“hello1”即可。)(2)将c:\ti\c5400\tutorial\hello1文件夹里的所有的文件复制到这个新的文件夹里。(3)从Windows的开始菜单里选择“Programs”→“CodeComposerStudioTMS320C5400”→“CCStudio”(或者直接在桌面上双击CodeComposerStudio图标),进入如图7-38所示的画面。图7-38CCS的进入画面(4)选择“Project”→“New”,弹出如图7-39所示的对话框。(5)在“ProjectName”中输入“myhello”作为工程名,在“Location”(位置)中选择你所建的工作文件夹,然后在“ProjectType”中选择“Executable(.out)”。输入完成后单击“Finish”按钮,CCS将会建立一个叫做“myhello.prj”的工程文件,这个文件保存了你的工程的设置和涉及到的变量文件。图7-39新建工程对话框7.3.2向一个工程里添加文件向一个工程里添加文件的操作步骤如下:(1)选择“Project”→“AddFilestoProject”,然后选择“hello.c”文件,再双击打开(Open)。(2)选择“Project”→“AddFilestoProject”,然后在文件类型中选择“AsmSourceFiles(*.a*,*.s*)”。(3)选择“Project”→“AddFilestoProject”,在文件类型框中选择连接命令文件(*.cmd),然后选择“hello.cmd”并打开。这个文件包含程序段到存储器的映射。(4)选择“Project”→“AddFilestoProject”,进入编译库文件夹(c:\ti\c5400\cgtools\lib),再在文件类型框中选择目标文件和库文件(*.o*,*.lib),然后选择“rts.lib”并打开。这个库对目标系统DSP提供了运行实时支持。(5)单击紧挨着Projects、hello.pjt、Libraries和Source旁边的“+”标记来扩充工程(Projects)列表,这个列表叫做工程窗口(ProjectView)。(6)此时,包含文件还没有出现在工程窗口里。

(7)如果需要从工程中删除某一个文件,则只需要在工程窗口中的相应文件上单击鼠标右键,并从弹出的菜单里选择“Removefromproject”(删除)即可。在创建程序的时候,CCS通过下面的路径顺序搜寻,就会找到文件:●包含源文件的目录。●编译器和汇编器选项的IncludeSearchPath(搜寻路径)中列出的目录(从左到右)。●列在C54X_C_DIR(编译器)和C54X_A_DIR(汇编器)环境变量中定义的目录列表(从左到右)。7.3.3查看源代码

在工程窗口里双击hello.c文件,可在窗口的右半部看到源代码。如果想使窗口更大一些,以便能够看到更多的源代码,则可以在“Option”→“Font”中选择较小一点的字体。源代码如下:/*========hello.c========*/#include<stdio.h>#include"hello.h"#defineBUFSIZE30structPARMSstr={2934,9432,213,9432,&str};/**========main========*/voidmain(){#ifdefFILEIOint i;char scanStr[BUFSIZE];char fileStr[BUFSIZE];size_t readSize;FILE *fptr;#endif/*writeastringtostdout*/puts("helloworld!\n");

#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,sizeof(char),BUFSIZE,fptr);printf("Reada%dbytechararray:%s\n",readSize,fileStr);fclose(fptr);#endif}7.3.4编译和运行程序

CCS自动将用户所做的改变保存到工程设置中。在查看完源代码之后,如果退出了CCS,则通过重新启动CCS,并单击“Project”→“Open”,即可从用户停止工作的地方开始继续以前的工作。编译和运行程序的操作步骤如下:(1)选择“Project”→“RebuildAll”,或者单击工具栏中的按钮,可以重新编译、汇编、连接工程中的所有文件,有关这个工程的信息将显示在窗口底部的信息框中。(2)选择“File”→“LoadProgram”,再选择刚才重新编译过的程序“hello.out”(该程序在C:\ti\myprojects\hello\folder),并单击“Open”按钮,CCS就会把程序加载到目标系统DSP上。(3)选择“View”→“MixedSource/ASM”,将同时显示该工程的C源代码和相应的反汇编指令。(4)单击混合模式窗口中任意一条汇编指令(单击指令,而不是单击指令的地址或者空白的区域),按F1键,CCS将会搜寻有关那条命令的帮助信息。(5)选择“Debug”→“GoMain”,使程序从main函数开始执行,程序将会在main停止,由指出。(6)选择“Debug”→“Run”,或者单击工具栏中的(运行)按钮。(7)选择“Debug”→“Halt”放弃运行程序。图7-40hello程序运行结果7.3.5修改程序设置和纠正语法错误在前一节中,由于没有定义FILEIO,因此预处理命令(#ifdef和#endif)之间的程序没有运行。在这一节中,使用CCS设置一个预处理器选项,并找出和纠正语法错误。具体操作步骤如下:(1)选择“Project”→“Options”。(2)从BuildOption窗口的“Compiler”栏的“Category”列表中选择“Preprocessor”。在“DefineSymbols”框中键入“FILEIO”并按“Tab”键,如图7-41所示。图7-41编译选项设置(3)单击“OK”按钮,保存新的选项设置。(4)选择“Project”→“RebuildAll”,或者单击工具栏中的(RebuildAll)按钮。无论什么时候,只要工程选项改变,就必须重新编译所有文件。(5)如果出现一条说明程序含有编译错误的消息,单击“Cancel”按钮,在Build窗口向上移动滚动条,就可以看到一条语法错误信息,如图7-42所示。图7-42语法错误信息(6)双击描述语法错误位置的红色文字。注意到hello.c的源文件被打开,同时用户的光标会出现在下面这一行上:

fileStr[i]=0;(7)修改语法错误(缺少分号)。注意,紧挨着编辑窗口题目栏的文件名旁边出现一个星号(*),表明源文件被修改过了。当文件被保存后,星号随之消失。

(8)选择“File”→“Save”,或者按“Ctrl+S”键可将所做的修改保存至hello.c。(9)选择“Project”→“RebuildAll”,或者单击工具栏中的(RebuildAll)按钮,CCS会重新编译已被更新的文件。7.3.6使用断点和观察窗口当开发或测试程序时,经常需要在程序执行过程中检查变量的值。在这一节里面,将使用断点和观察窗口(如图7-43所示)观察这些变量的值。程序执行到断点后,还可以使用单步执行命令。具体操作步骤如下:(1)选择“File”→“ReloadProgram”。(2)双击“ProjectView”中的“hello.c”文件,可以加大窗口,以便看到更多的源代码。

图7-43局部变量的观察窗口(3)把光标放到这一行上:

fprintf(fptr,"%s",scanStr);(4)单击工具栏按钮或者按“F9”键,这一行将显示为高亮的深红色。(5)选择“View”→“WatchWindow”,在CCS窗口的右下角会出现一个独立的区域(在程序运行时,这个区域将会显示被观察变量的值)。(6)选择“Watch1”标签,单击“Name”列的表达式图标,再输入“*scanStr”作为跟踪变量,然后单击窗口白色区域中的任意位置。图7-44新的观察变量(7)选择“Debug”→“Run”,或者按“F5”键。(8)在相应的提示框中,输入“goodbye”,并单击“OK”按钮。注意,在“Stdout”框中以蓝色显示输入的文字,同时还应注意,“WatchWindow”窗口中显示出“*scanStr”的值。在输入一个字符串之后,程序开始运行并在断点处停止,程序中将要执行的下一行以黄色高亮显示出来。(9)单击工具栏中的(StepOver)按钮或者按“F10”键,以便执行到所调用的函数fprintf()之后。7.3.7使用观察窗口观察structure变量观察窗口除了可以观察简单变量的值以外,还可以观察一个结构体中的不同成员的值。具体操作步骤如下:(1)在“WatchWindow”窗口中选择“Watch1”标签,单击“Name”列的表达式图标。

(2)输入“str”作为表达式并单击窗口白色区域中的任意位置,则显示着“+str={...}”的一行会出现在“WatchWindow”窗口中。符号“+”说明这是一个结构体。由7.3.3节“helloworld”的源代码可知,类型为PARMS的结构体被声明为全局变量,并在hello.中初始化,而这种结构体类型在hello.h中进行了定义。(3)单击符号“+”,CCS将展开这一行,并列出该结构的所有元素以及它们的值,如图7-45所示。图7-45观察一个结构体(4)双击结构体中的任何一个成员,可以打开该成员的变量编辑(EditVariable)窗口。(5)改变变量的值并单击“OK”按钮,可以看到“WatchWindow”窗口中的值改变了,而且值的颜色也发生了相应的变化,说明该值已经进行了改动。(6)在“WatchWindow”窗口中选择“str”的变量并单击右键,从弹出的菜单中选择“RemoveCurrentExpression”,并在WatchWindow中对所有表达式重复上述操作。(7)在“WatchWindow”窗口中单击鼠标右键,从弹出的菜单中选择“Hide”可以隐藏观察窗口。(8)选择“Debug”→“Breakpoints”,在“Breakpointstab”中单击“DeleteAll”,然后单击“OK”按钮,全部断点都被清除。7.3.8测算源代码执行时间在本节中,将使用CCS的profiling功能来统计标准输出函数puts()的执行情况。具体操作步骤如下:(1)选择“File”→“ReloadProgram”。(2)选择“Profiler”→“EnableClock”,标记“

”将出现在“Profiler”菜单的“EnableClock”项的旁边,该选项使能计算指令周期。(3)在“ProjectView”窗口中双击“hello.c”文件。(4)在“Profiler”菜单中选择“StartNewSession”,然后在“ProfilerSession”名称对话框中输入“hello_profile”。(5)选择“View”→“MixedSource/ASM”,汇编指令将显示成灰色并列在每一行C代码的下面。(6)在Profiler窗口中选择“Setup”标签,把光标置于下面所述语句的一行:

puts("helloworld!\n");

将这一行拖进Profiler窗口中的“StartPoints”,如图7-46所示。图7-46Profiler的起始点(7)向下移动滚动条,并把光标置于下面所述语句:

for(i=0;i<BUFSIZE;i++){

将这一行拖进Profiler窗口的“EndPoints”中,如图7-47所示。

(8)从“Debug”菜单中选择“Restart”,然后选择“Run”,运行到程序结束。(9)选择Profiler窗口中的“Ranges”标签,可以看到有关统计数据的结果,如图7-48所示。图7-47Profiler的结束点图7-48Profiler的统计数据报告7.4算法和数据测试的例子7.4.1打开和查看工程在CCS中打开一个工程文件(*.pjt),并且查看此工程中的源代码文件和库文件。具体操作步骤如下:(1)如果CCS安装在c:\ti目录下,那么就在c:\ti\myprojects文件夹中创建文件夹“volume1”(如果CCS安装在其他位置,那么就在相应的myprojects文件夹里面创建文件夹“volume1”)。(2)将文件夹c:\ti\c5400\tutorial\volume1中所有的文件都复制到新建的文件夹中。(3)如果CCS还没有运行,则在Windows开始菜单中选择“Programs”→“TexasInstruments”→“CodeComposerStudio”,单击“CodeComposerStudio”(或者双击桌面上的CodeComposerStudio图标)。

(4)在Project菜单中选择“New”,在ProjectName中输入“volume1”,在Location中将文件夹定位到第(1)步中创建的“volume1”,在ProjectType中选择“Executable(.out)”,在Target中选择SetupCCS时的配置。单击“Finish”,这时,CCS将会在“volume1”文件夹中创建名为“volume1.pjt”的工程文件。(5)选择“Project”→“AddFilestoProject”,选择“volume.c”,单击“Open”,也可以通过在工程窗口中的“volume1.pjt”上单击鼠标右键,从弹出的菜单中选择“AddFilestoProject”。(6)选择“Project”→“AddFilestoProject”,在文件类型框中选择“AsmSourceFiles(*.a*,*.s*)”,然后选择“vectors.asm”和“load.asm”文件,单击打开。这些文件包含了RESET中断跳转到程序入口c_int00的汇编跳转指令。对于比较复杂的程序,可以在vectors.asm中定义其他的中断向量,或者通过DSP/BIOS自动生成。(7)选择“Project”→“AddFilestoProject”,在文件类型框中选择“LinkerCommandFile(*.cmd)”,然后选择“volume.cmd”文件,单击打开。这个文件是连接命令文件,它将各段映射到存储器中。图7-49展开后的工程窗口(8)选择“Project”→“AddFilestoProject”,浏览至编译库文件夹c:\ti\c5400\cgtools\lib。在文件类型框中选择“ObjectandLibraryFiles(*.o*,*.lib)”,然后选择与目标系统类型相匹配的“rts.lib”库文件,单击打开。这个库文件提供了对目标DSP的实时支持。对于某些DSP而言,它们的实时支持库文件可能会有比较特殊的名称,如rts_ext.lib。(9)在工程窗口中,在“volume1.pjt”上单击鼠标右键,从弹出的菜单中选择“ScanAllDependencies”,volume.h文件将会在工程窗口中的“Libraries”文件夹下出现。(10)在工程窗口中分别单击“Projects”、“volume1.pjt”、“Libraries”、“Source”旁边的“+”将工程列表展开,同样,打开库、资源、内容等文件夹。展开后的工程窗口如图7-49所示。(11)如果未出现工程窗口“View”→“Project”,则选择工程窗口底部的文件图标,然后在工程窗口中单击“File”。(12)如果想从工程中删除文件,则在要删除的文件上单击鼠标右键,从弹出的菜单中选择“Removefromproject”。7.4.2回顾源代码在ProjectView窗口中双击“volume.c”文件,源程序就会显示在CCS窗口的右边。注意“volume.c”文件中的以下几个部分:●主函数输出一条消息后,应用程序处于无限循环状态。在这个循环中,主函数调用dataIO和进程函数。●进程函数将增益与输入缓冲中的各数据相乘,并且将结果数据存入输出缓冲区中,同时也调用汇编Load子程序,该子程序占用的指令周期取决于给传它的processingLoad值。●dataIO函数是一个空函数,它的作用除了返回以外不执行任何操作。这里使用CCS中的探针功能把主机文件中的数据读取到inp_buffer缓冲区中,而不是利用C程序直接执行输入/输出操作。#include<stdio.h>#include"volume.h"/*Globaldeclarations*/intinp_buffer[BUFSIZE];/*processingdatabuffers*/intout_buffer[BUFSIZE];intgain=MINGAIN;/*volumecontrolvariable*/unsignedintprocessingLoad=BASELOAD;/*processingload*/structPARMSstr={2934,9432,213,9432,&str};/*Functions*/externvoidload(unsignedintloadValue);staticintprocessing(int*input,int*output);staticvoiddataIO(void);/*========main========*/voidmain(){int*input=&inp_buffer[0];

int*output=&out_buffer[0];puts("volumeexamplestarted\n");/*loopforever*/while(TRUE){/*ReadusingaProbePointconnectedtoahostfile.*//*Writeoutputtoagraphconnectedthroughaprobe-point.*/dataIO();#ifdefFILEIOputs("beginprocessing");#endif

/*applygain*/processing(input,output);}}/*========processing========**FUNCTION:applysignalprocessingtransformtoinputsignal.*PARAMETERS:addressofinputandoutputbuffers.*RETURNVALUE:TRUE.*/staticintprocessing(int*input,int*output){intsize=BUFSIZE;while(size--){*output++=*input++*gain;}/*additionalprocessingload*/load(processingLoad);return(TRUE);}/*========dataIO========**FUNCTION:readinputsignalandwriteoutputsignal.*PARAMETERS:none.*RETURNVALUE:none.*/static

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论