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

ops/2024/11/27 6:29:20/

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

http://www.ppmy.cn/ops/137011.html

相关文章

three.js 修改模型的材质属性 并结合gsap材质颜色修改动画

three.js 修改模型的材质属性 并结合gsap材质颜色修改动画 import * as THREE from three import { OrbitControls } from three/examples/jsm/controls/OrbitControls.js import { GLTFLoader } from three/examples/jsm/loaders/GLTFLoader.js import { DRACOLoader } from…

vue的理解

什么是vue vue是一套用于构建用户界面的渐进式框架,与其他框架不同的是,vue被设计为可以自底向上逐层应用,它也是创建单页面应用的web应用框架。vue的核心库只关注视图层,不仅易上手,还便于与第三方库或既有项目整合。…

Unity3D Lua如何支持面向对象详解

前言 Unity3D 是一款强大的跨平台游戏开发引擎,它支持使用多种编程语言进行开发,其中 Lua 是一种轻量级的脚本语言,适合用于游戏逻辑的编写。在 Unity3D 中,我们可以通过 Lua 来实现面向对象的编程,这样可以更方便地管…

网络安全期末复习

第1章 网络安全概括 (1)用户模式切换到系统配置模式(enable)。 (2)显示当前位置的设置信息,很方便了解系统设置(show running-config)。 (3)显…

skywalking es查询整理

索引介绍 sw_records-all 这个索引用于存储所有的采样记录,包括但不限于慢SQL查询、Agent分析得到的数据等。这些记录数据包括Traces、Logs、TopN采样语句和告警信息。它们被用于性能分析和故障排查,帮助开发者和运维团队理解服务的行为和性能特点。 …

刷题——字符串中的单词数(力扣)

文章目录 一、读题二、思路问题1:解决思路:分割方法:方法1、方法2、 三、代码实现:方法1、方法2、 一、读题 题目来源:https://leetcode.cn/problems/number-of-segments-in-a-string/description/ 首先看例子&#xf…

【数据结构实战篇】用C语言实现你的私有队列

🏝️专栏:【数据结构实战篇】 🌅主页:f狐o狸x 在前面的文章中我们用C语言实现了栈的数据结构,本期内容我们将实现队列的数据结构 一、队列的概念 队列:只允许在一端进行插入数据操作,在另一端…

我谈离散傅里叶变换的补零

有限序列的零延拓——零延拓不会改变离散傅里叶变换的形状的续篇。 L点序列可以做N点傅里叶变换,当 L ⩽ N L\leqslant N L⩽N时不会产生混叠。这部分内容在Rafael Gonzalez和Richard Woods所著的《数字图像处理》完全没有提到。 补零是序列末尾补零,不…