1、1第二部分 单元实验实验一:Code Composer Studio 软件入门实验预习要求说明:1阅读课本第 6 章 CCS 集成开发环境和实验指导书 Code Composer Studio 2.0 的使用。2阅读本实验指导,了解实验目的、设备、原理及过程。了解观察或理解记录的重点。3预做好课堂作业,写好预习报告。一实验目的1了解 Code Composer Studio 2.0 的安装。2掌握 Code Composer Studio 2.0 的硬件仿真(Emulator)配置。3了解 Code Composer Studio 2.0 的操作环境和基本功能。4巩固汇编指令 LD、ST、ST
2、L、STH、STM、RSBX、SSBX、ADD 等用法。5巩固堆栈的定义、使用方法及堆栈。有关操作指令(PSHM、POPM、PSHD 、POPD)等。6巩固立即数寻址、直接寻址、堆栈寻址等寻址方式。二实验设备1装有 CCS2.0 的计算机一台。2ICETEK-VC5416-USB-EDU 实验箱一台(Emulator 硬件仿真)。3USB 连接电缆一条。三实验原理1DSP 实验开发系统的组成2C54 系列 DSP 实验开发系统由 3 部分组成,装有 Code Composer Studio 2.0软件(简称 CCS2.0)的计算机和 ICETEK-VC5416-USB-EDU 实验箱(简称 D
3、SP实验箱),两者用一根 USB 接口线进行通信,注意接口线是单方向的,系统组成如图 2-1-1 所示。图 2-1-1 DSP 实验开发系统的组成2C54 系列 DSP 实验箱组成本实验箱共 4 部分组成,分别为 DSP 板、仿真器、控制模块及信号源。图 2-1-2 DSP 实验箱的组成(1)DSP 板,也称评估模块,型号为 ICETEK VC5416-A。它提供软件运行和调试的平台和用户系统开发的参照。主要有 TMS320VC5416PGE160 DSP 芯片、ADS7864 A/D 模数转换芯片、DAC7625 数模转换芯片、flash 存储器等。(2)仿真器,也称开发系统,型号为 ICE
4、TEK 5100 USB。它实现硬件仿真调试时与硬件系统的通信,控制和读取硬件系统的状态和数据。USB 接口线3(3)控制板,型号为 ICETEK-CTR。它提供标准的 PSII 键盘输入、发光二极管阵列显示(88 点,共阳极)、液晶显示(12864 点)。还有蜂鸣器、步进电机和直流电机等外设。(4)双信号源,两个完全相同,提供正弦波、三角波和方波,频率10100KHz 可调、幅度 03.3V 可调,主要是为了方便实验。3Code Composer Studio 2.0 的组成Code Composer Studio 2.0 简称 CCS 2.0 或 CCS,有 2 部分组成(1)集成开发环境
5、软件“ccs2 (c5000) ”,主要完成系统的软件开发和调试。它提供一整套的程序编制、维护、编译、调试环境,能将汇编语言和 C 语言程序编译连接生成 COFF (公共目标文件)格式的可执行文件,并能将程序下载到 DSP板(评估模块)上运行调试。(2)仿真环境设置软件“setup ccs2 (c5000)”,主要功能是设置 CCS 的仿真方式,或硬件仿真(Emulator)或软件仿真(Simulator)。图 2-1-3 CCS 2.0 软件的两个图标4用户软件部分的组成用户软件部分可以由 CCS 2.0 建立工程文件(后缀为*.pjt)进行管理,工程文件一般包含以下几种文件:(1)源(程序
6、) 文件:C 语言或汇编语言文件(后缀为*.C 或*.ASM),源文件实现用户的功能。(2)头文件(后缀为*.H) :定义一些常数,符号等。(3)命令文件(后缀为*.CMD):定义存储器的名称和分配可执行代码的存储空间。(4)库文件(后缀为*.LIB,*.OBJ):开发系统自带的一些文件。其中源文件和命令文件对一个用户系统而言是必不可少的,或者说一个 DSP4系统至少需要这两种文件。四源程序分析本实验由一个源文件和一个命令文件组成,作为第一个 DSP 实验,主要是熟悉 DSP 开发系统,程序内容较简单,完成一个无符号的整数加法运算,但基本具有汇编程序的基本形式。1程序思路(1)定义全局标号和映
7、射寄存器。(2)定义数据段和未初始化变量段。(3)定义未初始化段(堆栈段)。(4)主程序(可执行代码段)。 初始化堆栈指针和压栈保护有关变量。 初始化数据页指针和设置 DSP 有关运算状态。 完成加法运算。 恢复初始状态,以便重复观察执行。(5)汇编文件结束。2UseCC.asm 源文件;本程序完成一个简单的无符号加法运算 zxy;本程序添加了多次运行,恢复初始状态功能,以便重复观察;伪指令“.mmregs“定义全局标号.global start ; 这里 start 是指汇编程序入口地址;伪指令“.mmregs“定义映射寄存器,这样程序中的累加器 A 等映射寄存器就不必一一定义.mmregs
8、 ; 定义映射寄存器;伪指令“.data“ 定义数据段,只能分配在程序存储器中存储5.data ; 本程序数据段没有内容;伪指令“.bss“定义未初始化变量,并分配存储单元数,只能分配在数据存储器中存储.bss x,1 ; 在数据存储器里的未初始化段(.bss)定义全局变量 x,1 个存储单元.bss y,1 ; 同上类似.bss z,1;定义堆栈段,;伪指令“.usect“定义一个未初始化段;首地址为 stack,结束地址 (高地址)为 stack+stacksize,大小为 10 个单元;因为在程序中,用 stack+stacksize 初始化 SP(堆栈指针);凡是有函数调用、局部变量参
9、数传递、寄存器保护等,均需定义堆栈stacksize .set 10stack .usect “.mystack“,stacksizeTOS .usect “.mystack“,1;栈顶(Top of Stack)标志,方便观察;伪指令“.text“定义可执行代码段.text;start 为可执行代码入口标号(地址) ,编译后根据命令文件分配一个具体的地址start:;堆栈指针初始化,指向栈顶(TOS,Top of Stack, 高地址)STM #stack+stacksize,SP6PSHM ST0 ;压栈保护 ST0,此处保护 DP,为程序循环作准备PSHM ST1 ;压栈保护 ST1,此
10、处保护 SXM 和 FRCT,为程序循环作准备add_start:LD #x,DP ; 因下面诸变量使用直接寻址,装载 DP 值(x 高 9 位的地址),;基于 DP 的直接寻址一般用于变量存储单元在一页(128个存储单元)的情况。RSBX SXM ;设置 DSP 为无符号数运算RSBX FRCT ;设置 DSP 为整数乘法运算,如果没有乘法,可省去ST #1,x ; 变量赋初值,x=1ST #2,y ; y=2LD x,A ; 将 x 的值装载至累加器ADD y,A ; 累加器加上 y 的值STL A,z ; 将累加器结果( 32 位)的低 16 位存放到变量 zadd_end;恢复初始状态
11、,以便重复观察执行,一般程序不需要这些代码renew_start:ST #0,xST #0,yST #0,zPOPM ST1 ; 出栈与压栈顺序相反7POPM ST0b start ; 循环至开始处.end ; 伪指令“.end“表示汇编文件结束3UseCC.cmd 命令文件/*命令文件定义存储器的模型和分配各个程序段的存储空间 */*伪指令“MEMORY“定义存储器的模型或可用的存储器和起始地址*/MEMORY/*PAGE 0 表示程序存储器,PRAM 为存储器命名,字母 o 表示起始地址,字母 l 表示存储器长度*/PAGE 0:PRAM : o=100h,l=1f00h/*PAGE 1
12、表示数据存储器,DRAM 为存储器命名,字母 o 表示起始地址,字母 l 表示存储器长度*/PAGE 1: DRAM : o=2000h,l=1000h /*伪指令“SECTIONS“定义分配各个程序段的存储空间*/SECTIONS/*text 段存储在程序存储器 PAGE 0 的 PRAM 存储器里 ,其它依次类推*/.text : PRAM PAGE 0.data : PRAM PAGE 0.bss : DRAM PAGE 1.mystack : DRAM PAGE 18五实验步骤1实验准备和 CCS 软件、实验程序的安装(1)连接并开启实验设备关闭 ICETEK-VC5416-A 实验箱
13、的各电源开关;连接实验箱提供的 220V电源线,保证接地良好。将提供的 USB 电缆的扁平端连接到计算机的 USB 接口上,另一端插入仿真器左侧插孔,注意接口是单方向的。接通计算机电源,进入 Windows 操作系统。打开实验箱电源开关,实验箱上的电源指示灯亮,ICETEK-VC5416-A 系统板上电源指示灯 D1、D2 亮。如果不亮,检查有关电源是否打开或电源先接触不好。(2)安装 Code Composer Studio 2.0(实验室已安装)安装说明如下:安装 CCS 2.0 软件和一般软件的软件安装没有明显区别,但有几点需要注意。您的电脑应该是无毒的,在安装过程中也需要关闭防病毒软件
14、,如果打开了防病毒软件,安装开始时会提醒您关闭。如果您的系统有毒或不关闭防病毒软件,那您的安装可能得不到正确的安装结果。正确的安装结果是在桌面上出现图2-1-3 所示的 “Setup CCS 2 (C5000)”和“CCS 2 (C5000)”两个图标。前者用于完成输入代码,调试、下载代码到 DSP 芯片中等功能,后者用于设置 CCS 的软件仿真环境。建议先用 winrar 软件把 ccs5000.exe 解压缩到硬盘中再点击 setup.exe 来安装。否则在某些版本的操作系统中可能得不到正确的安装结果。安装步骤如下:将实验箱附带的教学光盘(请向任课老师索取电子版)插入计算机光盘驱9动器,也
15、可先将光盘内容复制到硬盘安装。选择教学光盘的 F:CCS 开发软件ccs5000.exe 文件,建议先用 winrar 软件把 ccs5000.exe 解压缩到硬盘中再点击 setup.exe 来安装,一般按提示操作即可。安装完毕,桌面上出现两个新的图标“Setup CCS 2(C5000)”、“CCS 2(C5000)”。建议再安装C5000-2.20.00-FULL-to-C5000-2.21.00-FULL.exe软件,把开发软件的版本升级到2.21。安装方法与安装CCS c5000(2.0)类似。(3)安装 DSP 开发系统驱动程序( 实验室已安装)如果作硬件仿真,则需要仿真器和 DS
16、P 板(即需要 DSP 实验箱),这时需要安装 DSP 仿真器(亦称开发系统)的驱动程序。本仿真器选用 ICETEK-5100USB 型仿真器,USB 接口,V2.0 版本。安装 USB 型仿真器的驱动程序如下:连接计算机上 USB 接口电缆的方形接口(注意接口方向)一端到仿真器上相应接口;仿真器上红色电源灯亮,表示 USB 接口连通;计算机提示发现新的设备。指定驱动程序的路径到教学光盘的“开发系统驱动usbUSBdrv54x”,双击它即可完成安装,(这一步不必解压缩,而且安装很快,转眼即完成)。观察仿真器上绿色指示灯亮,表示驱动程序开始工作。注:有关安装的详细情况请参考教学光盘的使用说明书
17、ICETEK-5100pp(usb)通用开发系统使用说明书中的“ICETEK-5100USB1.1/2.0 系列通用开发系统使用说明”一节内容。(4)安装实验程序(实验室已安装,但要检查只读属性)在 DSP 实验室的计算机中,装有电子学院修改扩充后的 DSP 教学代码,并将其文件夹命名为 DSP_EI,已安装复制 C:下,本实验指导书所用程序均指该文件夹“DSP_EI ”。若使用厂家光盘自带的软件测试程序,可将光盘中“软件测试程序”目录中的“ICETEK-VC5416-EDULab”子目录复制到 C:上,并将目录10中所有文件(包含子目录中的文件)的只读属性去除。去除的时候注意选择“将更改应用
18、与该文件夹、子文件夹和文件”选项。如果没有去除,则修改后的文件内容不能保存。注:DSP 实验室的计算机均装有还原卡,同学们自编的程序请及时拷出,否则计算机关闭电源后会丢失,同样每次实验也要检查实验程序的只读属性等设置。2设置 Code Composer Studio 2.0 在硬件仿真(Emulator)方式下运行(1)启动“Code Composer Studio Setup”,即双击桌面上“Setup CCS 2 (C5000)”。(2)清除原先的系统设置。在“Import Configuration”对话框中单击“Clear”按钮,在接下来的对话框中选择“是”,清除原先的系统设置。观察窗
19、口“Code Composer Studio Setup”中左侧的“System Configuration”栏,会发现其中的“My System ”项被清空。(3)选择您需要的系统设置。在“Available Configurations”列表中,单击选择“ICETEK USB Emulator for C54xx”驱动(倒数第二个输入配置,如图2-1-4 所示),并单击 “Import”按钮;观察窗口“ Code Composer Studio Setup”中左侧的“System Configuration”栏中“My System”项中被加入“C54x XDS”项,然后单击“Close”
20、按钮,退出“Import Configuration”对话框。(4)修改硬件仿真属性。用鼠标右键单击窗口“Code Composer Studio Setup”中左侧“System Configuration”栏中“My System”项中的“C54x XDS”项,选择“Properties” 。单击“Startup GEL File(s)”卡片, 单击“Startup GEL Files ”中“CPU_1 ”项末尾的浏览按钮(即 ),选择 C:DSP_EI 目录中的VC5416A.gel 文件(文件夹中的最后一个文件),单击“打开”;单击“Finish”。11图 2-1-4 硬件仿真的输入配
21、置图 2-1-5 修改硬件仿真属性(5)退出硬件仿真设置,打开 Code Composer Studio 软件。选择“Code Composer Studio Setup”窗口“File”采单中“Exit”项退出(或标题栏的关闭按钮),并在接下来显示的对话框中选择“是”,保存设置。在接下来的对话框中询问“在退出时,是否开始集成开发环境(Start Code Composer Studio on exit)”,选择“否”退出 CCS 仿真环境设置,需手动打开“CCS 2(C5000) ”。选择“是”,则自动启动 Code Composer Studio 2.0 集成环境。但要注意在硬件仿真下启动
22、CCS 要先打开实验箱中的所有电源开关,以便 CCS 软件检测出实验箱,如果成功检测出实验箱。就会启动 Code Composer Studio 2.0,可以看到显示出的 C54X Code Composer Studio 窗口。如图 2-1-7 所示。12注意:如果没有打开相关电源,则实验箱不能被 CCS 软件检测出来,出现如图 2-1-8 所示的提示。这时,重新打开电源并按下“Retry”按钮(重试按钮),启动 CCS 2.0 开发环境。如果打开电源后,仍然没有启动 CCS 2.0 开发环境,则关闭电源、打开电源、按下“Retry”这三步反复操作,直到启动 CCS 为止。如果一直不能启动
23、CCS,则可能是 CCS 开发软件安装或实验箱不正常,可能是USB 接口或接口线接触不好或断线,也可能实验箱有问题需检修。图 2-1-6 CCS 在硬件仿真(Emulator) 下的界面注意:标题为“C54xx XDS510 Emulator”13图 2-1-7 未检测出实验箱的界面3设置 CCS 2.0 在软件仿真(Simulator) 方式下运行(本次实验跳过)若只需调试算法代码,可以做软件仿真(Simulator),这时只需装有 CCS 软机的计算机一台。步骤是:(1)启动 CCS 驱动设置窗口:双击桌面上“Setup CCS 2(C5000)”图标。(2)清除原先驱动设置:在“Impo
24、rt Configuration”对话框中单击“Clear”按钮,在接下来的对话框中选择“是”,可观察到窗口“Code Composer Studio Setup”中左侧“System Configuration”栏中“My System”项被清空。(3)安装软件仿真驱动(Simulator):在“Available Configurations”列表中,单击“C5416 Device Simulator”驱动,单击 “Import”按钮。可观察到窗口“Code Composer Studio Setup”中左侧“System Configuration”栏中“My System”项中被加入“
25、C5416 Device Simulator”项。图 2-1-7 软件仿真的输入配置(4)完成设置并启动 CCS:单击“Close”按钮,退出“Import Configuration”对话框。选择“Code Composer Studio Setup”窗口的关闭按钮或14“File”菜单中“Exit”项退出,并在接下来显示的对话框中选择 “是”,保存设置;再选择“是”,自动启动 CCS。若选择“否”,则不启动 CCS,需手动启动 CCS。手动启动 CCS 的方法是在桌面上双击图标“CCS 2(C5000)”即可,启动 CCS 后的界面如图 2-1-8 所示。注意界面标题上有“C5416 De
26、vice Simulator”字样。图 2-1-8 CCS 在软件仿真(Simulator)下的界面4创建工程项目(1)创建新的工程文件(后缀为*.pjt)选择菜单“Project ”的“ New”项;在“Project Creation”对话框中,在“Project”项输入项目名称“Lab01_UseCC ”;单击 “Location ”项末尾的浏览按钮,选择保存项目的位置,为方便实验,这里统一改变目录到C:DSP_EILab01-UseCC,单击“OK”;单击“完成”;这时建立的是一个空的工程文件;展开主窗口左侧工程管理窗口中“Projects”下新建立的“Lab01_UseCC.pjt”
27、项目,其中各项均为空。在硬件仿真下,方法相同,只是界面标题显示为“C54xx XDS510 Emulator”,以后不再重复说明。15图 2-1-9 新建的 Lab01_UseCC.pjt”项目(2)新建源文件:选择菜单“File”“New” “Source File”(或按下 Ctrl+N),打开输入源程序界面,一般先保存在项目所在的文件夹下,本次实验的文件均保存在C:DSP_EI Lab01-UseCC 文件夹中。第一个源程序为汇编源程序,选择文件名称为 UseCC,选择文件后缀为.asm,如图 2-1-9 所示。用上式方法新建本实验的第二个源文件(命令文件),选择文件名称为 UseCC,
28、选择文件后缀为.cmd ,同样保存在 C:DSP_EILab01-UseCC 文件夹中。为节约实验时间,请将 Lab01-UseCC 文件夹下的“ UseCC0.asm 和UseCC0.cmd”文件的代码复制到相应的文件中,这些文件可用 “操作系统附件的写字板”直接打开。(3)在工程文件中添加程序文件:选择菜单“Project ”的“ Add Files to Project”项;在“Add Files to Project”对话框中选择文件目录为 C:DSP_EILab01-UseCC,改变文件类型为“Assembly Source Files(*.asm)”,双击显示出来的文件“UseCC
29、.asm”,(或分两步操作,先选择后打开也可);重复上述各步骤(从选择菜单“Project”开始)16,添加 UseCC.cmd 命令文件到 Lab01-UseCC 工程中;添加文件后的工程项目目录树如图 2-1-11 所示。图 2-1-10 用 CCS 新建汇编源程序17图 2-1-11 添加源程序后的工程项目(4)设置编译链接选项(Build Options):由于 CCS 默认支持 C 语言程序,对纯汇编文件构成的工程项目,需要修改编译连接选项(Build Options)。方法是: 打开设置窗口:选择菜单“Project”的“Build Options”项。 选择链接设置:单击“Lin
30、ker”属性页。 修改汇编语言程序的特殊设置:-“Autoinit Model”项设置成“No Autoinitialization”(非自动初始化模式);-“Code Entry Point”项中输入“start”。start 是汇编主程序执行的入口地址,注意 start 一定要与源程序定义的入口地址保持一致。点击左侧的“”号可查看工程文件18图 2-1-12 修改汇编语言程序的特殊设置(5)编译连接工程:选择菜单“Project ”的“ Rebuild All”项(快捷图标为 ) ;注意编译过程中CCS 主窗口下部的“Build”提示窗中显示编译信息,最后将给出错误和警告的统计数。5编辑修
31、改工程中的文件(1)查看工程文件展开 CCS 主窗口左侧工程管理窗中的工程各分支,可以看到“Lab01-UseCC.pjt”工程中包含“UseCC.asm”和“UseCC.cmd”文件。(2)查看源文件双击工程管理窗中的“UseCC.asm”文件,可以查看程序内容。双击工程管理窗中的 “UseCC.cmd”文件,它定义了本项目所使用的存储器和分配代码段的存储空间。(3)编辑修改源文件人为地加入一个错误,学习查找程序语法错误。打开“UseCC.asm”,找到19start 后面的语句“RSBX SXM ;设置 DSP 为无符号整数运算 ”,将 RSBX中的 X 去掉,这样程序中就出现了一个语法错
32、误;重新编译连接工程(快捷图标为 ) ,可以发现编译信息窗口出现发现错误的提示(Invalid mnemonic specification,无效的汇编指令)。图 2-1-13 CCS 的编译信息窗口双击红色错误提示,CCS 自动转到程序中出错的地方;将语句修改正确(补上大写 X);重新编译。注意,重新编译时修改过的文件能够被 CCS 自动保存。6单步执行及变量观察窗口(1)装载本程序的可执行文件 Lab01-UseCC.out 到 DSP 芯片(在软件仿真下是模拟的)。方法是:执行 FileLoad Program,在随后打开的对话框中选择刚刚建立的 C:DSP_EILab01-UseCCD
33、ebugLab01-UseCC.out 文件。这是 CCS软件按照命令文件的存储器分配方案加载程序到 DSP 芯片中,并将程序入口地址 start 初始化程序计数器(PC,Program Counter),如图 2-1-14 所示,图中黄色箭头表示 DSP 的下一个时钟周期执行该行代码。图 2-1-14 加载程序后的编辑窗口观察 CPU 有关寄存器:单击菜单“View”“Registers”“CPU Registers”,或快捷图标 ,可观察到 CPU 有关寄存器的内容,如图 2-1-15 所示。若选择 “Registers”下的“Peripheral Regs”则可观察到片上外围寄存器的20
34、内容。图 2-1-14 VC5416 DSP 的 CPU 初始状态记录并分析 ST0、ST1、PMST、PC、DP、SP 等寄存器的内容及含义。其中ST0、ST1、PMST 内容较多,如图 2-1-15 所示,记录并分析其中每个寄存器的内容及含义,重点记忆 DP IPTR、OVM、SXM、FRCT、 、OVLY、DROM 含义。MP/C图 2-1-15 ST0、ST1 、PMST 中的寄存器(2)单步执行(Step Over),并观察 SP 和堆栈段的变化每按 F10(单步执行)一次,CCS 执行一行代码。但不到函数内部去单步执行。现按一次执行“STM #stack+stacksize,SP”
35、,观察堆栈指针 SP 的变化及其表示的含义,注意堆栈的ST0:ST1:PMST:21最高地址单元不用,以免与其它数据段发生冲突。为了观察堆栈中的变化,请选择“View”菜单中“Memory”项,在“Memory Window Options”窗口中的“Adress ”项中输入 stack(堆栈段首地址,也称栈底 BOS(Bottom of Stack),单击“OK”完成设置;在随后显示的“Memory”窗口中单击鼠标右键,选择 “Float In Main Window”项,若再选择“Allow Docking”(即去掉“允许停靠”),则可用左键按住窗口名称处,将窗口停靠在开发界面的任何地方。
36、(3)单步执行下面 2 行代码,观察堆栈的变化并记录。PSHM ST0PSHM ST1(4)单步执行下面 3 行代码,观察 CPU 寄存器 DP、SXM、FRCT 的变化并记录。LD #x, DPRSBX SXM RSBX FRCT(5)单步执行下面 5 行代码,观察内存变量 x、y、z 及累加器 A 的变化并记录。为了观察内存变量的变化,方式与观察堆栈段相似,只是 “Adress”项中输入 x 即可。具体操作如下:请选择“View”菜单中“Memory”项,在“Memory Window Options”窗口中的“Adress ”项中输入 x,单击“OK”完成设置;在随后显示的“Memory
37、”窗口中单击鼠标右键,选择“Float In Main Window”项 ,若再选择“Allow Docking”(即去掉“允许停靠”),则可用左键按住窗口名称处,将窗口停靠在开发界面的任何地方。ST #1,xST #2,yLD x,A图 2-1-16 本程序的堆栈段22ADD y,ASTL A,z(6)单步执行下面 5 行代码,观察内存变量 x、y、z 及出栈时堆栈段的变化并记录。ST #0,xST #0,yST #0,zPOPM ST1 ; 出栈与压栈顺序相反POPM ST0上面 5 行代码恢复 DSP 与本程序有关的初始状态,如果没有观察清楚,可以重复执行多次。理解清楚后,去掉所有的注释
38、文字,再执行一次,看看自己是否真的理解清楚了。7基本调试功能及观察窗口上面第 5 步采用一种较繁琐的一种调试方法,调试方法还有多种,掌握基本的调试功能及其快捷方式有利于加速程序调试的进度。(1)设置断点和运行到断点处(Run)。例如,假设程序在“LD x,A”所在行以前正常,但其后可能不正常,可以把光标移动到“LD x,A”所在行上,右击鼠标选择 Toggle Breakpoint(快捷方式:双击所在行左侧的灰色条,快捷图标: ;快捷键:F9 )设置断点。然后选择 DebugRun (直接运行到断点处,快捷图标: ;快捷键:F5)运行程序,程序会自动停在“LD x,A”所在行上,再单步执行。实
39、践操作一次。(2)到到函数内部执行的单步执行(Step Into)。如果程序有子函数,可按F8(到函数内部执行的单步执行),本程序没有汇编子程序,也没有 C 语言子程序,这种情况下,F8 与 F10 没有区别。shift-F7 (从函数内部跳出),与 F8 配合使用。23(3)动画执行(Animate),调试程序时,若遇到断点,只是暂停一下,然后继续执行。快捷键:F12,快捷图标: 。实践操作一次。注意: 若在执行 C 语言的程序时,为了快速的运行到主函数调试自己的代码,可以使用 DebugGo main 命令(运行到主函数处),上述实验中的使用的是较为繁琐的一种方法。其它调试方式,参看菜单“
40、Debug”。8归纳实验结果(请同学们根据实验步骤归纳) 。六课堂编程作业(1)请修改程序完成无符号数0xf000+0xe000的计算,并正确保存结果。提示:上式和超过16位结果,需要32位保存,可用STH、STL分别保存高16位和低16位,也可用汇编指令DST则保存32位,CCS软件默认偶地址排列法保存32位数据,即变量的首地址为偶地址,存放高16位,下一个单元(奇地址)存放低16位。实现时是用首地址的最低位取反(01)得到这个地址。奇地址排列法则相反,注意变量的首地址是否为偶地址。例如本程序z的存储单元定义为0x20020x2003,可正确存储到指定单元中,若z的存储单元定义为0x2003
41、0x2004,则实际存储到0x20030x2002中。(2)请修改程序完成有符号数0xf000+0xe000的计算,并正确保存结果。24实验二:数据混合和图形显示实验预习要求说明:1阅读课本第 5 章 TMS320C54X 软件开发和实验指导书 VC5416 DSP 实验箱的使用。2阅读本实验指导,了解实验目的、设备、原理及过程。了解观察或理解记录的重点。3预做好课堂作业,写好预习报告。一实验目的1理解链接命令文件(后缀 CMD)和映射文件(后缀 MAP)的用法。2掌握 Code Composer Studio 2.0 的图形显示功能。3巩固数据复制指令 MVPD 等,程序控制指令等 RPT、
42、RPTB 、B 等汇编指令用法。4巩固伪指令.global、.mmregs、.data 、.word、.set.、bss、.usect、.end 等用法。5巩固绝对寻址、间接寻址、映射寄存器寻址等寻址方式。二实验设备1装有 CCS2.0 的计算机一台。2ICETEK-VC5416-USB-EDU 实验箱一台(Emulator 硬件仿真)。3USB 连接电缆一条。三实验原理1VC5416 的存储器资源及配置(1)片内总线及功能C54x DSP 片内有 8 条 16 位总线:1 条程序总线,3 条数据总线和 4 条地址总线,功能如下:25 程序总线(PB)传送取自程序存储器的指令代码和立即操作数。
43、 3 条数据总线( CB、DB、EB)将内部各单元连接在一起,其中 CB 和DB 为读操作数总线,EB 为写总线。因此,DSP 在片内可同时读 2 个 16 位的数据或一个 32 位的数据。 4 个地址总线(PAB、CAB 、DAB、EAB)传送执行指令所需的地址。在程序空间没有扩展的情况下,C54x 的总存储空间为 192K 字,分成 3 个可独立的空间:程序存储空间(64K 字) ,据存储空间( 64K 字) ,输入/ 输出(I/O)空间(64K 字) 。在程序空间在片外扩展时,地址总线可扩展时为 23 位,可访问 8M 字的程序空间。存储器的配置受 PMST 中 3 个比特位 OVLY、
44、 、DROM 控制。由于MP/CC54x DSP 不同的型号,内部存储器的资源有所不同,下面以 VC5416 芯片作存储器的配置介绍。(2)PMST 的比特位 OVLY 控制程序存储器地址在 0x00807FFF 之间的映射。如表 2-2-1 所示。表 2-2-1 程序存储器地址在 0x00807FFF 之间的映射程序存储器地址范围OVLY1 OVLY 00x0000007F 保留0x00807FFF 片内DARAM0-3片外扩展程序存储器(3)PMST 的比特位 控制程序存储器地址在 0x8000FFFF 之间的映MP/C射。如表 2-2-2 所示。表 2-2-2 程序存储器地址在 0x80
45、00 FFFF 之间的映射程序存储器地址 P/1MP/C026范围0x8000BFFF 片外扩展程序存储器0xC000FEFF 片内 ROM(4K 字)0xFF00F7FF片外扩展程序存储器保留(用户不能使用)0xFF80FFFF 片外中断向量表片内中断向量表附:片内 ROM 的内容,如表 2-2-3 所示。表 2-2-3 程序存储器片内 ROM 的内容程序存储器地址范围MP/C00xC000D4FF GSM EFR 语音编解码 ROM 表0xD500F7FF 保留0xF800FBFF 外部程序装载引导程序0xFC00FCFF 率扩展表0xFD00FDFF A 率扩展表0xFE00FEFF 正
46、弦表(4)程序存储器的扩展程序存储器可扩展到 8M 字的存储空间,此时,程序地址总线为 23 位,程序计数器 PC 保存低 16 位的地址,扩展程序计数器 XPC 保存高 7 位的地址。在扩展情况下,凡是高 7 位相同的程序存储单元看作在同一页。因此,在扩展情况下,程序存储器一页为 64K 字,共 128 页。在扩展情况下,低 16 位地址在 0x00807FFF 之间的映射与表 2-2-1 相同,27即 OVLY=1 时,片上 DARAM0-3 映射到程序存储器的每一页,这对访问公共数据是很方便的。低 16 位地址在 0x8000FFFF 之间的映射如表 2-2-4 所示。表 2-2-4 程
47、序存储器扩展时低地址在 0x8000FFFF 之间的映射程序存储器地址范围 MP/C1MP/C00x180001FFFF 片内 DARAM4-70x280002FFFF 片内 SARAM0-30x380003FFFF 片内 SARAM4-70xm8000mFFFF (m=4,5,127)片外扩展程序存储器片外扩展程序存储器(5)PMST 的比特位 DROM 控制地址在 0x8000FFFF 之间的映射的数据存储器映射,如表 2-2-5 所示。表 2-2-5 数据存储器地址在 0x8000 FFFF 之间的映射程序存储器地址范围DROM1 DROM00x80007FFF 片内DARAM4-7片外
48、扩展程序存储器(6)I/O 空间I/O 空间地址在 0x0000FFFF 之间,全部在片外,一般将 A/D、D/A 等芯片上一些零散的存储单元或控制信号映射到 I/O 空间地址上,较大的连续数据单元映射到片外数据存储器。在 DSP 板和控制板上的 I/O 端口见实验指导书的附录 2。2链接命令文件的使用链接命令文件(后缀为 CMD)用 MEMORY 命令和 SECTIONS 命令定义目标系统的存储器配置及段的映射(存储分配) 。(1)伪指令 MEMORY 用来定义目标系统的存储器空间。示例如下:MEMORY28/*PAGE 0 表示程序存储器,PRAM 为存储区间名称,字母 o 表示起始地址,
49、字母 l 表示存储器长度*/PAGE 0:PRAM : o=100h,l=1f00h/*PAGE 1 表示数据存储器,DRAM 为存储区间名称,字母 o 和字母 l 的含义同上*/PAGE 1: DRAM : o=2000h,l=1000h MEMORY 定义的目标系统存储器空间必须是实际存在的存储器,如果不存在,实际系统将不能正确存储和执行。在本实验箱中,没有扩展外部程序存储器,在 不能访问片外程序存MP/C1储器,为此本实验箱设置 OVLY=1,这是片内双访问的地址在 0x800x7FFF 之间的数据存储器(DARAM0-3)被映射到程序存储器,即在这些地址之间的程序存储器和数据存储器共用存储单元,既可用程序总线访问,又可用数据总线访问。因此,在 MEMORY 中,PAGE 0 和 PAGE 1 是不能重叠的,否