基于nxp LS1046+fpga的嵌入式系统中虚拟化设备的设计与实现
3
虚拟化设备仿真平台设计
本文需要设计和实现的虚拟化设备需要搭建一个仿真平台,一个完善的仿真平台才
是一种虚拟化设备能搭建起来的关键,仿真平台的搭建需要一定条件的硬件环境,更为
主要的是软件环境,下文就要详细介绍此虚拟化平台的搭建。
3.1
设备仿真平台架构
本论文所要设计的虚拟化设备所需要的硬件环境主要是需要
ARM v8
架构的
Linux
服务器作为宿主机,其中
CPU
核数不少于
16
,硬盘容量不低于
500GB
,物理内存不低
于
32GB
。在软件环境方面,设备仿真平台主要分为处理器平台仿真、硬件适配和环境
部署三个方面。其中需要模拟的主控设备采用的是
LS1046
处理器,处理器的仿真采用
QEMU
虚拟化技术。
QEMU
的开发与运行都是基于宿主机
Linux
系统环境进行,其中
Linux
系统内核版本建议不低于
3.10
,本次开发使用的是开源的
QEMU
源码,源码版本
为
3.1.0-rc4
。硬件适配采用重定位共享库技术,共享库运行在操作系统中,接口库封装
Linux
操作系统的交叉编译环境。环境部署主要包含虚拟仿真设备的部署与全系统的网
络拓扑搭建,设备的部署采用
shell
脚本实现;而网络拓扑一部分属于处理器仿真,通
过
QEMU
实现;另一部分位于
HOST
环境,需基于
bridge-utils
搭建虚拟网桥环境。
3.1.1
仿真平台软件总体方案模型
整个设备仿真平台架构如图
3-1
所示,这个主要分为
HOST
硬件平台、
HOST
软件
系统、
QEMU
硬件模拟和
GUEST
软件系统四个层次。
(1)HOST
硬件平台层:
该层对于设备仿真平台而言主要提供
CPU
和内存模拟的物理资源,其中
CPU
核数、
CPU
主频以及内存大小三方面硬件资源基本决定了设备仿真平台的整体性能。
(2) HOST
软件系统层:
宿主机的操作系统在设备仿真平台中主要拆分为两方面的功能:
KVM
驱动是保障
设备仿真平台性能的核心,实现
CPU
和内存的硬件加速;虚拟交换子系统则是设备仿
真平台网络功能的基础,支撑设备仿真平台操作系统内部与外部物理环境网络通信以及
仿真设备之间的网络通信功能。
(3) QEMU
模拟硬件层:
这一层负责模拟设备仿真平台中的硬件单元,主要分为
CPU
、内存以及
IO
设备三
大部分,具体硬件单元的划分与物理设备一一对应。该层主要服务于
guest
软件系统中
的内核部分,使内核不感知是运行于实际物理设备还是虚拟仿真设备中,是设备仿真平
台最核心的部分。
(4)GUEST
软件系统层:
该层是设备仿真平台的软件运行层,按功能垂直划分,最下层运行的是设备仿真平
台的内核软件,负责与硬件的交互;内核之上运行根文件系统,提供用户程序的运行环
境;最上层就是体现虚拟设备主体功能的应用层软件。
3.1.2
仿真平台
QEMU
模拟硬件模块架构
设备仿真平台的
QEMU
模拟硬件模块架构如图
3-2
所示,主要分三个层面:
(1)
最外层为
MACHINE
,可对应于物理机处理器级别,包含
LS1046
处理器与相关
外部设备,如内存、网口设备、
PCIe-PCI
桥、外部
SATA
卡存储和
CPLD
等外部设备,
此外还有
ARM
架构的启动引导单元;
(2)
中间层为
SOC
,可对应于
LS1046
处理器,包含
4
个
Coretex-A72 ARM
核、中
断控制器、串口控制器、
PCIe
控制器、
SATA
控制器以及
CCSR
部分系统控制单元等;
(3)
最内层则为各具体硬件模块,这部分主要是需要实现硬件单元的地址空间读写
访问、中断控制及相关功能逻辑的模拟。
上述
QEMU
硬件模拟只覆盖到处理器级别,针对板卡级的外围硬件,则需要在
GUEST
软件系统层进行模拟,通过重定位共享库对设备中主控软件运行过程执行的硬
件初始化函数以及硬件功能函数进行劫持,屏蔽后续的硬件操作而直接返回适配和数据
仿真结果。
Specification | Description |
处理器 | NXP LS1046A at up to 1.4GHz 双CPU |
存储 | 每一个模块 |
板卡形状 | 定制板卡 双CPU模块 |
尺寸 | 270.00 * 254.99mm |
接口 | 每一个模块包含 |
调试接口 | JTAG / COP debug port |
3.2
仿真平台主要功能设计
按照需要实现功能将设备仿真平台划分为成如下几个子系统,设备仿真平台的功能
划分如图
3-3
所示。
(1)
虚拟处理器:模拟处理器
ARM
架构的
CPU
核,模拟
SMP
多核架构,模拟
GIC
中断机制,模拟
CCF
、
DCFG
和
SCFG
等处理器配置单元,模拟启动引导功能,模拟
PCIe
总线相关的功能;
(2)
虚拟内存:分配指定大小的运行内存,模拟
MMU
内存管理机制;
(3)
模拟串口控制台:模拟串口控制器,实现
reboot
、
powerdown
等系统控制命令;
(4)
模拟网络设备:模拟网络控制器,模拟多个网卡设备;
(5)
模拟外存设备:模拟外存控制器,模拟外部存储卡设备;
(6)
性能加速:即
KVM
机制,实现
CPU
和内存的硬件加速;
(7)
设备仿真适配:屏蔽硬件细节,适配设备硬件初始化操作,模拟设备类型、设备
在位和告警等信息,模拟业务设备的部分数据。