位置:51电子网 » 技术资料 » 接口电路

TMS320F206的仿真调试

发布时间:2008/5/28 0:00:00 访问次数:530

前言
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 :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的

前言
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 :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_s.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的

相关IC型号

热门点击

 

推荐技术资料

耳机放大器
    为了在听音乐时不影响家人,我萌生了做一台耳机放大器的想... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!