TMS320C2XX开发设计中应注意的问题
2.2 硬件调试时应注意的问题
在硬件调试前,应先对电路板进行细致的检查,观察有无短路或断路情况(由于DSP的PCB板布线一般较密、较细,这种情况发生概率还是比较高的)。加电后,应用手感觉是否有些芯片特别热。如果发现有些芯片烫得厉害,需立即掉电重新检查电路。排除故障后,接着就应检查晶体是否振荡,复位是否正确可靠。然后用示波器检查DSP的CLK-OUT1和CLK-OUT2引脚的信号是否正常,若正常则表明DSP本身工作基本正常。
2.2.1 保证电源的稳定可靠
在DSP硬件系统调试前,应确保给实验板供电的电源有良好的恒压恒流特性。尤其要注意的是,DSP的入口电压应保持在5.0±0.05V。电压过低,则通过JTAG接口向Flash写入程序时,会出现错误提示;电压过高,则会损坏DSP芯片。由于电源电压过高,笔者曾有过一个上午烧坏3块DSP的惨痛经历。另外,由于在调试时要频繁对实验板接电和断电,若电源质量不好,则很可能在突然上电时因电压陡升而烧坏DSP芯片。这样既会造成经济损失,又将影响开发进度。因此,在调试前应高度重视电源的选择,同时在调试过程中应经常检查电源是否正常。
2.2.2 利用仿真软件排除硬件故障
在完成地电路板的检查后,就可通过仿真软件来调试程序。由于仿真时,程序代码下载到目标系统中的片外程序存储器,因而通过仿真软件可以比较容易地检查出一些硬件故障。
在上电后,若仿真软件调试窗口始终无法调入程序,则有两种可能:(1)DSP芯片引脚存在断路或短路现象;(2)DSP芯片损坏。倘若是第一次利用仿真器软件调试程序,此时应对实验板断电,仔细检查DSP芯片各引脚的焊接情况。如果软件调试窗口曾正确调入程序,则可能是DSP芯片损坏。此时,可通过检测实验板的整板阻抗进一步判断DSP芯片是否受损。若整板阻抗急剧下降,可将给DSP芯片供电的电源线割断,检测DSP芯片的电阻。正常的DSP芯片的电阻为MΩ级,若被测芯片电阻明显低于该值,则可断定DSP芯片已被烧坏。
如果软件调试窗口可调入程序,但调入的程序局部出错,如对片外程序存储器或数据存储器操作的代码变成了.word xxxx,此时可能是片外程序存储器或数据存储器出现故障。应仔细检查器是否存在短路或虚焊,若不存在则应进一步判断存储器是否受损。本人曾遇到上述现象,后经仔细检查,发现存储器有引脚虚焊。
3 软件设计与调试
哈佛结构、流水线操作现加上集成电路的优化设计,使得DSP芯片的指令周期为ns级,快速的指令周期可使DSP芯片能够实时实现许多应用。但在实际的程序设计中,DSP芯片的这些特点却给程序设计者带来了许多意想不到的麻烦。下面,笔者将根据自身的实际经验介绍编程与调试时应注意的一些问题。
3.1 流水线冲突
F206采用四级流水线操作,指令流水线由一系列总线操作组成,它具有4个独立的操作阶段:取指、译码、取操作数和执行。由于4个操作阶段是独立的,因此这些操作可以交叠地进行;在任意的指令周期内,1到4个不同的指令均可有效,各条指令均处于一个同的完成阶段。因此,流水线冲突是不可避免的。通常情况下,发生流水线冲突时,编程者可通过调整程序语句的次序或在相应位置插入一定数量的NOP来解决。
3.2 设置等待状态寄存器
对高速的DSP而言,它的读操作从地址稳定到数据有效仅需几十ns的时间,而DSP外设的速度则参差不齐。为了解决高速DSP与低速外设在速度上的冲突,在高速的DSP与存储器等外设的接口之间,等待状态的设计是一个关键的问题。若DSP不能与外设很好配合,则会导致程序执行结果出错。F206内置一个软件可编程等待状态寄存器(WSGR),通过设置WSGR,可分别为片外存储器和I/O端口设置CPU的等待时间。
在程序调试过程中,若程序随机运行,或仿真软件调试窗口出现“Time out waiting for device”红色告警字样时,而程序流程没有问题,则可是DSP与外部慢速器件配件不正常,此时应重新设置等待状态寄存器,增加CPU等待外设的时间。由于例程[2]中WSGR值均为0000h,容易产生误导,使初学者误以为在任何情况下WSGR值均为0000h。笔者在调试程序时,曾遇到这个问题,后来不断调整WSGR的设置,终于使程序能够正常执行。在具体应用中,程序设计者应根据实际用到的片外资源设置WSGR的值,切忌盲从。
3.3 保留区域
编程时应注意设计中程序、数据存储器配置的地址映射,切记不能向任何保留地址写数据,否则将造成处理器的不可预测操作。F206程序存储器地址FE00h~FEFFh(片外)为保留地址,数据存储器地址0000h~0005Fh、0080h~01FFH、0200h~02FFh(CNF=1时)和0400h~07FFh均为保留地址。
3.4 中断资源
F206中断资源丰富,其0000h~003fh地址单元对应中断向量空间,每个中断矢量均为一