第5章 集成开发环境(CCS),内容提要:,CCS概述 CCS的基本操作: CCS的窗口、菜单和工具条,文件的编辑,CCS工程项目的建立和构建 工程项目的调试: 程序的运行控制,断点和探测点的设置和使用,寄存器、存储器、变量的观察和修改,图形工具的使用、数据输入与输出等,5.1 CCS概述,集成开发环境CCS概述 CCS软件的安装,针对TMS320系列DSP 工作于Windows操作系统下,采用图形接口界面 提供有环境配置、源文件编辑、程序调试、跟踪和分析等工具,5.1.1 集成开发环境CCS概述,1. CCS的两种工作模式,软件仿真器模式 可以脱离DSP芯片,在PC机上模拟DSP的指令集和工作机制,主要用于前期算法实现和调试 硬件编程模式 可以实时运行在DSP芯片上,与硬件开发板相结合编程和调试应用程序,C55x集成代码产生工具 用来对C语言、汇编语言或混合语言编程的DSP源程序进行编译汇编,并链接成为可执行的DSP程序 主要包括汇编器、链接器、C/C++编译器和建库工具等 集成开发环境 集编辑、编译、链接、软件仿真、硬件调试和实时跟踪等功能于一体 包括编辑工具、工程管理工具和调试工具等,2. 主要构成:,DSP/BIOS实时内核插件及其应用程序接口API,主要为实时信号处理应用而设计,包括DSP/BIOS的配置工具、实时分析工具等 实时数据交换的RTDX插件以及相应的程序接口API,可对目标系统数据进行实时监视,实现DSP与其他应用程序的数据交换 由TI公司以外的第三方提供的各种应用模块插件,3. CCS的主要功能,具有集成可视化代码编辑界面,用户可通过其界面直接编写C、汇编、.cmd文件等 含有集成代码生成工具,包括汇编器、优化C编译器、链接器等,将代码的编辑、编译、链接和调试等诸多功能集成到一个软件环境中 高性能编辑器支持汇编文件的动态语法加亮显示,使用户很容易阅读代码,发现语法错误,工程项目管理工具可对用户程序实行项目管理。
在生成目标程序和程序库的过程中,建立不同程序的跟踪信息,通过跟踪信息对不同的程序进行分类管理 基本调试工具具有装入执行代码、查看寄存器、存储器、反汇编、变量窗口等功能,并支持C源代码级调试 断点工具,能在调试程序的过程中,完成硬件断点、软件断点和条件断点的设置,探测点工具,可用于算法的仿真,数据的实时监视等 分析工具,包括模拟器和仿真器分析,可用于模拟和监视硬件的功能、评价代码执行的时钟 数据的图形显示工具,可以将运算结果用图形显示,包括显示时域/频域波形、眼图、星座图、图像等,并能进行自动刷新,提供GEL工具利用GEL扩展语言,用户可以编写自己的控制面板/菜单,设置GEL菜单选项,方便直观地修改变量,配置参数等 支持多DSP的调试 支持RTDX技术,可在不中断目标系统运行的情况下,实现DSP与其他应用程序的数据交换 提供DSP/BIOS工具,增强对代码的实时分析能力,5.1.2 CCS软件的安装,系统配置要求: 操作系统:Windows2000/XP/NT PC:32MB以上RAM,500MB以上的剩余硬盘空间,Pentium133以上的微处理器,分辨率在800600以上的显示器, 现有的普通PC基本都能满足运行CCS的要求,安装过程包括两个阶段:,安装CCS系统软件 将CCS的安装光盘放入CD-ROM驱动器中,运行光盘根目录下的setup.exe,按照安装向导的提示将CCS安装到指定目录中(默认安装目录为C:ti) 安装完毕后,桌面出现“CCS2(C5000)”和“Setup CCS2(C5000)”两个快捷方式图标 安装仿真器驱动程序 根据不同的仿真器,按照说明书的提示进行安装,5.1.3 配置CCS,CCS是一个开放的开发环境,必须设置不同的系统配置才能实现对不同环境的支持 系统配置(System Configuration)定义用户将要使用的目标板(Target Board)或者软件仿真器(Simulator) 配置方法如下:,双击桌面上的“Setup CCS2(C5000)”快捷方式图标,屏幕上将出现“Import Configuration”对话框,在” Available Configuration(可用配置)”中列出了包含的所有可用系统配置,如:C54xx、C55xx等系列,有Simulator、Emulator,DSK等平台供选择 选择合适的配置(在“Filters”选项中进行设置可以帮助更快地在可用配置找到所用的配置),点击“Import”按钮,所选的系统配置就被添加进“System Configuration”中了 点击“Save and Quit”按钮,保存系统配置 退出“Setup CCS2(C5000)”,即可完成CCS系统配置,5.2 CCS的基本操作,进入CCS主界面 源文件的建立、打开、关闭与编辑 工程项目的创建、关闭和打开 工程中文件的添加或删除 工程的构建(编译、链接),5.2.1 进入CCS主界面,1. 窗口,工程窗口 编辑窗口 反汇编窗口 内存显示窗口 寄存器显示窗口 图形显示窗口, CCS的所有窗口都含有一个关联菜单,2. 主菜单,文件管理,载入执行程序、符号及数据、文件输入/输出等,文字及变量编辑。
如剪贴、查找替换、内存变量和寄存器编辑等,工具条显示设置包括内存、寄存器和图形显示等,工程项目管理、工程项目编译和构建工程项目等,设置断点、探测点,完成单步执行、复位等,性能菜单包括设置时钟和性能断点等,利用通用扩展语言扩展功能菜单,选项设置设置字体、颜色、键盘属性、动画速度、内存映射等,工具菜单包括管脚连接、端口连接、命令窗口、链接配置等,DSP/BIOS核包括DSP/BIOS配置工具、实时分析工具、DSP/BIOS核、芯片支持库等,窗口管理包括窗口排列、窗口列表等,帮助菜单为用户提供帮助信息,3. 常用工具条,(1) 标准工具条,创建文件按钮用来创建新文件打开文件按钮用来打开已有的文件保存文件按钮用来保存当前窗口的文件剪切按钮用来剪切文本,将标记文本放入剪切板复制按钮用来复制文本,将标记文本放入剪切板粘贴按钮用来粘贴文本,将剪切板中的文本粘贴在光标处撤消按钮用于撤消最后的编辑活动恢复按钮用于恢复最后撤消的活动向下搜索按钮用来查找光标所在处下一个要搜索的字符串向上搜索按钮用来查找光标所在处前一个要搜索的字符串搜索文本段按钮将加亮显示的文本段作为搜索文本,单击该按钮,窗口将移动到该段下一个出现的位置。
搜索多个文件按钮在多个文件中搜索指定的文本段打印文件按钮用来打印当前窗口源文件帮助按钮为用户提供上下文相关的帮助2)编辑工具条,把光标放置在某括号前,按此按钮即查找自光标所在处开始的括号,并标记括号对中的文本查找下一个开括号对,标记与之对应的括号对内的文本查找匹配括号按钮查找下一个开括号按钮把选中的文本块左移一个制表站把选中的文本块右移一个制表格设置或取消书签查找下一个书签查找上一个书签编辑书签3)工程项目工具条,编译当前的源文件,生成目标(.obj)文件,对上次 操作以后改变了的文件进行编译,并链接生成输出(.out)文件,重新编译并链接当前工程项目中的所有文件,生成输出(.out)文件,在编辑窗口中的源文件或反汇编指令中设置断点,删除全部断点,设置探测点,删除全部探测点,(4)调试工具条,单步运行,遇到函数或子程序,则进入函数内部或子程序汇编语言调试 单步运行,遇到函数或子程序时全速完成,不进入函数内部或子程序汇编语言调试 单步跳出,从当前子程序的位置全速执行后续子程序,返回到调用该子程序的指令单步运行,遇到函数或子程序,则进入函数内部或子程序C语言调试 单步运行,遇到函数或子程序时全速完成,不进入函数内部或子程序。
C语言调试 程序从上次运行停止处,全速运行到当前光标处从当前PC位置开始执行程序,直到遇到断点后停止暂停正在执行的程序在执行前先设置好各断点,每按一次该按钮,就会从当前程序位置执行到下一个断点处连续按该按钮可以实现动画运行用来显示寄存器观察窗口,观察和修改寄存器用来打开存储器窗口选项,显示存储器观察窗口用来打开调用堆栈观察窗口用来打开反汇编窗口用来打开快速观察窗口,查看和修改变量用来打开观察窗口,监视局部变量和全局变量的值5.2.2 源文件的建立、打开、关闭与编辑,图5.7 工程文件夹,以音频增益处理程序(volume)为例,在CCS环境下讲述源程序文件的建立和编辑,工程文件的建立,工程项目的编译、链接,程序的运行控制、变量观察等CCS的基本使用方法例5-1,建立3个新的文本格式源程序文件,文件内容如下:,(1)C语言源程序volume.c: //----------------------相关头文件------------------------------------// #include volume.h //-----------------------工作变量定义----------------------------------// int inp_bufferBUF_SIZE;// 输入缓冲区 int out_bufferBUF_SIZE;// 输出缓 // BUF_SIZE的定义见volume.h int *input; int *output; int volume = 2; struct PARMS str = 2934, 9432, 213, 9432, ,//-------------------------调用子程序规则--------------------------------// int read_signals(int *input); int write_buffer(int *input,int *output,int count); int output_signals(int *output); //----------------------------主程序------------------------------------// main() int num = BUF_SIZE; int i; // ======初始化====== i=0; input=inp_buffer; output=out_buffer; // ======无限循环====== while ( TRUE ) read_signals(inp_buffer);// 加软件断点和探针 write_buffer(inp_buffer, out_buffer, num); output_signals(output); i++; ,//---------------------------------子程序---------------------------------// // 读取输入信号 int read_signals(int *input) // 在此读取采集数据信号放到输入缓冲区input return(TRUE); // 将数据进行处理后搬移到输出缓冲区 int write_buffer(int *input,int *output,int count) int i; for ( i=0;i