湘潭大学数字信号处理第一次实验报告
数字信号处理实验报告(第一次)
学 院:信息工程学院
班 级: 姓 名:
学 号:
指导老师:姚志强
完成日期:2012-03-31 内容:
实验一、CCS的安装与CCS操作界面的熟悉 实验二、CCS操作
实验三、CMD文件和Gel文件的编写
1
实验一、CCS的安装与CCS操作界面的熟悉
一、实验要求和目的
1、学会安装与设置Code Composer Studio。 2、熟悉CCS软件的操作界面。 二、实验设备
CCS安装光盘(本次安装程序在D:\\DSP\\ccs2.0ForC5000)、装有Windows 98以上操作系统的PC机
三、实验内容及步骤 1.CCS的安装
安装前需要卸载系统原来的C5000,进入控制面板进行卸载完毕后,再开始下面的步骤。
(1)找到CCS的安装软件,点击安装程序setup.exe,双击启动安装。安装完成后在
桌面上会有“CCS 2 C5000”和“SETUP CCS 2 C5000”两个快捷方式图标,分别对应CCS应用程序和CCS配置程序。
(2)双击运行“SETUP CCS 2 C5000”配置程序,配置驱动程序。本次实验没有用到实验箱,只需配置软件驱动程序。在弹出的“Import Configurantions”对话框中,先点击“Clear”键,清除以前的配置,然后选择“C5402 Simulator”,点击“Import”,最后点击“Save and Quit”按钮,完成配置。 2.CCS操作界面的熟悉
(1)在桌面上双击“CCS 2 C5000”,弹出一个TI仿真器并行调试管理器窗口。
(2)在管理器窗口的“open”菜单下选择“C54xx(C5402) Simulator”命令,将弹出一个CCS运行主窗口(如果直接弹出CCS运行主窗口,此步可略)。
(3) 点击Help_>Contents打开TMS320C54x Code Composer Stdio Help,在左边Contents列表中点击最后一个TMS320C5402 DSK,浏览了解其下所有子列表的内容,熟悉DSK板的基本硬件、配置及功能。
(4)对照教材介绍CCS的地方,逐一熟悉CCS中的12项菜单的功能,包括File、Edit、View、Project、Debug、Profiler、Option、GEL、Tools等菜单(结合实验二建立项目熟悉更好)。
(5)对照教材,逐一熟悉CCS的五种工具栏:Standard Toolbar、GEL Toolbar、Project Toolbar、Debug Toolbar、Edit Toolbar(结合实验二建立项目熟悉更好)。
四、实验心得与体会
本次实验的主要内容是CCS的安装与CCS操作界面的熟悉,实验操作较为简单,但它却占据着举足轻重的地位,它为后来的实验奠定了一定的、必要的基础。实验操作过程中也有一些需要注意的地方,如安装路径、SETUP CCS 2 C5000的初始化设置等。实验过程中也需耐心地一步一步操作。总之,在老师和助教的帮助下较好地完成了本次的实验操作,达到了预期的实验目的,也为后续实验奠定了一定的基础。
2
实验二、CCS操作
一、实验目的
1. 掌握TMS320C5400系列汇编语言程序的基本格式, 2. 掌握程序编译、连接、运行和调试的基本过程 3. 熟悉Code Composer Studio的使用
二、实验设备
1. 集成开发环境Code Composer Studio(以下简称CCS) 2. 实验代码ccs_basic.s54、ccs_basic.cmd和ccs_basic.gel
三、实验内容 1.基本操作:
1). 建立项目,并加入文件
a) 运行CCS setup,选择C5402 Simulator,选择Project→New菜单项,建立一个新的项目ccs_basic.pjt(注意建立路径),并选择Project→add files to new project 菜单项,加入文件ccs_basic.s54和ccs_basic.cmd;
b) 在工程视图中选中GEL files文件夹,单击鼠标右键,在弹出的菜单中选择Load GEL选项,载入ccs_basic.gel; 2). 编译和连接
a) 编译:选择Project-->Build Option,在Compile表单的Category列表中,选择Basic选项,并设置Generate debug info为full symbolic debug选项,选择Files选项,并在设置Asm File Ext 中写入“s54”为汇编语言扩展名; 如图2-1 2-2所示;
b) 连接:选择Project-->Build Option,在linker表单中的Autoinit mode选项中选择no autointialization模式,Output Filename中输入.\\debug\\ ccs_basic.out,Code Entry Point 中输入main,Map Filename中输入ccs_basic.map,然后保存选项设置.
c) 选择Project→Build构建整个项目,产生可执行文件ccs_basic.out;
d) 选择File->Load Program,装载可执行文件ccs_basic.out。
2.练习
3
1) 观察存储器映象文件ccs_basic.Map,理解存储器的配置情况; 2) 观察和修改存储器单元的内容
1). 观察存储器映象Map文件
选择File→Open打开ccs_basic.Map文件,可观察
a) 存储器的配置情况:页面0为程序空间,页面1为数据空间; b) 程序文本段:起始地址0x1000,存储区长度为0x0021; c) 数据段:其中需初始化数据段.data起始地址0x2005,存储区长度为4;
d) 不需初始化数据段.bss起始地址0x2000,存储区长度为5; e) 堆栈段:起始地址0x0100,存储区长度为0x0400; f) 向量段:起始地址0x0080,存储区长度为0x0080;
g) 全局符号在存储器中的位置:共14个符号,如符号.bss在存储器中的位置为0x2000。
将上述信息与cmd文件中的设置比较,理解cmd文件和连接器的关系。
ccs_basic.map的内容如下:
******************************************************************************
TMS320C54x COFF Linker PC Version 3.70 ******************************************************************************
>> Linked Sat Mar 31 10:20:26 2012
OUTPUT FILE NAME: <./Debug/ccs_basic.out> ENTRY POINT SYMBOL: \"main\" address: 00001000 MEMORY CONFIGURATION
name origin length used attr fill
---------------------- -------- --------- -------- ---- --------
PAGE 0: VECS 00000080 00000080 00000080 RWIX
PROM 00001000 00001000 00000021 RWIX
4
PAGE 1: STACK 00000100 00000400 00000000 RWIX
DARAM 00002000 00001000 00000009 RWIX
SECTION ALLOCATION MAP
output attributes/ section page origin length input sections -------- ---- ---------- ---------- ---------------- .text 0 00001000 00000021
00001000 00000021 ccs_basic.obj (.text)
vectors 0 00000080 00000080
00000080 00000080 ccs_basic.obj (vectors)
.bss 1 00002000 00000005 UNINITIALIZED 00002000 00000005 ccs_basic.obj (.bss)
.data 1 00002005 00000004
00002005 00000004 ccs_basic.obj (.data)
GLOBAL SYMBOLS: SORTED ALPHABETICALLY BY Name address name -------- ---- 00002000 .bss 00002005 .data 00001000 .text 00002000 ___bss__ 00002005 ___data__ 00002009 ___edata__ 00002005 ___end__ 00001021 ___etext__ 00001000 ___text__ 00000000 __lflags 00002009 edata 00002005 end
5
00001021 etext 00001000 main
GLOBAL SYMBOLS: SORTED BY Symbol Address address name -------- ---- 00000000 __lflags 00001000 .text 00001000 ___text__ 00001000 main 00001021 ___etext__ 00001021 etext 00002000 .bss 00002000 ___bss__ 00002005 end 00002005 ___data__ 00002005 .data 00002005 ___end__ 00002009 edata 00002009 ___edata__ [14 symbols]
2). 输出文件ccs_basic.out的运行和调试
a) 运行程序:将可执行文件装载到simulator中,选择Debug→Run 或按F5
键运行程序,按shift F5键可中止程序的运行;选择Debug→Step into或按F8键可实现程序的单步执行。
b) 设置断点:把光标移到某一行,按F9键,这一行将会以红色高亮显示,
表示在该行加了一个断点.
3). 观察和修改存储器单元的内容
a) 点击CCS操作界面左侧调试工具栏图标,出现寄存器窗口,在该窗口查
看存储器的地址
b) 选择View→memory 或点击CCS操作界面左侧调试工具栏图标,在弹出
的菜单中输入存储器地址,可观察存储器的内容。如存储器地址为0x2005中内容为0x000A。
c) 修改源汇编程序中数据段内容,可查看存储器单元内容的变化。在数据表
格复制到数组a[]后,如果把a[0]的值由10改为1(修改文件时注意去掉其只读属性,后面类似),那么求和的结果将变为0x0026。
6
实验现象如下:
在数据表格复制到数组a[]后,如果把a[0]的值由10改为1(修改文件时注意去掉其只读属性,后面类似),那么求和的结果将为0x0026。如图所示:
由图可知,实验结果如预期所示。
四、试验程序代码
;****************************************************************************** ; SJTU DSP Tech. Center
; Copyright (c) 2003 SJTU DSP Tech. Center. All Rights Reserved. ; Description: ; TMS320C54x Program for Students Experiment ; History: ; Date Authors Changes ; 2003/07/15 Xu Sheng Created.
;****************************************************************************** ;Target:
; Be familar with the use of CCS (Code Composer Studio)
;****************************************************************************** ;An example to show how to write an assembly language source file ; y=a1*x1+a2*x2
;****************************************************************************** ;----------- Const definition
7
STACK_ADDR .set 0x0500 ;bottom of stack ;allocate data in .bss section .bss a,2 ;allocate 5 word for variates .bss x,2 .bss y,1 ;allocate data in .data section .data table: ;data follows ... .word 10,5 .word 8,6 .mmregs ;enable memory mapped registers .global main ;define global symbols ;------------------------------------------------------------------------------ .text main: stm #STACK_ADDR, SP ;set stack stm #0x00a8, PMST ;relocate Interrupt Vector Table stm #0x0000, SWWSR ;no software wait for all memory ;================================================ stm #a, AR2 ;AR1 point to a stm #table, AR3 rpt #1 ;move 2 ai values mvdd *AR3+, *AR2+ ;from data memory into data memory stm #x, AR2 ;AR1 point to a rpt #1 ;move 2 xi values mvdd *AR3+, *AR2+ ;from data memory into data memory call SUM ;call function to do sum ;dead loop part to lock PC in a know area when program ends dead_loop: nop nop nop b dead_loop
;================================================ ; y=a1*x1+a2*x2 SUM: stm #a, AR3 stm #x, AR4 rptz A, #1 mac *AR3+, *AR4+, A stl A, *(y) ret
;------------------------------------------------------------------------------
;Interrupt Vector Table, for simplicity Only RESET interrupt is defined
8
.sect \"vectors\" int_RESET: b main ;when reset, jump to main nop nop .space 124*16 ;no other interrupt used, keep them space
;end of lab1.s54
五、实验心得与体会
本次实验的主要内容是CCS操作。本实验是在实验一的基础上的深化,同时可以在某种程度上巩固实验一。在本次实验中,在老师和助教的指导下,学习并初步掌握了TMS320C5400系列汇编语言程序的基本格式,认识和掌握了程序编译、连接、运行和调试的基本过程及步骤,初步熟悉了Code Composer Studio的使用方法。同时,通过对存储器映象文件ccs_basic.Map的观察和学习探究,理解了存储器的配置情况,并通过观察和修改存储单元内容也得到了预期的实验结果。操作过程中也有一些需要注意的地方,如汇编语言格式设置,程序的操作步骤等。总之,在老师和助教的帮助下,加上自己认真对待的态度,最终较好地完成了本次的实验操作,达到了预期的实验目的,也为后续实验奠定了相应的基础。
当然,我也深知,想要进一步学好DSP,用熟这个软件,还需自己花必要的时间和精力。
实验三、CMD文件和Gel文件的编写
一、实验目的
1. 掌握Gel文件的编写,
2. 熟悉Code Composer Studio的使用
9
二、实验设备
1. 集成开发环境CCS
2. 实验代码ccs_gel.s54、ccs_gel.cmd和ccs_gel.gel
三、实验内容
1. 建立项目并添加相应文件,连接编译(步骤同实验二一样),双击打开CMD文件,对照教材理解CMD文件的编写结构,改变其中的内容,增加自定义段,保存并重新编译,比对前后两次编译得到的Map文件的异同。
abcd.map的内容如下:
******************************************************************************
TMS320C54x COFF Linker PC Version 3.70 ******************************************************************************
>> Linked Sat Mar 31 10:57:48 2012
OUTPUT FILE NAME: <./Debug/abcd.out> ENTRY POINT SYMBOL: 0 MEMORY CONFIGURATION
name origin length used attr fill
---------------------- -------- --------- -------- ---- --------
PAGE 0: VECS 00000080 00000080 00000080 RWIX
PROM 00001000 00001000 00000021 RWIX
PAGE 1: STACK 00000100 00000400 00000000 RWIX
DARAM 00002000 00001000 00000009 RWIX
SECTION ALLOCATION MAP
output attributes/ section page origin length input sections -------- ---- ---------- ---------- ----------------
10
.text 0 00001000 00000021
00001000 00000021 ccs_gel.obj (.text) vectors 0 00000080 00000080
00000080 00000080 ccs_gel.obj (vectors) .bss 1 00002000 00000005 UNINITIALIZED 00002000 00000005 ccs_gel.obj (.bss) .data 1 00002005 00000004
00002005 00000004 ccs_gel.obj (.data) GLOBAL SYMBOLS: SORTED ALPHABETICALLY BY Name address name -------- ---- 00002000 .bss 00002005 .data 00001000 .text 00002000 ___bss__ 00002005 ___data__ 00002009 ___edata__ 00002005 ___end__ 00001021 ___etext__ 00001000 ___text__ 00000000 __lflags 00002009 edata 00002005 end 00001021 etext 00001000 main
GLOBAL SYMBOLS: SORTED BY Symbol Address address name -------- ---- 00000000 __lflags 00001000 .text 00001000 ___text__ 00001000 main 00001021 ___etext__ 00001021 etext 00002000 .bss
11
00002000 ___bss__ 00002005 end 00002005 ___data__ 00002005 .data 00002005 ___end__ 00002009 edata 00002009 ___edata__ [14 symbols]
ccs_basic.map的内容见实验2,此处从略。 对比可以看出:两者大体相同,只是ENTRY POINT SYMBOL不同。文中有做标记。
2. 了解GEL文件的功能。Gel文件不是DSP开发必须的文件,而是给CCS使用的文件,它帮助设置CCS的仿真环境,而且可以完成一些常用的调试操作,如硬件设置等。Gel文件的编写是采用类似C语言的编程语言,观察当前的Gel文件的编写。
3. 使用者如果希望修改其功能,可以直接编写gel文件,保存并重新装载。Menuitem是一级子菜单,hotmenu是二级子菜单,其中的处理可以直接填写或调用其他的函数。修改Gel文件,添加menuitem和hotmenu。
menuitem \"C54x Experiment\"; hotmenu C5402_Textout() {
GEL_TextOut(“Hello,GEL is a solid tool !\\n”); }
hotmenu C5402_DSK_Test() /*此功能实现需要用到DSK板,可暂不添加,如做测试,需将此中文注释去掉*/
{
*(int *)0x0@io = 0xff07; /* turn on LED */ }
测试其功能。
12
4. 查询help了解所有Gel的函数功能,并修改文件实现一个其它的Gel函数。
四、实验结果和提示
1. 当设备被选用后,与其关联的gel文件将被使用,其中的StartUp函数将被调用。可修改其中的内容,如PMST寄存器的数值,并测试。
2. 如果当前CCS中装载了gel文件,那么就会出现相应的菜单项,如图3-1所示。
图3-1 GEL菜单
3. 添加代码后,重新装载Gel文件将出现新的子菜单,如图3-2所示,并测试新菜单的功能。
图3-2 新的子菜单
13
最终的实验现象:
五、实验心得与体会
本次实验的主要内容是CMD文件和Gel文件的编写。本实验是以实验一和实验二为基础,并加以深化。在本次实验中,在老师和助教的指导下,学习并初步掌握了CMD文件和Gel文件的编写,进一步熟悉了Code Composer Studio的使用方法。在老师和助教的帮助下,加上自己不断的摸索,最终也较为顺利地出现了预期的实验现象,从而较好地完成了本次的实验操作,达到了预期的实验目的,也为后续实验奠定了相应的基础。从这几次的实验操作,我深刻认识到,必须在学好相关DSP的基础知识的基础上,加强软件操作的练习,才能更好地学好DSP。
14
因篇幅问题不能全部显示,请点此查看更多更全内容