无需硬件开发板,从零构建并运行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-.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 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

相关推荐
振南的单片机世界12 小时前
启动流程:上电先取栈顶和复位向量,再进main
arm开发·stm32·嵌入式硬件
暮云星影12 小时前
个人总结 docker搭建私人照片云相册Immich
docker·容器·arm
振南的单片机世界2 天前
HAL_Delay(1000)真准吗?SysTick的1ms基准从哪来
arm开发·stm32·单片机·嵌入式硬件
带土13 天前
3. ARM寄存器组织
arm开发
凉、介3 天前
深入理解 ARMv8-A|Application Binary Interface (ABI)
c语言·笔记·学习·嵌入式·arm
xiangw@GZ4 天前
ARM TCM 紧耦合内存与 Cache 架构区别
arm开发·架构
XINVRY-FPGA4 天前
XCKU035-2FBVA676I AMD Xilinx Kintex UltraScale FPGA
arm开发·嵌入式硬件·网络安全·fpga开发·硬件工程·信号处理·fpga
少年、潜行4 天前
IAR FOR ARM 历史版本安装包、安装、注册流程【百度网盘资源】
arm开发·iar·iar历史版本·iar安装
Aaron15884 天前
无人机反制中AOA+TDOA联合定位技术与雷达探测定位技术的应用对比分析
arm开发·嵌入式硬件·fpga开发·硬件工程·无人机·信息与通信·信号处理
m0_747124534 天前
ARM架构基础知识扫盲
arm开发·架构