摘 要:实时数据交换(RTDX)是TI公司推出的一种非常优秀的实时数据传输技术,为DSP系统的软件调试提供了一种全新的方法。它利用DSP的内部仿真逻辑和JTAG接口实现主机与目标机之间的数据交换.不占用DSP的系统总线和串口等I/0资源.数据传送完全可以在应用程序的后台运行。对应用程序影响很小。文中介绍了一种基于MATLAB的RTDX实现方法,可为DSP编程人员发现程序错误和监测系统运行状况提供实时、直观的表示形式,并在以C6201型DSP为主处理器的目标板上得到应用。
关键词:实时数据交换;MATLAB;数字信号处理器;CCS
1 引言
在DSP系统开发过程中.通常要验证算法的正确性。传统方法是主机调试器在目标应用程序中插入断点.中断目标应用程序运行.观测目标机上各个寄存器或内存变量的值。但是处理系统是实时运作的.这种方法不能实时跟踪处理过程中数据的变化,大多数时间显示的只是片面的滞后的数据,数据显示也不直观.给调试过程带来很多不便。TI公司的Real Time Data Exchange(RTDX)技术就是利用DSP的内部仿真逻辑和JTAG接口实现主机与目标机之间的数据交换.它不占用DSP的系统总线和串口等L/0资源,数据传送完全可以在应用程序的后台运行,对应用程序影响很小.它完全可以在不中断目标应用程序的前提下向主机实时发送目标机上各个寄存器或内存变量的值。而主机上的可视化应用程序也可以通过嵌入COM的API函数获得这些数据.并以适当的格式把从目标获得的数据显示出来。这样.编程人员可以实时观测和分析应用程序的运行情况.更方便地查找和修改应用程序的错误,从而缩短了系统的设计开发周期。
2 RTDX的原理
RTDX是一种可以在不影响目标应用程序运行的情况下让主机和目标机进行实时数据传输的技术。RTDX支持双向数据流。即目标机到主机的数据流和主机到目标机的数据流。
RTD)X的数据流示意图如图1所示。
2.1 目标机到主机的数据传送
目标机为了向主机发送数据必须设定一个输出通道RTDX—ochan。通过用户接口可将数据送到输出通道以使这些数据立即保存到RTDX目标机的缓存(由RTDX目标函数库定义)中,然后再将这些数据通过,JTAG接口发送到主机。RTDX主机函数库将接收到的数据保存在log文件或主机的缓存(具体由RTDX工作模式来设定)中。保存在log文件或主机缓存中的数据可以通过COM AutomationClient重新获取,以便显示或分析。
下面是几种典型的COM Automation Client:
MATLAB applications;
Microsoft Excel;
Visual Basic applications;
Visual C++applications:
Lab View;
2.2 主机到目标机的数据传送
目标机要从主机中获得数据.首先必须设定输入通道RTDX—ichan接收主机发出的命令,从而实现数据传输的同步。运行主机写操作时.应由COMAutomation Client通过COM接口把要发送的数据先写人RTDX主机函数库中的缓存.等待目标机读取数据。当RTDX主机函数库收到从目标机发出的读取数据请求时,保存在RTDX主机函数库中的数据便可通过JTAG接口将数据发送到目标机.写入目标机指定的存储区域。操作完成后,主机会通知RTDX目标机函数库。RTDX目标机函数库的用户接口和COM接口利用RTDX目标机函数库的用户接口可实现目标机。DSP应用程序和主机之间安全可靠的数据交换。同时可利用它完成应用程序向RTDX主机函数库发送数据、应用程序向RTDX主机函数库发送数据请求及在目标机上提供数据缓存等功能。
2.3 RTDX的运行模式
RTDX主机库提供二种运行模式:连续模式和非连续模式。在连续模式中数据只是简单地被RTDX主机函数库缓冲.此模式用于希望得到连续数据并显示的场合。而在非连续模式中数据被写到主机上的一个日志文件(10g file),所以此模式适用于希望采集有限的数据场合。
3 MATLAB Link for CCS介绍
MATLAB是一种科学计算软件.专门以矩阵的形式处理数据。MATLAB将高性能的数值计算和可视化集成在一起.并提供了大量的内置函数.广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计。Link for Code Composer Studio用于在MATLAB、TI软件开发环境Code ComposerStudio(CCS)和TI DSP硬件之间建立双向和实时数据链接。工程师可以利用MATLAB的可视化功能及数学函数可视化分析来自CCS及C2800/5000/6000等系列DSP的数据。利用该工具可以自动执行CCS的命令来进行分析、交互或者批处理调试和显示.在MATLAB和CCS之间传输数据验证算法。通过RTDX通道可以在不停止DSP运行的情况下与XDS510/XDS560仿真器之间实现高速、实时数据交换.并提供分析和可视化仿真或实时数据能力。
3.1 MATLAll对CCS的控制功能
用户可以通过MATLAB Link for Code Compos-er Studio在MATLAB环境中对11 DSP嵌入式应用程序进行算法级和系统级的观察、分析、调试及验证,包括分析、调试代码实时分析:可以在MATLAB环境里对CCS的程序进行调试.可以将数据传递到CCS,在DSP上执行算法,在MATLAB的命令窗口进行双向、交互的数据分析;可以对DSP的寄存器和存储区进行操作.获取数据到MATLAB工作区.实现绘图计算和统计曲线拟合。MATLAB、Simulink和Link for Code Composer Studio为TI的DSP提供了验证、调试、观察和实现嵌入式软件的集成平台。
3.2 分析处理并显示数据
实现信号处理运算实时分析测试(RTDX)。该工具借助RDTX提供了管理TI目标DSP的数据和算法的通道.能够在目标DSP运行的情况下在MATLAB与DSP之间实时交换数据.可以传递测试向量、监控程序输出、显示和评估实时测试结果:读取、写入DSP存储空间的数据,在程序执行期间改变执行参数,在不中断程序执行的情况下改变算法或者在代码里加入断点.可以对原始系统设计进行实时验证和修正。
4 基于MATLAB的RTDX实现
本设计用MATLAB编程作为COM AutomationClient实现同C6201为主处理器的目标板与主机之间的通信并实时获取目标板数据。
4.1 目标DSP所需的准备工作
4.1.1 通道定义
在DSP的C程序中需在主函数前包含必要的头文件和输入输出通道定义语句,即加入:
其中通道名称ichan和oehan可以任意取,但要与Marlab程序中所使用的通道名称相对应。
4.1.2 主机与目标机间的同步
4.1.3 目标机写操作程序
4.1.4设定RTDX_P0110的调用方式
RTDX目标机函数库通过调用函数RTDX Poll0实现主机与目标机间通信。RTDX_PollO的调用有二种方式:一种是在应用程序中调用。另一种是利用中断服务程序调用。程序如下:
While (RTDX_writing!=NULL)
{#if RTDX POLLING_IMPLEMENTATION
RTDX_Poll();
#end if }
若将宏RTDX_POLLING_IMPLEMENTATION定义为1.则表示在应用程序中调用RTDX_Poll0.而如果将其定义为0.则表示在中断服务程序中调用RTDX_Pon0。其他参数设定可在CCS中进行,目录如图2所示。
4.2 主机的部分MATLAB程序
4.3 操作过程
首先将改好的目标DSP程序编译下载并运行,然后在CCS的Tools工具栏中打开RTDX,选Con-figuration Contral,并选中Enable_RTDX(见图3)。
然后运行MATLAB程序,此时在MATLAB的com-mand window就能看到目标DSP回传给主机的数据。如果想直观的观察所得的数据,还可以调用MATLAB的强大绘图功能,以图形形式显示数据。