[资料分享] 有关DSP程序编写和调试

fish001   2017-5-26 23:26 楼主

eXpressDSP是一种实时DSP软件技术,它是一种DSP编程的标准,利用它可以加快你开发DSP软件的速度。 以往DSP软件的开发没有任何标准,不同的人写的程序一般无法连接在一起。DSP软件的调试工具也非常不方便。使得DSP软件的开发往往滞后于硬件的开发。 eXpressDSP集成了CCS(Code Composer Studio)开发平台,DSP BIOS实时软件平台,DSP算法标准和第三方支持四部分。利用该技术,可以使你的软件调试,软件进程管理,软件的互通及算法的获得,都便的容易。这样就可以加快你的软件开发进程。


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

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

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

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

      可以。在ANSI C标准中的标准用法就是用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 ->profile point -> break point

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

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

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

      能。DSP/基本输入输出系统构置工具允许用户在GlobalSetting条件下选择适宜的库。DSP/基本输入输出系统要求基本输入输出系统、Sysinit和Vect部分放到存储器(0x000000-0x008000)的重叠部分(OVLY=1)。这些部分(.基本输入输出系统、.sysinit、.vect)含有轮询程序以支持扩展的存储器,并期望在起始序列中。余下的部分和对象可以置于存储器的任何位置。

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

      "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,用户定义:#pragma CODE_SECTION (symbol, "section name");#pragma DATA_SECTION (symbol, "section name")

      为什么要设计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)使片上外设容易使用:缩短开发时间,增加可移植.



回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复