DSP程序编写和调试的常见问题.docx

上传人:b****1 文档编号:13804081 上传时间:2023-06-17 格式:DOCX 页数:9 大小:20.64KB
下载 相关 举报
DSP程序编写和调试的常见问题.docx_第1页
第1页 / 共9页
DSP程序编写和调试的常见问题.docx_第2页
第2页 / 共9页
DSP程序编写和调试的常见问题.docx_第3页
第3页 / 共9页
DSP程序编写和调试的常见问题.docx_第4页
第4页 / 共9页
DSP程序编写和调试的常见问题.docx_第5页
第5页 / 共9页
DSP程序编写和调试的常见问题.docx_第6页
第6页 / 共9页
DSP程序编写和调试的常见问题.docx_第7页
第7页 / 共9页
DSP程序编写和调试的常见问题.docx_第8页
第8页 / 共9页
DSP程序编写和调试的常见问题.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

DSP程序编写和调试的常见问题.docx

《DSP程序编写和调试的常见问题.docx》由会员分享,可在线阅读,更多相关《DSP程序编写和调试的常见问题.docx(9页珍藏版)》请在冰点文库上搜索。

DSP程序编写和调试的常见问题.docx

DSP程序编写和调试的常见问题

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'tInitializeTargetDSP”

1)仿真器连接是否正常?

2)仿真器的I/O设置是否正确?

3)XDSPP仿真器的电源是否正确?

4)目标系统是否正确?

5)仿真器是否正常?

建议使用目标板测试。

DSP的C语言同主机C语言的主要区别?

1)DSP的C语言是标准的ANSIC,它不包括同外设联系的扩展部分,如键盘输入、屏幕显示等。

但在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为例,基本格式为:

-osample.out-msample.map-stack100sample.objmeminit.obj-lrts.libMEMORY{PAGE0:

VECT:

origin=0xff80,length0x80PAGE0:

PROG:

origin=0x2000,length0x400PAGE1:

DATA:

origin=0x800,length0x400}SECTIONS{.vectors:

{}>PROGPAGE0.text:

{}>PROGPAGE0.data:

{}>PROGPAGE0.cinit:

{}>PROGPAGE0.bss:

{}>DATAPAGE1

}

如何将OUT文件转换为可以烧写ROM的文件格式?

DSP的开发软件集成了一个程序,可以从执行文件OUT转换到编程器可以接受的格式,使得编程器可以用次文件烧写EPROM或Flash。

对于C2000的程序为DSPHEX;对于C3x程序为HEX30;对于C54x程序为HEX500;对于C55x程序为HEX55;对于C6x程序为Hex6x。

以C32为例,基本格式为:

sample.out-x-memwidth8-bootorg900000h-iostrb0h-strb003f0000h-strb101f0000h-osample.hexROMS{EPROM:

org=0x900000,len=0x02000,romwidth=8}SECTIONS{.text:

paddr=boot.data:

paddr=boot}

在CCS下,OUT文件加载时提示“Dataverificationfailed...”的原因?

Link的CMD文件分配的地址同GEL或设置的有效地址空间不符。

中断向量定位处或其它代码、数据段定位处,没有RAM,无法加载OUT文件。

解决方法:

1)调整Link的CMD文件,使得定位段处有RAM。

2)调整存储器设置,使得RAM区有效。

TIDSP的C语言的特点,如何使我编写的C更高效?

TIDSP的C语言是标准的ANSI的C,是一个专门优化的C。

对于C3x/C5000/C6000的用户,C对于ASM的效率可以达近1:

1。

TI的DSP,每个系列有每个的特点。

要编制高效的C程序,建议:

1)根据DSP的特点,调整程序编写的流程,任务的分配。

2)数据尽量放在片内。

3)对于要求高的子程序,用人工优化或ASM编写。

为什么要使用BIOS?

1)BIOS是BasicI/OSystem的简称,是基本的输入、输出管理。

2)用于管理任务的调度,程序实时分析,中断管理,跟踪管理和实时数据交换。

3)BIOS是基本的实时系统,使用BIOS可以方便地实现多任务、多进程的时间管理。

4)BIOS是eXpressDSP的标准平台,要使用eXpressDSP技术,必须使用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的中断向量不能重定位。

什么是bootloader?

DSP的速度尽快,EPROM或flash的速度较慢,而DSP片内的RAM很快,片外的RAM也较快。

为了使DSP充分发挥它的能力,必须将程序代码放在RAM中运行。

为了方便的将代码从ROM中搬到RAM中,在不带flash的DSP中,TI在出厂时固化了一段程序,在上电后完成从ROM或外设将代码搬到用户指定的RAM中。

此段程序称为“bootloader”。

Boot有问题如何解决?

1)仔细检查boot的控制字是否正确。

2)仔细检查外部管脚设置是否正确。

3)仔细检查hex文件是否转换正确。

4)用仿真器跟踪boot过程,分析错误原因。

DSP有哪些数学库及其它应用软件?

MATH库,FFT,FIR/IIR等,可以在TI的网页免费下载,具体地址为/tms320bbs/00index.htm。

如何获得DSP专用算法?

TI有许多的ThirdParty可以通过DSP上的多种算法软件。

可以通过TI的网页搜索你所需的算法,找到通过算法的公司,同相应的公司联系。

注意这些算法都是要付费的。

eXpressDSP是什么?

eXpressDSP是一种实时DSP软件技术,它是一种DSP编程的标准,利用它可以加快你开发DSP软件的速度。

以往DSP软件的开发没有任何标准,不同的人写的程序一般无法连接在一起。

DSP软件的调试工具也非常不方便。

使得DSP软件的开发往往滞后于硬件的开发。

eXpressDSP集成了CCS(CodeComposerStudio)开发平台,DSPBIOS实时软件平台,DSP算法标准和第三方支持四部分。

利用该技术,可以使你的软件调试,软件进程管理,软件的互通及算法的获得,都便的容易。

这样就可以加快你的软件开发进程。

1)CCS是eXpressDSP的基础,因此你必须首先拥有CCS软件。

2)DSPBIOS是eXpressDSP的基本平台,你必须学会所有DSPBIOS。

3)DSP算法标准可以保证你的程序可以方便的同其它利用eXpressDSP技术的程序连接在一起。

同时也保证你的程序的延续性。

C语言中可以嵌套汇编语言?

可以。

在ANSIC标准中的标准用法就是用C语言编写主程序,用汇编语言编写子程序,中断服务程序,一些算法,然后用C语言调用这些汇编程序,这样效率会相对比较高。

在定点DSP系统中可否实现浮点运算?

当然可以,因为DSP都可以用C,只要是可以使用c语言的场合都可以实现浮点运算。

对于C5000,大于48K的程序如何BOOT?

对于C5000,片内的BOOT程序在上电后将数据区的内容,搬移到程序区的RAM中,因此FLASH必须在RESET后放在数据区。

由于C5000,数据区的空间有限,一次BOOT的程序不能对于48K。

解决的方法如下:

1.在RESET后,将FLASH译码在数据区,RAM放在程序区,片内BOOT程序将程序BOOT到RAM中。

2.用户初试化程序发出一个I/O命令(如XF),将FLASH译码到程序区的高地址。

开放数据区用于其它的RAM。

3.用户初试化程序中包括第二次BOOT程序(此程序必须用户自己编写),将FLASH中没有BOOT的其它代码搬移到RAM中。

4.开始运行用户处理程序。

include头文件(.h)的主要作用

头文件,一般用于定义程序中的函数、参数、变量和一些宏单元,同库函数配合使用。

因此,在使用库时,必须用相应的头文件说明。

DSP中断向量的位置

1)2000系列dsp的中断向量只能从0000H处开始。

所以在我们调试程序的时候,要把DSP选择为MP(微处理器方式),把片内的Flash屏蔽掉,免去每次更改程序都要重新烧写Flash工作。

2)3x系列dsp的中断向量也只能在固定的地址。

3)5000,6000系列dsp的中断向量可以重新定位。

但是它只能被重新定位到Page0范围内的任何空间。

如何设置硬件断点?

在profiler->profilepoint->breakpoint

c54x的外部中断是电平响应还是沿响应?

是沿响应,准确的说,它要检测到100(一个clk的高和两个clk的低)的变化才可以。

DSP/BIOS能否在TMS320C54x系列DSP的扩展内存中运行?

能。

DSP/基本输入输出系统构置工具允许用户在GlobalSetting条件下选择适宜的库。

DSP/基本输入输出系统要求基本输入输出系统、Sysinit和Vect部分放到存储器(0x000000-0x008000)的重叠部分(OVLY=1)。

这些部分(.基本输入输出系统、.sysinit、.vect)含有轮询程序以支持扩展的存储器,并期望在起始序列中。

余下的部分和对象可以置于存储器的任何位置。

参考程序,里面好象都要disablewachdog,不知道为什么?

"watchdog是一个计数器,溢出时会复位你的DSP,不disable的话,你的系统会动不动就reset。

是否必需对浮点运算作人工的代码调整。

C编译器是否不能自动对浮点运算进行处理?

1.浮点不需要人工调整;

2.C可以主动处理浮点运算

未用的输入/输出引脚的处理

1,未用的输入引脚不能悬空不接,而应将它们上拉活下拉为固定的电平

1)关键的控制输入引脚,如Ready、Hold等,应固定接为适当的状态,Ready引脚应固定接为有效状态,Hold引脚应固定接为无效状态

2)无连接(NC)和保留(RSV)引脚,NC引脚:

除非特殊说明,这些引脚悬空不接,RSV引脚:

应根据数据手册具体决定接还是不接

3)非关键的输入引脚,将它们上拉或下拉为固定的电平,以降低功耗

2,未用的输出引脚可以悬空不接

3,未用的I/O引脚:

如果确省状态为输入引脚,则作为非关键的输入引脚处理,上拉或下拉为固定的电平;如果确省状态为输出引脚,则可以悬空不接

C程序的代码和数据如何定位

1,系统定义:

.cinit存放C程序中的变量初值和常量;.const存放C程序中的字符常量、浮点常量和用const声明的常量;.switch存放C程序中switch语句的跳针表;.text存放C程序的代码;.bss为C程序中的全局和静态变量保留存储空间;.far为C程序中用far声明的全局和静态变量保留空间;.stack为C程序系统堆栈保留存储空间,用于保存返回地址、函数间的参数传递、存储局部变量和保存中间结果;.sysmem用于C程序中malloc、calloc和realloc函数动态分配存储空间

2,用户定义:

#pragmaCODE_SECTION(symbol,"sectionname");#pragmaDATA_SECTION(symbol,"sectionname")

为什么要设计CSL?

1,DSP片上外设种类及其应用日趋复杂

2,提供一组标准的方法用于访问和控制片上外设

3,免除用户编写配置和控制片上外设所必需的定义和代码

什么是CSL?

1,用于配置、控制和管理DSP片上外设

2,已为C6000和C5000系列DSP设计了各自的CSL库

3,CSL库函数大多数是用C语言编写的,并已对代码的大小和速度进行了优化

4,CSL库是可裁剪的:

即只有被使用的CSL模块才会包含进应用程序中

5,CSL库是可扩展的:

每个片上外设的API相互独立,增加新的API,对其他片上外设没有影响

CSL的特点

1),片上外设编程的标准协议:

定义一组标准的APIs:

函数、数据类型、宏;

2),对硬件进行抽象,提取符号化的片上外设描述:

定义一组宏,用于访问和建立寄存器及其域值

3)基本的资源管理:

对多资源的片上外设进行管理;

4)已集成到DSP/BIOS中:

通过图形用户接口GUI对CSL进行配置;

5)使片上外设容易使用:

缩短开发时间,增加可移植

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2