- 前言
- 实验须知
- 概述
- 实验一 TMS320LF2407 DSP 实验开发系统及CC软件应用
- 实验二 常用指令操作实验
- 实验三 追灯式电路控制
- 实验四 按键计数器
- 实验五 键盘和 LED 发光二极管显示电路
- 实验六 模/数转换器 ADC 应用
- 实验七 串行外围接口 SPI 的应用
- 实验八 串行通信接口模块(SCI)
- 实验九 TMS320LF2407 与图形液晶显示模块接口及应用
- 实验十 I2C 串行日历时钟与 TMS320LF2407 的接口应用
- 附录一 DSP 器件仿真开发技术基础
- 附录二 TMS320LF2407 DSP 实验开发系统
- 附录三 TMS320LF2407 DSP 器件简介
- 附录四 XDS510 仿真开发系统的基本操作技术
- 附录五 程序开发平台 Code Composer
- 参考文献
附录五 程序开发平台 Code Composer
由于DSP器件越来越复杂,DSP系统的开发技术也变得越来越接近大型的微处理器系统开发技术。为了提高开发工作效率、缩短应用系统开发周期,TI公司开发研制出了针对TMS320C2000/5000/6000器件的开发平台――Code Composer 即CC。
CC是基于PC机的DSP应用系统开发平台,它提供方便且功能丰富的窗口界面,使开发和调试的效率大大提高,并能与TI公司生产的目标系统实用工具链接使用,直接实现用户目标系统的开发。
CC软件可以集成在Windows9x/ 2K/ NT4.0环境中运行。针对用户特定的目标系统,用创建项目(Prouects)的方法来进行开发和管理,它的基本特性如下:
•可以在Windows9x/ 2K/ NT4.0环境下运行
•分层次的项目管理
••Windows风格的可视化用户界面
•必要时可用Make重新编译、汇编和链接文件
•CC的所有工具都完全集成在一起,以方便使用
•支持直观的拖放功能
•有超文本风格的操作帮助
下面对程序开发平台环境的使用作简略介绍
一.安装程序开发集成环境
为了使CC能够顺利地安装可靠地运行,对于所用的微机系统有一个起码地要求。即安装和运行CC所需的最小计算机配置为:
•CPU为Intel 486或型号更先进的处理器;
•操作系统为Microsoft Windows3.X或Windows95/98;
•显示器为VGA(建议使用SVGA)
•内存容量应不小于8MB(建议32MB)
•可利用的硬盘空间不小于20MB;
•Microsoft兼容鼠标。
集成开发环境的安装过程分两个部分:
•安装Code Composer软件;
•运行Code Composer中的Setup CC’C2000程序,进行环境设置。
1.安装步骤
CC软件为TMS320 C2000 CC光盘(TMDS324012xx),将该光盘插入光驱,Windows将自动执行安装程序。当出现附图5.1所示窗口时,选择“Code Composer”,然后依照安装向导的指引顺序操作,即可完成安装过程。下面将详细描述在Windows 2000操作系统之下,安装CC软件(CC4.10版本)的具体步骤(按光标执行):
第一步:双击附图5.1中的“Code Composer”图标;
附图5.1
第二步:按光标执行;
附图5.2
第三步:
附图5.3
第四步:默认路径为:c:\tic2xx;
第五步:选择附图5.4中的“Full”选项;
附图5.4
第六步:
附图5.5
第七步:
第八步
第九步:如果是正版软件可以选择是(Y),上网注册,否则选择否(N)执行
附图5.6
第十步:
附图5.7
第十一步:先不重启动计算机,选择No执行;
附图5.7
第十二步:
第十三步:点击exit,退出 Code Composer安装;
附图5.8
安装完成后,CC会自动在Windows“开始”按钮的“程序”组中,建立一个“Code Composer’C2000”程序组。至此CC的系统文件已安装完毕。用户可在硬盘驱动器C:\tic2xx\myprojects\目录下,建立一个新的子目录“work”作为工作目录,存放在学习和操练过程中产生的各种文件。
如果日后不打算再使用CC,想清除其占用的硬盘空间,CC自带了卸裁程序C:\,运行它即可将CC全部彻底地自动删除干净。
当完成了安装之后,安装程序会在桌面上建立两个快捷图标“CC’C2000”和“Setup CC’C2000”。“Setup CC’C2000”用来进行仿真运行环境设置,“CC’C2000”为程序调试仿真环境。
2.软件内容
•Debugger Files“包括C Source Debugger的全部文件
•Assembly或Code Generator:包括汇编语言工具或C语言编译工具
•Documents:包括该系统DSP的用户手册、芯片资料及软件说明
•Software:包括该系列DSP的支持软件
•F2xx包括F2xx:芯片内部的编程软件
3.仿真环境设置
当完成了安装之后,要对CC进行必要的仿真运行环境设置,例如建立通信接口,使CC能够与用户目标系统或仿真建立通信联系。具体操作方法参见附录四相关部分。
二.CC’C2000窗口和工具栏
CC’C2000界面允许用户对除编辑窗口以外的其它所有窗口和工具栏进行随意设置。CC’C2000的仿真操作窗口如图5.9所示。
附图5.9
1.移动窗口
在CC’C2000中,可以将窗口或工具栏拖移到新的位置。还可以将窗口或工具栏移动以CC’C2000主窗口以外的地方。拖移的方法很简单,只要用鼠标箭头按住要拖移的窗口或工具栏即可进行拖移
2.语境菜单
CC’C2000的所有窗口中都含有一个语境菜单“context menus”。只要在窗口中右击鼠标按键就可以打开弹出语境菜单。
在语境菜单中提供了一些选项和命令,用这些选项和命令可对窗口进行设置。例如,可以在项目窗口中右击鼠标所显示的项目文件,就可以弹出语境菜单,通过选择相应的设置操作命令就可以完成相应的设置操作(如增加“add”、移动源“remove source”、GEL文件“GEL files”、设置选项“set build options”等)。
3.标准工具栏
在CC’C2000的标准工具栏中,有一些文档操作工具与Windows中的完全相同,如附图5.10 所示,这里不再介绍。以下主要介绍几个特殊的文档操作命令。
附图5.10 标准工具栏编辑栏
(1)查找字符串命令“”和“”
用来查找当前光标所在位置之后程序文档中的字符串,用来查找当前光标所在位置之前程序文档中的字符串。查找的方法如下:
•在工具栏查找域中输入所要查找的字符(附图5.10中的空白区)。注意:查找命令具有记忆功能,历次所查找的字符会保存在查找域中。
•用鼠标点击标准工具栏中的按钮,向后查找时按,向前查找时按。
如果把所查找到的字符串用另一个字符串替换,则可以采用菜单中的“查找/替换”命令。这个命令除了具有查找指定字符串功能之外,还可以在查找的同时完成字符串的替换。具体操作方法如下:
••在文档中把光标放在须要进行查找/替换操作的开始位置。
•选择菜单命令“Fdit > Find/Replac”(编辑 > 查找/替换),这时会弹出一个如附图5.11所示的“Find and Replac”对话框。
••在对话框中输入:
Find:要查找的字符串;
Replace:替换字符串。
•点击“”按钮后光标指向所查找到的字符串,这时如果确认须要替换,就点击“”按钮,可以完成一次替换;如果不希望替换,则继续点击“”按钮,指向下一个查找的字符串;如果点击“”按钮则会自动替换文档中的所有字符串。
附图5.11 查找/替换对话框
(1) 查找指定文档中字符串的工具“”
这个工具可以用来查找所指定文档中的指定字符串,其使用方法与查找字符串的方法相同。
4. “Dis-Assembly Window”(反汇编窗口)的使用
当用户把一个程序装载到目标系统DSP器件中后,CC’C2000会自动打开一个如附图5.12所示的 “Dis-Assembly Window”(反汇编窗口)。
在反汇编窗口中将显示通过反汇编得到的指令和符号信息。这些指令和符号信息是调试过程中所需要的。反汇编窗口中会显示出执行程序指令及其在程序存储器中的地址以及与这些指令有关的操作码(机器码)。
如果用户程序是使用C语言编写的,则可以选择C语言程序和汇编程序混合观察的方式。
(1)打开多个反汇编窗口
通过选择菜单命令“View > Dis-Assembly”(观察 > 反汇编),或者选择调试工具栏中的图标按钮,可以打开多个反汇编窗口。
(2)修改程序起始地址
在实际程序调试时,有时需要修改执行程序的起始地址,这可以在反汇编窗口中完成。修改的方法如下:
•在反汇编窗口中双击程序的地址域,这时会弹出一个如附图5.13所示的“View Address”(反汇编起始地址修改)对话框。
附图5.12 反汇编窗口 附图5.13 反汇编起始地址修改对话框
•在对话框中输入所需要的程序地址。所输入的地址可以是一个绝对数,也可以是一个C语言表达式。
•点击“”。
(3)在反汇编窗口中管理断点、探测点、描述点
在DSP系统调试过程中,经常须要设置断点(breakpoints)、探测点(Probe Point信号观察点)和描述点(profile point判断程序结构等需要的观察点),通过这些特殊的设置可以加快系统的调试和仿真速度,发现系统中硬件和软件存在的问题。
在反汇编窗口中可以完成断点、探测点和描述点的设置或清除工作。具体的方法如下:
•利用调试和结构观察菜单,从调试“Debug”或结构观察器“Profiler”菜单中选择相应的命令就可完成设置。
•利用项目条(project)中相应的按钮完成设置。
•双击要设置断点、探测点、描述点的行,双击后该行会出现背景色,表示设置完成。
(4)设置反汇编窗口风格的选项
CC’C2000提供了几种不同的选项,通过使用这些选项可以在反汇编窗口中设置不同的信息观察方式。反汇编窗口选项对话框允许用户输入特殊的观察选项调试过程,例如可以选择十六进制或十进制观察地址数据。设置反汇编风格选项的方法如下:
•选择菜单命令“Option > Dis-Assembly Style”(选项 > 反汇编风格),或者在反汇编窗口中右击鼠标,弹出语境菜单,选择其中的“Properties-> Dis-Assembly Options…”,如附图5.14所示。
•进入所选择的反汇编窗口风格选项对话框,选择所需要的显示格式,如附图5.15所示。
•点击“”。
上述操作完成后,反汇编窗口会立即变为用户所设置的风格。
(5)观察C源程序与汇编程序的混合代码
在反汇编窗口中,CC’C2000调试器允许对C程序插入汇编程序的反汇编结果。也就是说,可以观察到C程序与汇编程序通过反汇编统一在一起的指令结果。
把程序装载到目标系统或仿真器中后,观察C程序与汇编程序混合反汇编的方法如下:
•选择菜单命令“View > Mixed Source/ ASM”(视图 > )。
•选择菜单命令“Debug > Go Main”(调试 > 移动到Main)。
这之后,调试器开始执行用户程序,并在“main()”处停止执行,同时,C程序的源文件也会显示在编辑窗口中,并会用黄色背景显示出PC(指令计数器)。
此外,用户还可以选择是否用汇编指令显示C源程序。方法是选择菜单命令“View” > Mixed Source/ ASM” (视图 > ),或在编辑窗口中右击鼠标后,在语境对话框中选择“Mixed Mode”或“Source Mode”。
附图5.14 语境设置菜单 附图5.15 语境选择对话框
5.使用存储器窗口
与单片机和微处理器系统开发过程相同,往往要直接观察存储器的内容。例如在应用系统中的显示器控制程序调试中,开发者往往要直接观察到显示字符的转换过程,以便确定程序的正确性。CC’C2000开发环境中的存储器窗口就是为此目的而设置的。
(1)观察存储器内容操作
观察存储器内容的方法如下:
•选择菜单命令“View > Memory”(观察 > 存储器),或者点击调试工具栏中的 图标按钮 。此项操作之后会出现一个如附图5.16所示的“Memory Window Options”(存储器选项)对话框。这个对话框可用来选择存储器窗口中的字符变量。
•在对话框中键入所希望的字符。
•点击“”后,就会出现存储器窗口。
如果须要调整已经激活的存储器窗口,可以通过在存储器窗口中右击鼠标的方法调出语境菜单,然后在菜单中选择相应的命令属性“Properties”,这时会弹出如附图5.16所示的存储器选项对话框,,在对话框中输入相应的字符即可完成调整。
附图5.16 存储器选项对话框
如果要修改存储器中的某些数据,可以在存储器窗口中双击须要修改数据的地址,然后对数据进行修改。也可以选择菜单命令“Edit > Memory-Edit”(编辑 > 存储器)。地址?
(2)设置存储器窗口选项操作
通过存储器窗口选项对话框,可以使存储器窗口具有各种不同的特征。存储器窗口提供了如下的选项:
•Address(地址):输入所要观察的存储器的起始地址。
•Q value(Q值):使用Q值可以显示出整数。这个整数用于表示比二进制数更精确的数值。在二进制数中插入十进制数点,插入点到最低位于二进制数(LSB)的偏移由下式:
•新的整数值=整数/2Q
确定。可以看出,Q值指出了二进制整数十进制数点到最低位二进制数(LSB)之间的距离。
•Format(格式):选择存储器显示的格式
•Use IEEE float(用IEEE浮点):如果要使用IEEE浮点显示数据就选择这个选项。
•Page(页):下接菜单方式选择页的类型,可选择的类型有(程序)、(数据)、。
•Enable Reference Buffer(使能参考缓冲):选择这个检查框的目的,是保存存储器中某个区域的抽点打印数值,以便用于比较。例如,假设选择了“Enable Reference Buffer”,并且给出了地址范围0x0000~0x002F,这个地址区域中授数据就会被保存在主机(开发平台使用的计算机)的存储器中,每次中断目标程序执行到达断点或刷新存储器等,调试器都会对这段数据进行比较;如果数据发生了改变,就会在存储器窗口中用红色显示出改变授数据。
•Start Address(起始地址):输入“Enable Reference Buffer”需要保存数据在存储器中的起始地址。
•End Address(终止地址):输入“Enable Reference Buffer”需要保存数据在存储器中的终止地址。
•Update Reference Buffer Automatically(自动更新参考缓冲):选择这个检查框,可以自动地用当前存储器中的参考缓冲区的内容覆盖现有内容;如果没有选择这个选项,则参考缓冲区的数据不会更新。这个选项只有在选择了“Enable Reference Buffer”之后才有效。
注意:所有输入域都是C表达式输入域,表达式所包含的符号能在存储器选项对话框中区分起始地址。
(3)设置显示格式
在CC’C2000平台中,开发软件支持的存储器内容显示格式如下:
•C-style hex(C风格十六进制数):前缀为0x的十六进制数。
•Hex(十六进制数):十六进制数的TI格式。
•Signed integer(有符号整数):以有符号整数显示数据。
•Unsigned integer(无符号整数):以无符号整数显示数据。
•Character(字符):显示字LSB的等值字符。
•Packed character(打包字符):每个字都显示为8位字符之和。
•Floating point(浮点):用十进制浮点格式显示数值。
•Exponential float(指数浮点):用指数浮点格式显示数值。
•Binary(二进制):数值用二进制格式表示。
(4)C表达式输入域
在CC’C2000平台中,所有的数都必须用C语言格式输入,例如:
0x1000 + 2 * 35
(int) My Function + 0x100
PC + 0x10
(5)表达式中使用的符号
CC’C2000平台根据目标文件中是否含包调试信息确定符号变量是否需要编译,只有目标文件中包含有调试信息时,CC’C2000才能对表达式中的变量进行编译。所谓对表达式中变量的编译,就是在存储器中为该变量提供一个固定地址。例如,在C程序中定义了变量符号op,在编译目标文件时提供了调试信息(-g),则CC’C2000就会把op处理为变量,在存储器中提供一个专用地址;如果编译目标文件时没有加入调试信息,则CC’C2000不会为op提供专用的存储器地址。这就提醒用户注意,如果某个变量比较重要,就应当在编译目标文件时加上相应的调试信息,以便在调试过程中能方便地观察到该变量的数据。
三.项目管理和文件编辑
在CC’C2000开发平台中,由于允许使用C、C++和交叉汇编方式设计用户系统,因此,采用了VC等现代计算机软件系统的集成化管理方法,把用户系统叫做“项目”。这种方法不仅可以方便用户对系统软件和硬件的调试,同时对于比较大的系统也有利于实现集成化开发。这种软件开发方式与小系统软件中的模块化开发方法相类似,但比模块化方法灵活,同时还具有软件的遗传应用特征。
1.项目管理
CC’C2000开发平台对用户系统实行项目管理,使用户系统的编制和调试过程变得简单明了。CC’C2000开发平台中会建立不同独立程序的追踪信息,通过追踪信息对不同的程序进行分类管理,建立起不同的程序库和目标程序。在一个项目中将记录如下内容:
•源代码文件名和目标代码文件库;
•编译器、汇编器和链接选项;
•所包含的独立文件。
启动CC’C2000后,会自动显示出项目管理窗口。如果没有显示项目管理窗口,可以使用菜单命令“View > Project”(观察 > 项目)激活。可以在窗口中通过用鼠标点击文件管理页或书签页底部的选择标记选择不同的页。
使用项目管理窗口可以十分方便地完成程序管理,项目管理窗口如附图5.17所示。在项目管理窗口中会显示出项目完整的内容、项目的组织情况以及与项目关联的程序。所有的项目操作都可以在项目管理窗口中完成。同时,由于在CC’C2000项目管理中提供了相关的操作命令,大大地提高了用户系统的开发速度。例如,在调试一个由5个独立程序组成的用户系统时,如果在一次调试中只修改了其中的一个程序,利用项目管理命令就只须要对新修改的程序进行重新编译,而不须要对所有的程序都进行重新编译。
2.项目管理窗口的功能
项目管理窗口分为两页,一页是文件观察页(File View),另一页是书签页(Bookmark)。
(1)文件观察页
文件观察页中的第一个文件夹是GEL――General Extension Language文件夹。GEL是一种解释性计算机语言,可以用来编写有关集成开发环境IDE和访问目标存储器设置的功能函数。在CC’C2000中,GEL文件用来修改和保存用户所设置的开发环境,例如窗口的位置、自动打开的窗口、工具栏的位置等。
文件观察页中显示的另一个内容是项目所包含的所有文件库和文件。在一个项目中,文件被分成几个不同的库进行管理,如附图5.17所示。
•Include(包含):Include中包含有以.h为扩展名的文件(即C语言文件中的头文件等)。
•Libraries(库):Libraries中存放了所有以.lib为扩展名的库文件。
•Source(源):Source中包含了所有以.C和*.asm为扩展名的源文件。
程序中的链接命令文件(扩展名为.cmd)会直接显示在项目文件下。项目文件是项目的管理文件,以.mak为扩展名。
一旦成功地创建了项目,将在源文件下以树型结构显示它所包含的所有包含文件。双击目标图标或点击靠近源文件的“+”符号,可以扩展树型结构,显示包含文件。 在项目管理窗口中对文件的操作方法如附图5.18所示,具体方法如下:
附图5.17 项目管理窗口 附图5.18 文件操作按钮菜单
•要增加一个项目文件,用鼠标右键点击“Project”,显示出如附图5.19所示的按钮菜单,选择其中的“Open project”,再根据给出的“Project Open”对话框打开所需要的文件。
•要编辑一个文本文件,可用鼠标右键点击“Project”所包含的文本文件,显示出如附图5.20所示的按钮菜单,选择其中的“Open”命令。这时在工作界面中会显示出文件编辑窗口,就可以进行文件编辑操作了。此外,还可以用鼠标直接双击文本文件,即可打开所选文本文件。
•在对不同源文件设置编译选项时,可以在附图5.20中选择“File Specific Options”,这时会弹出如附图5.21所示的编译先项对话框。可以根据需要选择对话框中的参数,最后点击“”退出。
•要编译一个文件,用鼠标右键点击选定的文件,显示出如附图5.20所示的按钮菜单,在其中选择“Compile file”。
•要建立一个完整的项目,用鼠标右键点击选定“Project”的文件,显示出如附图5.22所示的按钮菜单,在其中选择“Build”即可完成。
•要从项目中移走一个文件,用鼠标右键点击选定的文件,显示出如图5.16所示的按钮菜单,在其中选择“Remove from project”。
附图5.19 项目操作按钮菜单 附图5.20 文件操作按钮菜单 附图5.22 项目操作按钮菜单
附图5.21 编译选项对话框
(2)书签页
书签页中显示了文件编辑,以帮助程序管理和调试。书签页的操作可以使用编辑工具。编辑工具栏如附图5.23所示,其中各命令按钮的功能如下:
附图5.23 编辑工具栏
设置括号标志,以便能实现括号匹配。
寻找下一个开始括号(例如,如果找到了,对括号内的文字做标记。如果再次按此命令按钮,可以查找所标记文字中的下一层括号)。
把光标移动到配对的括号中。
把光标移动到下一个单括号中。
左移选定文字块一个制表位。
右移选定文字块一个制表位。
在文件窗口中光标所指当前行上设置或撤销书签,即如果已经有书签则撤销书签,如果没有书签则设置一个书签。
在当前文件窗口中查找下一个书签。
在当前文件窗口中查找上一个书签。
打开书签设置对话框。
3.项目操作
有关项目管理的信息都存放在以.mak为扩展名的项目文件中。在进行用户系统开发时可以通过以下方法建立新的项目管理文件,或打开已存在的项目管理文件。
(1)打开已有项目
要打开一个已经存在的项目,可以选择菜单命令“Project > Open”(项目 > 打开),弹出文件选择的对话框,这时可以选择文件所在的文件夹,而后选择已经存在的项目管理文件。也可以用前面介绍的项目管理窗口打开一个已经存在的项目。
(2)建立新项目
在开发新的应用系统时,须要建立新的用户项目。具体操作方法如下:
•选择菜单命令“Project > New”(项目 > 新建),在弹出的文件选择对话框中选择要保存项目文件的文件夹,输入项目文件名,再用“保存”退出。注意:由于不同项目使用的源文件以及C语言头文件不尽相同,所以最好每个项目选择一个文件夹,以便把不同的项目区分开。
•在项目管理窗口中,可以察看建立的项目以及项目所包含的源文件、目标文件等是否加入到项目管理文件的相应文件夹中。
(3)关闭正在操作的项目
如果须要退出目前正在操作的项目,则只要用鼠标右键点击项目管理窗口中的“Project”,在显示出的按钮菜单中选择“Close”项;也可以选择菜单命令“Project > Close”。
四.CPU寄存器操作
在带有CPU的系统开发调试过程中,总须要对CPU或DSP的内部寄存器进行直接调整(即修改其内容),这样不仅可以对用户程序进行分块调试,也可以对用户的硬件目标系统功能进行分块调试,是提高系统开发速度的一种重要技术。为支持这种技术,在CC’C2000开发平台中,提供了寄存器窗口用于观察目标系统DSP器件的CPU寄存器和外设寄存器,还可以通过编辑寄存器对话窗口对目标系统DSP器件寄存器的内容进行编辑修改。
1.观察寄存器内容
要观察目标系统DSP器件CPU寄存器的内容,可以用以下两种方法之一调出CPU寄存器窗口:
•选择菜单命令“View > CPU Registers > CPU Registers”(观察 > CPU寄存器 > CPU寄存器);
•在调试工具栏中选择 按钮。
在CC’C2000界面中CPU寄存器显示窗口如附图5.24所示。
2.编辑寄存器工作
编辑寄存器时,须要打开编辑寄存器对话框。可以用以下三种方法之一完成编辑寄存器对话框的操作:
•选择菜单命令“Edit > Edit Register”(编辑 > 编辑寄存器),出现编辑寄存器对话框后进行编辑;
•在寄存器窗口中双击寄存器名,出现编辑寄存器对话框后进行编辑;
•在寄存器窗口中右击鼠标,在语境菜单中选择编辑寄存器命令“Edit Register”,出现编辑寄存器对话框后进行编辑。
编辑寄存器对话框如附图5.25所示。编辑寄存器对话框提供如下选项:
附图5.24 寄存器显示窗口 附图5.25 编辑寄存器对话框
•Register(寄存器):输入想要编辑的寄存器名,或者在下拉菜单中选择要编辑的寄存器。
•Value(数值):在编辑寄存器对话框中以十六进制(hex)显示选定寄存器的当前值,可以在此输入新值(格式是带前缀0x的十六进制数),也可以输入C表达式。
调整完寄存器数值后,点击“”,会自动保存新数值。注意:上述功能不能用于目标仿真器中的外设寄存器。
五.装载COFF文件
在现代DSP系统软件编制和调试过程中,有一种十分重要的技术叫做“分段模块”技术。分段模块的概念是:如果程序或数据代码能够在目标存储器中占据一个链接的地址空间,并能被重新放置在新的地址上,这种程序或数据模块就叫做“分段模块”。
由此可见,分段模块实际上是借鉴了微机操作系统编程的模块技术(例如文件)。在现有微处理器地址管理方式下,分段模块技术具有提高执行速度的特殊功效。
在处理分段模块化的程序模块时,要使用COFF文件格式。COFF是一般目标文件格式的英文Common Object File Format的缩写,是一种支持采用分段模块概念程序的二进制文件格式。所有的COFF分段模块都可以相互独立放置在存储器中,用户可以把任何一个分段模块放置在存储器的任何位置上。
1.把COFF文件放置在目标板中的操作
(1)用菜单命令“File > Load Program”(文件 > 装载程序),打开如附图5.26所示的“Load Program”(程序装载)对话框。
附图5.26 程序装载对话框
(2)在对话框“Load Program”中,选择所需要的文件,然后点击“”按钮,这样就可以把所选定的数据和来自COFF文件的符号信息装载进目标系统中。
2.只装载符号信息的操作
如果须装载符号信息,则可以进行如下操作:
•选择菜单命令“File > Load Symbol”(文件 > 装载符号),打开如附图5.27所示的“Load Symbol”(符号装载)对话框。
•在对话框“Load Symbol Info”中,选择所需要的文件,然后点击“”按钮,这样就把来自COFF文件的符号信息装载进目标系统中。
装载符号信息操作一般用在目标系统使用ROM的场合。注意:装载符号信息的操作命令只是清除了已经存在的符号列表,并不修改存储器或设置程序入口。
附图5.27 装载符号对话框
3.重新装载COFF的操作
当须要向目标系统重新装载COFF文件时,可选择菜单命令“File > Reload Program”(文件 > 重新装载)。在进行重新装载时,系统先对已经存在的程序和符号信息进行检查,如果没有发现程序被修改,则只是重新装载程序,不对符号信息进行重新装载;如果发现程序被修改过,则重新装载程序和符号信息,但不重新装载符号列表。
在程序的调试过程中,由于经常会遇到程序被破坏的情况,所以重装载操作会经常使用。
4.设置程序装载选项的操作
选择菜单命令“Options > Program Load”(选项 > 程序装载),可以设置与程序装载有关的一些选项。这些选项是:
•Perform verification after Program Load(程序装载后性能验证):缺省条件下,CC’C2000会检查这个检查框,目的是确认装载的程序正确无误。如果关闭这个选项,则CC’C2000将不再对装载的程序进行正确性检查。使用这个选项可以保证程序能正确装载,但对一些比较大的程序,由于要进行确认检查,所以需要较长的装载时间。
•Load Program After Build(创建后装裁程序):如果检查了这个选项与建立项目有关的可执行程序会被立即装载。这可以保证目标处理品中具有项目创建所形成的最新的符号信息。
六.程序运行操作
在CC’C2000中,提供了多种调试程序的运行操作方法。这些操作方法都以调试工具的方式存放在调试工具栏中。调试工具栏如附图5.28所示。此外还可以使用调试菜单“Debug”中相应的命令控制程序运行。
附图5.28 调试工具栏
1.单步执行操作
在工具栏中提供了相应的按钮,可以实现单步调试操作。
(1) Step Into(单步执行):在调试过程中,可以使用这个按钮完成单步执行操作,即按下这个按钮后,可以完成一条汇编指令的执行。此外,还可以通过选择菜单命令“Debug > Step Into” 完成相同的操作。如果所调试的是C程序代码,则这个命令将执行一条C指令。
(2)Step Over(单条执行):单条执行的意思是每发出一个单条操作命令,能够执行一条或一段程序。例如,对于一般的程序指令,按一次单条执行的结果就执行一条程序指令(如一条汇编指令或C语句)。如果所执行的是一个程序调用语句,则单条执行命令在执行完所调用的子程序后才返回,也就是把所调用的程序作为一条指令完成。这是与单步执行指令的根本区别。单步执行命令在执行程序调用指令时,仍然是执行完一条指令后即停止(进入所调用的程序),而不是把调用指令和调用程序作为一条指令执行。
(3)Step Out(跳出子程序):这条命令用于子程序的执行操作中。在调试过程中,有时会进入某个子程序执行程序。当执行到子程序的一部分时,可能不再关心该子程序其它部分的运行情况,这时就可以使用跳出子程序命令,使其直接返回到调用该子程序的位置上,然后自动执行程序的后续指令,直到返回到调用该子程序的指令。此外,还可以通过选择菜单命令“Debug > Step Out” 完成相同的操作。
(4)Run to Cursor(执行到光标):在调试过程上,执行到光标命令可以提供十分方便的调试程序方法,只要在返回窗口中设置一个光标(点击该指令所在行),就可以从程序执行的当前位置一直执行到反汇编窗口中光标所在位置。
此外,还可以通过设置实现一个操作命令的重复操作,具体的操作方法如下:
•选择菜单命令“Debug > Multiple Operations”(调试 > 操作设置),这时会弹出一个如附图5.29所示的“Multiple Operations”(操作设置)对话框,;
•在下拉菜单中选择所需的操作方法;
•Count(计数):设置相应的操作次数;
•点击“”。
2.程序的实时运行
如果需要一次命令执行多条指令,或让所调试的程序处于完全运行状态(不是一步一步地执行),可以选择调试工具栏中的实时运行命令。
(1)Run(运行程序):这个命令的功能是,从当前程序指针(PC)所指的位置上开始连续执行程序,直到遇到一个断点或到达程序结束为止才能停止运行。这种运行方式可以使程序在更接近实际工作时的情况下运行。除了使用调试工具栏中的命令按钮外,还可以通过选择菜单命令“Debug > Run” 完成相同的操作。
(2)Halt(停止):这个命令用来调整正在执行的程序。也可以通过选择菜单命令“Debug > Halt”完成相同的操作。
(3)Animate(动画):这是一个在断点支持下快速调试程序的命令。在执行该命令前预先设置好程序断点,然后,每按动一下按钮,就会从当前程序位置执行到所遇到的第一个断点。之后,继续按动就会执行到第二个断点所在的程序位置,如此下去直到遇到最后一个断点。执行到最后一个断点时应当注意,如果再次按动画按钮,程序就会因为找不到断点而一直执行下去,能否停止与程序的结构有关。如果程序不能自动停止执行,则须要使用“Debug > Halt”命令终止程序的执行,这是在调试中应当注意的。也可以通过选择菜单命令“Debug > Animate”完成相同的操作。
动画的执行速度可以通过设置选项进行设置。设置的方法是选择菜单命令“Option > Animate Speed”(选项 > 动画设置),这时会弹出一个如附图5.30所示的“Animate Speed Prope…”(动画速度设置)对话框,。
附图5.29 操作设置对话框 附图5.30 动画速度设置对话框
通过对话框中输入或选择相应的数据,最后点击按钮,就可以完成动画速度的设置。
(4)Run Free(自由运行):这是一条全速执行用户程序的操作命令,与运行程序命令不同的是,自由运行命令忽略所有的断点,从当前用户程序指针所指位置开始全速执行用户程序。要执行这个操作命令,只要选择菜单命令“Debug > Run Free”即可。只能使用“Debug > Halt”命令停止程序的自由运行。如果用户使用的是利用JTAG器件链接PC机和开发系统,则在自由运行时PC机与开发系统之间没有通信联络。
七.其它有关的基本操作
1.对目标处理复位
在调试中,有时要对DSP器件进行复位操作。这种操作可以通过CC’C2000实现。在CC’C2000中提供了一些有关目标系统DSP器件的复位命令。
(1)Reset DSP(DSP复位):选择菜单命令“Debug > Reset”(调试 > DSP复位),可以完成对DSP的复位操作,使目标系统DSP器件恢复到上电初始状态,并且终止当前执行的用户程序。如果用户使用的是基于内核驱动的器件,并且目标板对复位命令没有响应,则DSP的内核会被破坏,这就须要再次进行内核装载。
(2)Load Kernel(装载内核):在基于内核的调试系统中,内核的任务是完成开发系统与PC机之间的通信任务。如果用户使用的不是基于JTAG的调试器,而是基于内核的调试系统,则当内核被破坏后器件驱动无法与目标器件之间进行通信,开发系统也就无法正常工作了。这时,就必须利用菜单命令“Debug > Load Kernel”(调试 > 装载内核),再次向开发板装载内核程序以恢复正常的工作通信。
(3)Restart(重新启动):这是一个使CC’C2000程序指针恢复到用户程序入口地址的命令。通过选择菜单命令“Debug > Restart command”(调试 > 重新启动),可以把程序指针PC恢复为用户程序的入口,但并不执行程序。
(4)Go Main(转移到main):这是用于调试C语言用户程序时的命令。通过选择菜单命令“Debug > Go Main”(调试 > 转移到main),CC’C2000把一个临时性的断点设置在用户程序关键字“main”的位置上,并从此开始执行用户程序,一直到遇到一个用户设置的断点或执行“main( )”命令时,才停止用户程序,并且撤销临时断点。如果用户程序的执行停止在“main( )”,则相关的其它源文件会被自动的装载到CC’C2000中。
2.数据复制操作
如果要把存储器中的一块数据复制到另一个存储区域时,可以使用以下操作:
•选择菜单命令“Edit > Memory > Copy”(编辑 > 存储器 > 复制),这时会弹出一个如附图5.31所示的“Setup for Copying”数据复制对话框;
•在对话框中填入源地址和数据长度(要复制的数据块)以及目的地址(要复制的位置);
•用鼠标点击“”,即完成数据复制工作。
3.充填存储区域操作
如果要把某个存储区域全部充填为一个特定的数据,可以做如下操作:
•选择菜单命令“Edit > Memory > Fill”(编辑 > 存储器 > 充填),这时会弹出一个如附图5.32所示的“Setup Filling Memory”充填存储器对话框;
•在对话框中设置要充填的数据区域的首地址和充填长度(字节总数)以及所要充填的数据(二进制数);
•用鼠标点击“”,即完成数据充填工作。
附图5.31 数据复制对话框 附图5.32 充填存储器的对话框
注意:所充填数据的长度是:起始地址+长度(字节数)-1,并且所有的输入域都是C表达式的输入域。
4.编辑变量操作
在目标系统开发过程中,经常需要对相应的变量进行修改,这可以用变量修改操作完成。具体的方法如下:
•选择菜单命令“Edit > Edit Variable”(编辑 > 编辑变量),这时会弹一个如附图5.33所示的“Edit Variable”变量修改对话框;
•在对话框中输入:
Variable:要编辑的变量名称;
Value:新的变量值。
•用鼠标点击“”完成编辑。
附图5.33 变量修改对话框
实际上,如果要对某个变量进行编辑,还可以直接在相应的窗口中完成。必须注意,编辑变量是在C语言的输入域完成的,所以必须是C语言的表达形式。此外,如果目标系统是TI的定点DSP器件,并且进行两分页管理,则在编辑变量时可以利用分页符号“@”。利用分页符号时,在分页符号之后要输入相应的关键字节(分页关键字),例如prog、data或io等,这样就可以准确地去分变量所在页。下面是一个具体的例子:
*0x1000@prog = 0
*0x1000@data = my Var
*0x2000@io = 0
5.刷新窗口
在仿真开发中,所有窗口中的数据都代表目标系统当前的状态;但如果把窗口链接在探测点 Probe Point 上时,则窗口中的数据就可能不是最新的数据(因为其不能随数据的变化而变化)。为了能观察到最新的系统状态,就必须对窗口进行刷新。
刷新窗口的方法很简单,只要选择菜单命令 Windows > Refresh(窗口 > 刷新),即可以完成窗口刷新,这时通过窗口观察到的就是执行刷新命令时目标系统所处的状态。
6.观察调用堆栈
在调试应用程序的过程中往往要确定某一个调用指令是否被执行,例如外部终端发生时,就要调用相应的子程序;再例如,在C语言编写的源程序中,“if…then”语句中可能分别调用不同的函数或子程序。通过观察某个子程序是否被调用过,可以判断出程序的流程是否正确;也可以再次判别某个数据是否出现或某个判断是否正确。为了能够观察到程序执行的流程,CC’C2000提供了一个调用堆栈“Call Stack”窗口。利用堆栈窗口可以详细了解到系统的调用过程。具体的操作方法如下:
•通过选择菜单命令 “View > Call Stack”(观察 > 堆栈),或者使用“”按钮,打开调用堆栈观察窗口;
•在源程序窗口中,双击所关心的调用语句,在调用堆栈窗口中显示出调用的情况列表。
注意:调用堆栈只支持C语言编写的源程序,并且在源程序中须要设置堆栈和主函数,否则系统不会完成调用监视。
7.保存和恢复操作界面
用户在操作中会对CC’C2000的操作界面进行相应的调整,以便把工具栏和窗口放置在自己觉得方便的位置上。当结束一次开发工作时,总希望能把当前的界面结构(工作界面)保存下来,以便下一次操作时继续使用,这时就要保存操作界面。同样,在使用中有时也须要恢复为原有的操作界面,这时就要恢复界面。
(1)操作界面的有关信息保存在以“.wks”为扩展名的文件中,文件中记录了如下内容:
•父窗口(包括尺寸和位置)。
•子窗口(包括尺寸和位置)。
•断点(breakpoints)、探测点(probe points)和描述点(profile points)。
•描述选项(profile points)。
•当前项目。
•当前装载的GEL功能。
•存储结构。
•动画速度选项。
•文件I/O的设置。
(2)以下内容不会被记录在操作界面文件中,也就是在下次调用该界面时不会被恢复。
•当前字体。
•当前色彩选择。
•目标存储器、程序和处理器的状态。
•编辑和查找/替换工具中的内容。
•“build”窗口中的错误和进程信息。
•GEL输出窗口。
•扫描过程中的临时性从属窗口。
•反汇编格式选项。
(3)在使用CC’C2000中,可以通过如下操作保存或恢复操作界面。
①保存操作界面操作:
•选择菜单命令“File > Workspace > Save Workspace”(文件 > 操作界面 > 保存操作界面),这时会弹一个如附图5.34所示的“Save Workspace”保存操作界面对话框;
•在对话框中输入一个文件名作为所保存工作界面的文件名;
•用鼠标点击“”。
一般情况下,在退出CC’C2000时,系统会自动地把当前操作界面保存在“default.wks”文件中。
②载入操作界面操作:
•选择菜单命令“File > Workspace > Load Workspace”(文件 > 操作界面 > 载入操作界面),这时会弹一个如附图5.35所示的“Load Workspace”载入操作界面对话框;
•在对话框中输入要装载的工作界面的文件名;
•用鼠标点击“”。
附图5.34 保存操作界面对话框
附图5.35 载入操作界面对话框
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论