资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,专题三DSP的开发环境与工具v资料,DSP,开发环境和工具的重要性,如何提高开发速度,降低开发难度,是所有开发者所共同关心的。,DSP的硬软件开发环境如何,开发工具的功能是否丰富,使用是否方便,其所得结果的效果怎样,等等,已经成为该DSP是否为用户所承受、从而得到推广使用得重要指标之一。,DSP,的开发环境和工具,集成开发环境CCS编译器,连接器,优化C编译器,转换工具等,CMD内存定位文件,DSP/BIOS,实时操作系统,其它工具:C6Run,C6Accel,C6Flo,XDC等工具,DSP,开发流程图,每个,DSP,系列都提供代码生成工具,C编译器(C compiler):将C源程序代码编译成为320系列对应汇编语言源代码。编译包中包括一个分析器、一个优化器optimizer和一个内部列表公用程序interlist utility等。,汇编器(assembler):将汇编语言源文件转变为基于公用目标文件格式COFF的机器语言目标文件。,每个,DSP,系列都提供代码生成工具,连接器linker:将目标文件连接起来产生一个可执行模块。它能调整并解决外部符号参考。连接器的输入是可重新定位的COFF目标文件和目标库文件。,3-3 段的定义小节,为了有效利用DSP的内部或外部存储器,目标文件中的代码和数据被存放在不同的段中。,这些数据段或代码段在内存中可以是分开的,也可以是连续的。,在生成的OUT文件中包括三个缺省段:,汇编器和连接器允许创立、命名和连接已经命名的段。,告诉连接器可以使用的存储器,存储器指令memory directive 定义目标系统的存储器图。用户可以给局部存储器命名,定义它的起始地址和长度。,段指令sections directive 告诉连接器如何将输入段合并到输出段中,及将这些输出段放在存储器的什么地方。用户可以用连接器的SECTIONS指令指定子段,如不特别指定,子段将和同基段名的段合并在一起。,在代码中三个缺省段,.text 包括可执行代码,.data 包括已经初始化了的数据,.bss 为未初始化变量保存空间,还可以在汇编语言中自己定义的用于存放代码的段,如.sect代码, .usect 、 .buffer 数据等,内存定位,CMD,控制文件例子,MEMORY,PAGE 0: PROG: origin = 1800h, length = 800h,PAGE 4: PROG: origin = 0200h, length = 100h,PAGE 1: DATA: origin = 0c00h, length = 100h,PAGE 2: DATA: origin = 0d00h, length = 200h,PAGE 3: DATA: origin = 0f00h, length = 100h,SECTIONS,.text PROG PAGE 0,.vect PROG PAGE 4,.bss DATA PAGE 1,.data DATA PAGE 2,.buffer DATA PAGE 3,内存定位,CMD,控制文件说明,其中,包含两个局部:MEMORY和SECTIONS。在MEMORY中,主要说明目标系统中哪些存储器可以使用,它们的起始地址是多少,大小如何。,在SECTIONS局部中,主要完成段的具体地址的分配。例如,我们将.text段存放在1800h开场的程序空间中,将.bss段存放在c00h开场的数据空间中,将.vect段存放在程序空间的200h开场的地方。,内存定位,CMD,文件另一例子,MEMORY,PAGE 0: IPROG: origin = 0x880, len = 0x1f80,VECT: origin = 0x800, len = 0x80,PAGE 1: USERREGS: origin = 0x60, len = 0x1c,BIOSREGS: origin = 0x7c, len = 0x4,IDATA: origin = 0x80, len = 0x780,定位,CMD,控制文件另一例子,SECTIONS,.vect: VECT PAGE 0,.sysregs: BIOSREGS PAGE 1,.gblinit: IPROG PAGE 0,.bios: IPROG PAGE 0,.text: IPROG PAGE 0,.cinit: IPROG PAGE 0,.pinit: IPROG PAGE 0,.sysinit: IPROG PAGE 0,.bss: IDATA PAGE 1,.far: IDATA PAGE 1,.const: IDATA PAGE 1,.switch: IDATA PAGE 1,.sysmem: IDATA PAGE 1,.sysheap: IDATA PAGE 1,定位,CMD,文件可以包含参数,在上个例子中,我们将连接器使用的参数添加到内存定位CMD文件中,这样整个连接器命令可以简化为以C5000系列为例,使用LNK500:,优化,C,编译器的使用,TMS320 DSP,的,C,编译器主要有,代码分析工具,、,优化器,、,汇编代码生成器,、汇编工具和连接工具组成,其中汇编工具和连接工具与汇编语言共享。,编译分为两个阶段:,第一阶段分析代码,第二阶段产生汇编语言源程序。,完成第一阶段后,还可以选择一种优化途径。,使用,CL500,编译,C,程序,下面是一些常用的选项:,-g: 允许使用C代码级的调试。,-k: 保存生成的汇编源程序。,-ss: 产生C的注释汇编源程序。,-z: 允许调用连接程序。,-o: 完成优化,使用,CL500,编译,C,程序例子,使用CL500编译并连接,生成文件使用内存映射定位文件。同时使用优化器,以及标准的C语言库。,在集成开发环境CCS中,可以通过工程文件添加或选择使用的参数 !由CCS自动生成CL500命令的命令行参数。,使用优化编译器后的效果?,这段程序很简单,主要完成一个乘累加运算,结果放在变量sum中。为了便于比较优化器的效果,我们在编译时参加-ss参数,以保存C与汇编源代码。,先看不使用优化器的情况:,sum=0;,for(k=0;k20;k+),sum+=ik*jk;,;-,; 12 | for(k=0;k20;k+),;-,ST #0,*SP(2) ; |12|,SSBX SXM ;,LD #20,A ; |12|,SUB *SP(2),A ; |12|,BC L2,ALEQ ; branch occurs ; |12|,L1:,;-,; 13 | sum+=ik*jk;,;-,MVDK *SP(2),*(AR1) ; |13|,LD *SP(3),A ; |13|,LD *AR1(_j),T ; |13|,MAC *AR1(_i), A ; |13|,STL A,*SP(3) ; |13|,ADDM #1,*SP(2) ; |13|,LD #20,A ; |13|,SUB *SP(2),A ; |13|,BC L1,AGT ; branch occurs |13|,L2:,使用优化编译器后的效果?,请注意观察第12和第13行乘累加运算的实现。在未使用优化的情况时,编译器使用最普通的方法实现该运算,即先完成一次乘法,然后累加,再进展循环控制判断。当然,整个运算结果是正确的,只是多消耗时间。,如果在编译时使用优化参数,例如使用-o2,完成全局优化,其效果将大大不同。,例如:,cl500 a.c -ss -o(,或,-o2),使用优化参数后的效果,;-,; 10 | sum=0;,; 12 | for(k=0;k20;k+),;-,LD #0,A ; |10|,RPT #19 ; loop starts |6|,L1:,;-,; 13 | sum+=ik*jk;,;-,MAC *AR3+, *AR2+, A, A ; |13|,; loop ends |13|,L2:,使用优化编译器后的效果,再观察第12和第13行,这次完成乘累加运算使用了MAC指令,并且使用了单指令循环操作,从而大大提高了运算效率。,同时,优化器还对数组变量i,j直接使用不同的辅助存放器寻址,进一步提高了程序运行效率。,有关优化器的更详细的介绍、技巧,请参考TI提供的优化编译器手册和相关技术文档。,3-5 C6Run,工具,TI,为简化,ARM+DSP,这种双核中,DPS,程序的开发工作,,C6Run(C6EZRun),应运而生,。,利用,C6Run,工具,不需要任何其它的编译工作或者软件框架做支持,就可以轻松完成,ARM+DSP,双核平台的,C,语言程序开发。,C6Run,工具是将,DSP,执行的代码编译并重新封装成为,ARM,可执行的文件,或者是,ARM,可链接的库文件。分为两个小工具,分别是,C6RunLib,和,C6RunApp,。,3-6 C6Accel,工具的使用,C6Accel也称C6EZAccel ,ARM开发人员可以在ARM+DSP的异构双核处理器上,方便地使用DSP端已封装优化好的软件。,从图下页上可以看出,C6Accel和Codec Engine二者之间的关系。C6Accel封装在Codec Engine之上,相对于Codec Engine,更方便于开发人员使用,C6Accel,与,CE,的关系,3-7 C6Flo,工具,德州仪器TI的C6Flo是一款免费的图形软件开发工具,可与TI的CCS IDE或基于DSP的开发工具配合使用。,C6Flo提供了一个直观的拖放界面,可用于创立系统方框图。图中的块可以表示从优化的DSP算法到外设I/O驱动程序等各种内容。,该工具可对系统方框图进展解析,并自动生成构造清晰、评价良好的C代码。,这些工具最终昙花一现,TI,网站上都会有下面类似的提示:,C6Accel development tool is,no longer being developed,. For new designs, please consider RCM, or other alternatives such as SysLink, Codec Engine IUNIVERSAL support, or OpenCL.,C6Accel is available for download as-is without future feature/bugfix updates.,What is RCM?,The Remote Command Message (RCM) SW framework provides a client/server implementation for executing functions on a remote processor. RCM provides both client (RcmClient) and server (RcmServer) related APIs.,What is OpenCL?,OpenCL stands for Open computing Language and is a way to execute code on a multi-core system, even with different core types.,TI is currently working on OpenCL for the C6000 CPU family. At the time of this writing (June 2021), the software has not been released.,If you are interested, please post a message to the E2E suport forums so that we may contact you and discuss your use cases.,3-8 XDC工具节,XDC,工具根据一套,Build,指令,生成可执行的文件,用于实时的嵌入式系统。,它包括开发,API,的工具和标准、静态配置工具和打包工具。,XDC,最大的好处在于,标准化了传递过程,简化了在应用程序中在目标平台下引用其他包的过程。,基于,XDC,的应用开发,具有独立于硬件的标准接口、支持离线配置以便优化存储器的使用和性能的提高,并支持定制的开发环境里的自动操作的特点。,XDC,工具,-,特点,和其他编译工具如gmake一样,XDC工具可以根据编译指令生成可执行文件或者库,可以编译任何相关文件,并且可以同时为多种目标板作编译,所编译的源文件可以为C、C+、汇编和库文件。XDC有其自身的特点和优势。,XDC,工具,-,特点,由于RTSC包可以保持文件相关和版本信息,当使用RTSC包作为源文件时,XDC工具可以自动进展文件相关和版本检查。,只要为应用程序提供一个简单的配置脚本,XDC工具就可以生成代码,这在应用程序使用多个包文件时显得尤为重要,可以极大地简化诸如Davinci Engine和DSP效劳器之类的复杂应用程序的编译。,CCS自带或TI网站下载!,3-10,系统集成与调试工具,TI DSP,有那些开发工具,?,TI,公司为,TMS320,系统的集成与调试所提供的工具包括,:,软仿真器Simulator-软件仿真器,DSP入门套件DSK,DSP Starter Kit,标准评估模块EVM,扩展开发系统XDSeXtended Development System-硬件仿真器需软件配合使用,集成开发软件CCSCode Composer Stdio,3-10-1 软仿真器Simulator,软仿真器是一个软件程序,使用主机的处理器和存储器来仿真TMS320 DSP,从而进展软件开发和非实时的程序验证。,可以在没有目标硬件的情况下作DSP软件的开发和调试。,它可以直接使用由TMS320宏汇编器/连接器或ANSI C编译器所产生的目标代码(.out)文件为输入。,软仿真器,的主要特性,在主机上执行用户的DSP程序。,修改和检查存放器,进入时初始化存放器。,显示和修改数据和程序存储器:在任何时候可以修改整个块。,设置断点:添加指令,读写内存,数据总线或程序总线上的数据类型,出错条件。,跟踪累加器、程序计数器、辅助存放器等。,软仿真器,的主要特性,单步执行指令。,在用户指定的时间产生中断。,用文件的方式快速存储和调用仿真参数。,反汇编能力,以便对源语句作编辑和重汇编。,存储器的内容可以同时显示为十六进制的,16-bit,值和汇编后的源代码。,C6Run,工具实现,DSP,代码的运行,先使用C6000 CG TOOLS工具,把DSP端的C文件编译成C6000 OBJ文件,使用LINK工具生成一个完整的DSP应用程序,并自动添加与ARM的接口函数。,在ARM端,C6RunApp工具自动生成一个应用软件,自动调用DSP端应用程序。,或者,在ARM端,C6RunLib工具将这个DSP应用程序编译成可供ARM应用程序调用的库函数文件,供其它ARM函数调用。,3-10-2 DSK系列评估工具以及标准评估模块EVM,DSP入门套件DSK,DSP Starter Kit、评估模块EVM,Evaluation Module是TI或TI的第三方Third Party为TMS320 DSP的使用者设计和生产了一种评价DSP的平台。,目前几乎所有的型号都有这样的EVM板供开发人员参考、学习、使用。,DSK,和,EVM,的特点:,DSK或EVM板除了提供一个完整的DSP硬件系统外包括A/D & D/A、外部程序/数据存储器、外部接口等。,提供有完整的代码生成工具和调试工具。,用户可以使用DSK或EVM板来作DSP的实验,进展诸如控制系统、语音处理等测试应用;也可以用来编写和运行实时源代码,并对其进展评估;还可以用来调试用户自己的系统。,USBSTK5515,,,$79,Critical Link,公司的,C6455+FPGA,评估板,$1099,DM6467数字视频评估板DVEVM,$1995,3-10-3 硬仿真器EmulatorsXDS510/XDS560/XDS100,硬仿真器是不可缺少的工具,TMS320扩展开发系统XDSeXtended Development System是功能强大的全速仿真器,用以系统级的集成与调试。,扫描式仿真Scan-Based Emulator是一种独特的、非插入式的系统仿真、集成调试方法。使用这种方法,程序可以从片外或片内的目标存储器实时执行,在任何时钟速度下都不会引入额外的等待状态。,硬仿真器是不可缺少的工具,TMS320器件的构造通过内部的、可以由单一串口访问的移位存放器扫描通道来实现扫描式仿真。,该扫描通道提供对内部的器件存放器和状态机的访问,允许完全的可观察和控制。,即便DSP焊接到了目标系统中,这种非插入式的方法仍然可以工作。,硬仿真器是不可缺少的工具,XDS510/XDS510WS仿真器是用户界面友好、以PC或SUN工作站为根底的开发系统,可以对C2xx、C3x、C4x、C5x、C54x、C8x、C6x、OMAP、Davinci等片种实施全速扫描式仿真。,用户可以使用XDS510来调试C程序、汇编语言程序,或两者的混合程序。,可支持ARM的调试。,XDS510,的主要特性:,通过一个14pin/20pin/60pin的目标连接器,全速执行和监视目标系统中的器件,并行处理DSP的全局运行/停顿/断点,高级语言HLL调试接口,最多可达200个断点的软件断点/跟踪和计时,对所有程序和数据地址作硬件断点/跟踪,单步执行,等等,使用,XDS510,调试,DSP,系统,TI,和第三方都提供仿真器,除TI自己提供XDS510/560/XDS100仿真器外,还有国内外厂家都提供类似产品。,国外厂商如SpectrumDigital等。,国内厂商如合众达、闻亭等。,提供多种PC接口的仿真器,如LAN、PCI、USB接口的仿真器,适应不同用户的要求。,低本钱的XDS100仿真器,用户甚至可以自己设计制作XDS100仿真器。,3-11 集成开发环境CCS节,集成开发环境CCS,CCS(Code Composer Studio)是一个完整的DSP集成开发环境,也是目前最优秀、最流行的DSP开发软件之一。,CCS最早是由GO DSP公司为TI的C6000系列开发的,后来TI收购了GO DSP,并将CCS扩展到其它系列。,现在所有的TI DSP都可以使用该软件工具进展开发,C5000和C6000,C2000的CCS中都提供DSP/BIOS功能,CCS,包含哪些功能?,集成可视化代码编辑界面,可直接编写C,汇编、.H文件、 d文件等。,集成代码生成工具,包括汇编器、优化C编译器、连接器等等。,根本调试工具,如装入执行代码.OUT文件,查看存放器窗口,存储器窗口,反汇编窗口,变量窗口等,支持C源代码级调试。,CCS,包含哪些功能?,支持多DSP调试,断点工具,包括硬件断点、数据空间读/写断点,条件断点使用GEL编写表达式等等。,探针工具probe points),可用于算法仿真,数据监视等。,剖析工具pro),可用于评估代码执行的时钟数。,CCS,包含哪些功能?,数据的图形显示工具,可绘制时域/频域波形,眼图,星座图,图象等,并可自动刷新使用Animate命令运行。,提供GEL工具,令用户可以编写自己的控制面板/菜单,从而方便直观地修改变量,配置参数等。,开放式的plug-ins技术,支持其它第三方的ActiveX插件,支持各种仿真器包括软仿真只需安装相应的驱动程序。,CCS,包含哪些功能?,支持Windows、linux操作系统。,支持调试Linux的应用程序CCSV5。,提供DSP/BIOS工具,利用该工具可增强对代码的实时分析能力,如分析代码执行的效率,调度程序执行的优先级,方便管理或使用系统资源代码/数据占用空间,中断效劳程序的调用,定时器使用等等,从而减小开发人员对硬件资源熟悉程度的依赖性。,添加目标板配置文件,CCS支持软仿真器、各种型号硬仿真器、各种DSK和EVM板,你只需要向相应的生产厂家索取驱动程序,然后在CCS安装便可以使用了,通常情况CCSV5自带。,配置文件Target Configurations描述执行代码的具体DSP平台型号以及连接DSP平台的工具可以是Simulator和各种XDS仿真器。,CCS在进入Debug窗口时需要这配置文件。,添加目标板配置文件,配置文件可以在建立工程文件Project时添加。这样可以方便地Build、Bebug一键启动。,配置文件也可以独立于工程文件Project。这时需要用户单独启动调试所使用的配置文件。这种方法更据灵活性。,进入Debug后,CCS通过配置文件连接目标板。GEL文件可以对目标系统进展设置。,利用,CCS,开发,DSP,程序流程,在CCS环境中,你可以翻开或新建工程文件,用C或汇编语言完成DSP程序代码的建立;,利用“build all 命令调用代码生成工具完成编译,连接;,然后将生成的.out文件装入DSP的片内或外部扩展存储器,并完成调试、分析,统计或跟踪代码,确保算法的准确性、实时性和高效率。,探针probe points)工具使用,在CCS环境下可以设置探针,探针实际上是一种特殊的断点。,当程序运行到探针位置时,CCS中断目标系统的DSP程序的运行,然后从与该探针连接的数据文件存放在PC机中读出数据或输出结果,当完成数据的传输后自动恢复目标系统的DSP程序的运行。,探针工具特别适用于算法的仿真。探针工具可以运行在软仿真Simulator下。,图形工具的使用,CCS,提供了多种绘图工具,能将内存中的数据以各种图形方式显示,帮助用户直观地了解数据的意义。,需要注意的是,图形窗口只有在断点时才刷新,所以应增加断点,并使用,Animate,方式运行。这样可以显示动画效果。,能提供的显示有:时域,/,频域波形,眼图,星坐图,图象。,设置图形显示对话框,剖析工具pro的使用,在CCS中,你可以利用代码剖析工具,计算代码执行了多少个机器时钟。,剖析工具报告的时钟个数是从前一个剖析点开场或程序起始处。,你可以使用鼠标右键单击某个行,选择“Toggle Pro 可以设置剖析点。然后在“Profiler 菜单中选“Enable Clock 。,用剖析工具分析代码执行时间,在启动程序运行后,你可以在“Profiler 菜单中选“View Statistics ,翻开统计结果显示窗口。,DSP/BIOS,的功能,DSP/BIOS是CCS提供的一套工具,用于支持系统实时分析。它本身仅占用极少的CPU资源。,使用线程来管理程序,如硬件中断效劳子程序,软件中断效劳子程序,周期函数,idle函数等。,提供多种分析工具,评估代码。如图形化显示各个线程占用的CPU时间,代码执行时间统计,显示输出信息等。,
展开阅读全文