26第3章实验用户使用时,请注意以下几个方面:1.上电后正常情况是:SEED-DEC643板卡的D1常亮,SEED-DTK_Mboard板的电源指示灯都亮。2.各个实验程序的编译环境如下:CCS版本为3.3。3.各实验使用到资源可参考本书的附录内容。273.1CCS使用实验3.1.1CCS入门实验1(CCS使用)3.1.1.1实验目的1.熟悉CCS集成开发环境,掌握工程的生成方法;2.熟悉SEED-DEC643实验环境;3.掌握CCS集成开发环境的调试方法。3.1.1.2实验内容1.DSP源文件的建立;2.DSP程序工程文件的建立;3.学习使用CCS集成开发工具的调试工具。3.1.1.3实验背景知识3.1.1.3.1CCS简介CCS提供了配置、建立、调试、跟踪和分析程序的工具,它便于实时、嵌入式信号处理程序的编制和测试,它能够加速开发进程,提高工作效率。CCS提供了基本的代码生成工具,它们具有一系列的调试、分析能力。CCS支持如下所示的开发周期的所有阶段设计概念性规划编程与编译创建工程文件编写源程序编写配置文件调试语法检测逻辑检测分析实时调试统计跟踪28CCS构成及接口见下图CCS窗口介绍:293.1.1.3.2使用CCS常遇见文件简介1.program.c:C程序源文件2.program.asm:汇编程序源文件3.filename.h:C程序的头文件,包含DSP/BIOSAPI模块的头文件4.filename.lib:库文件5.project.cmd:连接命令文件6.program.obj:由源文件编译或汇编而得的目标文件7.program.out:经完整的编译、汇编以及连接后生成可执行文件8.program.map:经完整的编译、汇编以及连接后生成空间分配文件9.project.wks:存储环境设置信息的工作区文件保存配置文件时将产生下列文件:1.programcfg.cmd2.programcfg.s643.programcfg_c.c(一)CMD文件简介cmd文件用于DSP代码的定位。由3部分组成:1.输入/输出定义:.obj文件:链接器要链接的目标文件。.lib文件:链接器要链接的库文件。.map文件:链接器生成的交叉索引文件。.out文件:链接器生成的可执行代码。2.MEMORY命令:描述系统实际的硬件资源。3.SECTIONS命令:描述段如何定位。下面例子则可说明其基本格式:-stack400-heap400-l.\lib\rts6400.lib-l.\lib\cslDM642.libMEMORY{ISRAM:origin=0x00000000,len=0x00010000SDRAM:origin=0x80000000,len=0x02000000}SECTIONS{.vecISRAM.textISRAM.bssSDRAM.cinitSDRAM.constSDRAM.farSDRAM30.stackSDRAM.sysmemSDRAM}下面介绍一下CMD文件中常用的程序段名与含义1..cinit存放C程序中的变量初值和常量;2..const存放C程序中的字符常量、浮点常量和用const声明的常量;3..text存放C程序的代码;4..bss为C程序中的全局和静态变量保留存储空间;5..far为C程序中用far声明的全局和静态变量保留空间;6..stack为C程序系统堆栈保留存储空间,用于保存返回地址、函数间的参数传递、存储局部变量和保存中间结果;7..sysmem用于C程序中malloc、calloc和realloc函数动态分配存储空间。(二)vecs.asm文件简介vecs.asm是DSP的中断向量表文件。中断服务程序的地址(中断向量)要装载到存储器的合适区域。一般中断向量表文件是采用汇编语言编写;在文件中一般汇编指令.sect来生成一个表。这个表包含中断向量的地址和跳转指令。因为中断读物的标志符在汇编语言模块外部使用,所以标志符用.ref或.global。(三)GEL文件简介GEL文件的功能同cmd文件的功能基本相同,用于初始化DSP。但它的功能比cmd文件的功能有所增强,GEL在CCS下有一个菜单,可以根据DSP的对象不同,设置不同的初始化程序。以下面的例子介绍一下GEL文件的构成。例:#defineDEC643_CTL0x60000//定义DEC643_CTL寄存器#defineDEC643_INT0x60001//定义DEC643_INT寄存器#defineDEC643_STA0x60002//定义DEC643_STA寄存器StartUp()//开始函数{GEL_MapReset();//存储空间复位GEL_MapAdd(0x0000,0,0x7fff,1,1);//定义程序空间0000-7fff可读写GEL_MapAdd(0x8000,0,0x7000,1,1);//定义程序空间8000-f000可读写GEL_MapAdd(0x0000,1,0x1000,1,1);//定义数据空间0000-f000可读写GEL_MapAdd(0xffff,2,1,1,1);//定义I/O空间0xffff可读写GEL_MapOn();//存储空间打开GEL_MemoryFill(0xffff,2,1,0x40);//在I/O空间添入数值40h}3.1.1.3.3CCS常用指令简介1.设置断点将光标放置在需要设置断点的程序行前,选择Debug→Breakpoints,即可完成一个断点的设置。2.CCS提供3种方法复位目标板1)ResetDSP:Debug→ResetD,初始化所有的寄存器内容并暂停运行中的程31序。使用此命令后,要重新装载.out文件后,再执行程序。2)Restart:Debug→Restart,将PC值恢复到当前载入程序的入口地址。3)Gomain:Debug→Gomain,将程序运行到主程序的入口处暂停。3.CCS提供4种执行操作1)执行执行:Debug→Run,程序运行直到遇到断点为止。2)暂停执行:Debug→Halt,程序停止运行。3)动画执行:Debug→Animate,用户反复运行程序,直到遇到断点为止。4)自由执行:Debug→RunFree,禁止所有断点运行程序。4.CCS提供4种单步执行操作1)单步进入:快捷键F8,Debug→stepinto,当调试语句不是基本的汇编指令时,此操作进入语句内部。2)单步执行:Debug→stepOver,此命令将函数或子函数当作一条语句执行,不进入内部调试。3)单步跳出:Debug→stepOut,此命令作用为从子程序中跳出4)执行到光标处:快捷键crtl+F10,Debug→RuntoCursor,此命令作用为将程序运行到光标处。5.内存、寄存器与变量的操作1)查看变量:使用view→WatchWindow命令2)查看寄存器:使用view→Registers→CPURegisters命令3)查看内存:使用view→memory命令6.Graph的设置即图形显示1)选择View→Graph→Time/Frequency。2)在弹出的GraphPropertyDialog对话窗中,将GraphTitle,StartAddress,AcquisitionBufferSize,DisplayDataSize,DSPDataType等的属性可改变为如下图所示(也可根据具体需要设置属性)。向下滚动右侧的滚动条或调整dialog框的大小可看到所有的属性。32示例(A)将起始地址为0x2c28的数组进行图形显示3)点击OK,将出现所设的图形窗口。如:在滤波实验中,用以上方法设定的图形窗口,在运行滤波程序后,昀终的显示结果如下图所示4)可以在图形上单击右键,选择“FloatInMainTable”,这时图形将浮现在主窗口中,以便观察。3.1.1.4实验准备1.将DSP仿真器与计算机连接好;2.将DSP仿真器的JTAG插头与SEED-DEC643单元的J1相连接;3.打开SEED-DTK643的电源。观察SEED-DTK_MBoard单元的+5V,+3.3V,+15V,-15V的电源指示灯灯以及SEED-DEC643的电源指示灯D1是否均亮;若有不亮的,请断开电源,检查电源。下面按照原文件、工程文件以及编译条件的设置来分别介绍一下CCS的使用。333.1.1.5实验步骤3.1.1.5.1创建源文件1.双击CCStudiov3.3.图标进入CCS环境。2.打开CCS选择File→New→SourceFile命令。3.编写源代码并保存。4.保存源程序名为math.c,选择File→Save。345.创建其他源程序(如.cmd)可重复上述步骤。3.1.1.5.2创建工程文件1.打开CCS,点击Project--New,创建一个新工程,其中工程名及路径可任意指定弹出如下对话框:352.在Project中填入工程名,Location中输入工程路径;其余按照默认选项,点击完成即可完成工程创建。3.点击Project选择addfilestoproject,添加工程所需文件。4.在弹出的对话框中的下拉菜单中分别选择.c点击打开,即可添加源程序math.c添加到工程中:5.同样的方法可以添加文件math.cmd、rts.lib到工程中;在下面窗口中可以看到math.c、math.cmd、rts.lib文件已经加到工程文件中。363.1.1.5.3设置编译与连接选项1.点击Project选择BuildOpitions;2.在弹出的对话框中设置相应的编译参数,一般情况下,按默认值就可以。3.在弹出的对话框中选择连接的参数设置,设置输出文件名(可执行文件与空间分配文件),堆栈的大小以及初始化的方式。373.1.1.5.4工程编译与调试1.点击Project→Buildall,对工程进行编译,如正确则生成out文件;若是修改程序,可以使用Project→Build命令,进行编译连接,它只对修改部分做编译连接工作。可节省编译与连接的时间。编译通过,生成.out文件。2.点击File→loadprogram,在弹出的对话框中载入debug文件夹下的.out可执行文件。3.装载完毕。384.点击debug→GoMain回到C程序的入口。5.打开File→Workspace→SaveWorkspace保存调试环境,以便下次调试时不需要重新进行设置。只要File→Workspace→LoadWorkspace即可恢复当前设置。393.1.2CCS入门实验2(C语言的使用)3.1.2.1实验目的1.学习用标准C语言编写程序;2.了解TICCS开发平台下的C语言程序设计方法和步骤;3.熟悉使用软件仿真方式调试程序。3.1.2.2实验内容1.DSP源文件的建立;2.DSP程序工程文件的建立;3.掌握C语言在DSP中的应用。3.1.2.3实验背景知识当使用标准C语言编制程序时,其源程序文件名的后縀应为*.c。CCS在编译标准C语言程序时,首先将其编译成相应汇编语言程序,再进一步编译成目标DSP的可执行代码。昀后生成的是coff格式的可下载到DSP中运行的文件,其文件名后縀为*.out。由于使用C语言编制程序,其中调用的标准C的库函数由专门的库提供,在编译连接时编译系统还负责构建C运行环境。所以用户工程中需要注明使用C的支持库。3.1.2.4实验程序,包含文件1.Hello.c:实验的主程序。2.Hello.cmd:声明了系统的存储器配置与程序各段的连接关系。3.DEC643.gel:系统初始化。3.1.2.5实验准备首先将光盘下03.ExamplesofProgram\04.SEED-DTK643实验程序\CCS使用实验目录下的3.1.2file的文件夹拷贝到D盘根目录下。1.将DSP仿真器与计算机连接好;2.将DSP仿真器的JTAG插头与SEED-DEC643单元的J1相连接;3.打开SEED-DTK643的电源。观察SEED-DTK_MBoard单元的+5V,+3.3V,+