微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > FPGA和CPLD > FPGA 101手把手课堂:Zynq MPSoC得到 Xen 管理程序支持

FPGA 101手把手课堂:Zynq MPSoC得到 Xen 管理程序支持

时间:01-20 来源:互联网 点击:
开源方面

“开源”一词用来描述软件是开放的,但不一定是免费的。开源软件的源代码允许在精心制定的许可协议下修改和共享,以使软件的自由性得到保护。最为广泛认可的开源许可证协议是 GNU 通用公共许可证(有效版本为 GPLv2 和 GPLv3)、GNU 宽通用公共许可证、Apache 许可证和 BSD 许可证(有多个不同版本)。

开源不一定免费。以开源产品为主的公司与传统软件公司有所不同,通常使用不同的收入模式,例如销售产品支持、附件(例如印刷版用户手册)、培训或定制设计服务。Red Hat 是最有名的开源公司之一,他们围绕开源 Linux 操作系统打造出一家数十亿美元的企业。

将 XEN 映射到新的 ZYNQ

赛灵思的最新 Zynq UltraScale+ MPSoC 可提供一个用来运行 Xen 管理程序的强大平台。该器件具有一个四核 ARM Cortex-A53 处理器,并具有硬件虚拟化扩展和 64 位的 ARMv8 指令集。强大的硬件需要配以丰富的软件支持,以充分利用其功能和性能。开发新款 Zynq MPSoC 时,赛灵思对各行业的主要客户进行了调研,包括航空航天与军用、医疗、电信和汽车行业。结论是:大部分客户都希望新型器件提供管理程序,其中一半希望是开源管理程序。赛灵思选择 Xen 作为开源管理程序,并选择 DornerWorks 为新的 Xen Zynq 提供支持服务。

Xen 管理程序在虚拟机中托管客户操作系统,为它们提供底层机器的虚拟化视图。然后,客户操作系统及其应用程序使用虚拟化的 CPU、存储器和 I/O,同时由 Xen 管理如何将虚拟化资源映射到物理资源。

在 Xen 中,每个虚拟机都被称为一个域。为了使管理程序内核尽可能小,Xen 会给一个域赋予特权。这个系统域称为 dom0。该域启动其他客户域(每个客户域称为 domU),配置由内核强制执行的调度和存储器映射,以及管理 I/O 访问权限。为了更详细说明,我们考虑一下管理程序环境的的几个视图:启动顺序、ARM 异常级别、运行调度和资源管理。

从加电开始,可通过多种方式配置新型 Zynq MPSoC 上的启动顺序,包括哪个处理器(Cortex-A53 或 Cortex-R5)先启动。在大多数用例中,两个处理器都相当独立,因此,标准 Xen Zynq 管理程序版本只运行在 Cortex-A53 上。图 1 给出了一个典型的启动顺序。如果第一阶段引导加载程序 (FSBL)


图 1 – 典型启动顺序显示直到客户操作系统运行为止的各个阶段。

Cortex-R5 用来托管独立的非虚拟化的安全操作系统,那么它通常从简单的第一阶段引导加载程序(FSBL) 中首先启动。R5 启动后,接下来接着启动 A53,并从其自身的 FSBL 开始。第二阶段引导加载程序(例如 U-Boot),通常用来提供更多的启动功能,可能包括管理程序内核镜像的完整性检查。

在这个阶段,Xen 管理程序内核被调用。内核启动包括检查有效的 dom0。接下来,dom0 检查客户域的有效镜像,然后在一个或多个内核上启动和调度它们。大多数情况下,dom0 会继续运行,以便监控系统,提供对共享资源的管理,并处理特性系统故障。管理程序内核在每个域上下文切换期间运行,也通过超级调用来调用。超级调用与系统调用类似,后者允许应用程序调用操作系统服务,而这里则是调用管理程序服务。默认方式下,dom0 可进行任何管理程序调用,而 domU 只能做特定的管理程序调用。不过,开发人员可以使用 Xen 模块 XSM-FLASK 对超级调用访问实现更为精细的控制。处理器硬件强制执行由 ARM 异常级别模型定义的分类特权。Cortex-A53 使用 ARMv8 架构,该架构定义四个异常级别,如图 2 所示,图中最底部的级别具有最高特权,随着级别上升特权降低。完整访问特权在异常级别 EL3 赋予,用于实现 ARM Trust Zone 监控。管理程序在 EL2 级上运行,以实现客户域的虚拟化。在每个被托管的虚拟机中,托管的操作系统运行在 EL1 级上。最后,用户应用程序在EL0 级以最低权限运行。当变为权限较低的异常级别时,虚拟机寄存器必须具有相同宽度或者更窄。这意味着你可以使用 64 位管理程序和 32 位的客户机,但不能颠倒。Xen Zynq 使用 ARMv8 架构的 AArch64 执行模型,从而支持 64 位或 32 位客户机。

特权域 dom0 建立调度,以决定各域何时运行以及在哪个或哪些内核上运行。然后,管理程序内核执行配置后的调度计划。为达到某种类型的确定性,应配置一个调度计划,使客户域在它的时隙内对机器具有唯一访问权。图 3 给出的实例中,客户机 1(与 dom0 一起)在单个时隙内运行在多个内核上,而客户机 2 和 3 则没有这个限制,因此可以在其他时隙内以混合匹配的负载平衡计划对它们进行调度。

管理程序管理所有机器资源。CPU 内核主要进行分时管理,如上所述。

存储器不是通过分时进行共享,而是分空间共享,把存储器的一部分分配给每个客户域。管理程序使用硬件存储器管理单元 (MMU) 来实施存储器布局。I/O 的管理差异很大,取决于器件的类型。有些 I/O 器件可被直接映射到 Cortex-A53,而其他 I/O 器件必须配置后才能连通 FPGA可编程架构。


图 2 – ARM 异常级别图显示了映射到 EL2 的管理程序。

客户机对 I/O 器件的访问由 dom0 进行配置和管理,利用对 Xen 内核进行合适的超级调用来建立指向器件的存储器映射。Dom0 可授权客户域访问所需的特定 I/O 器件,也可能自己管理共享 I/O,起到网关的作用以实现共享机制。Xen 中的域间通信(包括 I/O)通常使用 Xen 事件通道进行通知,使用共享存储器来传送数据。Xen 共享 I/O 器件驱动程序采用分离驱动模式,客户域中的上一半驱动程序将 API 提供至客户操作系统,将用来往返传送数据的功能提供至dom0。然后,dom0 中的下一半驱动程序执行器件的实际 I/O 操作。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top