专题三_DSP的开发环境与工具_v2016

上传人:我** 文档编号:116845496 上传时间:2019-11-17 格式:PPT 页数:68 大小:1.21MB
返回 下载 相关 举报
专题三_DSP的开发环境与工具_v2016_第1页
第1页 / 共68页
专题三_DSP的开发环境与工具_v2016_第2页
第2页 / 共68页
专题三_DSP的开发环境与工具_v2016_第3页
第3页 / 共68页
专题三_DSP的开发环境与工具_v2016_第4页
第4页 / 共68页
专题三_DSP的开发环境与工具_v2016_第5页
第5页 / 共68页
点击查看更多>>
资源描述

《专题三_DSP的开发环境与工具_v2016》由会员分享,可在线阅读,更多相关《专题三_DSP的开发环境与工具_v2016(68页珍藏版)》请在金锄头文库上搜索。

1、 第三章 DSP的开发 环境与工具 教材 :3.1节,3.3节,3.4节,3.5节, 3.6节,4.4.7小节 DSP开发环境和工具的重要性 u如何提高开发速度,降低开发难度,是 所有开发者所共同关心的。 uDSP的硬软件开发环境如何,开发工具的 功能是否丰富,使用是否方便,其所得 结果的效果怎样,等等,已经成为该DSP 是否为用户所接受、从而得到推广使用 得重要指标之一。 DSP的开发环境和工具 u集成开发环境CCS(编译器,连接 器,优化C编译器,转换工具等) uCMD内存定位文件 uDSP/BIOS u实时操作系统 u其它工具:C6Run,C6Accel, C6Flo,XDC等工具 D

2、S P 开 发 流 程 图 每个DSP系列都提供代码生成工具 uC编译器(C compiler):将C源程序代码编译 成为320系列对应汇编语言源代码。编译 包中包括一个分析器、一个优化器( optimizer)和一个内部列表公用程序( interlist utility)等。 u汇编器(assembler):将汇编语言源文件转 变为基于公用目标文件格式(COFF)的 机器语言目标文件。 每个DSP系列都提供代码生成工具 u连接器(linker):将目标文件连接起来 产生一个可执行模块。它能调整并解决 外部符号参考。连接器的输入是可重新 定位的COFF目标文件和目标库文件。 3-3 段的定义(

3、3.1.9小节) u为了有效利用DSP的内部或外部存储器 ,目标文件中的代码和数据被存放在不 同的段中。 u这些数据段或代码段在内存中可以是分 开的,也可以是连续的。 u在生成的OUT文件中包括三个缺省段: u汇编器和连接器允许创建、命名和连接 已经命名的段。 告诉连接器可以使用的存储器 u存储器指令(memory directive) 定义 目标系统的存储器图。用户可以给部分 存储器命名,定义它的起始地址和长度 。 u段指令(sections directive) 告诉连接 器如何将输入段合并到输出段中,及将 这些输出段放在存储器的什么地方。用 户可以用连接器的SECTIONS指令指定 子段

4、,如不特别指定,子段将和同基段 名的段合并在一起。 在代码中三个缺省段 u.text 包括可执行代码 u.data 包括已经初始化了的数据 u.bss 为未初始化变量保存空间 u还可以在汇编语言中自己定义的用于存 放代码的段,如.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

5、 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控制文件说明 u其中,包含两个部分:MEMORY和 SECTIONS。在MEMORY中,主要说 明目标系统中哪些存储器可以使用,它 们的起始地址是多少,大小如何。 u在SECTIONS部分中,主要完成段的具

6、体地址的分配。例如,我们将.text段存 放在1800h开始的程序空间中,将.bss段 存放在c00h开始的数据空间中,将.vect 段存放在程序空间的200h开始的地方。 内存定位CMD文件另一例子 asmlnk.obj asmlnk1.obj -m asmlnk.map -o asmlnk.out MEMORY PAGE 0: IPROG: origin = 0x880, len = 0x1f80 VECT: origin = 0x800, len = 0x80 PAGE 1: USERREGS: origin = 0x60, len = 0x1c BIOSREGS: origin = 0

7、x7c, 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 PAG

8、E 1 .switch: IDATA PAGE 1 .sysmem: IDATA PAGE 1 .sysheap: IDATA PAGE 1 定位CMD文件可以包含参数 u在上个例子中,我们将连接器使用的参 数添加到内存定位CMD文件中,这样整 个连接器命令可以简化为(以C5000系列 为例,使用LNK500): C:C54XLNK500 asmlnk.cmd 优化C编译器的使用 uTMS320 DSP的C编译器主要有代码分析 工具、优化器、汇编代码生成器、汇编 工具和连接工具组成,其中汇编工具和 连接工具与汇编语言共享。 u编译分为两个阶段:第一阶段分析代码 ,第二阶段产生汇编语言源程序。完

9、成 第一阶段后,还可以选择一种优化途径 。 使用CL500编译C程序 u下面是一些常用的选项: -g: 允许使用C代码级的调试。 -k: 保留生成的汇编源程序。 -ss: 产生C的注释汇编源程序。 -z: 允许调用连接程序。 -o: 完成优化 使用CL500编译C程序例子 u使用CL500编译并连接,生成 function.out文件(使用lnk.cmd内存映射 定位文件)。同时使用优化器,以及标 准的C语言库rts.lib。 u在集成开发环境CCS中,可以通过工程 文件添加或选择使用的参数 !由CCS自 动生成CL500命令的命令行参数。 cl500 -o function.c -z lnk

10、.cmd -o function.out -l rts.lib 使用优化编译器后的效果? u这段程序很简单,主要完成一个乘累加 运算,结果放在变量sum中。为了便于比 较优化器的效果,我们在编译时加入-ss 参数,以保留C与汇编源代码。 u先看不使用优化器的情况: 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

11、: ;- ; 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: 使用优化编译器后的效果? u请注意观察第12和第13行乘累加运算的 实现。在未使用优化的情况时,编译器 使用最普通的方法实现该运算,即先完 成

12、一次乘法,然后累加,再进行循环控 制判断。当然,整个运算结果是正确的 ,只是多消耗时间。 u如果在编译时使用优化参数,例如使用- 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: 使用优化编译器后的效果 u

13、再观察第12和第13行,这次完成乘累加 运算使用了MAC指令,并且使用了单指令 循环操作,从而大大提高了运算效率。 u同时,优化器还对数组变量i,j直接使用 不同的辅助寄存器寻址,进一步提高了 程序运行效率。 u有关优化器的更详细的介绍、技巧,请 参考TI提供的优化编译器手册和相关技 术文档。 3-5 C6Run工具 u TI为简化ARM+DSP这种双核中DPS程序 的开发工作, C6Run(C6EZRun)应运而生 。 u利用C6Run工具,不需要任何其它的编译 工作或者软件框架做支持,就可以轻松完 成ARM+DSP双核平台的C语言程序开发 。 uC6Run工具是将DSP执行的代码编译并重

14、新封装成为ARM可执行的文件,或者是 ARM可链接的库文件。分为两个小工具 ,分别是C6RunLib和C6RunApp。 3-6 C6Accel工具的使用 u C6Accel也称C6EZAccel ,ARM开发人员 可以在ARM+DSP的异构双核处理器上, 方便地使用DSP端已封装优化好的软件。 u从图(下页)上可以看出,C6Accel和 Codec Engine二者之间的关系。C6Accel封 装在Codec Engine之上,相对于Codec Engine,更方便于开发人员使用 C6Accel与CE的关系 3-7 C6Flo工具 u德州仪器(TI)的C6Flo是一款免费的图 形软件开发工具,可与TI的CCS IDE或基 于DSP的开发工具配合使用。 uC6Flo提供了一个直观的拖放界面,可用 于创建系统方框图。图中的块可以表示从

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号