CCS程序设计与DSP硬件实验_第1页
CCS程序设计与DSP硬件实验_第2页
CCS程序设计与DSP硬件实验_第3页
CCS程序设计与DSP硬件实验_第4页
CCS程序设计与DSP硬件实验_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验项目5、CCS程序设计与DSP硬件实验一、实验目的1)掌握CCS环境下程序编写、编译、运转、下载、调试的过程。2)掌握DSP办理器的汇编、C语言程序设计方法。3)掌握DSP的硬件接见。二、实验原理及知识点第一部分DSP实验箱简介与CCS第二部分CCS软件安装第三部分TDS510USB仿真器安装与CCS设置测试三、实验内容及步骤一、实验原理和方法开发TMS320C6xxx应用系一致般需要以下几个调试工具来达成:1.软件集成开发环境(CCS):达成程序编译、目标文件产生、下载,进行程序和硬件的结合仿真调试。2.仿真器:实现硬件仿真调试时与硬件系统的通讯、控制和读取硬件系统的状态和数据。CCS经过工程来管理文件,一般包含以下几种文件:源程序言件:C语言或汇编语言文件(*.c或*.asm),所编写的代码都写在各个源文件中;包含了全部要实现功能的代码,是工程的核心。头文件(*.h):主要定义了芯片内部寄存器构造、中止服务程序等内容。3)链接命令文件(*.cmd):分派RAM空间,用来将下载到RAM中的程序进行调试,是因为DSP编译器编译结果是不决位的,DSP也没有相应系统来履行代码,DSP系统的配置需求也不尽同样,所以需要定义代码的储存地点。4)库文件(*.lib,*.obj):包含了寄存器的地点和对应标示符的定义,还包含标准C/C++运转支持的库函数。二.汇编语言DSP程序设计实验(一)实验原理与方法汇编语言程序在履行时直接从用户指定进口开始。因为CCS的代码链接器默认支持C语言,在编制汇编语言程序时,需要设置链接参数,选择非自动初始化,注明汇编程序的进口地点。(二)实验步骤与内容运转CCSSetup连结实验箱与PC机,翻开电源给实验箱供电,点击setupcodecomposerstudiov3.3,运转CCSSetup,设置CCS,就是成立CCS与用户的目标板或软仿真器之间的通讯。保留配置。2.启动CCS3.在C:\CCStudio_v3.3\MyProjects下新建一个文件夹:myasm。创立工程4.设置工程编译选项选择CCS菜单project->BuildOptions,点击Linker页,设置AutoinitModel为:NoAutoinitialization(这点是与C语言程序设计不一样)注意:若省略这一步,也不影响程序成立,只可是会出现警示:warning:entrypointsymbol_c_int00undefined输入源程序1)输入汇编源程序选择File->New->SourceFile或使用工具条的快捷按钮,进入文件编写窗口。录入汇编源程序:;**********************************输入数据寄存在:x,y本例程达成运算:x+y结果寄存:z;此中:x,y,z都占32位;*********************************.bssx,4;排版要空一格,下同.bssy,4.bssz,4;.defstart;.defx,y,z.textstart:;排版要顶格mvklx,A0;立刻寻址,将变量x的值放到寄存器A0mvkhx,A0;立刻寻址,将变量x的值放到寄存器A0mvkly,B0;立刻寻址,将变量y的值放到寄存器B0mvkhy,B0;立刻寻址,将变量y的值放到寄存器B0mvklz,B2;立刻寻址,将变量z的值放到寄存器B2mvkhz,B2;立刻寻址,将变量z的值放到寄存器B2mvkl0x010a0f2a,A4;给A4低16位赋值mvkh0x010a0f2a,A4;给A4高16位赋值mvkl0x1ab31211,B4;给B4低16位赋值mvkh0x1ab31211,B4;给B4高16位赋值stwA4,*A0;A4存入A0所指地点单元nop5stwB4,*B0;B4存入B0所指地点单元nop5ldw*A0,B1;将A0寻址单元的值读入B1nop5;防止流水线矛盾ldw*B0,A1;将B0寻址单元的值读入A1nop5addA1,B1,A2;加法运算:A1+B1-->A2stwA2,*B2;将A2的值存入B2所指地点单元b$;向来在这里跳转,注意:b后有一个空格注意:汇编语句前需要留出空格,标号顶格输入,不然编译有错误提示。保留源程序到工程目录下,保留文件为:myasm.asm2)输入链接命令文件点击“File/New/SourceFile或使”用工具条的快捷按钮,进入文件编写窗口。输入链接命令文件内容:-stack400-heap400MEMORY{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)gotomain2)设置断点在需要设置断点的行前双击鼠标,则内行前出现红色的原点,表示设置了断点;若在已经设置了断点的行前双击鼠标,则能够撤消该断点。3)单步运转用菜单debug->StepInto或F11能够单步运转。察看开启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文件描绘硬件储存区,能够只说明使用部分,但只假如说明的,一定和硬件般配,也就是只需说明的储存区一定是存在的和可用的。内存映照(map)文件的作用为了更精准地使用ROM空间,我们就需要知道程序的大小和地点,经过成立目标程序的map文件能够认识DSP代码确实切信息。当需要改正程序和数据的大小和地点时,就要适合改正cmd文件和源程序,再从头生成map文件来察看结果。此外,经过察看map文件,能够掌握DSP储存器的使用和利用状况,以便进行储存器方面的优化工作。(二)实验步骤与内容准备将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-heap400MEMORY{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.out8.调用编程可履行程序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能够全速运转。察看开启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”启动CCS新建gpio文件夹,路径为:C:\CCStudio_v3.3\MyProjects\gpio,创立工程成立工程gpio.pjt4.准备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到工程中。输入程序1)输入源程序gpio.c,选择File->New->SourceFile或使用工具条的快捷按钮,进入文件编写窗口。录入源程序:#include<std.h>#include<gio.h>#include<csl.h>#include<evmdm642.h>#defineGPEN#defineGPDIR#defineGPVAL

*(volatileunsignedint*)0x01b4c010//MCASPPFUNCRegister*(volatileunsignedint*)0x01b4c014//MCASPPDIRRegister*(volatileunsignedint*)0x01b4c018//MCASPPDOUTRegister/**mcaspahclkx>DS6**/main( ){unsignedinti;EVMDM642_init( );/*初始化GPEN=0x8000000;//GPDIR=0x8000000;

GPIO*/使能//设置输出/*置MCASPPDOUTRegiste为GPVAL=0x00000;//for(i=0;i<0xfffff;i++){};

0或

1*/设置GP0的值

0,能够将

DS6熄灭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__cplusplusextern"C"{#endif#include<csl.h>#include<csl_i2c.h>#include<csl_gpio.h>/*Note:BitdefinitionsforeachregisterfieldneedstobesuppliedherefortheCPLDandotherboardperiperals.*//*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__

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论