解析基于DSP TMS320F206的仿真调试

时间:2011-06-10

  数字化已成为电子、通信和信息技术的发展趋势与潮流。在这种趋势与潮流的推动下,数字信号处理的理论与实现手段获得了快速的发展,已成为当代发展快的学科之一。而DSP芯片作为数字信号处理,尤其是实时数字信号处理的主要方法和手段,自20世纪70年代末、80年代初诞生以来,无论在性能上还是在价格上,都取得了突破性的迅猛发展。越来越高的性能价格比、日渐完善的开发方式使DSP的应用范围越来越大,已经广泛地应用于通信、机器人、控制、精密机械、语音和图像处理等领域。可以毫不夸张地说,以DSP芯片为基础的数字信号处理技术已成为当代电子、通信和信息处理技术不可或缺的重要手段。

  TMS320F206(以下简称F206)是是TI公司C2XX系列产品中非常具有代表性的一种,它含有丰富的片内外设和片内存储器;尤其是片内含有可作为程序存储器的32K闪速存储器(Flash Ram)。用户可通过TMS320F206自带的符合IEEE标准1149.1的JTAG接口将可执行程序代码直接烧录到芯片仙部,并可通过该接口程序进行仿真与测试。基于JTAG的结构,极大地方便了用户的系统设计与程序调试,从而使TMS320F206获得了广泛的用。F206的主要特点如表1所示。

  F206的仿真调试

  ◆ F206仿真调试的特点

  F206的仿真调试器没有采用传统的插入仿真的方法,而是通过仿真器与DSP芯片上的几个仿真引脚间通信实现,F206具有符合IEEE1149.1标准的JTAG逻辑扫描电路,扫描仿真不仅克服了因仿真电缆过长而引起的信号失真,而且克服了传统单片机“插入式”仿真方式脱机运行时就出错的缺点。利用闻亭公司生产的EPP_XDS510仿真器进行系统的在线仿真调试,其一端与计算机的并口相连,另一端通过一双列14脚的仿真插头与F206通信。

  ◆ 问题的提出

  如果所要进行仿真的硬件装置没有外部存储器,此种情况下如何实现仿真呢?若将程序完全定位至8000H开始的片上SARAM内,则与F206中断向量表应该定位至0000H相矛盾,从而中断进一步程序将不可能正确运行;若将程序完全定位至0000H开始的FLASH内,虽保证了中断进一步程序可以正确运行,但是由于在FLASH内无法设置断点,所以此种情况下不能顺利进行仿真调试;若将中断向量表定位至0000H的FLASH内,将程序的其他部分定位至8000H内,可以保证中断进一步程序的正确执行,也可以在SARAM内设置断点,似乎是一种可行的方法,但是程序每改动一点,也就意味着中断向量表也要做相应的修改,即要再次将中断向量表烧写到FLASH内,不仅麻烦而且对FLASH也有损伤。

  ◆ 问题的解决

  针对以上种种方案存在的弊端,笔者提出了一种行之有效的解决办法,那就是将中断向量表和程序都定位至8000H开始的SARAM内,而在0000H烧写进一定的跳转语句,这样既保证了中断的正确执行,程序断点的调试,同时对FLASH也只要进行烧写即可。

  首先完成跳转语句的烧写。F206的FLASH烧写必须具备如下几个前提:FLASH烧写工作只能在WIN98操作系统下完成,在WIN2000操作系统下将会显示窗口初始化失败,被强行关闭;时钟频率必须为20MHz。

  相应的CMD文件为:

  MEMORY

  { PAGE 0: VECB :org= 0000h,length=40h

  ……

  PAGE 1:

  ……

  }

  SECTIONS

  { vectorb : {} > VECB PAGE 0

  ……

  }

  相应的vectorb的程序为如下。

  *File: vectorb.h *

  *File defines Interrupt vector labels *

  .global _c_int0

  .global _c_int1

  .global _c_int2

  .global _c_int3

  .sect "vectorb"

  b 8000h ;硬件复位c_int0

  b 8002h ;外部中断1 /INT1

  b 8004h ;外部中断2 INT2/INT3

  b 8006h ;定时器中断

  nop

  nop

  b 8000h

  b 8000h ;保留

  b 8000h ;保留

  b 8000h ;保留

  nop

  nop

  b 8000h

  b 8000h

  b 8000h

  b 8000h

  假设烧写程序在E:\LOADEPP\目录下,则将上述工程编译并建立形成的TZ.OUT文件也复制到同样的E:\LOADEPP\目录下,然后执行如下烧写语句。

  E:\LOADEPP\>PRG2XXPP -P 280 -M 0X0006 -S 0X4007 -W 6 -E SRC\C2XX_SPX.OUT TZ.OUT即可。

  在跳转语句的烧写完成后,即可将中断向量表和程序都定位至8000H开始的SARAM内,这样在SARAM内既可很方便设置断点,同时已经烧写进FLASH的跳转语句又能保证中断的正确执行,且每次对程序修改后无需再次对FLASH烧写,只要重新生成。OUT文件,然后执行CCS的FILE菜单下的LOAD PROGRAM即可。

  相应的CMD文件如下。

  MEMORY

  { PAGE 0:

  VEC :org=8000h,length=40h

  PROG :org=8050h,length=0600h

  PAGE 1:

  RAM_B2 :org=60h,length=20h

  RAM_B0 :org=0200h,length=0100h

  RAM_B1 :org=0300h,length=0100h

  DATAS :org=11ffh,length=0600h

  }

  SECTIONS

  { .data : {} > RAM_B0 PAGE 1

  .stack: {}> DATAS PAGE 1

  .bss : {}>DATAS PAGE 1

  /******************************************/

  vectors : {} > VEC PAGE 0

  .text : load > PROG, PAGE 0

  .mirro : {} > PROG PAGE 0

  .cinit : {} > PROG PAGE 0

  }

  相应的vectors中断向量表的程序如下。

  * File: vector.h *

  * File defines Interrupt vector labels *

  .global _c_int0

  .global _c_int1

  .global _c_int2

  .global _c_int3

  .sect "vectors"

  b _c_int0 ;硬件复位c_int0

  b _c_int1 ;外部中断1 /INT1

  b _c_int2 ;外部中断2 INT2/INT3

  b _c_int3 ;定时器中断

  nop

  nop

  b _c_int0

  b _c_int0 ;保留

  b _c_int0 ;保留

  b _c_int0 ;保留

  nop

  nop

  b _c_int0

  b _c_int0

  b _c_int0

  b _c_int0

  结语

  针对具有片内FLASH的DSP芯片TMS320F206,在没有片外RAM的情况下如何方便有效的进行仿真调试,本文提出了一种行之有效的解决办法,以期对各位致力于DSP研究开发的同仁有所帮助。


  
上一篇:基于dsPIC33F的微机保护装置
下一篇:WinCE嵌入式操作系统

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料