您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 实验1.2:编写一个以C语言为基础的DSP程序
实验1.2:编写一个以C语言为基础的DSP程序一.实验目的1.学习用标准C语言编制程序;了解常用的C语言程序设计方法和组成部分。2.学习编制连接命令文件,并用来控制代码的连接。3.学会建立和改变map文件,以及利用它观察DSP内存使用情况的方法。4.熟悉使用软件仿真方式调试程序。二.实验原理1.标准C语言程序CCS支持使用标准C语言开发DSP应用程序。当使用标准C语言编制的程序时,其源程序文件名的后缀应为.c(如:volume.c)。CCS在编译标准C语言程序时,首先将其编译成相应汇编语言程序,再进一步编译成目标DSP的可执行代码。最后生成的是coff格式的可下载到DSP中运行的文件,其文件名后缀为.out。由于使用C语言编制程序,其中调用的标准C的库函数由专门的库提供,在编译连接时编译系统还负责构建C运行环境。所以用户工程中需要注明使用C的支持库。2.命令文件的作用命令文件(文件名后缀为cmd)为链接程序提供程序和数据在具体DSP硬件中的位置分配信息。通过编制命令文件,我们可以将某些特定的数据或程序按照我们的意图放置在DSP所管理的内存中。命令文件也为链接程序提供了DSP外扩存储器的描述。在程序中使用CMD文件描述硬件存储区,可以只说明使用部分,但只要是说明的,必须和硬件匹配,也就是只要说明的存储区必须是存在的和可用的。3.内存映射(map)文件的作用一般地,我们设计、开发的DSP程序在调试好后,要固化到系统的ROM中。为了更精确地使用ROM空间,我们就需要知道程序的大小和位置,通过建立目标程序的map文件可以了解DSP代码的确切信息。当需要更改程序和数据的大小和位置时,就要适当修改cmd文件和源程序,再重新生成map文件来观察结果。另外,通过观察map文件,可以掌握DSP存储器的使用和利用情况,以便进行存储器方面的优化工作。4.程序设计要求程序框图(图2-1):三.实验设备PC兼容机一台,操作系统为Windows2000(或Windows98,WindowsXP,以下默认为Windows2000),安装CodeComposerStudio2.0软件。四.实验内容与步骤1.实验准备设置软件仿真模式,参看:本书第一部分、四、1。2.建立新的工程文件(1)启动CodeComposerStudio2.21。(2)进行以下设置3.编辑输入源程序(1)C语言程序-先新建源程序窗口:-输入源程序:intx,y,z;main(){x=1;y=2;while(1){z=x+y;}}-保存源程序为CProgram.c:(2)连接命令文件-如同第(1)步操作,建立空的源程序窗口。-输入连接命令文件内容:-lrts55x.libMEMORY{DARAM:O=0x100,l=0x7f00DARAM2:O=0x8000,l=0x8000}SECTIONS{.text:{}DARAM.bss:{}DARAM.stack:{}DARAM.cinit:{}DARAM}-如同第(1)步操作,将文件存为:C:\ICETEK-F2812-A-EDUlab\DSP281x_examples\Lab0102-CProgram\CProgram.cmd(3)将上述编译的源程序加入工程CProgram.pjt。5.编译源文件、下载可执行程序(1)单击菜单“Project”、“RebuildAll”。(2)执行FileLoadProgram,在随后打开的对话框中选择刚刚建立的C:\ICETEK-F2812-EDULab\Lab0102-CProgram\debug\CProgram.out文件。完成后,系统自动打开一个反汇编窗口“Disassembly”,并在其中指示程序的入口地址为“_c_int00”。6.打开观察窗口开启CPU寄存器观察窗口:单击菜单View-Registers-Core。7.观察程序运行结果这时,在“Disassembly”代表程序运行位置的绿色箭头指向程序的入口地址,程序将从此开始执行。(1)选择菜单中Debug-GoMain,CCS自动打开CProgram.c,程序会停在用户主程序入口main上,这从反汇编窗口和CProgram.c窗口中的指示箭头位置可以看出。(2)在内存观察窗口中观察变量的值:选择“View”菜单中“Memory…”项,在“MemroyWindowOptions”窗口中的“Adress”项中输入&x,单击“OK”完成设置;“Memory”窗口中x的当前取值显示在第1个地址的后。(3)将变量x、y、z分别加入观察窗口:在源程序中双击变量名,再单击鼠标右键,选择“AddtoWatchWindow”。这时,这3个变量还未作初始化。(4)单步运行2次,在观察窗中观察到变量x、y被赋值。变化的值被显示成红色。同时在“Memory”窗口中也能观察到x和y值的改变。(5)再单步运行,可观察到z的值被计算出来。双击观察窗口中变量x、y在“Value”栏中的取值并修改成其他取值,单步运行后观察结果。(6)双击观察窗口中变量x、y在“Value”栏中的取值,并修改成0;选择菜单Debug-Restart,返回程序起点。(7)重新单步运行程序8.内存映像文件(1)选择菜单Project-BuildOptions…,启动“BuildOptions”工程设置对话框。(2)单击“Linker”属性页,在“MapFilename”项中观察生成的map文件名和路径。(3)单击“取消”退出。9.对照观察map文件和cmd文件的内容(1)选择菜单File-Open…,将找到C:\ICETEK-F2812-A-EDUlab\DSP281x_examples\Lab0102-CProgram\Debug目录,将文件类型改为“MemoryMapFiles”,选择CProgram.map文件、打开。打开CProgram.cmd文件。(3)程序的入口地址:map文件中“ENTRYPOINTSYMBOL”中说明了程序入口地址(_c_int00)。(4)内存使用情况:-map文件中“MEMORYCONFIGURATION”标明了程序占用RAM的使用情况,共占用aaH个存储单元。-观察map文件中的“SECTIONALLOCATIONMAP”段,可以看出CProgram.obj的入口地址为0x3e801e,这也是main函数的入口地址。-用户堆栈段从400H开始,程序运行到main函数中后,变量x、y、z均开设在栈中。-还能看出程序运行都需要调用rts2800.lib中的哪些模块。10.改变内存分配修改cmd文件中的PAGE0:PROG(R):origin=0x3E8000,length=0x10000改为PAGE0:PROG(R):origin=0x3E9000,length=0x10000重新编译工程,观察map文件中有何变化。11.退出CCS
本文标题:实验1.2:编写一个以C语言为基础的DSP程序
链接地址:https://www.777doc.com/doc-6365705 .html