CCS程序设计与DSP硬件实验Word文件下载.docx
- 文档编号:20923366
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:26
- 大小:765.26KB
CCS程序设计与DSP硬件实验Word文件下载.docx
《CCS程序设计与DSP硬件实验Word文件下载.docx》由会员分享,可在线阅读,更多相关《CCS程序设计与DSP硬件实验Word文件下载.docx(26页珍藏版)》请在冰豆网上搜索。
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;
mvkly,B0;
立即寻址,将变量y的值放到寄存器B0
mvkhy,B0;
立即寻址,将变量y的值放到寄存器B0
mvklz,B2;
立即寻址,将变量z的值放到寄存器B2
mvkhz,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
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>
.bss>
.cinit>
.const>
.far>
.stack>
.cio>
.sysmem>
保存源程序到工程目录下,命名为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->
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文件,内容如下:
6.工程添加文件
点击菜单Project->
AddFilestoproject,分别加入ctest.c,ctest.cmd文件,再向工程添加C:
\CCStudio_v3.3\C6000\cgtools\lib下的文件rts6400.lib(这点与汇编程序设计不同)(注意:
若不添加,则链接时会出现警告:
entrypointsymbol_c_int00undefined)
7.编译、建立目标文件
产生ctest.out
8.调用编程可执行程序
1)连接仿真器与目标板
2)选择File->
LoadProgram,选择\ctest\debug\ctest.out。
1)执行至C语言主程序入口
点击Debug->
gomain。
用菜单debug->
4)全速运行
Run或F5可以全速运行。
还可开启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”
3.新建gpio文件夹,路径为:
C:
\CCStudio_v3.3\MyProjects\gpio,创建工程
建立工程gpio.pjt
4.准备
1)设置
Project-->
BuildOptions-->
Preprocessor,在includesearchpath中加入:
\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->
录入源程序:
#include<
std.h>
gio.h>
#include<
csl.h>
evmdm642.h>
#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++){};
GPVAL=0x8000000;
//点亮
for(i=0;
0xffffff;
//延时
GPVAL=0x00000;
//熄灭
};
SourceFile,新建包含文件evmdm642.h,其内容如下:
#ifndefEVMDM642_
#defineEVMDM642_
#ifdef__cplusplus
extern"
C"
#endif
csl_i2c.h>
csl_gpio.h>
/*
*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);
保存到工程gpio.prt所在文件夹下,名为evmdm642.h。
3)输入链接命令文件
*Copyright2001byTexasInstrumentsIncorporated.
*Allrightsreserved.PropertyofTexasInstrumentsIncorporated.
*Restrictedrightstouse,duplicateordisclosethiscodeare
*grantedthroughcontract.
/*-l..\lib\rts6400.lib*/
-lcslDM642.lib
-lrts6400.lib
-stack0x400
-heap0x400
保存源程序到工程目录下,命名为gpio.cmd。
6.向工程添加文件
将源程序gpio.C,链接命令文件gpio.cmd,evmdm642.h加入工程gpio.pjt。
7.编译源文件、建立目标文件(.out),连接connect
产生gpio.out
8.调用编程可执行程序
LoadProgram,选择\gpio\debug\gpio.out。
10.观察实验结果
能够点亮火熄灭DS6发光二极管。
四、实验仪器与软件
(1)PC计算机
(2)多媒体通信实验箱
(3)DSP仿真器
(4)音视频连线、耳麦
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CCS 程序设计 DSP 硬件 实验