CCS程序设计和DSP硬件实验.docx
- 文档编号:4295612
- 上传时间:2022-11-29
- 格式:DOCX
- 页数:26
- 大小:780.91KB
CCS程序设计和DSP硬件实验.docx
《CCS程序设计和DSP硬件实验.docx》由会员分享,可在线阅读,更多相关《CCS程序设计和DSP硬件实验.docx(26页珍藏版)》请在冰豆网上搜索。
CCS程序设计和DSP硬件实验
实验项目5、CCS程序设计与DSP硬件实验
一、实验目的
(1)掌握CCS环境下程序编辑、编译、运行、下载、调试的过程。
(2)掌握DSP处理器的汇编、C语言程序设计方法。
(3)掌握DSP的硬件访问。
二、实验原理及知识点
第一部分DSP实验箱简介与CCS
第二部分CCS软件安装
第三部分TDS510USB仿真器安装与CCS设置测试
三、实验内容及步骤
一、实验原理和方法
开发TMS320C6xxx应用系统一般需要以下几个调试工具来完成:
1.软件集成开发环境(CCS):
完成程序编译、目标文件产生、下载,进行程序和硬件的联合仿真调试。
2.仿真器:
实现硬件仿真调试时与硬件系统的通信、控制和读取硬件系统的状态和数据。
CCS通过工程来管理文件,一般包括以下几种文件:
1)源程序文件:
C语言或汇编语言文件(*.c或*.asm),所编写的代码都写在各个源文件中;包含了所有要实现功能的代码,是工程的核心。
2)头文件(*.h):
主要定义了芯片内部寄存器结构、中断服务程序等内容。
3)链接命令文件(*.cmd):
分配RAM空间,用来将下载到RAM中的程序进行调试,是因为DSP编译器编译结果是未定位的,DSP也没有相应系统来执行代码,DSP系统的配置需求也不尽相同,因此需要定义代码的存储位置。
4)库文件(*.lib,*.obj):
包含了寄存器的地址和对应标示符的定义,还包含标准C/C++运行支持的库函数。
二.汇编语言DSP程序设计实验
(一)实验原理与方法
1.汇编语言程序在执行时直接从用户指定入口开始。
2.由于CCS的代码链接器默认支持C语言,在编制汇编语言程序时,需要设置链接参数,选择非自动初始化,注明汇编程序的入口地址。
(二)实验步骤与内容
1.运行CCSSetup
连接实验箱与PC机,打开电源给实验箱供电,点击setupcodecomposerstudiov3.3,运行CCSSetup,设置CCS,就是建立CCS与用户的目标板或软仿真器之间的通信。
保存配置。
2.启动CCS
3.在C:
\CCStudio_v3.3\MyProjects下新建一个文件夹:
myasm。
创建工程
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)
点击菜单project->compilefile,可以对文件进行编译
再点击菜单Project->Build,建立目标文件
成功建立的文件应该是错误和警告都为0.
8.调用目标文件(调用编程可执行程序)
1)连接仿真器与目标板
点击:
Debug->connect,
连接成功后,CCS左下角有提示。
Connect连接之后,选择File->LoadProgram,选择\myasm\debug\myasm.out,点击Debug->Restart后PC此时指向0000000000000000地址。
9.调试
1)gotomain
2)设置断点
在需要设置断点的行前双击鼠标,则在行前出现红色的原点,表示设置了断点;若在已经设置了断点的行前双击鼠标,则可以取消该断点。
3)单步运行
用菜单debug->StepInto或F11可以单步运行。
10.观察
开启CPU寄存器观察窗口:
单击菜单ViewRegisterscore。
使用单步运行,查看相应寄存器的值的变化。
还可开启Watchwindow,Memory窗口,进行变量、存储空间的观察。
点击view->watchwindow,则打开观察窗口
11.退出CCS
三.C语言DSP程序设计实验
(一)实验原理与方法
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)方式下运行,选择实际的仿真器。
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
四、GPIO实验
(一)实验原理和方法
GPIO作为通用输入/输出接口,有着广泛的应用。
简单配置后,即可用来控制和
接口各种外设。
对于和别的管脚复用的GPIO,首先需要使能GPIO功能,然后配置成输入或输出
方向后,才能对其控制。
DM642DSP的McASP寄存器的AHCLKX引脚驱动DS6灯,PFUNC、PDIR、
PDOT如下表所示:
本实验中,使用了AHCLKX,对其置1或置0可以点亮或熄灭DS6灯。
其连接电路如下图所示:
(二)实验内容与步骤
1.运行CCSSetup,选择设置实际的实验室硬件仿真器,即platform选“TDS510USBPLUSEmulator”,Family选“C64xx”,availablefactoryboars选“C64xxRev1.1TDS510USBplusemulator-WintechDigital”
2.启动CCS
3.新建gpio文件夹,路径为:
C:
\CCStudio_v3.3\MyProjects\gpio,创建工程
建立工程gpio.pjt
4.准备
1)设置
Project-->BuildOptions-->Preprocessor,在includesearchpath中加入:
C:
\CCStudio_v3.3\MyProjects\gpio\gpio,在Pre-defineSymbols中加入:
_DEBUG;CHIP_DM642。
如图:
2)复制库文件
复制C:
\TS-DM64X\TS-DM64xexperimentccs3.3\TS-DM64x_examples\lib下的文件evmdm642bsl.lib到当前工程gpio目录下,并添加到工程中。
或者直接在工程的lib上点击添加C:
\TS-DM64X\TS-DM64xexperimentccs3.3\TS-DM64x_examples\lib下的库文件evmdm642bsl.lib到工程中。
5.输入程序
1)输入源程序gpio.c,选择File->New->SourceFile或使用工具条的快捷按钮,进入文件编辑窗口。
录入源程序:
#include
#include
#include
#include
#defineGPEN*(volatileunsignedint*)0x01b4c010//MCASPPFUNCRegister
#defineGPDIR*(volatileunsignedint*)0x01b4c014//MCASPPDIRRegister
#defineGPVAL*(volatileunsignedint*)0x01b4c018//MCASPPDOUTRegister
/**mcaspahclkx----->DS6**/
main()
{
unsignedinti;
EVMDM642_init();
/*----------初始化GPIO-------*/
GPEN=0x8000000;//使能
GPDIR=0x8000000;//设置输出
/*---------置MCASPPDOUTRegiste为0或1-----*/
GPVAL=0x00000;//设置GP0的值0,能够将DS6熄灭
for(i=0;i<0xfffff;i++){};
while
(1)
{
GPVAL=0x8000000;//点亮
for(i=0;i<0xffffff;i++){};//延时
GPVAL=0x00000;//熄灭
for(i=0;i<0xffffff;i++){};
};
}
2)选择File->New->SourceFile,新建包含文件evmdm642.h,其内容如下:
#ifndefEVMDM642_
#defineEVMDM642_
#ifdef__cplusplus
extern"C"{
#endif
#include
#include
#include
/*
*Note:
Bitdefinitionsforeachregisterfield
*needstobesuppliedherefortheCPLD
*andotherboardperiperals.
*/
/*Compatabilitydefinitions*/
#defineNULL0
/*CPLDaddressdefinitions*/
#defineEVMDM642_CPLD_BASE0x90080000
#defineEVMDM642_SYNC_BASE0xb0000000
#defineEVMDM642_FPGAFLASH_BASE0x90040000
#defineEVMDM642_FPGASDRAM_BASE0x80000000
/*CPLDRegisterIndices*/
/*#defineEVMDM642_OSDCTRL0x10
#defineEVMDM642_THRESHLSB0x11
#defineEVMDM642_THRESHMSB0x12
#defineEVMDM642_ISR0x13
#defineEVMDM642_IER0x14
#defineEVMDM642_GPIODIR0x15
#defineEVMDM642_GPIOSTAT0x16
#defineEVMDM642_LED0x17
#defineEVMDM642_FLASHPAGE0x18
#defineEVMDM642_REVISION0x1F*/
#defineEVMDM642_LED10x28//DS1~3addresswhenusingEPLD
#defineEVMDM642_LED40x38//DS4addresswhenusingEPLD
/*FPGAdefinitions*/
#defineEVMDM642_FPGALEN0x393d8
/*I2Chandle*/
externI2C_HandleEVMDM642_I2C_hI2C;
/*GPIOhandle*/
externGPIO_HandleEVMDM642_GPIO_hGPIO;
/*InitializeallboardAPIs*/
voidEVMDM642_init();
/*Readan8-bitvaluefromaCPLDregister*/
Uint8EVMDM642_rget(Int16regnum);
/*Writean8-bitvaluetoaCPLDregister*/
voidEVMDM642_rset(Int16regnum,Uint8regval);
/*Spininadelayloopfordelayiterations*/
voidEVMDM642_wait(Uint32delay);
/*Spininadelayloopfordelaymicroseconds*/
voidEVMDM642_waitusec(Uint32delay);
/*SendaconfigurationfiletotheFPGA*/
voidEVMDM642_loadFpga(Uint32fpgaaddr);
/*Initializekeyboard*/
intkeyboard_init(void);
#ifdef__cplusplus
}
#endif
#endif
保存到工程gpio.prt所在文件夹下,名为evmdm642.h。
3)输入链接命令文件
点击“File/New/SourceFile”或使用工具条的快捷按钮,进入文件编辑窗口。
输入链接命令文件内容:
/*
*Copyright2001byTexasInstrumentsIncorporated.
*Allrightsreserved.PropertyofTexasInstrumentsIncorporated.
*Restrictedrightstouse,duplicateordisclosethiscodeare
*grantedthroughcontract.
*/
/*-l..\lib\rts6400.lib*/
-lcslDM642.lib
-lrts6400.lib
-stack0x400
-heap0x400
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
}
保存源程序到工程目录下,命名为gpio.cmd。
6.向工程添加文件
将源程序gpio.C,链接命令文件gpio.cmd,evmdm642.h加入工程gpio.pjt。
7.编译源文件、建立目标文件(.out),连接connect
产生gpio.out
8.调用编程可执行程序
选择File->LoadProgram,选择\gpio\debug\gpio.out。
9.调试
用菜单debug->StepInto或F11可以单步运行。
10.观察实验结果
能够点亮火熄灭DS6发光二极管。
11.退出CCS
四、实验仪器与软件
(1)PC计算机
(2)多媒体通信实验箱
(3)DSP仿真器
(4)音视频连线、耳麦
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CCS 程序设计 DSP 硬件 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)