第5章:CCS集成开发环境2第5章CCS集成开发环境CCS的简介CCS是一种针对TMS320系列DSP的集成开发环境,采用Windows风格界面,集编辑、编译、链接、软件仿真、硬件调试以及实时跟踪等功能于一体,极大地方便了DSP芯片的开发与设计,是目前使用最为广泛的DSP开发软件之一。CCS有两种工作模式,即软件仿真器模式:可以脱离DSP芯片,在PC机上模拟DSP的指令集和工作机制,主要用于前期算法实现和调试。硬件在线编程模式:可以实时运行在DSP芯片上,与硬件开发板相结合在线编程和调试应用程序。3第5章DSP集成开发环境CCSCCS开发系统的示意图。CCS的组成主机CodeComposerStudioCodeComposer编辑器源文件.c.h.asm.cdb配置数据库DSP/BIOSAPI代码产生工具编译器汇编器链接器OLE应用使用RTDXRTDX插件DSP/BIOS插件第3方的插件可执行代码CodeComposer调试工具主机仿真支持目标系统DSP目标系统硬件DSP/BIOSDSP应用程序JTAGRTDX配置工具cfg.cmdcfg.s54cfg.h54Codecomposer工程4CCS的开发系统主要由以下组件构成:①TMS320C54x集成代码产生工具;②CCS集成开发环境(IDE);③DSP/BIOS实时内核插件及其应用程序接口API;④实时数据交换的RTDX插件以及相应的程序接口API;⑤由TI公司以外的第三方提供的各种应用模块插件。5(1)代码生成工具:C编译器:用来将C/C++语言源程序自动编译为’C54x的汇编语言源程序。汇编器:用来将汇编语言源文件汇编成机器语言COFF目标文件。链接器:将汇编生成的、可重新定位的COFF目标模块组合成一个可执行的COFF目标模块。文档管理器:允许用户将一组文件(源文件或目标文件)集中为一个文档文件库。6代码生成工具助记符指令—代数式指令翻译器:用来将包含助记符指令的汇编语言源文件转换成包含代数式指令的汇编语言源文件。建库实用程序:可以用来建立用户自己使用的、并用C/C++语言编写的支持运行的库函数。链接时,用rts.src中的源文件代码和rts.lib中的目标文件代码提供标准的支持运行的库函数。十六进制转换程序:可以很方便地将COFF目标文件转换成TI、Intel、Motorola等公司的目标文件格式。转换后生成的文件可以下载到EPROM编程器中。7(1)代码生成工具:绝对地址列表器:将链接后的目标文件作为输入,生成.abs输出文件。交叉引用制表程序:利用目标文件生成一个交叉引用清单,列出链接的源文件中的符号以及它们的定义和引用情况。82.’C54x的开发工具(2)代码调试工具:C/汇编语言源码调试器:与软件仿真器、评价模块、软件开发系统、软件仿真器等配合使用。软件仿真器:是一种模拟DSP芯片各种功能并在非实时条件下进行软件调试的调试工具,它不需目标硬件支持,只需在计算机上运行。初学者工具DSK:是TI公司提供给初学者进行DSP编程练习的一套廉价的实时软件调试工具。9(2)代码调试工具:软件开发系统SWDS:是一块PC插卡,可提供低成本的评价和实时软件开发,还可用来进行软件调试,程序可在DSP芯片上实时运行。可扩展的开发系统仿真器(XDS510):可用来进行系统级的集成调试,是进行DSP芯片软硬件开发的最佳工具。评价模块EVM板:是一种低成本的开发板,可进行DSP芯片评价、性能评估和有限的系统调试。10CCS安装与启动CCS程序图标11121314155.2CCS集成开发环境一个最小的C应用程序项目至少包含以下三个文件:①主程序main.c②链接命令文件.cmd。。③C运行库rtsxxxx.lib。④如果程序要写进EPROM并在上电之后直接运行,还必须包括Vectors.asm文件。165.2CCS集成开发环境使用CCS开发应用程序的一般步骤:①打开或创建一个工程文件。②使用CCS集成开发环境编辑各类文件,如头文件(.h文件)、命令文件(.cmd文件)和源程序等。③将文件添加到工程项目中。④对工程进行编译。⑤运行程序,评估算法性能。17CCS文件类型*.mak:CCS定义的工程项目文件;*.c*:C源程序文件;*.asm:汇编语言源程序;*.h*:C语言头文件(包括API的头文件);*.lib:静态库文件;*.cmd:链接命令文件;*.obj:目标文件;*.out:DSP可执行文件;*.wks:工作空间文件;*.cdb:配置数据库文件;18CCS窗口与工具条19CCS窗口与工具条20CCS的基本使用CCS工程项目管理记录如下信息:源程序文件、头文件;目标库;编译、汇编、链接选项;中断向量文件(vectors);命令文件(command)。它们在工程文件中按照目录树的结构进行组织,工程编译链接后生成可执行文件。21创建新工程创建新文件添加文件进工程打开工程关闭工程22CCS工程编译●工程项目构建(Build)◆编译:仅完成对当前源文件的编译,不进行链接右键点击源文件→关联菜单(弹出菜单)→Open→Project→CompileFile;右键点击源文件→关联菜单(弹出菜单)→CompileFile单击工具条;◆增加性构建只编译修改过的源文件;Project→Build或单击工具条或关联菜单Build;◆全部重新构建对所有工程文件进行重新编译和链接;Project→RebuildAll或单击工具条;工程的编译、链接与运行23加载与运行程序工程的编译、链接与运行加载程序运行程序设置更改程序选项24CCS工程项目的调试调试是更正工程代码的过程。CCS开发环境提供了异常丰富的调试手段。当完成项目构建,生成目标文件后,就可以进行程序的调试。一般的调试步骤为:①装入构建好的目标文件;②设置程序断点、探测点和评价点;③执行程序;④程序停留在断点处,查看寄存器和内存单元的数据,并对中间数据进行在线(或输出)分析。⑤如有必要,修改源程序,重复调试过程,直至满足预期目标。25工程项目配置有两种调试版本可供选择:26调试器窗口调试器窗口能够使用户观察源代码,在内存和寄存器中监视变量,并可以在程序执行的过程中观察和修改变量的值。工程视图窗口源代码窗口图形窗口存储器窗口反汇编窗口寄存器窗口查看堆栈窗口27调试器窗口在源代码窗口中,不仅可以编写程序,在调试程序时,还可以从源代码窗口中得知要调试片断的下一步执行步骤,还可以观察变量的值。源代码窗口28反汇编窗口主要用来显示反汇编后的指令和调试所需的符号信息,包括反汇编指令、指令所存放的地址和相应的操作码(机器码)。当程序装入目标处理器或仿真器后,CCS会自动打开反汇编窗口。反汇编窗口29存储器窗口可以直接显示存储器的内容,以观察某个特定地址内存单元数据。在调试程序的过程中,可直接观察存储器的内容来判断程序的正确性。存储器窗口的使用存储器窗口名称设置欲显示的存储器首地址选择显示的存储器空间X的值30为了便于DSP系统的开发调试,CCS开发环境为用户提供了寄存器窗口,用来观察目标处理器的CPU寄存器和外设寄存器。另外,CPU寄存器的内容还可以通过寄存器编辑对话框进行编辑修改。寄存器窗口的使用31程序调试的基本操作在调试开发程序的过程中,有时经常需要对处理器进行复位操作。复位操作可通过CCS开发环境实现,它为用户提供了一些命令可用来复位目标处理器。32复位目标处理器该命令是将目标处理器(DSP芯片)恢复到上电初始状态,初始化所有寄存器的内容,并停止当前所执行的用户程序(1)复位命令:Debug—ResetCPU(2)重新开始命令:Debug--Restart该命令是将CCS的程序指针PC恢复到用户程序的入口地址,但不能开始执行程序。该命令是将一个临时断点设置在用户程序关键字“main”处,并从此处开始执行用户程序,此命令提供了一种快速运行用户程序的方法。(3)进入主程序命令:Debug—GoMain33断点是任何调试工作的一项基本内容。断点(Debug—Breakpoints)设置断点时应当避免以下两种情形:作用:暂停程序的运行,以便观察程序的状态,检查或修正变量,查看调用的堆栈、存储器和寄存器的内容等。①将断点设置在属于分支或调用的语句上。②将断点设置在块重复操作的倒数第一或第二条语句上。34探测点是一种设置在源文件某条语句上的特殊断点,主要用来与一个外部文件的读/写相关联。探测点当用户程序运行到探测点时,自动地从与该探测点连接的外部文件中读入数据或将计算的结果输出给外部文件。完成数据的传输后,自动恢复程序的运行。35探测点探测点在算法开发过程中是一个有用的工具,可用来与PC主机进行数据通信。利用探测点可以进行以下工作。从PC主机的文件中,传输输入数据至目标系统的缓冲区,作为算法开发的模拟数据;从目标系统的缓冲区中,传输输出数据至PC主机的文件中,以便进行数据分析;更新窗口,例如图形、数据等。36实时运行执行程序暂停执行动画执行自由运行CCS提供了四种实时运行程序的操作。37这种操作是从当前程序指针(PC)所在位置开始执行,直到遇到断点后才停止程序运行。这种运行方式可以使程序更接近于实际的工作运行情况。连续执行执行操作,可实现程序的运行。(1)执行程序:Debug--Run用来暂停正在执行的程序。(2)暂停执行:Debug--Halt384实时运行首先设置动画执行速度:动画执行速度定义了两个断点之间程序执行所需的最短时间。在选项菜单“Option”中“AnimateSpeed(动画速度)”框中设置(3)动画执行(Debug—Animate)在执行前先设置好各断点,并设置好动画运行速度。执行操作命令后,就会从当前程序位置执行到下一个断点处。在断点处更新所有与“探测点”未关联的窗口后,程序继续运行。这是一个在断点支持下快速调试程序的操作。394实时运行此命令禁止所有断点。在Simulator中,该命令无效。(4)自由运动(Debug—RunFree)40单步执行操作①单步执行(快捷键F10)该操作是每发出一条操作命令,执行一条或一段程序。在菜单“Debug”中,选择“StepOver(单步执行)”命令或单击调试工具条上的“”按钮,可完成单步执行操作。对于一般程序,该命令仅执行一条程序指令(一条汇编指令或C语句)。若所执行的是一条程序调用语句,则该命令是将所调用的程序作为一条指令来完成,不进入其内部调试。CCS提供了4种单步执行操作,在调试工具条中设有对应的运行按钮。413.单步执行②单步进入(快捷键F8)若源程序采用汇编指令,则该命令完成一条汇编指令的执行;若采用的是C程序,则这一命令将执行一条C指令,可进入语句内部(如子程序或软件中断等)调试。选择菜单“Debug”中的“StepInto(单步进入)”命令或单击调试工具条上的“”按钮,可完成单步进入操作。42单步执行操作③单步跳出(快捷键Shift+F7)此命令可完成从子程序中跳出,即从当前子程序的位置开始,自动执行后续的程序,直到返回到调用该子程序的指令为止。执行菜单“Debug”中的“StepOut(单步跳出)”命令或单击调试工具条上的“”按钮,即可完成单步跳出操作。43单步执行操作④执行到当前光标处(快捷键Ctrl+F10)在程序的调试过程中,此项操作可以提供方便的调试方法,只要在反汇编窗口中设置一个光标(单击设定指令的所在行),就可以使程序从当前位置开始,一直执行到光标所在处为止。可以通过选择菜单“Debug”中的“RuntoCursor(执行到光标)”命令或单击调试工具条中的“”按钮来完成操作。44CCS开发环境提供了观察窗口(WatchWindow),用于实时地观察和修改变量。观察窗口的使用单击此图标,即可输入观察变量结合断点及单步执行等操作,即可观察变量值的变化45在C语言编程中,直接添加变量:x,y等即可。在汇编语言中,有两种方法:(int*)x直接输入’*地址单元值’,如:(*0