基于以太网协议的XPC目标与DSP间的通信
2015-12-25余永元张晓航
罗 奇 余永元 龙 航 张晓航
(贵州大学电气工程学院,贵州 贵阳 550025)
0 引言
xPC 目标[1]是一个实时的内核系统,是由Mathworks 公司基于RTW框架体系提供和发行的产品。该系统采用32 位保护模式运行在目标机上,用于产品的原型开发和测试。支持多种类型的I/O 设备,用户只需安装相关软件和编译器就可将一个PC 兼容机作为xPC 目标实时系统。
以太网具有灵活性高、传输速度快,满足全双工通信,易于实现。采用载波多路访问和冲突检测(CSMA/CD)机制,数据传输速率快,适合于传输TCP/IP 数据,xPC 目标通过连接以太网与宿主机通信。本文用到的RTL8019AS 芯片是高度集成以太网控制器,它可以方便的的解答即插即用NE2000 兼容适配器。基于以太网的xPC 目标能够方便的实现DSP 的通信。xPC 目标与DSP 通信系统如图1 所示。
图1 xPC 与DSP 通信系统
1 xPC 目标及其网卡配置
1.1 xPC 目标
xPC 目标采用双机模式,即宿主机(上位机)控制目标机(下位机)的技术途径,其中,宿主机搭建Simulink 模型,通过编译下载到目标机执行控制器代码。xPC 目标要实现宿主机与目标机之间的通信,可以通过以太网连接或者串口线连接来实现
xPC 目标的功能强大,操作简单,用户可以很方便实现对实时系统的快速原型化、测试和配置功能[2]。
(1)普通配置的PC 机都可以作为目标机嵌入xPC 实时系统,在此系统中实时运行Simulink 和RTW 通过编译生成的应用程序。
(2)具有丰富的I/O 设备驱动模块库,支持多种CAN 总线。
(3)宿主机和目标机通信通过RS232 串口或者以太网TCP/IP 协议实现。
(4)MATLAB 应用程序界面采用客户/服务模式,提供了九十多种函数用于宿主机对目标机的控制。
(5)可以在程序运行时从宿主机或者目标机上动态调参。
(6)在宿主机和目标机上都可以进行交互式的数据可视化和信号跟踪。
(7)支持Microsoft Visual C/C++5.0 以上版本的开发工具。
1.2 xPC 目标机网卡配置
本文中,宿主机和目标机之间的通信,目标机与DSP 之间的通信,都是通过连接以太网来实现。因此xPC 目标机需要配备两块以太网卡,一片用于xPC 目标跟宿主机通信,另一片用于xPC 跟DSP 间的通信。
xPC 目标机跟宿主机之间的通信可以选择普通的网卡,市场最常见的10M/100M 网卡都可以满足要求。在Matlab 命令窗口输入-xpcexplr 命令,调出宿主机与xPC 目标通信连接界面。首先设置宿主机和xPC 目标机的通信类型是基于以太网TCP/IP 协议。然后设置xPC 目标的IP 地址和端口号,这里要注意目标机的IP 要和宿主机的IP 处于同一网段,例如xPC 的IP 可以设成192.168.1.9,那么宿主机的IP 要设成192.168.1.X。如果不是同一网段,宿主机和目标机就不能连通。设置好参数之后就可以点击连接,如果绿灯亮,则表示可以宿主机可以编译和下载程序到目标机。
用于跟DSP 通信的网卡则需要选择Intel 8255X 系列和Intel Gigabit 系列的网卡,可以参考文献[3]。图2 是在Matlab/Simulink 搭建的基于TCP/IP 协议的发送/接收模型:
图2 Simulink 中发送和接收模型
模型参数设置
1)利用以太网卡初始化模块进行初始化设置,这其中包括网卡的总线数目,PCI 插槽的序号,发送数据网卡的MAC 地址。
2)设置创建以太网数据包模块中的MAC 地址,这里是DSP 的MAC,类型设为’0800’表示创建的是基于TCP/IP 协议数据包。
3)连接宿主机和xPC 目标机,成功之后点击编译,模型下载到xPC 目标机,在xPC 目标机输入-start,开始发送数据包。
2 DSP 实现通信
DSP28335 的以太网连接芯片选用由台湾Realtek 公司生产的基于ISA 总线的10Mbps 以太网控制器芯片RTL8019AS,该芯片实现以太网媒介访问层(MAC)和物理层(PHY)的功能[4],其中包括MAC 数据帧的收发、地址识别、CRC 校验、曼彻斯特编码解码等功能。
2.1 DSP 配置MAC 和IP 地址
在接收数据之前需要配置DSP 的MAC 和IP 地址,以及xPC 目标发送数据包的网卡IP 地址。这一部分的实现需要在程序中进行配置,部分程序如下所示:
2.2 DSP 实现TCP/IP 协议通信
DSP 初始化寄存器和网络芯片RTL8019AS,并且开启中断.当有网络数据到达时,DSP 采用中断方式读取以太网数据并进行分析。xPC 发送过来的数据是用TCP/IP 协议封装好的标准以太网帧,DSP 收到的数据首先存储在RTL8019AS 的缓存中,然后调用接收数据帧函数将数据读入DSP。读数据包之前,可以通过读BNRY 指针和CURR指针[5]来判断是否接收到数据包,BNRY=CURR 说明没有数据包接收,当两个指针变量有差值时说明有数据包收到。
完成xPC 目标和DSP 配置后,先启动xPC 目标机,然后启动DSP。就可以在xPC 目标机上观测xPC 目标发送的信号和接收来自DSP 反馈回来的信号。具体波形如图3 所示:
图3 xPC 目标发送信号和DSP 反馈信号
3 结束语
本文基于以太网TCP/IP 协议实现了xPC 目标与DSP 的全双工通信,xPC 目标通过以太网卡给DSP 发送数据,DSP 正常接收数据并反馈给xPC 接收,实验所得结果满足期望,两个信号之间的延时延时小,丢包率低,同时也验证了基于以太网TCP/IP 协议通信的可靠性。
[1]杨涤,等.系统实时仿真开发环境与应用[M].北京:清华大学出版社,2002.
[2]陶建峰,朱野,等.xPC 目标及其API 函数在实时控制软件开发中的应用[J].上中国航空学会控制与应用第十二届学术年会论文集,2000.
[3]xPC TargetTMI_O Reference Guide[M].The Math works Inc,2003.
[4]张颖,张长利.基于DSP 的具有以太网接口的嵌入式系统设计[J].煤矿机械,2005.
[5]肖守邦,等.DSP 以太网通信接口设计[J].中国高新技术企业,2008.