用虚拟机在一台电脑上实现xPC实时仿真

2023-05-16

背景介绍

  一般的xPC仿真需要2台电脑来分别实现目标机和宿主机,两者之间通过以太网或者串口实现通讯。Matlab的xPC Target提供了一个运行在目标机上的高度剪裁的实时操作内核,无需在目标机上面安装任何的操作系统,只需要包含实时内核的启动盘启动目标机即可,也就是说BIOS是实时内核所需要的唯一软件。一般的双机方法需要制作xPC的目标启动盘,有多种方式,软盘,U盘(具体方法可以参考U盘DOS启动盘的制作),CD盘,硬盘等的方式。

xPC工作过程

  1. 载入BIOS,BIOS自动搜索目标启动盘中的启动映像文件。启动映像文件首先将CPU从实模式状态切换到保护模式下,然后设置目标PC机并启动实时内核。
  2. 启动实时内核后,将激活应用程序载入程序,并等待从宿主机上下载目标应用程序。将目标应用程序复制到指定内存区域后设置目标程序处于准备执行状态。
  3. 通过函数或其他应用程序与目标程序进行通讯。

本文思路

  本文的方式是在一台电脑上利用虚拟机充当目标机的方式实现一台电脑的双机方法。虚拟机是在硬盘上虚拟出来的电脑,和真是的电脑几乎完全一样,且拥有独立的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。
VMVARE的虚拟网卡

宿主机的配置
  在宿主机(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的实时内核启动:
xPC内核启动
  在matlab命令串口输入xpctest命令行进行通信测试:
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.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用虚拟机在一台电脑上实现xPC实时仿真 的相关文章

随机推荐

  • js实现表格的选中一行-------Day58

    最开始想更多的用js来动态操作表格 xff0c 是因为在应用了easyUI之后 xff0c 发现直接写一个 lt table id 61 34 tt 34 gt lt table gt xff0c 这就够了 xff0c 界面里面就剩下这么一
  • 积跬步,聚小流-------关于UML时序图

    uml时序图的存在 在上一篇中记录了uml类图 xff0c 用类图来描述代码中所需要的类以及相互之间的关系 xff0c 也就立体的将整个程序框架展现在了我们面前 xff0c 像一幅画 xff0c 有山有水有人 一张照片只能定格当时的美好 x
  • 积跬步,聚小流------用smartpaginator来做分页

    网络上的实例 xff08 jquery smarypaginator 例图 xff09 如果说是从 百度 上搜索过 jquery分页插件 的朋友 xff0c 相信对上面的图片不会陌生 xff0c 几乎所有介绍 jquery分页插件 的文章中
  • 我的2017-搭建个人网站,搭建PHP环境(2)

    上周确定了 xff0c 想要应用的后台语言 xff0c 面临的最大问题就是 xff1a php我不会啊 xff0c 哈哈哈哈 xff0c 所以接下来首先要做的就是了解 学习php的相关知识 接下来的第一步 xff1a 环境搭建 1 下载安装
  • 设计一个类:只能在堆上创建对象?只能在栈上创建对象?只能创建一个对象?

    在C 43 43 中 xff0c 类的对象建立分为两种 xff0c 一种是静态建立 xff0c 如A a xff1b 另一种是动态建立 xff0c 如A ptr 61 new A xff1b 这两种方式是有区别的 静态建立一个类对象 xff
  • 我的2017-搭建个人网站,hello PHP(2)

    学习一门语言 xff0c 例行惯例 xff0c 先来个 hello world 搭建好了php环境 xff0c 然后就可以运行php了 xff0c 首先用一种最简单的方法 xff0c 在wamp安装位置 xff08 相应的文件夹 xff09
  • 我的2017-搭建个人网站,自拟定代码根目录

    wampserver集成安装环境安装的php的运行根目录在wamp文件夹中的www文件夹下 xff0c 而为了有效的将代码和服务器进行分离 xff0c 可以采用自拟定代码根目录进行修改 1 确定代码编辑位置 xff0c 修改服务器默认指向
  • 编译原理:求First集与Follow集的方法

    明天就要考试了 xff0c 发现一直理解错了First集与Follow集的解法 xff0c 贴上比较好理解的 文法 xff1a S ABc A a B b First集合求法 能 由非终结符号推出的所有的开头符号或可能的 xff0c 但要求
  • 位运算n & (n-1)的妙用

    本文转自 xff1a http blog csdn net zheng0518 article details 8882394 按位与的知识 n amp n 1 作用 xff1a 将n的二进制表示中的最低位为1的改为0 xff0c 先看一个
  • 二分查找算法(Java版)

    二分查找算法是非常经典且基本的算法 1 二分查找又称折半查找 xff0c 优点是比较次数少 xff0c 查找速度快 xff0c 平均性能好 xff1b 其缺点是要求待查表为有序表 xff0c 且插入删除困难 因此 xff0c 折半查找方法适
  • 电脑眼睛保护色——绿豆沙色

    眼科医生建议电脑屏幕不要用白色 xff0c 因为白色对眼睛的刺激是最大的 xff0c 最损伤视力 xff01 眼科医生推荐的颜色是 柔和的淡绿色 xff0c 也有人叫做绿豆沙色 按HSU 设置为 xff1a 色度 HUE xff1a 85
  • Java中两个数交换的细节问题

    在码代码过程中 xff0c 两个数交换是经常用到的 xff0c 但在Java 中 xff0c 如果忽略了值传递和引用传递就很容易出错 看一下两个整数交换代码 xff1a public void swap int a int b int t
  • 微信 Mars Android Sample 源码分析

    注 xff1a 原文首发地址 零 前言 Mars 是微信官方开源的跨平台跨业务的终端基础组件 xff0c 具有高质量网络连接模块 长短连接 智能心跳机制 高性能日志模块和网络监测组件等 而整个 Android Sample 是基于 Mars
  • Android NDK 开发:实战案例

    0 前言 如果只学理论 xff0c 不做实践 xff0c 不踩踩坑 xff0c 一般很难发现真正实践项目中的问题的 xff0c 也比较难以加深对技术的理解 所以延续上篇 JNI 的实战Android NDK开发 xff1a JNI实战篇 x
  • Android NDK 开发:CMake 使用

    1 前言 当在做 Android NDK 开发时 xff0c 如果不熟悉用 CMake 来构建 xff0c 读不懂 CMakeLists txt 的配置脚本 xff0c 很容易就会踩坑 xff0c 遇到编译失败 xff0c 一个很小的配置问
  • 性能测试简单介绍

    性能测试介绍 指通过自动化的测试工具模拟多种正常 峰值以及异常负载条件来对系统的各项性能指标进行测试 对性能的认识 从用户的角度 xff1a 从开发的角度 xff1a 从系统管理员的角度 xff1a 那么 xff1f 测试应该关注哪些呢 x
  • U盘系统盘EFI怎么恢复为普通盘?

    U盘重装系统时 xff0c 会使用U盘来制作PE xff0c 装完系统之后 xff0c 插上U盘会发现有两个盘 xff0c 一个是EFI xff0c 一个是主盘 xff0c EFI是占用了几百M空间的 xff0c 打开磁盘管理器就可以查看
  • usb camera(UVC Camera)在android 9.0的解决方法(仅供参考)

    采用的usb驱动是https github com jiangdongguo AndroidUSBCamera这个里面的libusbcamera xff0c 在手机的android 系统未升级到9 0时 xff0c 是可以正常使用的 但是升
  • av_read_frame AVERROR_EOF

    问题描述 xff1a 使用ffmpeg API编码 xff0c 调用av read frame 读取缓存队列中的视频流时 xff0c 提示AVERROR EOF xff0c 导致进程提前终止 原因解析 xff1a 因为ffmpeg的输入为缓
  • 用虚拟机在一台电脑上实现xPC实时仿真

    背景介绍 一般的xPC仿真需要2台电脑来分别实现目标机和宿主机 xff0c 两者之间通过以太网或者串口实现通讯 Matlab的xPC Target提供了一个运行在目标机上的高度剪裁的实时操作内核 xff0c 无需在目标机上面安装任何的操作系