OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » 有关DSP程序编写和调试(一)

共1条 1/1 1 跳转至

有关DSP程序编写和调试(一)

助工
2014-12-21 10:32:34    评分
DSP仿真器为什么必须连接目标系统(Target)? 
 
      DSP的仿真器同单片机的不同,仿真器中没有DSP,提供IEEE标准的JTAG口对DSP进行仿真调试,所以仿真器必须有仿真对象,及目标系统。目标系统就是你的产品,上面必须有DSP。仿真器提供JTAG同目标系统的DSP相接,通过DSP实现对整个目标系统的调试。
 
      仿真工作正常对于DSP的基本要求
 
      1)DSP电源和地连接正确。
 
      2)DSP时钟正确。
 
      3)DSP的控制信号RS和HOLD信号接高电平。
 
      4)C2000的watchdog关掉。
 
      5)不可屏蔽中断NMI上拉高电平。
 
      CCS或Emurst运行时提示“Can't Initialize Target DSP”
 
      1)仿真器连接是否正常?
 
      2)仿真器的I/O设置是否正确?
 
      3)XDSPP仿真器的电源是否正确?
 
      4)目标系统是否正确?
 
      5)仿真器是否正常?建议使用目标板测试。
 
      DSP的C语言同主机C语言的主要区别?
 
      1)DSP的C语言是标准的ANSI C,它不包括同外设联系的扩展部分,如键盘输入、屏幕显示等。但在CCS中,为了方便调试,可以将数据通过prinf命令虚拟输出到主机的屏幕上。
 
      2)DSP的C语言的编译过程为,C编译为ASM,再由ASM编译为OBJ。因此C和ASM的对应关系非常明确,非常便于人工优化。
 
      3)DSP的代码需要绝对定位;主机的C的代码有操作系统定位。
 
      4)DSP的C的效率较高,非常适合于嵌入系统。
 
      Link的cmd文件的作用是什么?
 
      Link的cmd文件用于DSP代码的定位。由于DSP的编译器的编译结果是未定位的,DSP没有操作系统来定位执行代码,每个客户设计的DSP系统的配置也不尽相同,因此需要用户自己定义代码的安装位置。以C5000为例,基本格式为: -o sample.out -m sample.map -stack 100 sample.obj meminit.obj -l rts.lib MEMORY { PAGE 0: VECT: origin = 0xff80, length 0x80 PAGE 0: PROG: origin = 0x2000, length 0x400 PAGE 1: DATA: origin = 0x800, length 0x400 } SECTIONS { .vectors : {} >PROG PAGE 0 .text : {} >PROG PAGE 0 .data : {} >PROG PAGE 0 .cinit : {} >PROG PAGE 0 .bss : {} >DATA PAGE 1
}

 
      如何将OUT文件转换为可以烧写ROM的文件格式?
 
      DSP的开发软件集成了一个程序,可以从执行文件OUT转换到编程器可以接受的格式,使得编程器可以用次文件烧写EPROM或Flash。对于C2000的程序为DSPHEX;对于C3x程序为HEX30;对于C54x程序为HEX500;对于C55x程序为HEX55;对于C6x程序为Hex6x。以C32为例,基本格式为: sample.out -x -memwidth 8 -bootorg 900000h -iostrb 0h -strb0 03f0000h -strb1 01f0000h -o sample.hex ROMS { EPROM: org = 0x900000,len=0x02000,romwidth=8 } SECTIONS { .text: paddr=boot .data: paddr=boot }
 
      在CCS下,OUT文件加载时提示“Data verification failed...”的原因?
 
      Link的CMD文件分配的地址同GEL或设置的有效地址空间不符。中断向量定位处或其它代码、数据段定位处,没有RAM,无法加载OUT文件。解决方法:
 
      1)调整Link的CMD文件,使得定位段处有RAM。
 
      2)调整存储器设置,使得RAM区有效。
 
      TI DSP的C语言的特点,如何使我编写的C更高效?
 
      TI DSP的C语言是标准的ANSI的C,是一个专门优化的C。对于C3x/C5000/C6000的用户,C对于ASM的效率可以达近1:1。 TI的DSP,每个系列有每个的特点。要编制高效的C程序,建议:
 
      1)根据DSP的特点,调整程序编写的流程,任务的分配。
 
      2)数据尽量放在片内。
 
      3)对于要求高的子程序,用人工优化或ASM编写。
 
      为什么要使用BIOS?
 
      1)BIOS是Basic I/O System的简称,是基本的输入、输出管理。
 
      2)用于管理任务的调度,程序实时分析,中断管理,跟踪管理和实时数据交换。
 
      3)BIOS是基本的实时系统,使用BIOS可以方便地实现多任务、多进程的时间管理。
 
      4)BIOS是eXpress DSP的标准平台,要使用eXpress DSP技术,必须使用BIOS。
 
      如何从老的编译工具升级到CCS?
 
      1)在Project菜单下,创建project。
 
      2)将源文件(C和ASM文件),加入project中。
 
      3)将Link的CMD加入project中,并将CMD中的库文件设置去除。
 
      4)将include文件和库文件加入project中。
      5)设置编译的选项。 

 
      软件等待的如何使用?
 
      DSP的指令周期较快,访问慢速存储器或外设时需加入等待。等待分硬件等待和软件等待,每一个系列的等待不完全相同。
 
      1)对于C2000系列: 硬件等待信号为READY,高电平时不等待。软件等待由WSGR寄存器决定,可以加入最多7个等待。其中程序存储器和数据存储器及I/O可以分别设置。
 
      2)对于C3x系列: 硬件等待信号为/RDY,低电平是不等待。软件等待由总线控制寄存器中的SWW和WTCNY决定,可以加入最多7个等待,但等待是不分段的,除了片内之外全空间有效。
 
      3)对于C5000系列: 硬件等待信号为READY,高电平时不等待。软件等待由SWWCR和SWWSR寄存器决定,可以加入最多14个等待。其中程序存储器、控制程序存储器和数据存储器及I/O可以分别设置。
 
      4)对于C6000系列(只限于非同步存储器或外设): 硬件等待信号为ARDY,高电平时不等待。 软件等待由外部存储器接口控制寄存器决定,总线访问外部存储器或设备的时序可以设置,可以方便的同异步的存储器或外设接口
 
      中断向量为什么要重定位?
 
      为了方便DSP存储器的配置,一般DSP的中断向量可以重新定位,即可以通过设置寄存器放在存储器空间的任何地方。注意:C2000的中断向量不能重定位。
 
      什么是boot loader?
 
      DSP的速度尽快,EPROM或flash的速度较慢,而DSP片内的RAM很快,片外的RAM也较快。为了使DSP充分发挥它的能力,必须将程序代码放在RAM中运行。为了方便的将代码从ROM中搬到RAM中,在不带flash的DSP中,TI在出厂时固化了一段程序,在上电后完成从ROM或外设将代码搬到用户指定的RAM中。此段程序称为“boot loader”。
 
      Boot有问题如何解决?
 
      1)仔细检查boot的控制字是否正确。
 
      2)仔细检查外部管脚设置是否正确。
 
      3)仔细检查hex文件是否转换正确。
 
      4)用仿真器跟踪boot过程,分析错误原因。
 
      DSP有哪些数学库及其它应用软件?
 
      MATH库,FFT,FIR/IIR等,可以在TI的网页免费下载,具体地址为ftp://ftp.ti.com/pub/tms320bbs/00index.htm。
 
      如何获得DSP专用算法?
 
      ——回复可见内容——

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]