专题三--dsp的开发环境与工具-v资料.ppt
《专题三--dsp的开发环境与工具-v资料.ppt》由会员分享,可在线阅读,更多相关《专题三--dsp的开发环境与工具-v资料.ppt(69页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、专题三专题三-DSP-DSP的开发环境的开发环境与工具与工具-v2016-v2016资料资料DSP开发环境和工具的重要性开发环境和工具的重要性u如何提高开发速度,降低开发难度,是如何提高开发速度,降低开发难度,是所有开发者所共同关心的。所有开发者所共同关心的。uDSPDSP的硬软件开发环境如何,开发工具的的硬软件开发环境如何,开发工具的功能是否丰富,使用是否方便,其所得功能是否丰富,使用是否方便,其所得结果的效果怎样,等等,已经成为该结果的效果怎样,等等,已经成为该DSPDSP是否为用户所接受、从而得到推广使用是否为用户所接受、从而得到推广使用得重要指标之一。得重要指标之一。DSP的开发环境和
2、工具的开发环境和工具u集成开发环境集成开发环境CCS(编译器,连接(编译器,连接器,优化器,优化C编译器,转换工具等)编译器,转换工具等)uCMD内存定位文件内存定位文件uDSP/BIOSu实时操作系统实时操作系统u其它工具:其它工具:C6Run,C6Accel,C6Flo,XDC等工具等工具DSP开开发发流流程程图图每个每个DSP系列都提供代码生成工具系列都提供代码生成工具uC编译器编译器(C compiler):将将C源程序代码编译源程序代码编译成为成为320系列对应汇编语言源代码。编译系列对应汇编语言源代码。编译包中包括一个包中包括一个分析器分析器、一个、一个优化器优化器(optimiz
3、er)和一个内部列表公用程序和一个内部列表公用程序(interlist utility)等)等。u汇编器汇编器(assembler):将汇编语言源文件转:将汇编语言源文件转变为基于公用目标文件格式(变为基于公用目标文件格式(COFF)的)的机器语言目标文件。机器语言目标文件。每个每个DSP系列都提供代码生成工具系列都提供代码生成工具u连接器(连接器(linker):将目标文件连接起来:将目标文件连接起来产生一个可执行模块。它能调整并解决产生一个可执行模块。它能调整并解决外部符号参考。连接器的输入是可重新外部符号参考。连接器的输入是可重新定位的定位的COFF目标文件和目标库文件。目标文件和目标库
4、文件。3-3 3-3 段的定义段的定义(3.1.93.1.9小节)小节)u为了有效利用为了有效利用DSP的内部或外部存储器,的内部或外部存储器,目标文件中的代码和数据被存放在不同目标文件中的代码和数据被存放在不同的段中。的段中。u这些数据段或代码段在内存中可以是分这些数据段或代码段在内存中可以是分开的,也可以是连续的。开的,也可以是连续的。u在生成的在生成的OUT文件中包括三个缺省段:文件中包括三个缺省段:u汇编器和连接器允许创建、命名和连接汇编器和连接器允许创建、命名和连接已经命名的段已经命名的段。告诉连接器可以使用的存储器告诉连接器可以使用的存储器u存储器指令(存储器指令(memory d
5、irective)定义定义目标系统的存储器图。用户可以给部分目标系统的存储器图。用户可以给部分存储器命名,定义它的起始地址和长度。存储器命名,定义它的起始地址和长度。u段指令(段指令(sections directive)告诉连接告诉连接器如何将输入段合并到输出段中,及将器如何将输入段合并到输出段中,及将这些输出段放在存储器的什么地方。用这些输出段放在存储器的什么地方。用户可以用连接器的户可以用连接器的SECTIONS指令指定指令指定子段,如不特别指定,子段将和同基段子段,如不特别指定,子段将和同基段名的段合并在一起。名的段合并在一起。在代码中三个缺省段在代码中三个缺省段u.text 包括可执
6、行代码包括可执行代码u.data 包括已经初始化了的数据包括已经初始化了的数据u.bss 为未初始化变量保存空间为未初始化变量保存空间u还还可可以以在在汇汇编编语语言言中中自自己己定定义义的的用用于于存存放放代代码码的的段段,如如.sect(代代码码),.usect、.buffer(数据)等(数据)等内存定位内存定位CMD控制文件例子控制文件例子MEMORYMEMORY PAGE 0:PROG:origin=1800h,length=800h PAGE 0:PROG:origin=1800h,length=800h PAGE 4:PROG:origin=0200h,length=100h PA
7、GE 4:PROG:origin=0200h,length=100h PAGE 1:DATA:origin=0c00h,length=100h PAGE 1:DATA:origin=0c00h,length=100h PAGE 2:DATA:origin=0d00h,length=200h PAGE 2:DATA:origin=0d00h,length=200h PAGE 3:DATA:origin=0f00h,length=100h PAGE 3:DATA:origin=0f00h,length=100h SECTIONSSECTIONS .text PROG PAGE 0 .text PR
8、OG PAGE 0 .vect PROG PAGE 4 .vect PROG PAGE 4 .bss DATA PAGE 1 .bss DATA PAGE 1 .data DATA PAGE 2 .data DATA PAGE 2 .buffer DATA PAGE 3 .buffer DATA PAGE 3 内存定位内存定位CMD控制文件说明控制文件说明u其中,包含两个部分:其中,包含两个部分:MEMORY和和SECTIONS。在。在MEMORY中,主要说明中,主要说明目标系统中哪些存储器可以使用,它们目标系统中哪些存储器可以使用,它们的起始地址是多少,大小如何。的起始地址是多少,大小如何。
9、u在在SECTIONS部分中,主要完成段的具部分中,主要完成段的具体地址的分配。例如,我们将体地址的分配。例如,我们将.text段存段存放在放在1800h开始的程序空间中,将开始的程序空间中,将.bss段段存放在存放在c00h开始的数据空间中,将开始的数据空间中,将.vect段存放在程序空间的段存放在程序空间的200h开始的地方。开始的地方。内存定位内存定位CMD文件另一例子文件另一例子asmlnk.objasmlnk.objasmlnk1.objasmlnk1.obj-m asmlnk.map-m asmlnk.map-o asmlnk.out-o asmlnk.outMEMORYMEMOR
10、Y PAGE 0:IPROG:origin=0 x880,len=0 x1f80 PAGE 0:IPROG:origin=0 x880,len=0 x1f80 VECT:origin=0 x800,len=0 x80 VECT:origin=0 x800,len=0 x80 PAGE 1:USERREGS:origin=0 x60,len=0 x1c PAGE 1:USERREGS:origin=0 x60,len=0 x1c BIOSREGS:origin=0 x7c,len=0 x4 BIOSREGS:origin=0 x7c,len=0 x4 IDATA:origin=0 x80,len
11、=0 x780 IDATA:origin=0 x80,len=0 x780 定位定位CMD控制文件另一例子控制文件另一例子SECTIONSSECTIONS .vect:VECT PAGE 0 .vect:VECT PAGE 0 .sysregs:BIOSREGS PAGE 1 .sysregs:BIOSREGS PAGE 1 .gblinit:IPROG PAGE 0 .gblinit:IPROG PAGE 0 .bios:IPROG PAGE 0 .bios:IPROG PAGE 0 .text:IPROG PAGE 0 .text:IPROG PAGE 0 .cinit:IPROG PAG
12、E 0 .cinit:IPROG PAGE 0 .pinit:IPROG PAGE 0 .pinit:IPROG PAGE 0 .sysinit:IPROG PAGE 0 .sysinit:IPROG PAGE 0 .bss:IDATA PAGE 1 .bss:IDATA PAGE 1 .far:IDATA PAGE 1 .far:IDATA PAGE 1 .const:IDATA PAGE 1 .const:IDATA PAGE 1 .switch:IDATA PAGE 1 .switch:IDATA PAGE 1 .sysmem:IDATA PAGE 1 .sysmem:IDATA PAG
13、E 1 .sysheap:IDATA PAGE 1 .sysheap:IDATA PAGE 1 定位定位CMD文件可以包含参数文件可以包含参数u在上个例子中,我们将连接器使用的参在上个例子中,我们将连接器使用的参数添加到内存定位数添加到内存定位CMD文件中,这样整文件中,这样整个连接器命令可以简化为(以个连接器命令可以简化为(以C5000系列系列为例,使用为例,使用LNK500):):C:C54XLNK500 asmlnk.cmd优化优化C C编译器的使用编译器的使用uTMS320 DSP的的C编译器主要有编译器主要有代码分析代码分析工具工具、优化器优化器、汇编代码生成器汇编代码生成器、汇编、
14、汇编工具和连接工具组成,其中汇编工具和工具和连接工具组成,其中汇编工具和连接工具与汇编语言共享。连接工具与汇编语言共享。u编译分为两个阶段:编译分为两个阶段:第一阶段分析代码,第一阶段分析代码,第二阶段产生汇编语言源程序。第二阶段产生汇编语言源程序。完成第完成第一阶段后,还可以选择一种优化途径。一阶段后,还可以选择一种优化途径。使用使用CL500编译编译C程序程序u下面是一些常用的选项:下面是一些常用的选项:-g:允许使用允许使用C代码级的调试。代码级的调试。-k:保留生成的汇编源程序。保留生成的汇编源程序。-ss:产生产生C的注释汇编源程序。的注释汇编源程序。-z:允许调用连接程序。允许调用
15、连接程序。-o:完成优化完成优化使用使用CL500编译编译C程序例子程序例子u使用使用CL500编译并连接,生成编译并连接,生成function.out文件(使用文件(使用lnk.cmd内存映射内存映射定位文件)。同时使用优化器,以及标定位文件)。同时使用优化器,以及标准的准的C语言库语言库rts.lib。u在集成开发环境在集成开发环境CCS中,可以通过工程中,可以通过工程文件添加或选择使用的参数文件添加或选择使用的参数!由!由CCS自自动生成动生成CL500命令的命令行参数。命令的命令行参数。cl500-o function.c-z lnk.cmd-o function.out-l cl50
16、0-o function.c-z lnk.cmd-o function.out-l rts.librts.lib使用优化编译器后的效果?使用优化编译器后的效果?u这段程序很简单,主要完成一个乘累加这段程序很简单,主要完成一个乘累加运算,结果放在变量运算,结果放在变量sumsum中。为了便于比中。为了便于比较优化器的效果,我们在编译时加入较优化器的效果,我们在编译时加入-ss-ss参数,以保留参数,以保留C C与汇编源代码。与汇编源代码。u先看不使用优化器的情况:先看不使用优化器的情况:sum=0;sum=0;for(k=0;k20;k+)for(k=0;k20;k+)sum+=ik*jk;su
17、m+=ik*jk;-;-;12|for(k=0;k20;k+);12|for(k=0;k20;k+);-;-ST#0,*SP(2);|12|ST#0,*SP(2);|12|SSBX SXM ;SSBX SXM ;LD#20,A ;|12|LD#20,A ;|12|SUB *SP(2),A ;|12|SUB *SP(2),A ;|12|BC L2,ALEQ ;branch occurs;|12|BC L2,ALEQ ;branch occurs;|12|L1:L1:;-;-;13|sum+=ik*jk;13|sum+=ik*jk;-;-MVDK *SP(2),*(AR1);|13|MVDK *S
18、P(2),*(AR1);|13|LD *SP(3),A ;|13|LD *SP(3),A ;|13|LD *AR1(_j),T ;|13|LD *AR1(_j),T ;|13|MAC *AR1(_i),A ;|13|MAC *AR1(_i),A ;|13|STL A,*SP(3);|13|STL A,*SP(3);|13|ADDM#1,*SP(2);|13|ADDM#1,*SP(2);|13|LD#20,A ;|13|LD#20,A ;|13|SUB *SP(2),A ;|13|SUB *SP(2),A ;|13|BC L1,AGT ;branch occurs|13|BC L1,AGT ;b
19、ranch occurs|13|L2:L2:使用优化编译器后的效果?使用优化编译器后的效果?u请注意观察第请注意观察第1212和第和第1313行乘累加运算的行乘累加运算的实现。在未使用优化的情况时,编译器实现。在未使用优化的情况时,编译器使用最普通的方法实现该运算,即先完使用最普通的方法实现该运算,即先完成一次乘法,然后累加,再进行循环控成一次乘法,然后累加,再进行循环控制判断。当然,整个运算结果是正确的,制判断。当然,整个运算结果是正确的,只是多消耗时间。只是多消耗时间。u如果在编译时使用优化参数,例如使用如果在编译时使用优化参数,例如使用-o2o2,完成全局优化,其效果将大大不同。,完成全
20、局优化,其效果将大大不同。例如:例如:cl500 a.c-ss-o(或或-o2)使用优化参数后的效果使用优化参数后的效果;-;-;10|sum=0;10|sum=0;12|for(k=0;k20;k+);12|for(k=0;k20;k+);-;-LD#0,A ;|10|LD#0,A ;|10|RPT#19 ;loop starts|6|RPT#19 ;loop starts|6|L1:L1:;-;-;13|sum+=ik*jk;13|sum+=ik*jk;-;-MAC *AR3+,*AR2+,A,A ;|13|MAC *AR3+,*AR2+,A,A ;|13|;loop ends|13|;l
21、oop ends|13|L2:L2:使用优化编译器后的效果使用优化编译器后的效果u再观察第再观察第1212和第和第1313行,这次完成乘累加行,这次完成乘累加运算使用了运算使用了MACMAC指令,并且使用了单指令指令,并且使用了单指令循环操作,从而大大提高了运算效率。循环操作,从而大大提高了运算效率。u同时,优化器还对数组变量同时,优化器还对数组变量i,ji,j直接使用直接使用不同的辅助寄存器寻址,进一步提高了不同的辅助寄存器寻址,进一步提高了程序运行效率。程序运行效率。u有关优化器的更详细的介绍、技巧,请有关优化器的更详细的介绍、技巧,请参考参考TITI提供的优化编译器手册和相关技提供的优化
22、编译器手册和相关技术文档。术文档。3-5 C6Run3-5 C6Run工具工具uTI为简化ARM+DSP这种双核中DPS程序的开发工作,C6Run(C6EZRun)应运而生。u利用C6Run工具,不需要任何其它的编译工作或者软件框架做支持,就可以轻松完成ARM+DSP双核平台的C语言程序开发。uC6Run工具是将DSP执行的代码编译并重新封装成为ARM可执行的文件,或者是ARM可链接的库文件。分为两个小工具,分别是C6RunLib和C6RunApp。3-6 C6Accel3-6 C6Accel工具的使用工具的使用uC6Accel也称C6EZAccel,ARM开发人员可以在ARM+DSP的异构双
23、核处理器上,方便地使用DSP端已封装优化好的软件。u从图(下页)上可以看出,C6Accel和CodecEngine二者之间的关系。C6Accel封装在CodecEngine之上,相对于CodecEngine,更方便于开发人员使用C6AccelC6Accel与与CECE的关系的关系3-7 C6Flo3-7 C6Flo工具工具u德州仪器(TI)的C6Flo是一款免费的图形软件开发工具,可与TI的CCSIDE或基于DSP的开发工具配合使用。uC6Flo提供了一个直观的拖放界面,可用于创建系统方框图。图中的块可以表示从优化的DSP算法到外设I/O驱动程序等各种内容。u该工具可对系统方框图进行解析,并自
24、动生成结构清晰、评价良好的C代码。这些工具最终昙花一现uTI网站上都会有下面类似的提示:uC6Acceldevelopmenttoolisno longer being developed.Fornewdesigns,pleaseconsiderRCM,orotheralternativessuchasSysLink,CodecEngineIUNIVERSALsupport,orOpenCL.C6Accelisavailablefordownloadas-iswithoutfuturefeature/bugfixupdates.WhatisRCM?uTheRemoteCommandMessag
25、e(RCM)SWframeworkprovidesaclient/serverimplementationforexecutingfunctionsonaremoteprocessor.RCMprovidesbothclient(RcmClient)andserver(RcmServer)relatedAPIs.uhttp:/ been released.uIfyouareinterested,pleasepostamessagetotheE2Esuportforumssothatwemaycontactyouanddiscussyourusecases.3-8 XDC3-8 XDC工具(工具
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 专题 dsp 开发 环境 工具 资料
限制150内