多媒体通信实验第4章CCS应用实验.docx
《多媒体通信实验第4章CCS应用实验.docx》由会员分享,可在线阅读,更多相关《多媒体通信实验第4章CCS应用实验.docx(69页珍藏版)》请在冰点文库上搜索。
多媒体通信实验第4章CCS应用实验
第4章CCS应用实验
目录
实验4.1CCS操作使用实验
实验4.2汇编语言DSP程序设计实验
实验4.3C语言DSP程序设计实验
实验4.4混合语言的DSP程序设计实验
实验4.5双精度数据加减运算汇编语言实验
实验4.6单精度小数乘法运算汇编语言实验
实验4.7浮点数乘除法运算实验
实验4.8库函数调用运算实验
实验4.1CCS操作使用实验
(一)实验目的要求
1.学习工程创建的方法
2.了解编译和调试功能
3.学习使用观察窗口
(二)主要仪器设备
1.计算机
2.CCS软件
3.TMS320C64xx实验箱一台
(三)实验原理和方法
开发TMS320C6xxx应用系统一般需要以下几个调试工具来完成:
1.软件集成开发环境(CCS):
完成程序编译、目标文件产生、下载,进行程序和硬件的联合仿真调试。
2.仿真器:
实现硬件仿真调试时与硬件系统的通信、控制和读取硬件系统的状态和数据。
CCS通过工程来管理文件,一般包括以下几种文件:
1)源程序文件:
C语言或汇编语言文件(*.c或*.asm)
2)头文件(*.h)
3)命令文件(*.cmd)
4)库文件(*.lib,*.obj)
(四)实验内容与步骤
连接实验箱与PC机,打开电源给实验箱供电。
1.在C:
\CCStudio_v3.3\MyProjects下新建一个文件夹:
practice。
复制C:
\CCStudio_v3.3\tutorial\sim64xx\consultant下的所有文件到practice文件夹下。
2、点击setupcodecomposerstudiov3.3,运行CCSSetup,
设置CCS在软件仿真(simulator)方式下运行。
保存配置。
3.点击CodeComposerStudio,启动CCS。
4.创建工程
选择菜单“Project”的“New…”项,建立practice.pjt工程文件。
5.向工程添加文件
添加main.c,doloop.c,lnk.cmd到工程。
查看源程序:
Doloop.c,main.c。
打开:
lnk.cmd文件,编辑如下内容保存:
-stack0x400
-heap0x400
MEMORY
{
ISRAM:
origin=0x400,len=0x1000000
}
SECTIONS
{
.vectors>ISRAM
.text>ISRAM
.data>ISRAM
.bss>ISRAM
.cinit>ISRAM
.const>ISRAM
.far>ISRAM
.stack>ISRAM
.cio>ISRAM
.sysmem>ISRAM
}
或者:
/****************************************************************************/
/*c64xx_cov_lnk.cmd*/
/*Copyright(c)1996-2002TexasInstrumentsIncorporated*/
/****************************************************************************/
-c
-heap5000
-stack5000
/*MemoryMap0*/
MEMORY
{
ON_CHIP:
origin=00000000hlength=00100000h
EMIFA_CE0:
origin=80000000hlength=10000000h
EMIFA_CE1:
origin=90000000hlength=10000000h
}
SECTIONS
{
.text>ON_CHIP
.stack>ON_CHIP
.bss>ON_CHIP
.cinit>EMIFA_CE1
.cio>EMIFA_CE0
.const>ON_CHIP
.data>ON_CHIP
.switch>ON_CHIP
.sysmem>ON_CHIP
.far>EMIFA_CE0
}
6.工程中添加库文件
添加C:
\CCStudio_v3.3\C6000\cgtools\lib目录下的rts6400.lib
7.查看源程序文件
点击工程列表下文件,可以打开源程序文件main.c查看代码
8.编译、创建目标文件
点击菜单project->compilefile,可以对文件进行编译
再点击菜单Project->Build,建立目标文件
成功建立的文件应该是错误和警告都为0
9.调用目标文件
1)连接仿真器与目标板
点击:
Debug->connect,
连接成功后,CCS左下角有提示。
2)点击File->LoadProgram,选择\practice\Debug\practice.out
10.调试
1)gotomain
2)设置断点
在需要设置断点的行前双击鼠标,则在行前出现红色的原点,表示设置了断点;若在已经设置了断点的行前双击鼠标,则可以取消该断点。
3)单步运行
用F11
4)观察窗口
点击view->watchwindow,则打开观察窗口
(五)实验报告要求
1.写出实验报告,包括:
目的和要求、仪器设备
2.写出实验步骤及内容
实验4.2汇编语言DSP程序设计实验
(一)实验目的和要求:
1.学习用汇编语言编制程序;
2.了解在CCS下开发TMS320C64x汇编语言程序的步骤;
3.掌握汇编语言数据搬移、存储的方法;
4.学习在CCS环境中调试汇编代码
(二)主要仪器设备:
1.计算机
2.CCS软件
3.TMS320C64xx实验箱一台
(三)实验原理与方法
1.汇编语言程序在执行时直接从用户指定入口开始。
2.由于CCS的代码链接器默认支持C语言,在编制汇编语言程序时,需要设置链接参数,选择非自动初始化,注明汇编程序的入口地址。
(四)实验步骤与内容
1.运行CCSSetup,设置CCS在模拟仿真(Simulator)方式下运行。
选择模拟仿真调DM642DeviceCycleAccurateSimulator(Endianness选little)。
2.启动CCS
3.创建工程
4.设置工程编译选项
选择CCS菜单project->BuildOptions,点击Linker页,设置AutoinitModel为:
NoAutoinitialization(这点是与C语言程序设计不同)
注意:
若省略这一步,也不影响程序建立,只不过会出现警告:
warning:
entrypointsymbol_c_int00undefined
5.输入源程序
1)输入汇编源程序
选择File->New->SourceFile或使用工具条的快捷按钮,进入文件编辑窗口。
录入汇编源程序:
;**********************************
;输入数据存放在:
x,y
;本例程完成运算:
x+y
;结果存放:
z
;其中:
x,y,z都占32位
;*********************************
.bssx,4;排版要空一格,下同
.bssy,4
.bssz,4
;.defstart
;.defx,y,z
.text
start:
;排版要顶格
mvklx,A0;立即寻址,将变量x的值放到寄存器A0
mvkhx,A0;立即寻址,将变量x的值放到寄存器A0
mvkly,B0;立即寻址,将变量y的值放到寄存器B0
mvkhy,B0;立即寻址,将变量y的值放到寄存器B0
mvklz,B2;立即寻址,将变量z的值放到寄存器B2
mvkhz,B2;立即寻址,将变量z的值放到寄存器B2
mvkl0x010a0f2a,A4;给A4低16位赋值
mvkh0x010a0f2a,A4;给A4高16位赋值
mvkl0x1ab31211,B4;给B4低16位赋值
mvkh0x1ab31211,B4;给B4高16位赋值
stwA4,*A0;A4存入A0所指地址单元
nop5
stwB4,*B0;B4存入B0所指地址单元
nop5
ldw*A0,B1;将A0寻址单元的值读入B1
nop5;避免流水线冲突
ldw*B0,A1;将B0寻址单元的值读入A1
nop5
addA1,B1,A2;加法运算:
A1+B1-->A2
stwA2,*B2;将A2的值存入B2所指地址单元
b$;一直在这里跳转,注意:
b后有一个空格
注意:
汇编语句前需要留出空格,标号顶格输入,否则编译有错误提示。
保存源程序到工程目录下,保存文件为:
myasm.asm
2)输入链接命令文件
点击“File/New/SourceFile”或使用工具条的快捷按钮,进入文件编辑窗口。
输入链接命令文件内容:
-stack400
-heap400
MEMORY
{
ISRAM:
origin=0x0,len=0x1000000
}
SECTIONS
{
.vectors>ISRAM
.text>ISRAM
.bss>ISRAM
.cinit>ISRAM
.const>ISRAM
.far>ISRAM
.stack>ISRAM
.cio>ISRAM
.sysmem>ISRAM
}
保存源程序到工程目录下,命名为myasm.cmd。
6.将上述编辑的源程序myasm.asm和链接命令文件myasm.cmd加入工程myasm.pjt。
7.编译源文件、建立目标文件(.out)
8.调用编程可执行程序
选择File->LoadProgram,选择\myasm\debug\myasm.out,点击Debug->Restart后PC此时指向0000000000000000地址。
9.调试
用菜单debug->StepInto或F11可以单步运行。
10.观察
开启CPU寄存器观察窗口:
单击菜单ViewRegisterscore。
使用单步运行,查看相应寄存器的值的变化。
还可开启Watchwindow,Memory窗口,进行变量、存储空间的观察
11.退出CCS
(五)实验报告要求
1.写出实验报告,包括:
目的和要求、仪器设备
2.写出实验步骤及内容
实验4.3C语言DSP程序设计实验
(一)实验目的和要求:
1.掌握DSP芯片的C语言程序设计方法;
2.掌握在CCS环境下用C语言开发的步骤;
3.学会调试CCS下的C语言代码
(二)主要仪器设备:
1.计算机
2.CCS软件
3.TMS320C64xx实验箱一台
(三)实验原理与方法
1.标准C语言程序
CCS支持使用标准C语言开发DSP应用程序。
C源程序文件名的后缀应为.c。
CCS在编译标准C语言程序时,首先将其编译成相应汇编语言程序,再进一步编译成目标DSP的可执行代码。
最后生成的是COFF格式的可下载到DSP中运行的文件,其文件名后缀为.out。
由于使用C语言编制程序,其中调用的标准C的库函数由专门的库提供,在编译链接时编译系统还负责构建C运行环境。
所以用户工程中需要注明使用C的支持库。
2.命令文件的作用
命令文件(文件名后缀为cmd)为链接程序提供程序和数据在具体DSP硬件中的位置分配信息。
通过编制命令文件,我们可以将某些特定的数据或程序按照我们的意图放置在DSP所管理的内存中。
命令文件也为链接程序提供了DSP外扩存储器的描述。
在程序中使用CMD文件描述硬件存储区,可以只说明使用部分,但只要是说明的,必须和硬件匹配,也就是只要说明的存储区必须是存在的和可用的。
3.内存映射(map)文件的作用
为了更精确地使用ROM空间,我们就需要知道程序的大小和位置,通过建立目标程序的map文件可以了解DSP代码的确切信息。
当需要更改程序和数据的大小和位置时,就要适当修改cmd文件和源程序,再重新生成map文件来观察结果。
另外,通过观察map
文件,可以掌握DSP存储器的使用和利用情况,以便进行存储器方面的优化工作。
(四)实验步骤与内容
1.准备
将DSP实验设备与硬件仿真器相连接,连接电源线,打开电源开关。
2.设置CCS在硬件仿真(Emulator)方式下运行,选择实际的仿真器。
也可设置在模拟仿真(Simulator)方式下工作。
3.启动CCS环境
4.创建工程。
选择菜单Project->New,创建ctest.pjt工程
5.建立源文件
1)建立C语言源程序文件。
选择FILE->New->Source,输入下列C代码,保存到文件ctest.c。
intsel_max(inta,intb);
voidmain()
{
intx;
inty;
intz;
x=21;
y=98;
while
(1)
{
z=sel_max(x,y);//函数调用
}
}
intsel_max(inta,intb)
{
return((a>=b)?
a:
b);
}
2)建立链接命令文件
点击“File/New/SourceFile”或使用工具条的快捷按钮,打开编辑窗,建立ctest.cmd文件,内容如下:
-stack400
-heap400
MEMORY
{
ISRAM:
origin=0x0,len=0x1000000
}
SECTIONS
{
.vectors>ISRAM
.text>ISRAM
.bss>ISRAM
.cinit>ISRAM
.const>ISRAM
.far>ISRAM
.stack>ISRAM
.cio>ISRAM
.sysmem>ISRAM
}
6.工程添加文件
点击菜单Project->AddFilestoproject,分别加入ctest.c,ctest.cmd文件,再向工程添加C:
\CCStudio_v3.3\C6000\cgtools\lib下的文件rts6400.lib(这点与汇编程序设计不同)(注意:
若不添加,则链接时会出现警告:
warning:
entrypointsymbol_c_int00undefined)
7.编译、建立目标文件
产生ctest.out
8.调用编程可执行程序
1)连接仿真器与目标板
点击:
Debug->connect,
连接成功后,CCS左下角有提示。
2)选择File->LoadProgram,选择\ctest\debug\ctest.out。
9.调试
1)执行至C语言主程序入口
点击Debug->gomain。
2)设置断点
在需要设置断点的行前双击鼠标,则在行前出现红色的原点,表示设置了断点;若在已经设置了断点的行前双击鼠标,则可以取消该断点。
3)单步运行
用菜单debug->StepInto或F11可以单步运行。
4)全速运行
用菜单debug->Run或F5可以全速运行。
10.观察
开启CPU寄存器观察窗口:
单击菜单ViewRegisterscore。
使用单步运行,查看相应寄存器的值的变化。
还可开启Watchwindow,Memory窗口,进行变量、存储空间的观察
11.关闭工程
点击Project->Close。
12.退出CCS
(五)实验报告要求
1.写出实验报告,包括:
目的和要求、仪器设备
2.写出实验步骤及内容
实验4.4混合语言的DSP程序设计实验
(一)实验目的和要求:
1.掌握产生离散信号的方法
2.掌握离散信号的图形表示
(二)主要仪器设备:
1.计算机
2.CCS软件
3.TMS320C64xx实验箱一台
(三)实验原理与方法
C语言易于开发和维护,可读性强、利于理解,在编制、修改、实现算法方面比用汇编语言开发容易。
可移植性强。
但由C语言开发的代码量大、程序效率较低、优化代码存在一定困难。
汇编语言控制系统硬件的能力强于C语言,设计出来的程序更加贴近硬件特性,往往能将硬件效能发挥到极致,且汇编语言代码精练、效率高、代码短、不容易产生冗余。
但汇编语言设计的程序可读性差,不利于复杂算法的开发和实现,可移植性差,容易产生流水线冲突。
大部分代码采用C语言设计,少部分要求高效率的代码采用汇编程序设计。
这样,就要求混合语言的编程,即在一个工程中同时含有汇编语言程序和C语言程序。
混合编程有两种方式:
一种方式是在C语言程序中采用内嵌入汇编语句,例如asm(“MOVT1,*SP(#1)”),另一种方式是一种语言调用另一种语言设计的子程序。
在汇编程序中使用其他C语言模块中定义的变量或函数名称时,需要在引用的名称前加一下划线。
如:
C中定义的变量为x,在汇编中引用时要用_x。
函数(父函数)在调用另一个函数(子函数)的时候,如果有参数需要传递,前10个参数放入寄存器A4、B4、A6、B6、A8、B8、A10、B10、A12、B12,如果是长整型、双精度浮点型或长精度浮点型,则放入寄存器对A5:
A4,B5:
B4,A7:
A6等。
如果被调函数返回整数、指针或单精度浮点型,将返回值放到寄存器A4中,如果返回双精度浮点型或长精度浮点型,则将返回值放在A5:
A4寄存器对中。
(四)实验步骤与内容
1.准备
将DSP实验设备与硬件仿真器相连接,连接电源线,打开电源开关。
2.设置CCS在硬件仿真(Emulator)方式下运行,选择实际的仿真器。
也可设置在模拟仿真(Simulator)方式下工作。
3.启动CCS环境
4.创建工程。
选择菜单Project->New,创建casm.pjt工程
5.建立源文件
1)建立C语言源程序文件。
选择FILE->New->Source,输入下列C代码,保存到文件\myprojects\casm\main.c。
intadd(inta,intb);
voidmain()
{
intx;
inty;
intz;
x=2;
y=3;
while
(1)
{
z=add(x,y);//函数调用
}
}
2)建立汇编语言源程序文件。
选择FILE->New->Source,输入下列C代码,保存到文件\myprojects\casm\add.asm。
内容如下:
.global_add
_add:
ADD.D1XA4,B4,A4
B.S2B3
.end
注意:
汇编语句前需要留出空格,标号顶格输入,否则编译有错误提示。
3)建立链接命令文件
点击“File/New/SourceFile”或使用工具条的快捷按钮,打开编辑窗,建立\myprojects\casm\casm.cmd文件,内容如下:
-stack400
-heap400
MEMORY
{
ISRAM:
origin=0x0,len=0x1000000
}
SECTIONS
{
.vectors>ISRAM
.text>ISRAM
.bss>ISRAM
.cinit>ISRAM
.const>ISRAM
.far>ISRAM
.stack>ISRAM
.cio>ISRAM
.sysmem>ISRAM
}
7.工程添加文件
点击菜单Project->AddFilestoproject,分别加入main.c,add.asm和casm.cmd文件,再向工程添加C:
\CCStudio_v3.3\C6000\cgtools\lib下的文件rts6400.lib。
8.编译、建立目标文件
产生casm.out
9.调用编程可执行程序
1)连接仿真器与目标板
点击:
Debug->connect,
连接成功后,CCS左下角有提示。
2)选择File->LoadProgram,选择\casm\debug\casm.out。
10.调试
1)执行至C语言主程序入口
点击Debug->gomain。
2)设置断点
在需要设置断点的行前双击鼠标,则在行前出现红色的原点,表示设置了断点;若在已经设置了断点的行前双击鼠标,则可以取消该断点。
3)单步运行
用菜单debug->StepInto或F11可以单步运行。
4)全速运行
用菜单debug->Run或F5可以全速运行。
11.观察
开启CPU寄存器观察窗口:
单击菜单ViewRegisterscore。
使用单步运行,查看相应寄存器的值的变化。
还可开启Watchwindow,Memory窗口,进行变量、存储空间的观察
12.关闭工程
点击Project->Close。
13.退出CCS
(五)实验报告要求
1.写出实验报告,包括:
目的和要求、仪器设备
2.写出实验步骤及内容
实验4.5双精度数据加减运算汇编语言实验
(一)实验目的和要求:
1.学会双精度的汇编语言表示
2.学会使用汇编编程来实现双精度数据的加减运算
3.进一步掌握CCS调试汇编程序的技巧
(二)主要仪器设备:
1.计算机
2.CCS软件
3.TMS320C64xx实验箱一台
(三)实验原理与方法
双精度数据是采用两个字保存一个数据,将数据分成高位和低位。
C6x的数据宽度为32位,所以双精度的数据位数为64位,使用两个寄存器保存该64位的数据。
实验程序使用A2保存加数的低32位,B2保存加数的高32位,A4保存被加数的低32位,B4保存被加数的高32位,结果的低32位存储在A0和*A8地址中,高32位存储在B0和*B8地址中,此程序可以直接被C语言调用。
(四)实验步骤与内容
1.准备
关闭DSP实验设备的电源开关。
2.设置CCS在模拟仿真(Simulator)方式下工作。
3.启动CCS环境
4.创建工程。
选择菜单Project->New,创建dadder64.pjt工程
5.设置工程编译选项
选择CCS菜单project->BuildOptions,点击Linker页,设置AutoinitModel为:
NoAutoinitialization
6.建立源文件
1)建立汇编语言源程序文件。