dsp2812实验指导书

上传人:shaoy****1971 文档编号:108153687 上传时间:2019-10-22 格式:DOC 页数:58 大小:5.57MB
返回 下载 相关 举报
dsp2812实验指导书_第1页
第1页 / 共58页
dsp2812实验指导书_第2页
第2页 / 共58页
dsp2812实验指导书_第3页
第3页 / 共58页
dsp2812实验指导书_第4页
第4页 / 共58页
dsp2812实验指导书_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《dsp2812实验指导书》由会员分享,可在线阅读,更多相关《dsp2812实验指导书(58页珍藏版)》请在金锄头文库上搜索。

1、第4章 实验内容实验一 编写一个以C语言为基础的DSP程序一实验目的1学习用标准C语言编制程序;了解常用的C语言程序设计方法和组成部分。2学习编制连接命令文件,并用来控制代码的连接。3学会建立和改变map文件,以及利用它观察DSP内存使用情况的方法。4熟悉使用软件仿真方式调试程序。二实验设备PC兼容机一台,操作系统为Windows2000(或Windows98,WindowsXP,以下默认为Windows2000),安装Code Composer Studio 2.0软件。三实验原理1 标准C语言程序CCS支持使用标准C语言开发DSP应用程序。当使用标准C语言编制的程序时,其源程序文件名的后缀

2、应为.c (如:volume.c)。CCS在编译标准C语言程序时,首先将其编译成相应汇编语言程序,再进一步编译成目标DSP的可执行代码。最后生成的是coff格式的可下载到DSP中运行的文件,其文件名后缀为.out。由于使用C语言编制程序,其中调用的标准C的库函数由专门的库提供,在编译连接时编译系统还负责构建C运行环境。所以用户工程中需要注明使用C的支持库。2 命令文件的作用命令文件(文件名后缀为cmd)为链接程序提供程序和数据在具体DSP硬件中的位置分配信息。通过编制命令文件,我们可以将某些特定的数据或程序按照我们的意图放置在DSP所管理的内存中。命令文件也为链接程序提供了DSP外扩存储器的描

3、述。在程序中使用CMD文件描述硬件存储区,可以只说明使用部分,但只要是说明的,必须和硬件匹配,也就是只要说明的存储区必须是存在的和可用的。3 内存映射(map)文件的作用一般地,我们设计、开发的DSP程序在调试好后,要固化到系统的ROM中。为了更精确地使用ROM空间,我们就需要知道程序的大小和位置,通过建立目标程序的map文件可以了解DSP代码的确切信息。当需要更改程序和数据的大小和位置时,就要适当修改cmd文件和源程序,再重新生成map文件来观察结果。另外,通过观察map文件,可以掌握DSP存储器的使用和利用情况,以便进行存储器方面的优化工作。4程序设计要求数值运算开设三个整型变量x,y,z

4、赋初值:x=1,y=2计算x+y输出结果到z循环程序框图:四实验步骤1实验准备设置软件仿真模式2建立新的工程文件(1)双击桌面上图标,如右图:启动Code Composer Studio 2.21。(2)进行以下设置:菜单项选择点击完成设置输入工程名点击选取目录D:dspt1CProgram图4.1.1 建立CProgram.pjt选择菜单3编辑输入源程序(1)C语言程序-先新建源程序窗口:-输入源程序:int x,y,z;main()x=1; y=2;while ( 1 )z=x+y;图4.1.2 新建源文件-保存源程序为CProgram.c: 选择 菜单项输入文件名选择存储目录为D:dsp

5、t1CProgram单击按 钮保存 图4.1.3 保存为c文件(2)连接命令文件-如同第(1)步操作,建立空的源程序窗口。-输入连接命令文件内容:-l rts2800.lib-stack 400h-heap 100MEMORY PAGE 0 : PROG(R) : origin = 0x3E8000, length = 0x10000 PAGE 0 : BOOT(R) : origin = 0x3FF000, length = 0xFC0 PAGE 0 : RESET(R) : origin = 0x3FFFC0, length = 0x2 PAGE 0 : VECTORS(R) : orig

6、in = 0x3FFFC2, length = 0x3E PAGE 1 : M0RAM(RW) : origin = 0x000000, length = 0x400 PAGE 1 : M1RAM(RW) : origin = 0x000400, length = 0x400 PAGE 1 : L0L1RAM(RW) : origin = 0x008000, length = 0x2000 PAGE 1 : H0RAM(RW) : origin = 0x3F8000, length = 0x2000 SECTIONS /* 22-bit program sections */ .reset :

7、 RESET, PAGE = 0 vectors : VECTORS, PAGE = 0 .pinit : PROG, PAGE = 0 .cinit : PROG, PAGE = 0 .text : PROG, PAGE = 0 /* 16-Bit data sections */ .const : L0L1RAM, PAGE = 1 .bss : L0L1RAM, PAGE = 1 .stack : M1RAM, PAGE = 1 .sysmem : M0RAM, PAGE = 1 /* 32-bit data sections */ .ebss : H0RAM, PAGE = 1 .ec

8、onst : H0RAM, PAGE = 1 .esysmem : H0RAM, PAGE = 1-l rts2800.lib-如同第(1)步操作,将文件存为:D:dspt1CProgramCProgram.cmd(3) 将上述编译的源程序加入工程CProgram.pjt, 4编译源文件、下载可执行程序(1) 单击菜单“Project”、“Rebuild All”。(2) 执行FileLoad Program ,在随后打开的对话框中选择刚刚建立的D:dspt1CProgramdebugCProgram.out文件。完成后,系统自动打开一个反汇编窗口“Disassembly”,并在其中指示程序的

9、入口地址为“_c_int00”。5打开观察窗口开启CPU寄存器观察窗口:单击菜单View-Registers-Core。6观察程序运行结果这时,在“Disassembly”代表程序运行位置的绿色箭头指向程序的入口地址,程序将从此开始执行。(1) 选择菜单中Debug-Go Main,CCS自动打开CProgram.c,程序会停在用户主程序入口main上,这从反汇编窗口和CProgram.c窗口中的指示箭头位置可以看出。(2) 在内存观察窗口中观察变量的值:选择“View”菜单中“Memory”项,在“Memroy Window Options”窗口中的“Adress”项中输入&x,单击“OK”

10、完成设置;“Memory”窗口中x的当前取值显示在第1个地址的后面。(3) 将变量x、y、z分别加入观察窗口:在源程序中双击变量名,再单击鼠标右键,选择“Add to Watch Window”。这时,这3个变量还未作初始化。(4) 单步运行2次,在观察窗中观察到变量x、y被赋值。变化的值被显示成红色。同时在“Memory”窗口中也能观察到x和y值的改变。(5) 再单步运行,可观察到z的值被计算出来。双击观察窗口中变量x、y在“Value”栏中的取值并修改成其他取值,单步运行后观察结果。(6) 双击观察窗口中变量x、y在“Value”栏中的取值,并修改成0;选择菜单Debug-Restart,

11、返回程序起点。(7) 重新单步运行程序,观察在CPU寄存器窗口中,各寄存器使用情况,观察哪个寄存器参与了运算。7内存映像文件(1) 选择菜单Project-Build Options,启动“Build Options”工程设置对话框。(2) 单击“Linker”属性页,在“Map Filename”项中观察生成的map文件名和路径。(3) 单击“取消”退出。8对照观察map文件和cmd文件的内容(1) 选择菜单File-Open,将找到D:dspt1CProgramDebug目录,将文件类型改为“Memory Map Files”,选择CProgram.map文件、打开。(2) 打开CProg

12、ram.cmd文件。(3) 程序的入口地址:map文件中“ENTRY POINT SYMBOL”中说明了程序入口地址(_c_int00)。(4) 内存使用情况:-map文件中“MEMORY CONFIGURATION”标明了程序占用RAM的使用情况,共占用aaH个存储单元。-观察map文件中的“SECTION ALLOCATION MAP”段,可以看出CProgram.obj的入口地址为0x3e801e,这也是main函数的入口地址。-用户堆栈段从400H开始,程序运行到main函数中后,变量x、y、z均开设在栈中。-还能看出程序运行都需要调用rts2800.lib中的哪些模块。9改变内存分配

13、修改cmd文件中的PAGE 0 : PROG(R) : origin = 0x3E8000, length = 0x10000 改为PAGE 0 : PROG(R) : origin = 0x3E9000, length = 0x10000 重新编译工程,观察map文件中有何变化。10退出CCS五实验结果通过实验可以发现,修改cmd文件可以安排程序和数据在DSP内存资源中的分配和位置;map文件中描述了程序和数据所占用的实际尺寸和地址。C语言编制的程序,在经过编译器编译后,需要连接若干C标准程序辅助运行。以下是运行流程:1程序入口为_c_int00,执行标准C库中的程序,负责初始化C环境、申请

14、堆栈、初始化有初始值的变量等。2程序最终转到用户编制的主函数运行。3程序在主函数中的无限循环中持续运行。六问题与思考请修改程序完成计算sin(2.3)+cos(1.7)的值。实验二 基于DSP芯片、系统的实验(1) DSP数据存取实验一. 实验目的1.了解TMS320F2812A的内部存储器空间的分配及指令寻址方式。2.了解F2812-A评估板扩展存储器空间寻址方法,及其应用。3.了解F2812-EDU实验箱扩展存储器空间寻址方法,及其应用。4.学习用Code Composer Studio修改、填充DSP内存单元的方法。5.学习操作TMS32028xx内存空间的指令。二. 实验设备计算机,ICETEK-F2812-A-EDU实验箱(或ICETEK仿真器+ICETEK-F2812-A评估板+相关连线及电源)。三. 实验原理TMS32028xx DSP内部存储器资源介绍:T

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号