Bao轻量级嵌入式虚拟机管理程序

联合创作 · 2023-10-01 08:38

Bao 是一个轻量级、开源的嵌入式虚拟机管理程序,旨在提供强大的隔离和实时保证。Bao 提供了分区管理程序架构的最小的实现。


Bao 主要针对混合临界系统而设计,非常注重隔离以实现故障遏制和实时行为。它的实现仅包括一个小的特权软件层,利用 ISA 虚拟化支持来实现静态分区管理程序架构:资源在 VM 实例化时被静态分区和分配;使用两阶段翻译静态分配内存;IO 仅为直通;虚拟中断直接映射到物理中断;它实现了虚拟 CPU 到物理 CPU 的 1-1 映射,无需调度程序。


Bao 没有外部依赖性,它包含一个小得多的 TCB。


支持的平台


支持的平台的完整列表如下所示:


Armv8-A



  • Xilinx Zynq UltraScale+ MPSoC ZCU102

  • Xilinx Zynq UltraScale+ MPSoC ZCU104

  • Ultra96 Zynq UltraScale+ ZU3EG

  • NXP MCIMX8QM-CPU

  • NVIDIA Jetson TX2

  • 96Boards HiKey 960

  • 树莓派 4

  • QEMU 虚拟机


RISC-V



  • QEMU virt (rv64)


下载并设置工具链


为目标架构下载最新的编译工具链:


a) 对于 Armv8-A,使用 aarch64-none-elf-工具链。


从 Arm 开发人员的网站下载它。


b) 对于 RISC-V,使用 riscv64-unknown-elf-工具链。


从 SiFive 的 Freedom Tools GitHub 仓库下载它。


安装工具链。然后,使用参考工具链前缀路径设置 CROSS_COMPILE 环境变量:




export CROSS_COMPILE=/path/to/toolchain/install/dir/bin/your-toolchain-prefix-


搭建基础环境


克隆这个 repo 并 cd 到它:




git clone https://github.com/bao-project/bao-demos
cd bao-demos


根据目标平台和演示, 使用附录 I 中的 ID设置 PLATFORM 和 DEMO 环境变量。




export PLATFORM=zcu102
export DEMO=linux+freertos

浏览 35
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报