4.3 软件模拟器
软件模拟器是一种模拟DSP芯片各种功能并在非实时条件下进行软件调试的调试工具,它不需要目标硬件支持,只需在计算机(如PC)上运行,是一种廉价方便的调试工具。当然,由于DSP芯片用软件模拟实现,运行速度慢是软件模拟器的一个突出的缺点。软件模拟器模拟DSP芯片的I/O 口时采用与文件关联的方法来实现,因而调试中所需的I/O值可从文件中读取,输出到I/O口的值也可存储在文件中。
软件模拟器的主要特征有。
(1)在计算机上执行用户DSP程序;
(2)可修改和查看寄存器;。
(3)可修改和显示数据和程序存储器:任何时候都可进行存储器的修改,也可在程序装人前进行存储器初始化;
(4)可模拟外设、高速缓存(cache)及流水线、定时等功能;
(5)可计算指令周期数;
(6)可编程的断点设置:可在取指令、读写存储器及错误条件满足时设置断点;
(7)可进行累加器、程序计数器、辅助寄存器的跟踪;
(8)指令的单步执行;
(9)用户可设定中断产生间隔;
(10)在遇到非法操作码和无效数据访问时提示错误信息;
(ll)从文件中执行命令。
在用模拟器调试程序前,首先必须对源文件进行汇编,如果程序由多个模块组成,还迎须进行链接。链接后的绝对代码可以装人模拟器进行调试。
TI 提供的软件模拟器有:
·TMs320CIX软件模拟器
·TMs320C2X软件模拟器
·TMs320C2XX软件模拟器。
·wi320C3X软件模拟器
·TMS320C4X软件模拟器
·TMs320C5X软件模拟器
·TMs320C54X软件模拟器
在上述软件模拟器中,新版本的模拟器都采用了C和汇编源码调试器接口,允许用户用C语言或汇编语言进行调试,也可进行两种语言的混合调试,用户接口界面非常友好。其程序执行的方式有下列几种方式:单条指令/多条指令、单周期/多周期、执行到条件满足,如果条件满足一直执行、执行设置的循环次数、无条件执行至键输入等。
用软件模拟器模拟I/O口时,首先用与存储器配置相同的方法将I/O口增加到存储器映象中,然后用关联命令MC将I/O口与一个文件相关联,MC命令的格式为:
MC 口地址,页,文件名,{READ/WRITE}
其中的“页”分别用1和2表示,“1’’表示串行口,“2”表示并行口。
下面我们以TMS320C50为例说明软件模拟器模拟I/O口时的使用方法。
在TMS320C5X中,若要将50H口配置为输入口,并与in.dat文件关联,命令如下:
MC 0x50,1,0xl,IPORT ;口地址50H配置为输人口
MC 0x50,1,in.dat,READ ;口地址50H与文件in.dat关联
TMs320C50具有两个串行口,一个是标准的同步串行口,一个是TDM串行口。两个串行口的配置方法如下。
MA 0x20,1,1,IPORT ;配置DRR(0x20)为输入口
MA OX21,1,1,0PORT ;配置DXR(Ox2l)为输出口
MA 0x30,1,1,IPORT ;配置TRCV(0X30)为输入口
MA Ox31,1,1,OPORT ;配置TDXR(Ox31)为往出口
MC 0x20,1,RECV.DAT,READ ;将DRR与RECV.DAT文件关联
MC Ox2l,1,XMIT.DAT,WRITE ;将DXR与XMIT.DAT文件关联
MC 0x30,1,TRCV.DAT,READ ;将TRCV与TRCV.DAT文件关联
MC OX31,1,TXMT.DAT,WRITE ;将TDXR与TXMT.DAT文件关联
上述配置可以放人Simlator的初始配置命令文件simlaor.cmd中,则每次启动simlator调试器自动进行配置,当然在调试过程中也可以重新进行配置。
关联文件具有特定的格式,对一般的I/O口和标准的同步串行口,文件格式为每行一个16进制数,如:
OxO123
0x4567
Ox89ab
对TDM串行口,输入和输出文件格式需要三个区域:地址、数据和通道号,每个区域都是16进制格式,中间用空格分开,如:
0x80 OxO123 0
0x40 0x4567 1
0x20 Ox89ab 2
0x10 0xcdef 3
0x01 0x0123 4
Simlator模拟串行口中断和外部中断是通过设置伪寄存器的方法实现的。每一个中断设置两个伪寄存器,一个是中断周期寄存器,另一个是中断定时器寄存器。中断周期寄存器内设置的是两个中断间隔的机器周期数。中断定时器寄存器内包含的是当前至下一个中断之间的机器周期数,中断定时器寄存器以机器周期的速率进行递减,若中断使能,则递减至0时就产生一个中断,同时将中断周期寄存器中的值装人。表4.2列出了TMS320C5X串行口的伪寄存器
表4.2 串行口伪寄存器
伪寄存器 作 用 缺省值
XIRP 发送中断周期寄存器 64
XIRT 发送中断定时器寄存器 从XIRP装入
RIRP 接收中断周期寄存器 64
RIRT 接收中断定时器寄存器 从XIRT装入
TXIRP 独立方式TDM发送中断周期寄存器 64
TXIRT 独立方式TDM发送中断定时器寄存器 从TXIRP装入
TRIRP 独立方式TDM接收中断周期寄存器 64
TRIRT 独立方式TDM接收中断定时器寄存器 从TRIRP装入
TDMP TDM串行口周期寄存器 64
TDMT TDM串行口定时器寄存器 从TDMP装入
MS320C50的四个外部中断INTl、IN12、IN13和INT4的模拟也用同样的方法实现。每个中断用两个伪寄存器,一个是外部中断周期寄存器,寄存器名分别为TIC1P,TIC2P,TIC3P和TIC4P,另一个是外部中断走时器寄存器,寄存器名分别为TICIT、TIC2T、TIC3T和TIC4T。调试过程中可以用下列方法设置中断产生的间隔:
?RIRP=100 ;设置串行口接收中断间隔为100
?XIRP=100 ; 设直串行口发送中断间隔为100
?TDMP=1000 ;设置TDM串行口间隔为1000
?TIC1P=128 ;设置INT1中断间隔为128
4.4 评价模块 (EVM)
评价模块是一种低成本的开发板,在EVM板上一般配置了一定数量的硬件资源,可用来进行DSP芯片评价、性能坪估和有限的系统调试。调试接口也采用上述的C/汇编源码调试器。
4.5 软件开发系统 (SWDS)
软件开发系统是一块PC插卡,可提供低成本的评价和实时软件开发。可用来进行实时的软件调试,程序在DSP芯片上实时运行。与仿真器不同的是软件开发系统不提供实时硬件调试功能,因此涉及目标I/O操作一般用文件I/O代替。TI提供了TMS320C2X和TMS320C5X
等软件开发系统
4.6 仿真器 (XDS)
仿真器,也即扩展开发系统(XDS),可用来进行系统级的集成调试,是进行DSP芯片软硬件开发的最佳工具。目前主要有两种类型的仿真器:一种是传统的电路仿真器,主要用于早期的TMS320CIX和TMS320C2X两代DSP芯片的仿真,这两代DSP芯片没有仿真信号线;另一种是先进的扫描仿真器,主要用于TMS320C3X、TMS320C4X、TMS320C5X、TMS320C54X。
TMS320C2XX和TMS320C8X等DSP芯片的仿真,在这些DSP芯片上提供了用于仿真的一些信号线。
采用传统的电路仿真器对用户板进行硬件仿真时,仿真器的电缆插头必须插入到用户硬件电路中DSP芯片的相应位置,也就是说,仿真电缆的插头引脚必须与DSP芯片的引脚一一对应。TI的XDS/22仿真器就属于这一类,主要用于TMS320CIX和TMS20C2X等芯片的仿真。
扫描仿真器不采用插入仿真的方法,而是通过DSP芯片上提供的几个仿真引脚实现仿真功能。这种方法为TI公司所开发,可用来解决高速DSP芯片的仿真。由于高速DSP芯片具有高度并行的结构、快速的指令周期、高密度的封装等特点,采用传统的电路仿真方法很难实现可靠的仿真。扫描仿真消除了传统的电路仿真存在的问题,例如,仿真电缆过长会引起信号失真,仿真插头会引起可靠性差等问题。用户程序可在目标系统的片内或片外存储器实时运行,而不会因仿真器引入额外的等待状态。
DSP芯片内部是通过移位寄存器扫描链实现扫描仿真,这个扫描链被外部的串行口访问。采用扫描仿真,即使芯片已经焊在电路板上,也可进行仿真调试,这对于在生产过程中调试DSP系统也带来极大的方便。
TI为TMS320C3X、TMS320C4X、TMS320C5X、TMS320C2XX、TMS320C54X和TMs320C8X等
DSP芯片都提供了相应的仿真器。其中,TMS320C3X的仿真器采用了12线的仿真头,仿真器通过这个仿真头与目标系统的TMS320C3X相接进行仿真。其12线仿真头如图4.1所示。其中,EMU0-EMU3为四根仿真线,H3为时钟线,由TMS320C3X提供,第7脚的PD为存在检测线,用于指示仿真头与目标系统的连接,在目标系统中,此脚接至+5V。第8脚为空脚,其余均为地线。
除TMS320C3X之外,其它仿真器的仿真信号线都采用JTAG标准IEEE ll49.1。如TMS320C4X和TMS320C5X的仿真头均采用14根信号线,14线仿真头如图4.3所示,表4.3是仿真信号的定义。其中TDO信号与TCK时钟的下降沿对齐,TMS和TDI在TCK时钟的上升沿取样。扫描仿真器的用户界面均采用上面介绍的C/汇编源码调试器界面,与软件模拟器的用户界面完全相同。目标代码可通过扫描接口从PC机下载到目标系统的存储器中,一般下载1K字节的代码约需100mS的时间。
EMU1 1 2 GND TMS 1 2 TRSTEMU0 3 4 GND TDI 3 4 GND
WMU2 5 6 GND PD(+5V) 5 6 空
PD(+5v) 7 8 空 GND TDO 7 8 GND
EMU3 9 10 GND TCK_RET 9 10 GND
H3 11 12 GND TCK 11 12 GND
EMU0 13 14 EMU1
(a)TMS320C3X (b)TMX320C5X
图4.3 仿真器的仿真头
表4.3 JTAG仿真信号定义
仿真头信号 仿真头状态 DSP芯片状态 信号说明
TMS 输出 输入 JTAG测试方式选择。
TDI 输出 输入 JTAG测试数据输入。
TDO 输入 输出 JTAG测试数据输出。
TCK 输出 输入 JTAG测试时钟。TCK是仿真电缆头输出的10MHz时钟源。这个信号可以用来驱动系统测试时钟。
TRST\ 输出 输入 JTAG测试复位。
EMU0 输入 输入/输出 仿真脚0。
EMU1 输入 输入/输出 仿真脚1。
PD 输入 输出 存在检测。此信号用来指示仿真电缆连接正确,目标系统已加电。PD在目标系统中应接至+5V。
TCK_RET 输入 输出 JTAG测试时钟返回。测试时钟输入至仿真头,此信号是缓冲或非缓冲的TCK信号。
以上介绍了TMS320系列DSP的代码生成和代码调试两类开发工具。在代码生成工具中,介绍了C编译器、汇编器和链接器及使用方法,在代码调试工具中,介绍了C/源码调试器、初学者工具DSK、软件模拟器、评价模块EVM、软件开发相同SWDS和仿真器,并介绍了源码调试器的使用方法。了解并熟练掌握这些开发工具对于加快开发的速度提高开发效率十分重要。 |