无需硬件开发板,从零构建并运行ARM aemfvp-a-rme软件栈

这一篇介绍官方的方法,也可以直接参考这里的文档: https://gitlab.arm.com/aemfvp-a/docs/aemfvp-a-docs/-/blob/AEMFVP-A-2025.07.02/user-guide.rst?ref_type=tags

该方法的缺点就是,获取源码和编译环境时对网络要求较高,国内用户一般很难一次成功,而且还要花费很多时间,鉴于此,我已经将获取的源码以及编译环境和运行环境都打包好了,不愿意折腾的,可以联系我获取

下面正文开始:

一、概述

Armv-A Base RevC AEM FVP(固定虚拟平台,Fixed Virtual Platform)是基础平台的升级版本,新增了对系统级虚拟化探索的支持。它是包含两个 AEM 集群的Architecture Envelope Model(AEM),每个集群最多可配置 4 个核心。

目前该平台提供两个可运行的堆栈,即aemfvp-a和aemfvp-a-rme,后续章节将详细介绍这两个堆栈的使用方法。

不过我们这里以及后续主要关注aemfvp-a-rme

二、支持的堆栈说明

该平台提供两个专用堆栈,分别用于不同的演示场景,二者的核心功能与架构参考如下:

|-----------------|-------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 堆栈名称 | 核心用途 | 架构详情参考链接 |
| AEMFVP-A 堆栈 | 演示基于 u-boot 和 uefi 的系统在 FVP 上的运行 | AEMFVP-A Architecture |
| AEMFVP-A-RME 堆栈 | 演示 ARM CCA(机密计算架构,Confidential Compute Architecture),提供多个用于验证 CCA 功能的用例 | AEMFVP-A-RME Architecture |

三、验证通过的构建环境

构建系统已在以下环境中验证通过,其中仅 Docker 容器为完全支持的环境:

  • 内置的 Docker 容器

  • Ubuntu 24.04 LTS 操作系统(直接运行,非完全支持)

四、前置条件

在开始操作前,需确保满足以下硬件与软件条件:

  1. 硬件环境:x86_64 或 aarch64 架构的主机

  2. 磁盘空间:至少 50GB 空闲空间

  3. 软件安装:

    1. 已安装 Docker(安装指引见 Docker 标准安装页面

    2. 已安装 Git

  4. 执行环境:所有命令需在 bash shell 中执行

五、Git 环境配置

首次使用前需配置 Git 的全局用户名与邮箱,执行以下命令:

复制代码
git config --global user.name "<你的姓名>" 
git config --global user.email "<你的邮箱@example.com>"

六、获取堆栈代码

参考堆栈通过 repo 工具及关联清单(manifest)获取构建所需的所有组件,具体步骤如下:

  1. 下载并配置 repo 工具 将 repo 工具下载到 /usr/bin 目录并赋予执行权限:

    curl https://storage.googleapis.com/git-repo-downloads/repo > /usr/bin/repo
    chmod a+x /usr/bin/repo

  2. 创建并初始化工作区 先创建工作区文件夹(替换 <AEMFVP_A_WORKSPACE> 为自定义工作区名称,如 aemfvp-workspace),再初始化 repo 并同步代码:

    mkdir <AEMFVP_A_WORKSPACE>
    cd <AEMFVP_A_WORKSPACE>
    repo init
    -u https://git.gitlab.arm.com/aemfvp-a/aemfvp-a-manifests.git
    -m pinned-<PLATFORM>.xml
    -b refs/tags/AEMFVP-A-2025.07.02
    --depth=1
    repo sync -c -j $(nproc) --force-sync --no-clone-bundle

说明:<PLATFORM> 需根据目标堆栈选择,aemfvp-a 对应 AEMFVP-A 堆栈,aemfvp-a-rme 对应 AEMFVP-A-RME 堆栈。

七、启用 FVP 网络功能

Armv-A Base RevC AEM FVP 支持虚拟以太网接口,需在启动 FVP 前配置主机的 TAP 接口,具体步骤如下:

7.1 安装 libvirt 相关工具

执行以下命令安装网络配置所需的依赖包(将自动创建 IP 为 192.168.122.1virbr0 网络接口):

复制代码
sudo apt install -y \
  libvirt-daemon-system \
  bridge-utils \
  net-tools \
  iproute2
  • 验证 virbr0 接口:执行 ifconfig 命令,若未找到 virbr0,需重启 libvirt 守护进程:

    sudo systemctl restart libvirtd

7.2 创建 TAP 接口(tap0)

执行以下命令创建并配置 tap0 接口,用于 FVP 与主机的网络通信:

复制代码
sudo ip tuntap add dev tap0 mode tap user $(whoami)
sudo ifconfig tap0 0.0.0.0 promisc up
sudo brctl addif virbr0 tap0

八、构建 Docker 构建与仿真环境

平台提供两个 Docker 容器:一个用于构建堆栈,另一个用于运行已构建的堆栈(基于 FVP)。构建容器的步骤如下:

  1. 进入容器脚本目录:

    cd container-scripts/aemfvp-a

  2. 执行构建脚本创建 Docker 容器:

    ./container.sh build

九、构建堆栈

完成 Docker 环境构建后,执行以下命令启动构建容器并构建目标堆栈:

  1. 启动构建容器:

    ./run_build_docker.sh

  2. 运行构建脚本(替换 <PLATFORM> 为目标堆栈:aemfvp-aaemfvp-a-rme):

    ./build-scripts/aemfvp-a/build-stack.sh -p <PLATFORM> all

十、运行测试用例

堆栈构建完成后,可在容器中直接启动 FVP 并运行测试用例,具体步骤如下:

10.1 配置 Docker 权限(可选)

若启动时提示 socket 访问权限不足,执行以下命令修改权限:

复制代码
sudo chmod 777 /var/run/docker.sock

10.2 启动测试用例

执行 boot.sh 脚本启动测试用例,命令格式如下:

复制代码
./model-scripts/aemfvp-a/boot.sh -p <PLATFORM> -b <TEST_CASE>
  • 参数说明:

    • <PLATFORM>:目标堆栈名称,可选 aemfvp-aaemfvp-a-rme

    • <TEST_CASE>:测试用例名称(每个堆栈的测试用例详情可参考「Test Cases AEMFVP-A」和「Test Cases AEMFVP-A-RME」文档)

10.3 基础 Shell 启动示例

若只需启动基础 Shell(无需复杂测试用例),可直接执行以下命令:

  • 对于 AEMFVP-A 堆栈:

    ./model-scripts/aemfvp-a/boot.sh -p aemfvp-a -b uefi

  • 对于 AEMFVP-A-RME 堆栈:

    ./model-scripts/aemfvp-a/boot.sh -p aemfvp-a-rme -b shell

相关推荐
HMS工业网络11 小时前
主从结合,安全互联:Anybus工业通信解决方案全栈升级
arm开发
XINVRY-FPGA11 小时前
XC7Z010-2CLG400I Xilinx Zynq-7000 FPGA
arm开发·嵌入式硬件·算法·fpga开发·硬件工程·dsp开发·fpga
Emtronix英创1 天前
RK3568 CAN驱动测试及使用说明
linux·arm开发·rk3568·全国产主板
时空自由民.2 天前
Arm Coretex-M核MCU做IAP/OTA升级时候为什么要做中断向量表地址偏移?
arm开发·单片机·嵌入式硬件
黑猫学长呀2 天前
存储宝典第1篇:Nand SCA是什么
arm开发·arm·nand·存储芯片·nandflash·onfi
凉、介3 天前
Armv8-A virtualization 笔记 (二)
笔记·学习·嵌入式·arm·gic
Freak嵌入式3 天前
WIZnet-EVB-Pico2开始,用MicroPython玩转以太网开发
arm开发·人工智能·python·嵌入式硬件·机器人·嵌入式·micropython
振南的单片机世界3 天前
推挽输出:上管推、下管拉,驱动强但不“合群”
arm开发·stm32·单片机·嵌入式硬件
代码讲故事3 天前
mac电脑上docker突然无法运行,不停的出现弹框,“com.docker.vmnetd”将对你的电脑造成伤害。附国内不同芯片高速下载地址,下载直接运行。
macos·docker·容器·arm·mac·intel·下载