




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章TMS320'C2000DSP开发环境
5.1开发流程5.2代码生成工具5.3代码调试工具5.4软件开发平台CodeComposer及应用5.5Q格式5.6小结
5.1开发流程
通常DSP芯片的开发工具可以分为代码生成工具和代码调试工具两大类。代码生成工具的作用是将C或汇编语言编写的DSP程序编译并链接成为可执行的DSP程序。代码调试工具的作用则是对DSP程序及系统进行调试,使编写的程序达到设计目标。如图5.1是DSP的开发流程。图中显示了从源程序编程到调试的过程,并指出了这种过程的反复完善、优化的特征。图5.1DSP开发流程图
5.2代码生成工具
代码生成工具是指将用高级语言、汇编语言或用两种语言混合编写的DSP程序转换为可执行的目标代码程序,它除了最基本的C编译器、汇编器和链接器外,还有文档管理器、运行支持库、交叉引用列表器、代码格式转换器等辅助工具程序。
C编译器(Ccompiler):对C语言源代码进行编码,产生汇编语言源文件。
汇编器(Assembler):将汇编语言源文件转换为机器代码文件。TI公司新的汇编器和链接器创建的目标文件采用一种称为COFF的目标文件格式(CommonObjectFileFormat,COFF)。采用这种目标文件格式更利于模块化编程,并且为管理代码段和目标系统存储器提供更强有力、更灵活的方法。序或高级语言程序时,不必为程序代码或变量指定目标地址,由链接的目标将 COFF 目标文件和目标库重定位。
文档管理器(Archiver):将一组文件集合到一个称为库文件的归档文件中,同时允许开发设计人员删除、替代、释放和添加库成员。
汇编翻译工具(Assemblytranslationassistant):将包含有助记符的汇编语言源文件转换为一个包含代数指令的汇编语言源代码。
库生成工具(Library-buildutility):可以使用它构造定制的运行支持库。运行支持库(Run-time-supportlibrary):包括ANSIC标准运行支持函数、编译工具函数、浮点算术运算函数和I/O函数等C编译器支持的函数。
代码格式转换工具(Hexconversionutility):将COFF目标文件转换为TITagged、ASCII-Hex、Intel、Motorola-s或Tektronix目标格式,然后可将转换后的文件编程到EPROM或FlashMemory中。
交叉列表程序(Cross-referencelister):将链接的目标文件作为输入文件,产生交叉列表文件。列表文件中显示链接源文件中的符号、定义及引用情况。绝对地址列表(Absolutelister):接受链接后的目标文件作为输入文件,产生 .abs输出文件。对.abs文件进行汇编就可产生一个列表,该列表文件中显示的是目标代码的绝对地址。5.2.1C编译器
所谓C编译器,是指一种能将C语言程序自动编译为DSP汇编程序的代码生成工具,它为开发DSP芯片提供了一种极为便利的软件开发手段。TI公司为其TMS320系列DSP提供了系列C编译器,这些标准C优化编译器将标准C语言源文件编译成为相应片种的汇编语言源代码文件,通过汇编和链接,产生可执行的目标文件。这些C编译器的主要特点如下:
(1)完全符合ANSIC标准;
(2)具有完整的运行支持库,可以对运行支持函数库和用户定义函数库作扩展;
(3)能够进行优化编译,产生高效汇编代码;
(4)用户可进行库或档案的管理,可以对库进行文件的添加、删除、替换等,可以将目标文件库作为链接器的输入;
(5)可控制存储器的分配、存储器的配置和部分链接;
(6) C编译器提供的外壳程序,只需用一个命令,就可以完成编译、汇编和链接,直接从C源文件产生可执行的公用目标文件格式(COFF)文件;
(7)具有灵活的汇编语言接口;
(8)提供了多种列表文件,如源代码文件、汇编列表文件、预处理输出文件等;
(9)可以利用建库应用程序,通过不同的选择来建立自己的运行支持库等。5.2.2汇编器
汇编器能够将汇编语言源程序文件汇编成机器语言目标文件,目标文件的格式为公用目标文件格式(COFF)。汇编语言文件也可以是C编译器产生的或汇编优化器输出的汇编文件,或者是由文档管理器管理的宏库内的宏。汇编器的功能如下:
(1)处理汇编语言文件( .ASM)中的源语句,产生可重新定位的目标文件( .obj);
(2)根据要求产生源程序列表文件( .lst),并向用户提供对此列表的控制;
(3)根据要求将交叉引用列表加到源程序列表中;
(4)将代码分为段,并为每个目标代码段设置段程序计数器(SPC);
(5)汇编条件块;
(6)支持宏调用,允许用户在程序中或在库内定义宏。5.2.3链接器
链接器的作用是将目标文件组合成一个可执行的COFF目标模块。链接器可以接收的输入文件包括汇编器产生的COFF目标文件、命令文件、库文件以及已部分链接好了的文件,它所产生的可执行COFF目标模块可以装入各种开发工具或由TMS320器件来执行。在生成可执行模块的过程中,链接器实现重定位操作,并处理外部引用符号,其主要功能包括:
(1)定义一个与目标系统存储器一致的存储器模块;
(2)组合目标文件块;
(3)定位程序段到目标系统存储器的特定区域,赋予它们最后的地址;
(4)定义和重新定义全局符号,以赋予它们特定的值;
(5)处理输入文件之间未定义的外部符号。5.2.4文档管理器
文档管理器的主要作用是将多个独立文件组合成一个文档(Archive)或库(Library)。使用管理器可以方便地管理一组文件,这些文件可以是源文件或目标文件。文档管理器把这组文件放入一个称为库的文档文件内,每个文件称为一个库成员,利用文档管理器,可以方便地删除、替换、提取或增添库成员。利用文档管理器可以生成不同类型的库。用户可以通过任何类型的文件建立库。汇编器和链接器都可接收文档管理器作为输入,汇编器可以使用包含各源文件的库,链接器可以使用包含各目标文件的库。5.2.5交叉引用列表器
交叉引用列表器接收已链接的目标文件作为输入,产生一个交叉引用列表,在列表文件中列出符号、符号的定义以及它们在已经链接的源文件中的引用。
5.2.6代码格式转换器
代码格式转换器的作用是将链接器生成的 .out文件(COFF文件格式)转换为若干标准的ASCII十六进制形式之一,如Intel的Hex文件格式、TI-Tagged文件格式等。这是因为大多数的EPROM编程器不支持TI的COFF格式目标文件,所以TI提供该代码格式转换器,以便烧制EPROM。5.2.7绝对列表器
绝对列表器是接收已链接的目标文件作为输入,创建 .abs文件作为输出的调试工具。产生绝对列表的操作步骤如下:
(1)汇编源文件;
(2)链接所产生的目标文件;
(3)调用绝对列表器,使用已链接的目标文件作为输入,它将创建扩展名为 .abs的文件;
(4)汇编 .abs文件,这时用户在命令中需加入一个适当的选项来调用汇编器,以产生包含绝对地址的列表文件。5.2.8应用举例
图5.2为DSP系统产生可执行文件的过程,步骤如下:
(1)使用编辑器建立命令文件,根据特定器件的结构来定义地址范围(如 test.cmd),建立汇编语言源程序(如test.asm);
(2)汇编上述程序,产生目标文件(如test.obj)和汇编中发现的错误列表文件(如test.lst);
(3)使用链接器将目标文件和命令文件中的信息组合在一起,建立可执行文件(如test.out)和映射文件(test.map),映射文件说明链接器是如何在存储器中分配程序的各个组成部分的;
(4)利用软件调试工具将可执行文件通过JTAG接口写入目标系统,或者将COFF目标文件转换为EPROM编程器所能接收的文件格式固化于目标系统中。图5.2DSP系统可执行文件产生过程
5.3代码调试工具
代码调试工具的作用是将代码产生工具生成的可执行 .out文件,通过调试器接口加载到TI的系统集成与代码调试工具或用户系统上进行调试。TMS320系列DSP芯片的集成与调试工具包括C/汇编语言源码调试器、初学者工具DSK、软件模拟器、评价模块(EVM)、软件开发系统(SWDS)以及硬件仿真器(XDS)。5.3.1C/汇编语言源码调试器
C/汇编语言源码调试器是运行在PC或SPAKC等产品上的一种软件,与其它调试工具(如软件模拟器、评价模块、软件开发系统、仿真器)配合使用。用户的DSP程序既可用C语言调试,也可用汇编语言调试,还可进行C语言和汇编语言的混合调试。调试器提供了非常友好的人机界面,它采用面向窗口、鼠标支持、菜单式接口和命令输入等形式,使用十分方便。5.3.2初学者工具DSK
初学者工具是TI公司为TMS320系列DSP的初学者设计和生产的,含有DSP器件、模拟/数字模块及必要的通信接口的硬件小系统,配有专门的编译调试软件工具,用以练习编程和软件调试等,是一种廉价的学习工具。用户可以使用DSK来完成某些DSP实验,如控制系统测试、语音处理应用等,也可用来编写和运行实时应用的源代码,并对其进行性能评估,还可以用来调试自己的系统。
DSK工具除了具有一片DSP芯片外,还具有如下软硬件资源:一个打印机并口或RS-232串口,用来和PC机通信;一个电源插口;两个标准的RCA插口(用以模拟信号的I/O),提供和话筒、扬声器或其它模拟器件的连接;提供片外RAM;汇编器;调试器软件接口。5.3.3软件模拟器
软件模拟器是一种模拟DSP在计算机上实现各种功能并在非实时条件下进行软件调试的工具,它不需要目标硬件支持,只需在计算机上运行,是一种廉价方便的调试工具,但它突出的缺点是运行速度慢,无法保证程序的实时性,因此,软件模拟器适合于初学者使用或对算法进行预调试,汇编源程序经过汇编链接之后,就可将其加载到软件模拟器进行调试。调试中所需的I/O数据可从文件中取出,输出到I/O端口的数据也可存储在文件中。新版本的模拟器都采用C和汇编源码调用接口,采用C语言、汇编语言或C语言和汇编语言混合的调试方法。软件模拟器的主要特点如下:
(1)在计算机上执行用户DSP程序;
(2)可修改和查看寄存器;
(3)可对数据和程序存储器进行修改和显示,任何时候都可以进行寄存器修改,也可在程序装入前进行存储器初始化;
(4)可模拟外设、高速缓存、流水线及定时等功能;
(5)可在取指令、读写存储器及错误条件满足时设置断点;
(6)可进行累加器、程序计数器、辅助寄存器的跟踪;
(7)可进行指令的单步执行;
(8)用户可设定中断产生间隔;
(9)在遇到非法操作码和无效数据访问时给出提示信息;
(10)从文件中执行命令。5.3.4评价模块(EVM)
评价模块是一种低成本的用于器件评估、标准程序检查以及有限的系统调试的开发板。它配置了目标处理器、一个小容量的存储器和其它有限的硬件资源,可用来对DSP芯片性能进行评价,也可用来组成一定规模的用户DSP系统。TMS320评价模块一般均具有以下特性:存储器和寄存器的显示与修改;汇编器/链接器;软件单步运行和断点功能;板上存储器;主机装入/卸装功能;I/O功能;高级语言调试接口。5.3.5软件开发系统(SWDS)
软件开发系统是一块可用于进行性能评估和实时软件开发的插入到PC机中的低成本DSP板,用户程序可以在DSP板上进行实时的软件调试,程序在DSP芯片上实时运行。它与软件模拟器的区别在于它可对软件进行实时调试,而它与硬件仿真器的区别在于它不提供实时硬件调试功能,因此涉及目标I/O操作时一般用文件I/O来代替。5.3.6硬件仿真器(XDS)
TMS320扩展开发系统(ExtendedDevelopmentSystem,XDS)是功能强大的高速仿真器,可用来进行系统级的集成调试,是进行DSP系统开发的最佳工具。目前仿真器主要有两种类型:一种是传统的电路仿真器,这类仿真器对用户级进行硬件仿真时,仿真器的电缆插头必须插入到用户硬件电路中DSP芯片的位置,也就是说,仿真电缆的插头引脚必须与DSP芯片的引脚一一对应;另一种是扫描仿真器,它不采用插入仿真的方法,而是通过DSP芯片上提供的几个仿真引脚实现仿真功能。扫描仿真器解决了电路仿真器仿真电缆过长而引起的信号失真以及仿真插头引起的可靠性差等问题。使用扫描仿真器,程序可以从片内或片外的目标存储器实时执行,在任何时钟速度下都不会引入额外的等待状态。另外,由于DSP芯片内部是通过移位寄存器扫描链实现扫描仿真的,而这个扫描链可被外部的串行口访问,因此采用扫描仿真,即使芯片已经焊在电路板上,也可进行仿真调试,这为在生产过程中调试DSP系统提供了极大的方便。除了第一代和第二代的TMS320‘C2x外,TI为其TMS320所有系列DSP提供了相应的扫描仿真器。除了第三代TMS320’C3x采用12线仿真头外,TMS320的三大主流及其它系列DSP均采用标准扫描仿真器,仿真信号线采用JTAG标准IEEE 1149.1。扫描仿真器配置的软件采用的也是 C/汇编源码的调试界面,它与软件模拟器的用户界面完全相同,目标代码可通过扫描接口从PC机下载到目标系统的存储器中。
最常用的XDS510仿真器以PC机为基础开发系统,而XDS510WS是以SUN工作站为基础的开发系统,它们可以对TMS320相应系列各种DSP型号的芯片实现高速扫描仿真,属于串行工作的DSP仿真系统。
XDS510PP并口(打印机接口)DSP仿真器,使用并行接口芯片(PPC/SMC34C60)将SPP/EPP/ECP信号转换成ISA格式,使用ISA←→ JTAG转换接口芯片SN74ACT8990对控制/状态信号格式进行转换。通过译码和缓冲驱动电路变成标准JTAG边界扫描接口信号,通过短线仿真头与目标DSP芯片相连,达到仿真、调试、下载程序等目的。XDS510PP原理方框图如图5.3所示,其外形结构如图5.4所示,电路板正面(元件面)如图5.5所示,反面(焊接面)如图5.6所示。图5.3XDS510PP硬件仿真器原理图图5.4XDS510PP硬件仿真器外形结构图图5.5XDS510PP硬件仿真器电路板正面(元件面)图5.6XDS510PP硬件仿真器电路板反面(焊接面)
TMS320'C2000的JTAG逻辑扫描电路与IEEE标准1149.1兼容。该电路只用于仿真和测试。串行扫描用于测试引脚与引脚之间是否相通,以及执行对片内外围的操作测试。内部逻辑扫描电路可以访问所有片内的资源, 因此TMS320'C2000器件的扫描引脚和仿真引脚允许在线仿真,在所有的TMS320'C2000器件上,串行扫描不具有边界扫描逻辑。仿真信号的定义如表5.1所示。仿真器的使用比较简单,只要安装好XDS510后,就可建立目标系统硬件与PC机的连接。为保证计算机和目标系统的可靠连接,必须做到以下几点:
(1)按照XDS510的说明书进行正确安装;
(2)将14针JTAG插头和目标板正确连接;
(3) XDS510仿真器通过适当的形式(USB口、并口、ISA卡等)和计算机进行正确连接。完成上述工作后,要对XDS510与计算机相连的端口进行设置。如果使用的是ISA插槽,XDS510需要占用PC中的32位I/O空间,并把0x0240~0x025f设置为默认地址。如果这个地址已经被占用,则用户要自行选择其它的I/O地址。与此相似,采用并口的默认地址是0x0378。如果没有使用默认地址,则在使用时需要通过设置必要的参数来实现仿真器的可执行性。在PC机中,可以通过使用EMU2XX命令的P参数来实现地址的设置,也可以通过环境变量来进行地址设置。I/O地址设置好后,就可以执行EMURST.EXE程序,以对仿真器内部仿真调试逻辑进行复位、检查XDS510的I/O端口地址是否正确、检查测试管脚上是否有电源存在等,保证系统能顺利进行下一步的软件调试工作。
5.4软件开发平台CodeComposer及应用
5.4.1CCS组件及其特点
TI最新推出的代码设计工作室CCS(CodeComposerStudio)是一种集成开发环境IDE,它是基于Windows操作系统平台的开发工具,具有十分友善的人机对话界面,在非常直观的图形环境里提供主机和目标的连接。它最大的好处是具有软件仿真器,这将对DSP应用系统的开发提供十分便利的条件。该仿真器不光具备汇编语言程序的调试能力,还提供对C/C++ 语言程序的调试功能。CCS和VC++ 开发平台十分类似,提示能力强大、帮助信息丰富、向导功能齐备,还有经过验证的DSPBIOS及完善的汇编和C的库函数,只要熟悉VC++编程环境和DSP芯片硬件结构,就可以无须培训而迅速上手,因此可有效地提高软件开发的速度和效率。目前已有TMS320'C2000、TMS320'C5000和TMS320'C6000系列三大类CCS,除直接购买途径外,读者可向TI公司申请,或在TI网站下载,以获得1个月的免费使用。
CCS包括以下几个部分:TMS320系列CCS代码产生工具;CCS集成开发环境(IntegratedDevelopingEnvironment,IDE);DSP/BIOS(BasicInputandOutputSystem)插件及API(ApplicationProgramInterface)函数;RTDX(RealTimeDataeXchange)插件、主机(Host)接口及API函数。
CCS具有以下特点:
(1)完全基于Windows的集成开发环境;
(2) CCS中提供了最新的、编译效率更高的C编译器;
(3) DSP/BIOS能实现实时分析,观察数据不需要中断CPU;
(4) BIOS中提供了DSP芯片内基本资源管理函数,用户可以直接调用;
(5)先进的数据显示功能,用波形和图像显示出 DSP 目标板上的信号和数据,从而得到系统直观易懂的属性。5.4.2CC及CCS集成开发环境简介
CCS(CodeComposerStudio)是TI公司推出的DSP集成开发环境,集代码编辑、编译、调试等多种功能于一体。最初的CCS1.x只支持TMS320‘C5000和TMS320’C6000系列,对于TMS320‘C2000和TMS320’C3x系列,TI公司推出了CCS1.x的简化版本CC。在TMS320‘C2000中,目前广泛使用的是CC4.x版本。
TI公司的CCS2.2版本开始支持TMS320’C2000系列所有型号的DSP,但除了TMS320‘C28xx全面支持以外,对于其它型号,可能缺乏软件仿真器或XDS510的硬件设备驱动程序等。
1.CC
CC的绝大部分功能,用户只需自己尝试并点击,然后看看结果,自然就可明白。这里只介绍菜单命令。菜单命令在工具栏中都有对应的按钮,将鼠标放在这些按钮上,系统会自动给出按钮对应的菜单命令。实际应用中,程序员更喜欢使用工具栏的快捷按钮、鼠标右键菜单命令和快捷键(键盘)。
1)菜单File
(1) New:新建文本文件,包括 .cmd、.c、.asm等。
(2) Open:打开已有文件。
(3) Save:保存正在编辑的文本文件。
(4) Data→Load:将PC文件中的数据下载到DSP中。
(5) Data→Save:从DSP中保存数据到PC文件中。用户先保存一段数据到PC文件中,再打开此文件,自然可明白数据格式。
(6) Workspace→LoadWorkspace:装载工作空间到CC。
(7) Workspace→SaveWorkspace:保存当前CC工作空间到PC文件中。
工作空间(Workspace)指CC的工作环境,包括程序设置的断点、打开的文件和各种调试窗口等。工作空间的主要用途是方便调试,在调试时保存工作空间,以后重新载入时可直接恢复到先前调试的地方。CCS正常关闭时,会自动保存当前工作空间到default.wks文件(默认为C:\tic2xx\CC\bin目录)。
2)菜单View
(1) Dis-Assembly:创建反汇编窗口。
(2) Memory:查看memory。在弹出的对话框page选项中,可选择三种不同的RAM空间(program、data和I/O)。查错时,这三种空间都可能会用到。
(3) CpuRegisters:其中又包括两个命令,用来查询内核寄存器和一些状态位。
(4) Graph→Time/Frequency:图形化显示数据变量。
①选项GraphTitle:写入窗口的名称标题。
②选项StartAdddress:变量起始地址。如果显示基本变量,写入“&变量名”;如果是数组变量,则写入“数组名”。③选项AcquisitionBufferSize:获取DSP内若干个连续数据。如果显示基本变量,则填入1;如果显示一组数组变量,比如要显示大小是20的数组变量(inta[a]),则填入20。
④选项DisplayDataSize:画面中能显示的数据个数。
⑤选项DSPDataType:变量的类型。可选择16位还是32位,有符号还是无符号等。
(5) WatchWindow:观察窗口。在弹出的WatchWindow窗口中,按下键盘的Insert键,敲入变量名后可查看变量值。在变量名后敲入后缀“.x”,变量值以十六进制的形式显示。
(6) MixedSource/ASM:C语言和汇编语言混合显示的切换命令。
3)菜单Project
(1) New:新建工程。
(2) Open:打开工程。
(3) AddFilesToProject:添加文件到工程。一个工程由若干个文件构成。
(4) Close:关闭工程。
(5) ComplieFile:编译当前一个文件。
(6) Build:编译并链接整个工程——只编译修改的文件,并对所有文件进行链接。现代编译器都支持分别编译技术,即每个文件都可以独自编译生成二进制目标文件(.obj),最后链接在一起生成可执行文件(.out)。这样的好处显而易见,如果修改了某个文件,只需编译这个文件,然后链接在一起就可以了,编译的时间大大缩短。问题是编译器如何识别哪个文件修改过。CC编译器采用的方法是:如果源文件的修改时间晚于目标文件的修改时间,编译器就认为此源文件被修改过。若用户的工程文件曾经复制到别的电脑并做过修改,如果发现每次执行build命令时,都会将所有的文件重新编译一遍,此时请查看并修改源文件的修改时间。这往往是由两台电脑的时间系统不同而导致的,当用户为了某种原因(比如防止某天会发作的病毒)而调整时间,也会发生这种情况。
(7) RebulidAll:编译链接整个工程——编译所有文件,并对所有文件进行链接。有时候,用户希望能重新编译整个工程,而不论文件是否被修改过。当工程比较大时,RebuildAll比较费时。
(8) ShowDependencies:一个源文件常包含有头文件,此命令用来显示这种信赖关系。
(9) ScanAllDependencies:头文件是不能添加到工程中的,那么编译器怎么识别头文件呢?当源文件包含有头文件时,通过此命令自动扫描头文件到工程文件中。当调入工程或执行Build、RebuildAll命令时,编译器会自动执行这一命令,所以实际上此命令用处不大。
(10) Options:整个工程编译时的选项。这大约是最复杂的设置选项,包括众多的优化选项。
4)菜单Debug
(1) Breakpoints:设置断点。使用菜单设置此项比较繁琐,常用工具栏上的等价按钮,只需将光标停留在某程序行,单击按钮即可。
但有两个例外必须要用菜单才能设置断点:条件判断成立时才进入断点;当程序烧写入Flash后运行时,必须用菜单命令设置硬件(H/W)断点。因为用户一般都是在RAM中调试程序并设置断点的,所以此处不浪费笔墨了,读者只需要知道有此功能,真正用到的时候查手册即可。
(2) ProbePoints:设置探测点,可以链接到某一特定功能。特定功能包括刷新某一窗口、保存数据等。以刷新窗口为例,程序在探测点处停止运行时,仅刷新预选链接的窗口。其与断点的区别是,程序在断点停止运行时,会刷新所有窗口。
(3) Stepinto:单步执行,遇见函数调用时,进入函数体单步执行。
(4) Stepover:单步执行,遇见函数调用时,除非遇到断点,否则在完成函数执行前不会停止,这事实上是将整个函数体做单步执行。
(5) Stepout:当执行Stepinto进入到函数体内时,Stepout指令执行完此函数,并从函数体退出。
(6) Run:运行。代码开始运行,直到遇到断点时停止DSP内核运行,刷新窗口。
(7) Halt:停止运行。
(8) Animate:动画模式运行。与Run命令的区别是,遇到断点时先停止DSP内核,刷新窗口,然后再接着继续启动运行,它常用来连续地刷新变量窗口和生成graph图形等。切记这不是实时仿真,因为它是停止DSP内核后才刷新窗口的,其功能相当于遇到断点连续不停地执行Run命令。
(9) RunFree:自由运行。遇到断点不停止。
(10) RunToCursor:运行到光标处停止。
(11)ResetDSP:复位DSP中的所有寄存器状态位。复位DSP后,程序执行地址指向0(即运行指针PC = 0)。
(12) Restart:程序跳到-c-int0标号,这是C语言的入门地址。注意程序是跳至,而不是运行至-c-int0标号。
(13) GoMain:程序运行到-main标号,即C语言的主函数-main()处。
5)菜单Profiler
性能优化器,用来测算代码执行时间。这虽然是一个很好的功能,很可惜不支持TMS320'C24xx系列,但在CCS2.2中支持。
6)菜单Option
(1) Editor-Properties:用户打开过的工程名会显示在菜单Project→RecentProjectFiles下,为方便起见,用户常常会通过此菜单载入工程。在EditorProperties的Recent选项中,可设置显示几个打开过的工程名。如果用户长时间针对一个工程编写程序,建议设置为1。
(2) Keyboard:此处可对菜单命令定义自己的快捷键。一个熟练的用户一定会使用此功能。
(3) AnimateSpeed:执行Animate命令遇见断点时,刷新窗口,等待一个可设置的时间后,才继续运行。AnimateSpeed选取项就是用来设置此等待时间的。0代表不等待,1代表等待1s,依此类推。
(4) ProgramLoad:包含两个选顶。
①PerformVerificationAfterProgramLoading:下载程序到DSP的RAM中后,CC会执行一个校验程序来检查下载后的程序正确与否。此下载一般是选中且不更改的。一个应用的例子是,当程序下载RAM时出错,而去掉此选项后则不会出错,那么十有八九是RAM坏了。接下来用户可通过View-Memory来查找到底是哪根数据线坏了。
②LoadProgramAfterBuilding:选中此选项,编译工程后,生成的 .out文件自动下载到RAM中。
7)菜单GEL
GEL是通用扩展语言(GeneralExtensionLanguage)的缩写。GEL是一个大小写敏感但缺少类型检查的解释性语言,在语法上可看做是C语言的一个子集。GEL主要用来扩展CC的功能,方便用户调试程序。
8)菜单Tools
CommandWindow:弹出命令窗口,如果用户喜欢类似DOS的命令行模式调试,可以使用此窗口,比如敲入“stepn”——单步执行n次,“?变量名”——察看变量值,“dir”——显示目录等等。虽然有时候能加快调试速度(如敲入stepn,要比在菜单中设置快得多),但像所有退出主流的命令行方式一样,人们似乎更喜欢所见即所得的图形界面,基本上命令窗口是为早先的CDebugger用户保留的。
当用户安装烧写TMS320'LF240xA系列Flash插件(Plugin)时,也会显示在菜单Tools下。烧写Flash插件极其简单,用户一看即知。烧写前用户需要更改管脚跳线,管脚VCCP = 5V等。
2.CCS2.2
TI公司新推出的CCS2.2支持TMS320‘C24xx系列,相对于CC4.x,CCS2.2有一些明显的改进:
(1) CCS支持同时载入多个工程文件。工程文件以新的后缀 .prj结尾,原先的工程文件后缀为 .mak。为了方便从 .mak升级到 .prj,CCS2.2提供了从 .prj导入和导出 .mak的功能。
(2)支持流行的版本控制,可为同一个工程设置不同的版本,如debug、release或自定义等。不同的版本代表设置不同的工程选项,比如debug版本有符号调试选项-g,而release版本则没有(COFF格式中包含全局符号项来方便调试,符号项稍微占用了一点空间)。
(3)断点设置、运行指示等标记改为圆点和箭头,使用起来感觉好些。原先的CC采用代码行变颜色的方式指示。
(4)增加了一些单步调试命令,可自动在C语言和汇编语言之间切换。
(5) WatchWindow做了很大改善,可自动显示函数局部变量值,可新建观察窗口(addtab)。原先的CC只有4个观察窗口,不支持新建窗口和自动显示函数局部变量值。
(6)编辑支持自动嵌入功能(自动弹出符号的提示),支持用户使用自己喜欢的编辑器来编写源文件,比如用户可使用UltraEdit等。
(7)编译器有所加强。对语法的检查更加严格,检查信息除了早先的Errors、warnings外,还添加了remarks。比如,标准的C源文件的书写应该是在结尾处空一行来代表源文件结束符的。CC并不对此检测,而CCS2.2则产生警告。
(8)通过建立库工程,支持编译函数文件生成库文件。而CC4.x不支持,只能通过命令行方式编译库生成文件。
函数文件经过编译后生成目标文件 .obj,库文件的后缀是 .lib。两者都属于可重新定位的二进制代码,但还是有所不同:目标文件 .obj的所有代码都会被装入和链接到程序中,链接函数库中链接所需要的函数。以标准C的函数库为例,当然不希望把所有的函数都链接到自己的程序中去。总体来说,集成开发环境CCS2.2的功能改善很多,增加了很多方便而又强大的功能。
本节将分别针对CCS2.2的菜单和工具栏进行介绍。
● CCS菜单
在CCS集成开发环境中共有11项菜单,下面就其中较为重要的菜单功能加以介绍。
1) File菜单
File菜单提供了与文件操作有关的命令。除Open/Save/Print/Exit等常见的命令外,File菜单还列出了其它一些文件操作命令,如表5.2所示。
2) Edit菜单
Edit菜单提供的是与编辑有关的命令。除去Undo/Redo/Delete/SelectAll/Find/Replace等常用的文件编辑命令外,CCS还支持其它几种编辑命令,如表5.3所示。
3) View菜单
在View菜单中,可以选择是否显示Standard工具栏、GEL工具栏、Project工具栏、Debug工具栏、Edit工具栏和状态栏(Statusbar)。此外View菜单中还包括如表5.4所示的显示命令。
在View菜单中,Graph是一个很有用的功能,它可以逼真地显示信号波形。在Graph窗口中使用了两个缓冲器,即获取缓冲器和显示缓冲器。获取缓冲器驻留在实际或模拟的目标板上,它保存有设计人员感兴趣的数据。当图形更新时,获取缓冲器从实际或模拟的目标板中读取数据并更新显示缓冲器。显示缓冲器则驻留在主机存储器中,它记录了历史数据。波形图则是根据显示缓冲器的数据绘制的。
当输入所需参数并确认后,Graph窗口从获取缓冲器中接收指定长度(由AcquisitionBufferSize定义)和指定起始地址(由StartAddress定义)的DSP数据。
4) Project菜单
CCS使用工程来管理设计文档,CCS不允许直接对汇编或C源文件Build生成DSP应用程序,只有在建立工程文件的情况下,Project工具栏上的按钮才会有效。工程文件被存盘为 .mak文件。在Project菜单中包括一些常见的指令,如New/Open/Close等,此外还包括如表5.5所示的菜单命令。
5) Debug菜单
Debug菜单中包含常用的调试命令,具体命令及功能列于表5.6中。
6) Profiler菜单
剖切(Profiling)是CCS的一个重要功能。它要提供程序代码特定区域的执行统计,使开发设计人员能检查程序的性能,从而可对源程序进行优化设置。使用剖切功能可以观察DSP算法占用了多少CPU时间,还可以用它来剖切处理器的其它事件,如分支数、子程序调用次数及中断发生次数等。Profiler菜单命令及功能如表5.7所示。
7) Option菜单
Option菜单提供CCS的一些设置选项,如颜色、字体、键盘等。Option菜单命令及功能如表5.8所示。在Option菜单中,存储器映射图(MemoryMap)是一个重要的概念,有必要对其做详细说明。
(1)添加一个新的存储器映射范围。
选择Option>MemoryMap,将弹出MemoryMap对话框。
在对话框中选中EnableMemoryMapping,以使能存储器映射。第一次运行CCS时,存储器映射即呈禁用状态(未选中EnableMemoryMapping),也就是说,CCS调试器可存储目标板上所有可寻址的存储器(RAM)。当使能存储器映射后,CCS 调试器将根据存储器映射设置检查其可以访问的存储器。如果要存取的是未定义或保护区的数据,则调试器将显示默认值,而不是存取目标板上的数据。选择需修改的页面(Program、Data或IO)。如果程序只使用一个存储器页面,则可以跳过这一步。
按照命令文件的存储器定义,在Starting-address域键入起始地址,在Length域键入存储器长度,在Attributes域选择存储器的读/写属性,再单击Add按钮,即添加一个新的存储器映射范围。
CCS 调试器允许添加一个与已有存储器范围有所重叠的新储存器范围,此时重叠区域的读/写属性会做相应的修改。当定义好一个新的存储器范围后,如果想更改其读/写属性,则可以定义一个新的存储器范围(与该存储器具有相同起址和相同范围),并单击Add按钮加入,即将原有存储器属性更改为新定义的存储器属性。
(2)删除一个已有的存储器映射范围。
将一个已有存储器映射属性设为None-No-Memory/Protected,即可将该存储器范围删除。另一个删除存储器范围的方法是在Memory-Map列表框内选中需删除的存储器范围,然后按Delete键将其删除。
(3)存取一个不合法的存储地址。当设计人员想读取一个被存储器映射保护的存储空间时,调试器不从目标板读取数据,而是读取一个保护数据,通常为0。因此一个非法的存储器地址通常显示为0。也可在Protected-Value域输入另外一个值,如0XDEAD,这样当试图读取一个非法的存储器地址时,将清楚地给予提示。
在判断一个存储地址是否合法时,CCS调试器并不是根据硬件结构作出比较结果,因此,调试器不能防止程序存取一个不存在的存储地址。定义一个非法的存储器映射范围最好的方法是使用CEL嵌入函数,它在运行CCS时能自动执行。
8) GEL菜单
CCS软件本身提供使用的DSP系列的GEL函数,它们在Gel文件中定义。用户还可以将常用的GEL函数添加到GEL菜单中,此时需要使用menuitem关键词在GEL菜单下建立一个新的下拉菜单项。此外还可使用dialog和slider关键词建立对话框和滑动条对象。
9) Tools菜单
Tools提供常用的工具集。Tools菜单命令和功能如表5.9所示。● CCS工具栏
CCS集成开发环境提供5种工具栏,分别为Standard-Toolbar、GEL-Toolbar、Project-Toolbar、Debug-Toolbar和Edit-Toolbar。这5种工具栏可在View菜单下选择是否显示。
1) Standard-Toolbar
Standard工具栏包括以下常用工具。
(1) New:新建一个文档。
(2) Open:打开一个已存在的文档。
(3) Save:保存一个文档。如尚未命名,则打开Save-As对话框。
(4) Cut:剪切。
(5) Copy:复制。
(6) Paste:粘贴。
(7) Undo:取消上一次编辑操作。
(8) Redo:恢复上一次编辑操作。
(9) Find-Next:查找下一个。
(10) Find-Previous:查找上一个。
(11) Search-Word:查找指定的文本。
(12) Find-in-Files:在多个文件中查找。
(13) Print:打印。
(14) Help:获得特定对象的帮助。
2) GEL-Toolbar
GEL工具栏提供了执行GEL函数的一种快捷方法。在工具栏的左侧文本输入框中键入GEL函数名,再单击右侧的执行按钮,即可执行相应的函数。如果不使用GEL工具栏,也可以使用Edit菜单下的Edit-Command-Line命令执行GEL函数。
3) Project-Toolbar
Project工具栏提供了与工程和断点设置有关的命令,如图5.7所示。图5.7Project工具栏
Project工具栏提供了以下命令。
(1) CompileFile:编译文件。
(2) IncrementalBuild:对所有修改过的文件重新编译,再链接生成可执行程序。
(3) BuildAll:全部重新编译链接生成可执行程序。
(4) StopBuild:停止Build操作。
(5) ToggleBreakpoint:设置断点。
(6) RemoveAllBreakpoints:移去所有的断点。
(7) ToggleProbePoint:设置ProbePoint。
(8) RemoveAllProbePoints:移去所有的ProbePoint。
(9) ToggleProfilePoint:设置剖切点。
(10) RemoveAllProfilePoints:移去所有的剖切点。
4) DebugToolbar
如图5.8所示,Debug工具栏提供以下常用的调试命令。图5.8Debug工具栏
(1) SingleStep:与Debug菜单中的StepInto命令一致,单步执行。
(2) StepOver:与Debug菜单中的StepOver命令一致。
(3) StepOut:与Debug菜单中的StepOut命令一致。
(4) RuntoCursor:运行到光标处。
(5) Run:运行程序。
(6) Halt:终止程序运行。
(7) Animate:与Debug菜单中的Animate命令一致。
(8) QuickWatch:打开QuickWatch窗口观察或修改变量,还可方便地将变量加入Watch窗口中。
(9) WatchWindow:打开Watch窗口观察或修改变量。
(10) RegisterWindows:观察或编辑CPU寄存器或外设寄存器值。
(11) ViewMemory:查看指定地址存储器的值。
(12) ViewStack:查看堆栈值。
(13) ViewDisassembly:查看反汇编窗口。
5) EditToolbar
如图5.9所示,Edit工具栏提供了一些常用的编辑命令及书签命令。图5.9Edit工具栏
(1) MarkTo:将光标放在括号前面,再单击此命令,则将标记此括号对内所有文本。
(2) MarkNext:查找下一个括号对,并标记其中文本。
(3) FindMatch:将光标放在括号前,单击此命令,光标跳至与之配对的括号处。
(4) FindNextOpen:将光标跳至下一个括号处。
(5) OutdentMarkedText:将所选文本向左移一个Tab宽度。
(6) IndentMarkedText:将所选文本向右移一个Tab宽度。
(7) Edit→ToggleBookmark:设置一个标签。
(8) Edit→NextBookmark:查找下一个标签。
(9) Edit→PreviousBookmark:查找上一个标签。5.4.3DSP/BIOS和RTDX简介
DSP/BIOS插件和RTDX是提高软硬件调试效率、加快产品开发步伐的有力工具,下面对这部分内容做一简介。
1.DSP/BIOS插件
在软件开发的分析阶段,传统的调试手段对诊断实时系统中错综复杂的问题无能为力。CCS提供支持实时分析的DSP/BIOS插件,可以使用它来实时跟踪和监视一个DSP应用程序,同时对实时性能的影响达到最小。在CCS中,线程是一个通用概念,它可指任何执行的任务,如硬件中断服务子程序(ISR)、软件中断、任务及周期函数等。
DSP/BIOSAPI提供以下实时硬件仿真特性:
第一,程序跟踪。显示写入目标日志的事件,并在程序执行过程中反映动态控制流程。
第二,性能监控。跟踪统计目标板资源的使用情况,如处理器负载和线程时序等。
第三,文件流。将目标板上的I/O对象与主机上的文件联系在一起。
DSP/BIOS同时提供基于优先级的调试方案,支持函数的周期性执行和多优先级线程。
1) DSP/BIOS配置
在CCS环境下,可创建配置文件,用于定义DSP/BIOSAPI使用的对象,此文件同时还可以简化存储器映射和硬件向量映射。因此,即使不调用DSP/BIOSAPI,也可以用此配置文件。
通用的API函数调用是在程序运行时创建对象的,这将导致在目标DSP中占用额外的代码空间。与通用API函数调用不同的是,所有DSP/BIOS对象都是静态配置,且在执行程序中占用固定的代码空间。这种静态配置特性还可以在程序执行之前通过验证对象属性的合法性来提前检测错误。由于配置文件简化了程序的ISR矢量和存储器段寻址,因此它既可在调用DSP/BIOSAPI的程序中使用,也可在不调用DSP/BIOSAPI的程序中使用。
存储配置文件将同时产生链接命令文件(Programcfg.cmd)、头文件(Programcfg.h)和汇编源文件(Programcfg.sam),并自动加入到工程文件中。
2) DSP/BIOSAPI模块
在传统手段的调试中,调试处于执行程序之外。与传统调试不同的是,DSP/BIOS应用程序要求目标程序与特定的DSP/BIOSAPI模块链接起来。通过在配置文件中定义DSP/BIOS对象,一个程序可以使用一个或多个DSP/BIOS模块。定义这些对象为外部函数,在源文件中就可调用DSP/BIOS函数。每个模块有自己独立的C头文件或汇编宏文件,这样在使用某个DSP/BIOS模块时不会将其它的DSP/BIOS模块包含进来,从而减小程序代码量。
DSP/BIOSAPI调用(用C语言或汇编语言)时被优化,这样会在目标DSP上使用最少的资源。DSP/BIOSAPI包含以下模块。
(1) ATM:提供原子函数,生成共享数据。
(2) C54:提供专用的DSP函数来管理中断。
(3) CLK:片内定时器模块,控制片内定时器并提供逻辑32位的实时时钟,其中断最高速率与片内定时器寄存器一样(1个指定周期),最低速率可长达几毫秒甚至更长。
(4) DEV:设备驱动模块,允许开发设计人员创建并使用自己的设备驱动。
(5) HST:主机输入/输出模块,管理主机通道对象,使程序能在目标板和主机之间传输数据。主机通道被静态配置为输入或输出。
(6) HWI:硬件中断模块,为硬件中断例程提供支持,在配置文件中可指定硬件中断发生时要运行的函数。
(7) IDL:空闲函数模块,管理空闲状态函数,当目标程序没有更高优先级的程序执行时,DSP处于空闲状态。
(8) LCK:锁定模块,管理共享的全局资源,当有多个任务竞争资源时仲裁资源的使用权。
(9) LOG:日志模块,管理LOG对象,在目标程序执行时实时捕获各种事件。可使用系统日志或定义自己的日志,可在CCS中实时观察这些日志。
(10) MBX:信箱模块,管理在任务间传递信息的对象。当等待信箱信息时,任务被阻塞。
(11) MEM:存储器模块,为目标程序的不同代码或数据区指定存储段。
(12) PIP:数据管道模块,管理用来缓冲输入/输出数据流的数据通道。这些数据管道提供一个一致的软件数据结构,用来驱动DSP器件和其它实时外设器件之间的输入/输出。
(13) PRD:周期函数模块,管理触发程序中函数执行的周期对象。这些对象的执行速率可以由CLK模块的时钟速率控制,也可通过周期性调用PRD-tick来控制。
(14) QUE:队列模块,管理数据队列结构。
(15) RTDX:实时数据交换模块,使数据能在主机与目标板之间实时交换,然后在主机端分析与显示。
(16) SEM:信号量模块,管理任务之间同步与互斥操作的信号量。
(17) SIO:流模块管理,能提供高效、实时且与设备无关的输入/输出对象。
(18) STS:统计模块,管理当程序运行时存储关键统计数据的统计累加器。可在CCS环境下实时观察这些统计数字。
(19) SWI:软件中断模块,管理软件中断,当一个目标程序用API调用发送一个SWI对象时,SWI模块调度相关函数的执行。软件中断共有15个优先级,但所有优先级都比硬件ISR优先级要低。
(20) SYS:系统服务模块,提供执行基本系统服务的通用函数,如中止程序执行和打印格式文本等。
(21) TRC:跟踪模块,管理一组跟踪控制位,通过事件日志和统计累加器实时捕获程序信息。由于不存在TRC对象,因此在配置文件中没有列出TRC模块。
2.RTDX原理
实时数据交换(Real-TimeDataExchange,RTDX)提供一个实时和连续的可视环境,使开发者能看到DSP应用程序工作的真实过程。RTDX允许系统开发者在不停止运行目标应用程序的情况下在计算机和DSP芯片之间传输数据,同时还可在主机上利用对象链接嵌入(OLE)技术分析和观察数据,这样可以提供给开发者一个真实的系统工作过程,从而缩短开发时间。
RTDX可以在DSP/BIOS中使用,也可以脱离DSP/BIOS使用。值得注意的是,目前CCSSimulator不支持RTDX,也就是说RTDX必须在Emulator下使用,这就要求有硬件仿真器和DSP目标板。
RTDX的工作原理如图5.10所示,它由主机(Host)PC和目标(Target)DSP两部分构成,CCS则控制了主机与DSP之间的数据流动。在目标DSP上运行有一个小的RTDX库(RTDXTargetLibrary),RTDX库使用一个基于扫描的仿真器,通过增强型JTAG接口在主机和DSP之间传递数据。DSP应用程序则通过调用RTDX库的API函数来完成主机与DSP之间的通信。主机方则运行有CCS软件。CCS软件同样带有一个RTDX库(RTDXHostLibrary),再通过一个OLE接口将实时数据在主机上显示和分析。图5.10RTDX工作原理
1)目标板至主机数据流
为录制目标板上的数据,必须声明一个输出通道,通过用户接口中定义的例程将数据写至输出通道。数据将立即被录制到一个在RTDX目标库中定义的缓冲器中,之后,缓冲器的数据通过一个JTAG接口送往主机。
RTDX主机库从JTAG接口接收并录制数据,根据指定的RTDX主机录制模式,录制的数据可存放在存储缓冲器中,也可存至RTDX日志(log)文件中。
录制的数据可通过主机应用程序存取。主机应用程序是一个OLE(对象链接嵌入)自动化客户程序(automationclient),如VisualBasic应用程序、VisualC++应用程序、LabView及MicrosoftExcel等。典型情况下,RTDXOLE自动化客户程序是一个显示程序,通过一种有意义的方式将数据显示出来。
2)主机至目标板数据流
对一个从主机接收数据的目标板而言,必须声明一个输入通道,使用在用户接口中定义的例程向其请求数据。请求的数据被录制到RTDX目标缓冲器中,再通过JTAG接口送往目标板。
OLE自动化客户程序可通过OLE接口将数据送往目标板。所有送往目标板的数据被写至RTDX主机库的存储缓冲器中。当RTDX主机库接收到一个来自目标DSP程序的读请求时,主机缓冲器中的数据就通过JTAG接口送往目标板,同时将数据的地址实时写至目标板。当操作完成时,主机将通知RTDX目标库。
3) RTDX目标库用户接口
RTDX目标库用户接口提供最为安全的方法,在目标应用程序与RTDX目标库之间交换数据。
用户接口中定义的数据类型和功能如下:
(1)使能目标应用程序将数据送到RTDX主机库。
(2)使能目标应用程序向RTDX主机库请求数据。
(3)在目标板上提供数据缓冲。数据在送往主机之前,先复制一份存储在目标板缓冲器中,这样可以保证数据的完整性,减小实时干扰。
(4)提供安全的中断。可以在中断处理程序中调用用户接口定义的例程。
4) RTDX主机OLE接口
OLE接口提供了OLE自动化客户程序与RTDX主机库之间通信的能力,其功能如下:
(1)使OLE自动化客户程序能存取录制在RTDX日志文件或缓存在RTDX主机库中的数据。
(2)使OLE自动化客户程序能通过RTDX主机库将数据发送到目标板。
5)使用RTDX窗
从RTDX状态栏的下拉菜单中,可以选择以下3种RTDX状态之一:
(1) RTDXDisable:在运行不需要RTDX的应用程序时禁止RTDX功能。在默认情况下,RTDX是被禁止的。在配置RTDX时也必须禁止RTDX功能。
(2) RTDXEnable:使能CCS处理来自目标应用程序或OLE自动化客户程序的实时交换数据。
(3) RTDXPlayBack:允许CCS处理预录制好的文件中的数据。当选中RTDXPlayBack时,将自动弹出选择文件的对话框。在对话框中选择一个存在的RTDX日志文件即可。5.4.4集成开发环境使用
1.CCS的系统配置
在运行CCS之前,该系统必须正确地进行硬件配置,即正确地加载适用于TMS320‘C2000DSP的驱动程序,以及硬件仿真器的端口设置等。
从Windows的开始菜单中运行SetupCodeComposer命令,或者从桌面运行SetupCCC2000程序,系统将进入如图5.11所示的环境,此时可以对TMS320'C2000的CCS系统进行配置。图5.11CCS配置界面
(1)在Family选择框中选择c2xx选项,即用于c2xx的系统配置。
(2)在Platform选择框中选择emu或sim选项,前者用于仿真,后者用于模拟。这两个选项存在很大的区别,其中,emu主要用于对已经连接的目标板进行仿真和调试,选择这一项,必须将仿真器和目标板连接起来,并且将仿真器与运行CCS的PC机连接起来,要注意正确连接,可参考目标板厂商的资料;sim主要用来模拟操作,选择该选项时,不要求有目标板存在,系统会模拟TMS320'C2000的硬件系统,对程序进行模拟调试。
(3)完成上面两步操作后,单击“Addtosystemcomfiguration”按钮,系统就会自动将c2xx的驱动程序配置到当前系统。
(4)单击“Close”按钮,关闭当前的界面,然后就可以看到配置了系统后的CodeComposerSetup(代码编辑器系统设置)界面。此时选择File→Save命令,将当前的配置保存起来,然后执行File→Exit命令,退出配置环境。
2.运行CCS
完成了系统配置后,从Windows的开始菜单中运行CodeComposer命令,或者从桌面执行CC'C2000程序,系统将进入如图5.12所示的开发环境。图5.12CCS主窗口
3.建立工程文件
在CCS环境下开发汇编应用程序,首先要建立一个工程项目文件,然后向工程项目文件中添加汇编程序文件( .asm)和链接命令文件( .cmd),并设置工程项目的选项,下面分别进行介绍。
1)建立一个新的工程项目文件
执行Projec→New命令,系统弹出如图5.13所示的对话框,在该对话框中输入项目文件名,如contral.mak文件,然后单击“保存”按钮,系统就会创建一个名为contral.mak的工程项目文件。图5.13“建立新工程”对话框
2)向项目中添加文件
执行Project→AddFilestoProject命令,或者在项目管理器中选中contral.mak文件,单击鼠标右键,从快捷菜单中选择AddFiles命令。此时可以分别为项目文件添加汇编程序文件和链接命令文件。
在文件类型下拉列表中选择AsmSourceFiles选项,并选择需要添加的汇编程序所在的目录,如图中的contral.asm文件。当然用户可以编写一个空文件保存为自己需要的以 .asm为扩展名的文件,不必事先完全编写好汇编程序,添加到工程项目后,再对汇编程序进行编写。最后单击“打开”按钮即完成汇编程序的添加。同样,在文件类型下拉列表中选择“LinkerCommandFiles”选项,然后选择需要添加的 .cmd文件,如本实例的contral.cmd文件,最后单击“打开”按钮,即完成链接命令的添加。
此时,完成了汇编程序文件和链接命令的添加,开发者就可以进行汇编程序的编辑、编译和目标文件的创建了。不过在编译文件和创建目标文件之前,还需要对工程项目文件的选项进行设置,以符合汇编的要求。
4.设立工程项目
执行Project→Options命令,系统弹出如图5.14所示的“BuildOptions”(项目选项设置)对话框,其中有三个选项卡,分别为“Compiler”(编译器)、“Assembler”(汇编器)和“Linker”(链接器),选择这三者,可以分别进行编译、汇编和链接参数的设置。图5.14“项目选项设置”对话框
1)编译器环境参数设置
在如图5.14所示的选项卡中,可以设置编译器环境参数。具体设置方式如下:
(1)最上方的信息显示框中为设置的编译器环境参数。
(2) SuppressBanner(抑制标题)选项用于抑制所有信息,相当于(-qq)选项。
(3) TargetProessor(目标处理器)选项对应于汇编参数-v,用以设置当前的目标处理器。
(4) IncludeSearchPath(包含搜索路径)选项对应于汇编参数-i。
(5) GenerateSymbolicDebugInfomation(产生符号调试信息)相当于汇编参数-g,这是CCS系统新增加的参数,选中该选项则使能符号调试。
(6) OptimizationLevel(优先级)用于C/C++语言的应用程序开发。对于汇编程序开发,一般选为Disable(禁止)。
(7) InlineOptions(直接插入选项),用来设置是否使用内部操作函数和直接插入关键词控制定义的扩展。
(8) WarnningLevel(警告级别)用来设置是否显示警告,或显示哪类警告。一般可选默认的设置,即显示所有警告。
(9) DefineSymbols(定义符号)选项对应于汇编参数-d。
(10) Category(类别)框中可以分别选择需要设置的对象。选择一种对象,则右边显示的设置项目不同,软件开发者可以根据需要进行设置,这里不详细阐述。因为对于汇编程序开发来说,这些设置都可以取默认项。
2)汇编器环境参数设置
在如图5.15所示的选项卡中,可以设置汇编器环境参数。图5.15汇编器环境参数设置汇编器环境参数具体设置方式如下:
(1) SuppressBanner(抑制标题)选项对应于汇编参数-q,用以抑制所有处理信息。
(2) TargetProcessor选项对应于汇编参数-v,用以设置当前的目标处理器,这里为c2xx。
(3) IncludeSearchPath(包含搜索路径)选项对应于汇编参数-i。
(4) EnablesSourceLcvelDebugging选项用来向目标文件增加行号调试信息,相当于汇编参数-g。
(5) DefineSymbels选项对应于汇编参数-d。
(6) Insert.copyFile选项对应于汇编参数-hc,设置该选项,可以为汇编模块复制指定的文件。该文件会插到源文件的前面。
(7) GenerateListingFiles选项对应于汇编参数-l,选中该选项,可以产生一个与输入文件同名的列表文件,扩展名为 .lst。
(8) GenerateCro
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大型设备运输合同书范本
- 团队遴选流程标准化实施框架
- 常用机床电气设备维修01 CA6140型卧式车床电气控制线路维修glq
- 化学思维导图培训
- 纪录片拍摄全流程解析
- 国培新教师培训成果汇报
- 2025年贵州省中考英语试卷真题及答案详解(精校打印版)
- 肿瘤内科工作总结
- 天真教育好好玩音乐培训
- 爱国英雄美术课件
- 玄隐遗密(含黄帝内经)
- 2025至2030年中国高镍三元材料产业发展动态及投资方向分析报告
- DB13T 1320.10-2010 中药材种子质量标准 第10部分:防风
- (2025春新版本)人教版七年级生物下册全册教案
- 医院残疾评定管理制度
- 杂志分拣打包服务合同4篇
- 2025年D-对羟基苯甘氨酸项目市场调查研究报告
- 2024-2025 学年八年级英语下学期期末模拟卷 (常州专用)解析卷
- 航空发动机关键部件项目运营管理手册(范文)
- 2025年中国社区O2O商业模式市场分析报告
- 高考语文专题复习 -语用新题型得名方式、构词方式辨析
评论
0/150
提交评论