DSP综合性实验——任意信号发生器实验
menuitem \
slider fre(300,4000,1,1,freparameter) //频率范围从300-4000 { Fre=freparameter; }
五、CCS3.3程序调试:
1、编译过程
按照上面第四点编写好程序后,进行编译,结果如下(图二):
图二 程序调试过程
在编译程序之前,还要做一些准备工作,即这项工程的文件添加等。如library的库文件就需要自己从TI(或CCS5000)文件夹中寻找添加:
1、 csl5502x.lib是软件仿真所用的仿真器所必需的库文件;
2、 rts55x.lib,这个库提供目标DSP运行时间支持(runtime-support)。 在编译之前,还应设置一下编译环境,虽然本程序没有对其修改。
在Project菜单中选择Build Options选项有如图三所示的对话框:
图三 编译环境设置
2、.cmd程序(5502.cmd)全文及其解释:
2.1 .cmd文件类型及作用:
.cmd是链接器命令文件,用于存储器配置。
第 21 页 共 42 页
DSP综合性实验——任意信号发生器实验
2.2 .cmd文件结构:
.cmd由两条链接伪指令来描述:MEMORY 和SECTIONS,其中: MEMORY定义用户目标系统存储器的配置; SECTIONS控制段的构建和存储器的分配。
首先存储器空间是需要配置的,因为DSP不同的空间占用相同的地址,因此需要人工分配。
2.3 5502.cmd全文及其解释如下:
MEMORY {
MMR : origin = 0000000h, length = 00000c0h SPRAM : origin = 00000c0h, length = 0000040 VECS : origin = 0000100h, length = 0000100h DARAM0 : origin = 0000200h, length = 0007E00h DARAM1 : origin = 0008000h, length = 0008000h
CE0 : origin = 0010000h, length = 03f0000h /* 对应ZBTRAM空间 */ FLASH : origin = 0400000h, length = 0100000h /* Flash 空间 */ /* FLASH : origin = 0410000h, length = 00f0000h*/
EXTEND : origin = 0500000h, length = 0300000h /* 状态/控制寄存器、UARTA、UARTB、USB、和扩展总线所对应的空间 */
SDRAM : origin = 0800000h, length = 03FFFFCh /* SDRAM 空间*/ CE3 : origin = 0c00000h, length = 03f8000h /* SDRAM 空间*/
PDROM : origin = 0ff8000h, length = 07f00h
RESET_VECS : origin = 0ffff00h, length = 000ffh /* reset vector */ }
SECTIONS {
.vectors : {} > VECS /* interrupt vector table */ .cinit : {} > DARAM1 /*把.cinit输出段分配到DARAM1中的*/ .text : {} > DARAM1
.Audio_in_data1: {} > SDRAM .Audio_in_data2: {} > SDRAM .Audio_in_data3: {} > SDRAM .Audio_out_data1: {} > SDRAM
第 22 页 共 42 页
DSP综合性实验——任意信号发生器实验
.Audio_out_data2: {} > SDRAM .Audio_out_data3: {} > SDRAM data_out : {} > SDRAM data_out1 : {} > SDRAM /*以上对应主程序部分*/ .stack : {} > DARAM0 .sysstack: {} > DARAM0 .sysmem : {} > DARAM0 .cio : {} > DARAM1 .data : {} > DARAM1 .bss : {} > DARAM1 .const : {} > DARAM1
.csldata: {} > DARAM0 dmaMem: {} > DARAM0 }
根据上面的具体文件作以下补充:
?sections是COFF文件中最重要的概念,它至少包含以下三个段: .text 段:包含可执行代码; .data 段:包含初始化数据; .bss 段: 为未初始化变量保留存储空间。其他为自定义段(或汇编器生成段),如:.usect段,.sect段,.cinit段等。
?初始化代码段:包含数据或可执行代码,C/C++ compiler 产生下面的初始化段: ?.cinit 段:包含初始化变量表和常数,C/C++ 的全局变量; ?.const 段:包含由C/C++限定的字符串常数和数据;
(假如 constant也不是定义为 volatile).
?.text 段:包含所有的可执行代码,还有字符串汇编产生的常数。
?.cmd文件的细节问题:
未初始化段:存储器中的保留空间(通常是RAM)。程序可以在运行时使用这个空间,建立和存储变量。
汇编器compiler 建立如下未初始化段: ?.bss段:为global and static variables保留空间。当使用-c 链接选项,程序启动时,C/C++ boot 程序将.cinit段的数据拷出,存到.bss段中。
?.stack 段:为C/C++系统堆栈system stack分配存储器,其存储器可以传送变量。
1、链接命令语言是ASCII码形式的文件。它支持C语言的“/* */”作为注释,但不支持“//”。
2、链接命令文件中的常数可以采用汇编语言格式,也可以采用C语言格式,或者混用。
第 23 页 共 42 页
DSP综合性实验——任意信号发生器实验
3、程序运行结果(图形和数据显示):
编译成功后,选择File菜单中的Load Program选项。 3.1 图形显示:
选择View中的Graph的第一项,得到图四,修改相关参数如图五所示:
图四、图五 图形显示参数界面及其修改
(1)、Start Address:
该选项是选择图像的输出从哪个变量的地址开始,根据程序的编写,显然为output,这是软件仿真和硬件演示的数据出口;
(2)、Acquisition Buffer Size/Display Data Size: 这两个数值用于设置输出函数画出的点数,通常是一样的。图中所选32000/1000*2是根据程序编写output时,其数组长度为Nx,即抽样点数,由公式Nx=Fs/F0得出,又因为本程序输出为左右声道叠加,故Nx为抽样点数的2倍。
(3)、DSP Data Type:
这里我们选择16-bit signed integer.
单击OK,如图九所示得到产生的正弦信号波形。
第 24 页 共 42 页
DSP综合性实验——任意信号发生器实验
图六 产生的正弦信号数据波形图
图七 产生的方波信号数据波形图
第 25 页 共 42 页