Back to Blog

基于nxp LS1046+fpga的嵌入式系统中虚拟化设备的设计与实现

#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

存储每一个模块
8G DDR4, 8GB Emmc,16MB QSPI FLASH

板卡形状定制板卡 双CPU模块尺寸

270.00 * 254.99mm

接口每一个模块包含
4路1000MBase-TX RJ45
3路USB2.0
1路RS232
4路RS485

调试接口

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)设备仿真适配:屏蔽硬件细节,适配设备硬件初始化操作,模拟设备类型、设备在位和告警等信息,模拟业务设备的部分数据。