实验一 DSP开发基础
小组成员:指导老师:实验时间:实验报告
XXX
XXX
XXX XXX
9.1 实验目的
1.了解DSP开发系统的基本配置 2.熟悉DSP集成开发环境(CCS) 3.掌握C语言开发的基本流程 4.熟悉代码调试的基本方法
9.2 实验仪器
计算机,C2000DSP教学实验箱,XDS510USB仿真器
9.3 实验内容
建立工程,对工程进行编译、链接,载入可执行程序,在DSP硬件平台上进行实时调试,利用代码调试工具,查看程序运行结果。
9.4 实验步骤 1.设备检查
检查仿真器、C2000DSP实验箱、计算机之间的连接是否正确,打开计算机和实验箱电源。
2.启动集成开发环境 3.新建工程
新建工程“YYYATT”,选择输出文件格式“Executable(.out),将sine.c、sinewave.cmd以及rts2800_ml.lib,添加到当前工程中。 4.建立工程输出可执行文件“YYYATT.out”。 5.加载程序
“FileLoad Program”,选择“YYYATT.out”。
观察自动弹出的“Disassembly”窗口。 6.程序的调试
在程序的开发与测试过程中,常常需要检查某个变量、或者是存储器的数值在程序运行过程中的变化情况,这就需要停止程序执行,用断点与观察窗口等方式来验证数值的正确性。这就是DSP目标代码的调试。 添加结构体变量currentBuffer到变量观察窗口,观察
currentBuffer.output和currentBuffer.input的地址以及数值。添加dataIO()到变量窗口,查看该子程序的入口地址。
在dataIO()处设立探针,关联输入文件sine.dat,设置数据加载的起始地址为currentBuffer.input,长度为128。
打开图形显示功能,查看存储空间currentBuffer.input和currentBuffer.output的时域波形图。
全速运行程序,或者动画执行程序,查看以上存储空间的数值变化。 在processing()子程序中设置断点,分别执行主菜单命令“DebutStep into”和“DebugStep over”单步执行程序,以及“DebugAssembly/Source Stepping”中的各项命令,查看并比较这些单步执行方式的区别。
9.5 实验要求
1.完成项目编译、链接、调试的全过程。 2.记录dataIO()、processint()了程序的入口地址,记录currentBuffer.input
和currentBuffer.output所在的存储器地址。
3.记录增益控制处理后,以图形方式显示数据空间currentBuffer.input和currentBuffer.output缓冲存储器中的波形。
4.打开工程的.map文件,查看.text、.data、.bss段在存储空间的地址和长度,指了分别位于TMS320F2812的什么存储空间以及物理存储块名称。
5.查看.cmd命令文件,比较其与上述.map中的映射关系。试图修改.cmd文件,再次编译链接,查看配置命令与各段的映射关系。
9.6实验结果
1. 实验箱测试
加载test.out程序后,实验箱上数码管显示数字1到8,LED闪烁,OUT2输出锯齿波,OUT3输出正弦波。实验箱正常。显示如下图:
数码管显示 LED闪烁
OUT3输出波形 OUT2输出波形 2. C程序基础调试
1)dataIO()子程序入口地址:0X3F81D3,processing()子程序入口地址:0X3F81D8,currentbuffer.input所在存储器地址:0X8480,currentbuffer.output所在存储器地址:0X8500。
2)数据空间currentbuffer.input和currentbuffer.output缓冲存储器中波形如下图(上图为currentbuffer.input缓冲存储器中波形,下图为currentbuffer.output缓冲存储器中波形):
3).test所在存储空间:page 0, origin:0X3F81C5,长度0XADB;.data所在存储空间:page 1 ,origin:0,长度0;.bss所在存储空间:page 1 ,origin:0X400,长度0。
4).cmd文件用于对编译生成的COFF格式目标文件定位,安排各段的物理地址,.map中各段的物理地址安排与.cmd命令文件一一对应。修改.cmd文件,再次编译链接,.map中各段的物理地址也相应改变。
9.7实验思考
1. 实验中需要各文件的作用:
Sine.c:C语言主程序,用于描述用户特定的算法功能。 Sinewave.cmd:配置命令文件,用于对编译生成的COFF格式目标文件定位,安排各段的物理地址。
Rts2800_ml.lib:运行支持库,不同芯片不同的运行支持库,必须根据具体芯片加以选择,例如TMS320C28X的运行支持库命名为rts2800_ml.lib。后缀ml的含义是large memory model,由于C默认的寻址空间为K,而TMS320C28X的地址范围可达4M,由此可以访问高于K的空间,必须在空间添加rts2800_ml.lib。
Sine.h:常量定义头文件。
Sine.dat:实验中需要的数据文件。
9.8实验中遇到的问题
1. 实验箱测试时,OUT2输出为锯齿波形,OUT3输出波形在示波器上显示不稳定,频率过大。
解决方法:首先从信号源开始验证,将信号输出器产生的信号直接输入到示波器输入端,正弦波形仍无法稳定显示,所以错误出在信号源上。改变信号源的频率错误现象未改变,经仔细研究发现是对信号发生器的操作错误,每次改变信号的频率和幅度后没有确认,所以信号的频率始终未变,一直为3MHz,频率太大,所以示波器无法正确显示稳定的正弦波形。正确调整信号源频率后OUT3正确输出正弦波。
2.数据空间currentbuffer.input和currentbuffer.output缓冲存储器中波形非标准的正余弦波形。如下图:
解决办法:出现此图的原因是设置图形显示时选择的Acquisition Buffer Size为200,长度大于实际的input_Buffer数据长度,所以每周期中有一部分数据错误。将Acquisition Buffer Size改为128则图形正确。 9.9实验小结
通过本次实验,我了解了DSP开发的基本过程,熟悉了软件CCS的开发环境,掌握了DSP的基本调试方法。对软、硬件的分工与结合有了初步的认识。为以后实验的展开奠定了基础。
在预习本次实验时,实验要求看上去简单,导致我掉以轻心,没有认真对待。所以在实验过程中,出现了许多问题。由于第一次接触这种开发环境,对操作不是很熟悉,实验也颇是费力。有时甚至不知道该如何处理,只能对照实验指导书一步一步完成。这也告诉我以后做实验或研究问题时要虚心以待,认真踏实的去做,而不能想当然。
在实验完成后再回头思考整个实验过程,才理清各操作的功能和意义。吸取了本次实验的教训,在第二次实验中我也能更灵活的运用以掌握的知识。