背景介绍
一般的xPC仿真需要2台电脑来分别实现目标机和宿主机,两者之间通过以太网或者串口实现通讯。Matlab的xPC Target提供了一个运行在目标机上的高度剪裁的实时操作内核,无需在目标机上面安装任何的操作系统,只需要包含实时内核的启动盘启动目标机即可,也就是说BIOS是实时内核所需要的唯一软件。一般的双机方法需要制作xPC的目标启动盘,有多种方式,软盘,U盘(具体方法可以参考U盘DOS启动盘的制作),CD盘,硬盘等的方式。
xPC工作过程
- 载入BIOS,BIOS自动搜索目标启动盘中的启动映像文件。启动映像文件首先将CPU从实模式状态切换到保护模式下,然后设置目标PC机并启动实时内核。
- 启动实时内核后,将**应用程序载入程序,并等待从宿主机上下载目标应用程序。将目标应用程序复制到指定内存区域后设置目标程序处于准备执行状态。
- 通过函数或其他应用程序与目标程序进行通讯。
本文思路
本文的方式是在一台电脑上利用虚拟机充当目标机的方式实现一台电脑的双机方法。虚拟机是在硬盘上虚拟出来的电脑,和真是的电脑几乎完全一样,且拥有独立的CMOS、硬盘和操作系统,提供的虚拟网络功能可以实现互联,能够使用外部机器的物理接口和硬件,能够提供更加有效的底层硬件使用。
实现方法
目标机的配置
用VMvare软件(12.1.1 build-3770994)配置一台虚拟机即作为目标机。选择创建新的虚拟机,选择典型配置,稍后安装操作系统,在选择客户机操作系统的时候,由于xPC Target对硬 件要求很低且不需要安装其它操作系统,故选择其他,修改虚拟机名称和位置,然后可以分配较小的硬盘和内存。这样,目标机就创建完成了。
接下来对目标机进行配置,这里我们采用以太网通信的方式(也可以采用串口,虚拟机也支持与外部的串口通信),在虚拟机设置,硬件设置,网络适配器里面选择仅主机模式(host-only)。
在选择仅主机模式时,宿主机与目标机通信的虚拟网卡为VMvare Network Adaptor VMnet1,需要将其在控制面板中启用(与锐捷网卡冲突,平时禁用)。虚拟网卡型号有很多,有着不同的性能。一般默认的型号为AMD PCNet,恰好属于xPC Target网卡驱动列表中支持的 RTLANCE类型。可以查看到虚拟网卡的IP地址为192.168.163.XXX。
宿主机的配置
在宿主机(Win7)打开matlab(R2011b)命令窗口运行xpceplr。在xPC Target Explorer窗口中进行相关设置。
首先设置Host PC Root的Compiler(s) Configuration为你自己的C编译器目录。
然后选择TargetPC1的Configuration的Communication,选择Host target communication为TCP/IP方式,将目标机IP地址设为与宿主机同一网段。TCP/IP target driver可以选择RTLANCE也可以设置成为auto,其他保持默认。在Settings里面将Target RAM size调为人工模式并适当调大点,自动的话只有10M。
制作目标机启动盘
选择Configuration,可以看到有多种启动盘制作方式。可以通过虚拟软驱制成.img格式的软盘镜像文件,然后在VMvare虚拟的目标机软驱中加载。这里采用使用CD Boot制作CD启动盘(在刻盘提醒时忽略),把生成的.iso文件加载到目标机虚拟机的CD-ROM中。由于虚拟机自带BIOS,如果没有系统的话,会自动寻找启动文件。如果用的是带系统的虚拟机,就要设置引导顺序,将CD引导方式设为首选。
进行连接测试
启动虚拟机,显示如下说明xPC Target的实时内核启动:
在matlab命令串口输入xpctest命令行进行通信测试:
如图显示通信正常,可建立xPC在虚拟机上进行目标机的仿真。而且根据VMvare官方介绍:
Virtual machines can connect to smart card readers that interface to serial ports, parallel ports, PCMCIA slots, and PCI slots. A virtual machine considers a smart card reader to be a type of USB deveice.
因此可以在此基础上进行与其他硬件相连接通信的半物理仿真。
参考文献
孙逸神. 利用VMware在一台PC上实现xPC Target实时仿真[J]. 电脑知识与技术:学术交流, 2009, 5(22):6298-6299.