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

下载本文档

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

文档简介

1、实验项目5、CCS程序设计与DSP硬件实验一、实验目的(1)掌握CCS环境下程序编辑、编译、运行、下载、调试的过程。(2)掌握DSP处理器的汇编、C语言程序设计方法。(3)掌握DSP的硬件访问。二、实验原理及知识点第一部分 DSP 实验箱简介与 CCS 第二部分 CCS 软件安装第三部分TDS510USB仿真器安装与CCS设置测试三、实验内容及步骤一、实验原理和方法开发 TMS320C6xxx 应用系统一般需要以下几个调试工具来完成:1软件集成开发环境(CCS :完成程序编译、目标文件产生、下载,进行程序和硬件的联 合仿真调试。2仿真器:实现硬件仿真调试时与硬件系统的通信、控制和读取硬件系统的

2、状态和数据。CCS 通过工程来管理文件,一般包括以下几种文件:1)源程序文件:C语言或汇编语言文件(*.c或*.asm ),所编写的代码都写在各个源文 件中;包含了所有要实现功能的代码,是工程的核心。2)头文件(*.h ):主要定义了芯片内部寄存器结构、中断服务程序等内容。3)链接命令文件(*.cmd ):分配RAM空间,用来将下载到 RAM中的程序进行调试,是因 为DSP编译器编译结果是未定位的, DSP也没有相应系统来执行代码, DSP系统的配置需 求也不尽相同,因此需要定义代码的存储位置。4)库文件(*.lib,*.obj ):包含了寄存器的地址和对应标示符的定义,还包含标准C/C+运行

3、支持的库函数。二. 汇编语言DSP程序设计实验(一)实验原理与方法1. 汇编语言程序在执行时直接从用户指定入口开始。2. 由于CCS的代码链接器默认支持 C语言,在编制汇编语言程序时,需要设置链接参数, 选择非自动初始化,注明汇编程序的入口地址。(二)实验步骤与内容1. 运行 CCS Setup连接实验箱与PC机,打开电源给实验箱供电, 点击setup code composer studio v3.3,运行CCS Setup设置CCS就是建立CCS!用户的目标板或软仿真器之间的通信。 in fdii ;-“ *lp Fb-aij Hu La M!# -U Ji.srhwLh- Ein?ip

4、e=i 二二 -h- r F r rWik Rtf 1 I TLpWIWjMH PLLH EWL*tO .伸EiCOHi&l吟.JrWU*i SLH:1* 玛 F -HT|-:-s 4n* : T- 1-! fa k-rfi - -*Ja保存配置。2. 启动CCS3. 在 C:CCStudio_v3.3MyProjects下新建一个文件夹:myasm。创建工程盹帕畀 Wit iKfUitl Uala%rf/UIM2 JhMIZ IliAtkflfirli4r twarf 帆喊这Xfl虔仙1 Vl E TBifl社 0L (kl|lfe ft. 1*5 JSWKS lli|n |dj砂-电*(h

5、mJhj k-iril ItWilr 费J H了3f CufirdJ畀匸:5|. nilste swla nnPro iect Creation4. 设置工程编译选项选择 CCS 菜单 project-Build Options,点击 Linker 页,设置 Autoinit Model 为: No Autoinitialization( 这点是与 C 语言程序设计不同 )注意:若省略这一步,也不影响程序建立,只不过会出现警告:warning: entry pointsymbol _c_in tOO un defi ned5. 输入源程序1)输入汇编源程序选择File-New-Source F

6、ile或使用工具条的快捷按钮,进入文件编辑窗口。录入汇编源程序: *5;输入数据存放在:x,y;本例程完成运算:x+y;结果存放:z; 其中:x,y,z 都占32位 *5bss x, 4;排版要空一格,下同.bss y, 4.bss 乙 4;.def start;.def x, y, z.textsta比;排版要顶格mvkl x, A0;立即寻址,将变量x的值放到寄存器A0mvkh x, A0;立即寻址,将变量x的值放到寄存器A0mvkl y, BO;立即寻址,将变量y的值放到寄存器B0mvkh y, BO;立即寻址,将变量y的值放到寄存器B0mvkl 乙 B2;立即寻址,将变量z的值放到寄存

7、器B2mvkh 乙 B2;立即寻址,将变量z的值放到寄存器B2mvkl 0x010a0f2a, A4; 给 A4 低 16 位赋值mvkh 0x010a0f2a, A4;给A4高16位赋值ArdUti Sill al!1.爲活St Uilli71T?mvkl 0x1ab31211, B4; 给 B4 低 16 位赋值mvkh 0x1ab31211, B4; 给 B4 高 16 位赋值stw A4, *A0;A4 存入 A0所指地址单元nop 5stw B4, *B0;B4 存入B0所指地址单元nop 5ldw *A0, B1 ; 将A0寻址单元的值读入 B1nop 5;避免流水线冲突ldw *

8、B0, A1; 将B0寻址单元的值读入 A1 nop 5add A1, B1, A2 ;加法运算:A1+B1-A2stw A2, *B2 ; 将A2的值存入B2所指地址单元 b $; 一直在这里跳转,注意:b后有一个空格注意:汇编语句前需要留出空格,标号顶格输入,否则编译有错误提示。 保存源程序到工程目录下,保存文件为:myasm.asmd启X |、电證哉 鼻k為臥”,*?兰|*总|左忑,*%0!. pj 1二丘订72J 苗西巴|窗对的 a 7 BICJZ dn划氐為 lilt ti* IrTjici L-buc 冬 Mm rtcflli tr.lt勺nig 訪卄O4+ 花L ilestl 孟

9、科q pjl C*h|t|山诲*;金龜共宰一培.T冋.hnw y.P Tb册z-:.-aerf H” k w.xn屮: :淸軀莓孑轄nkh x. AO i .陛Fj的転却垂?鬲MBtv-kl y, EOjjtSFJ, 級野 隔戦盲義垂理 nrwkb 丁”刖”玄申导基 4r盘邃家至峑存雀网 HflFkl =,即皿娜刁魁,祁更号工的裁悬拿第藩器 ittvkb z, B2jJtF#z禅变勒 科爲咖事砂皿 mvkl QiCIlIkDFEj A斗漓M 袪壬強蛍信TTn-kh i010ji0f21.触一座加奉北也.洱亡 iftvkl Oilahl?!日阳西*#疵瞒创Ef洁 mvkh nz.-.h37 目:

10、;.冃几令二Stw K4” *thd煜A風瘁S遛逑車元nop 5w RA, IIO. A-.;,. . i 跖疽.诉了心.T7nop Sldw -Att, Bl ;胳=#蛰学走的抵读AF 心5灌处澆我册核加 吵仇氣1;輻凹寻船单元的建就 nop Sarid Al, B U A2虫送逞黛EUU m饰釈.B2 ;转入祖毎农比曲虧播堆赴学元 b $L宜在违畢豔暮戢弗由的h忙驴苗2)输入链接命令文件点击“File/New/Source File或使用工具条的快捷按钮,进入文件编辑窗口。输入链接命令文件内容:-stack 400-heap 400 MEMORYISRAMorigin=0x0 , len=

11、0x1000000SECTIONS 保存源程序到工程目录下,命名为 myasm.cmd6.将上述编辑的源程序 myasm.asm和链接命令文件 myasm.cmd力口入工程 myasm.pjt。vectors text ISRAM ISRAMbss ISRAMcin it ISRAMconst ISRAMfar ISRAMstack ISRAMcio ISRAMsysmem ISRAM7.编译源文件、建立目标文件(.out)点击菜单project-compile file,可以对文件进行编译 再点击菜单Project-Build,建立目标文件 成功建立的文件应该是错误和警告都为0.&调用目标文

12、件(调用编程可执行程序)1)连接仿真器与目标板点击:Debug-c onn ect,1 IL Ltioci r-tof :LeIdoIsJS7/BLJS-.ions. ”Br e skc at s .A3 3tnULT|S,3cc: $丈叱ppm直k5t科 Lnt?Fl!)Step OverFWStep OutShifl+TlRn HiltFfShi 呻 F5虹:吐电*眄Rg Ffc qf匕iL*J写Lar f M4F KnCbrLtSMXt+JSCtrLWLC弓曾 fC- 10 Cjr R9TCUL*Shift+?10Rm 鼻 t j| F *C IrllrSliift+?5HUCIItL+

13、RMultiple OpHraiiQmAd.T-Mi?*d ntttiLt4E0t CT 11Ctrl*-!ftiEtt En-dtrCurL+UhifR* HLoad Program, 选择 myasmdebugmyasm.out ,点击Sfifb 呂!rl5!Debug-Restart 后PC此时指向 00000000 00000000 地址。JdLi r ynEwlebtieflD吃谆玉口总 匸声亡住 Aemijr nt eL7?汕i KF* V 土. 写吐 UlC Ulf 10Ctrl+5hI.14L 一n$14 ad Fro eymCtrl+Shii ft+Lt 1ftRL -d i

14、dl 三tmb 工 9-yhl44.d Srnb-lsf-q;崔DJ* 9l1 FtVLG-a b V.岂产成w Flls .M?ir l n .Ct14FSxkur c b 7 il : ke ujt JTlLu 弓1rnbXiStep Into或F11可以单步运行。* I1! *11 . j n I *-! fllw -! r1 -i 1*啊.IHP- |7_ 衣世 fcl口韶 a 5 m 3 S d从也咚P皈肚 弄!b-ud r疽m就卫AsrNar E 心宀占|*|厲JIWAfJMJeel上監f rr L:L r f-10. 观察开启CPU寄存器观察窗口:单击菜单View Registe

15、rs core。使用单步运行,查看相应寄存器的值的变化。还可开启Watch window,Memory窗口,进行变量、存储空间的观察。点击view-watch window,则打开观察窗口0* RS匪 E- 4rf 砲YfLlii JriJl JSTiITUT f-Kfar tH.说Jr.fIKBU E FUI-i 豊艺B 二二-ml: 3曰Irff型事即倉rzfRil 宁-T!话豐 -n D D- U ? Ellrh A 0 B PLBollit.lllvktllJAtlll&tBmkElfil p #-rA,ul1,JlzdJJJ,JJiJ牢 - “!:ncmaii QRLUTB II a

16、nww fjjjnm4dv*:i- Etafauj =|iyHk.idi Cfc XUdiq_*)B CbCD LillMails Mil cJAk1 $ -f|Li.fah3i4_. |cLau bLa ulftj :M =F 導 Ijnw TALBonnncnAllABr:iZ JIJUIDBSULjrlAl口阿畑A4DliADF2Ji*D09ODUCBMcaaoDdOhAlD0ijDi.iDADQVZiDnOD:阳DQOODWDIjhidnaoLDnnoD. hQ* IM*-i- trI ” “T ar H ii x n + n H A 4fennr i*il Ir4 1ll4 Ihf

17、FMiAmvXaiin XAm : f! * yFlnT1mew Mb4J-Wlh JHJSllABtiajfa A4. rU HCabSUll. Bl; vkh H.L*b)JiJLL b4*-* Ik. m4 4 口 -vxfar.!. TvvaM+it I-!l 甲 il - J harUjULHUfR J j.* Vi -th d innm-1:FITJ15B*3QDUQCTCT訓02rPFIVTiRTHDQDClKQi巧rPCTMM9MOQO11. 退出CCS三. C语言DSP程序设计实验(一)实验原理与方法1. 标准C语言程序CCS支持使用标准 C语言开发DSP应用程序。C源程序文

18、件名的后缀应为.c。CCS在编译标准 C语言程序时,首先将其编译成相应汇编语言程序,再进一步编译 成目标DSP的可执行代码。最后生成的是COFF格式的可下载到 DSP中运行的文件,其文件名后缀为.out o由于使用C语言编制程序,其中调用的标准C的库函数由专门的库提供,在编译链接时编译系统还负责构建 C运行环境。所以用户工程中需要注明使用C的支持库。2. 命令文件的作用命令文件(文件名后缀为cmd)为链接程序提供程序和数据在具体DSP硬件中的位置分配信息。通过编制命令文件,我们可以将某些特定的数据或程序按照我们的意图放置在DSP所管理的内存中。命令文件也为链接程序提供了DSP外扩存储器的描述。

19、在程序中使用CMD文件描述硬件存储区,可以只说明使用部分,但只要是说明的,必须和硬件匹 配,也就是只要说明的存储区必须是存在的和可用的。3. 内存映射(map)文件的作用为了更精确地使用ROM空间,我们就需要知道程序的大小和位置,通过建立目标程序的map文件可以了解 DSP代码的确切信息。当需要更改程序和数据的大小和位置时,就要适当修改cmd文件和源程序,再重新生成 map文件来观察结果。另外,通过观察map 文件,可以掌握 DSP存储器的使用和利用情况,以便进行存储器方面的优化工作。(二)实验步骤与内容1. 准备将DS实验设备与硬件仿真器相连接 ,连接电源线,打开电源开关。2. 设置CCS在

20、硬件仿真(Emulator)方式下运行,选择实际的仿真器。3. 启动CCS环境4. 创建工程。选择菜单Project-New,创建ctest.pjt 工程5建立源文件1)建立C语言源程序文件。选择FILE-New-Source,输入下列C代码,保存到文件ctest.c 。int sel_max(i nt a, int b);void mai n()int x;int y;int乙x = 21;y = 98;while(1)z=sel_max(x,y); / 函数调用int sel_max(i nt a, int b)return( (a=b)?a:b);2)建立链接命令文件点击File/New

21、/Source File或使用工具条的快捷按钮,打开编辑窗,建立ctest.cmd文件,内容如下:-stack 400-heap 400MEMORYISRAM: origin = 0x0 , len= 0x1000000SECTIONS.vectors.text.bss.cinit.const.far.stack.cio.sysmem ISRAM ISRAM ISRAM ISRAM ISRAM ISRAM ISRAM ISRAM ISRAM6. 工程添加文件点击菜单Project-Add Files to project,分别加入ctest.c,ctest.cmd文件,再向工程添加C:CCSt

22、udio_v3.3C6000cgtoolslib 下的文件 rts6400.lib (这点与汇编程序设计不同)(注意:若不添加,则链接时会出现警告: warning: entry point symbol _c_int00 undefined )* /DMS42 Pcvice Cycle Accurate Si Eilw di t Jfi * ojErrt Qebu EL Qp轴苗(3凰3固画网dif*l?Files_J GEL files| Proj ect s-ctest. pj t (DeBug)J Depenlent Projectz j Do cuinents u DST/BIOS

23、ConfigFilss| -j Induie-_i Li*brarisJ) rt,5&40d. libI-曰 SQUtCt ;t ctest. e 圉 ctest. cmdFile View Bookmarks7 编译、建立目标文件产生 ctest.out!Dwicb y - Code CcjBitsMr Studin - Ld estr cl 匕乂q# 丫辻十古啦皿 Idhac SET. 11 lrri Frofilt IeIs 處胡S3iftlj建宙-1 圉 &嘲L盲猛脅冊%Q W曲层SJ巨回11.TF F爼T Ll GEL f il.s- eittfel |hjl_J Pufl*ajf

24、f1D电b ) 7a :b):点击:Debug-c onnect.| GEL QptionProfileTo als IKP/BTDSExcftpti ons. _Breakpoints.As sSour ceSt eppingStep IntoFllSttp OvrF10Step OutShi f t+Fl 1Runf5HaltShift+F5AniimataA1V+F5Rua氐电葩Ctrl+F5Low Power RunCtrl+Ski ft+F5Kw to CursorCt rl+noStl PC to CursorCtrl+Shift+FIQflestartCtrl+SKi ft+F5

25、MainCtrl-HMNultipl* Optratiflii.Advwcgd RgsttskRtst CPUCtrl+RReset EmulatorCtrl+Shift+R“ Malt on RE4tConntctAlt+CFestoire Dtbug St4tt*Thread Level DebuggingEeaJ_tiime ModeRudeMode7 Flush ipcline on, Halt,连接成功后,CCS左下角有提示。2) 选择 File-Load Program, 选择 ctestdebugctest.out 。 疋冉 1 1 1|* V ilr ,-if is- #rha

26、i| ij fal/i J 1 1Mvi -?!1 1FB1 1If: hl口 EX* -bn *in EvJro. lbN 至 W-iim tJi igrww厝r Ml皿- * V* t +叩* Sd3凸已i rt 止J9 * 0 9 4*Ziair d 1 N 二1 1 ff 时LllLO亦-I町n?n;nnWIEDtlUHl U.吐*L . J.L _71 L山心即 JDomer也 DoixxiaanJ J 1J. . _L_ .PTtiMQQU 叮 HFtHF: 叮刚Q曲 ftijidaoj.3 _ -Fin蜀9调试1)执行至C语言主程序入口 点击 Debug-go main。2)设置

27、断点在需要设置断点的行前双击鼠标,则在行前出现红色的原点,表示设置了断点;若在已经设置了断点的行前双击鼠标,则可以取消该断点。3)单步运行用菜单debug-Step Into或F11可以单步运行。4)全速运行用菜单debug-Run或F5可以全速运行。10. 观察开启CPU寄存器观察窗口:单击菜单View Registers core。使用单步运行,查看相应寄存器的值的变化。还可开启Watch window,Memory窗口,进行变量、存储空间的观察11. 关闭工程点击 Project-Close。12. 退出CCS 四、GPI0实验(一)实验原理和方法GPIO作为通用输入/输出接口,有着广泛

28、的应用。简单配置后,即可用来控制和 接口各种外设。对于和别的管脚复用的 GPIO,首先需要使能GPIO功能,然后配置成输入或输出 方向后,才能对其控制。DM642 DSP 的 McASP 寄存器的 AHCLKX 弓I脚驱动 DS6 灯,PFUNC、PDIR、 PDOT如下表所示:FibU 1-31 Mr.ASPO Cxtr抓HFE AnriR=S5 AAMCibAr.WJlbTMhim cumPiDUfamtF匚ivaktaryjIuoOiQlOll1 *丹oincixic-DI関匸EK)PFUNC】1出1即4HJIH r 4 rsdhcsi tra s|rrFEKXT本实验中,使用了 AHC

29、LKX,对其置1或置0可以点亮或熄灭DS6灯。其连接电路如 F图所示:(二)实验内容与步骤1. 运行 CCS Setup,选择设置实际的实验室硬件仿真器,即platform 选“ TDS510USB PLUSEmulator ”,Family 选“ C64xx, available factory boars 选“ C64xx Rev 1.1 TDS510USB plus emulator-WintechDigital ”2. 启动CCS3. 新建 gpio 文件夹,路径为:C:CCStudio_v3.3MyProjectsgpio,创建工程建立工程 gpio.pjt4准备1)设置Projec

30、t - Build Opti ons - Preprocessor,在 in elude search path中加入:C:CCStudio_v3.3MyProjectsgpiogpio,在 Pre-define Symbols 中加入: _DEBUG;CHIP_DM642如图:2)复制库文件复制 C: TS-DM64X TS-DM64xexperimentccs3.3 TS-DM64x_examples lib下的文件 evmdm642bsl.lib到当前工程gpio目录下,并添加到工程中。或者直接在工程的lib上点击添加C:TS-DM64X TS-DM64xexperimentccs3.3

31、 TS-DM64x_examples lib 下的库文件 evmdm642bsl.lib 到工程中。* O CT IO3 sirii*r h tJerlee i血汨心S cfiwj x_e n4_!nc-4-5p. IM 逼上円血碍*_ i,苗九心 詞 Hjjgjgja 兰|2_ j . hivnii 也电丈神爰型(I . m iiifs r* *1FT笄矿 二IJUlrt忌助New-Source File或使用工具条的快捷按钮,进入 文件编辑窗口。录入源程序:#in elude #i nclude #in clude#i nclude #defi ne GPEN#defi ne GPDIR*

32、(volatile un sig ned int *)0x01b4c010 / MCASP PFUNC Register*(volatile un sig ned int *)0x01b4c014 / MCASP PDIR Register#defi ne GPVAL*(volatile un sig ned int *)0x01b4c018 / MCASP PDOUT Register/*mcasp ahclkxDS6 */main ()un sig ned int i;EVMDM642_i nit();/* 初始化 GPIO*/GPEN = 0x8000000; / 使能GPDIR = 0

33、x8000000;/ 设置输出GPVAL = 0x00000;/设置GP0的值0,能够将DS6熄灭for (i = 0; i 0xfffff; i+);while(1)GPVAL=0x8000000; /点亮/* 置 MCASP PDOUT Register 0 或 1 -*/for(i = 0; i 0xffffff; i+); / GPVAL = 0x00000; / 熄灭延时for(i = 0; i New-Source File,新建包含文件 evmdm642.h,其内容如下:#ifndef EVMDM642_#defi ne EVMDM642_ #ifdef _cplusplus e

34、xtern C #en dif#in clude #in clude #i nclude /* Note: Bit defi niti ons for each register field* n eeds to be supplied here for the CPLD* and other board periperals.*/* Compatability defi niti ons */#defi ne NULL0/* CPLD address defi ni tio ns */#defi ne EVMDM642_CPLD_BASE0x90080000#defi ne EVMDM642

35、_SYNC_BASE0xb0000000#defi ne EVMDM642_FPGAFLASH_BASE 0x90040000#defi ne EVMDM642_FPGASDRAM_BASE 0x80000000/* CPLD Register In dices */*#defi ne EVMDM642_OSDCTRL0x10#defi ne EVMDM642_THRESHLSB 0x11#defi ne EVMDM642_THRESHMSB 0x12#defi ne EVMDM642_ISR0x13#defi ne EVMDM642_IER0x14#define EVMDM642 GPIOD

36、IR 0x15#define EVMDM642_GPIOSTAT 0x16#define EVMDM642_LED 0x17#define EVMDM642_FLASHPAGE 0x18#define EVMDM642_REVISION 0x1F*/#define EVMDM642_LED1 0x28 / DS13 address when using EPLD#define EVMDM642_LED4 0x38 / DS4 address when using EPLD/* FPGA definitions */#define EVMDM642_FPGALEN 0x393d8/* I2C h

37、andle */extern I2C_Handle EVMDM642_I2C_hI2C;/* GPIO handle */extern GPIO_Handle EVMDM642_GPIO_hGPIO;/* Initialize all board APIs */void EVMDM642_init();/* Read an 8-bit value from a CPLD register */Uint8 EVMDM642_rget(Int16 regnum);/* Write an 8-bit value to a CPLD register */void EVMDM642_rset(Int1

38、6 regnum, Uint8 regval);/* Spin in a delay loop for delay iterations */void EVMDM642_wait(Uint32 delay);/* Spin in a delay loop for delay microseconds */void EVMDM642_waitusec(Uint32 delay);/* Send a configuration file to the FPGA */void EVMDM642_loadFpga(Uint32 fpgaaddr);/* Initialize keyboard */int keyboard_init(void);#ifdef _cplusplus#endif#endif保存到工程 gpio.prt 所在文件夹下,名为 evmdm642.h。3)输入 链接命令文件点击“File/New/Source File或使用工

温馨提示

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

评论

0/150

提交评论