工控网首页
>

应用设计

>

基于DSP TMS320F206的仿真调试

基于DSP TMS320F206的仿真调试

2014/7/3 10:54:43

TMS320F206(以下简称F206)是C2XX系列DSP中的一个产品,其独有的片内32KB的闪速存储器FLASH使其仿真调试与众不同。F206带有程序、数据和I/O三个相互独立的存储空间,每个存储空间均为64K�16位,其中片内双访问RAM为544字(288字用于数据,另256字可用于程序/数据),片内FLASH为32K字,片内单访问RAM为4.5K字,其具体分布如表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 rg= 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     假设烧写程序在EOADEPP目录下,则将上述工程编译并建立形成的TZ.OUT文件也复制到同样的EOADEPP目录下,然后执行如下烧写语句。 EOADEPP>RG2XXPP -P 280 -M 0X0006 -S 0X4007 -W 6 -E SRCC2XX_SPX.OUT TZ.OUT即可。     在跳转语句的烧写完成后,即可将中断向量表和程序都定位至8000H开始的SARAM内,这样在SARAM内既可很方便设置断点,同时已经烧写进FLASH的跳转语句又能保证中断的正确执行,且每次对程序修改后无需再次对FLASH烧写,只要重新生成.OUT文件,然后执行CCS的FILE菜单下的LOAD PROGRAM即可。   相应的CMD文件如下。    MEMORY    { PAGE 0:    VEC rg=8000h,length=40h     PROG rg=8050h,length=0600h     PAGE 1:     RAM_B2 rg=60h,length=20h     RAM_B0 rg=0200h,length=0100h     RAM_B1 rg=0300h,length=0100h     DATAS rg=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研究开发的同仁有所帮助。

投诉建议

提交

查看更多评论
其他资讯

查看更多

超越传统直觉,MATLAB/Simulink助力重型机械的智能化转型

新大陆自动识别精彩亮相2024华南国际工业博览会

派拓网络被Forrester评为XDR领域领导者

智能工控,存储强基 | 海康威视带来精彩主题演讲

展会|Lubeworks路博流体供料系统精彩亮相AMTS展会