跳到主要内容

整体环境

由于 AxVisor 本身是一个运行于各种硬件平台的 Hypervisor,直接使用 Gihub 提供的 Action 脚本命令执行服务器(官方称为 Runner)无法满足我们的测试需求,因此,需要将测试本地化,在本地服务器上执行所有测试过程。

Server

总体框架

本地通过一台运行 Ubuntu 24.04 LTS 系统的专用的服务器来执行测试任务。该服务器通过 USB 及网口与其他各种控制设备和测试设备相连,进而控制测试过程。整体集成测试环境框图如下所示:

Arch

测试设备

测试设备是整个测试环境中的执行核心,它需要运行 AxVisor 固件,并且通过 Debug 接口将运行日志输出到本地测试服务器。因此,测试设备需要具备以下功能:

  1. 测试设备需要支持串口通信,以便将运行日志输出到本地测试服务器。

  2. 测试设备通过本身的 Debug 接口经过 USB 转 TTL 工具与本地测试服务器相连。

测试服务器

测试服务器是整个测试环境的处理核心,它需要运行各种测试工具和脚本,同时,它还需要与各种测试设备进行通信。因此,测试服务器需要具备以下功能:

  1. 运行测试工具和脚本,包括固件加载工具、固件编译工具、固件分析工具等。

  2. 与各种测试设备进行通信,包括开发板、路由器以及电源控制模块等。

  3. 提供固件编译、固件加载、固件分析等功能。

测试服务器上需要通过 USB 串口连接大量设备,因此,可能需要使用 USB Hub 将多个 USB 串口设备链接到测试服务器上。并且在测试服务器中清楚的区分各个串口设备,以便后续通过串口与各个设备进行通信。

开发板

开发板是整个测试环境中的执行核心,它需要运行 AxVisor 固件,并且通过 Debug 接口将运行日志输出到本地测试服务器。因此,开发板需要具备以下功能:

  1. 开发板需要支持串口通信,以便将运行日志输出到本地测试服务器。

  2. 开发板通过本身的 Debug 接口经过 USB 转 TTL 工具与本地测试服务器相连。

控制设备

控制设备是整个测试环境中的辅助设备,它需要控制开发板的上电和断电,以便在开发板启动和关闭时,测试服务器能够正确地捕获到开发板的启动和关闭日志。因此,控制设备需要具备以下功能:

  1. 控制开发板上电和断电,以便测试服务器能够正确地捕获到开发板的启动和关闭日志。

  2. 通过 USB 串口与本地测试服务器通信,以便本地测试服务器通过串口控制控制设备。

电源控制模块

电源控制模块用于控制测试设备的上电和断电。电源控制模块需要具备以下功能:

  1. 支持通过串口与本地测试服务器通信,以便本地测试服务器通过串口控制电源控制模块。

路由器

测试环境中的路由器主要用于实现开发板与本地测试服务器的网络连接。

  1. 提供开发板固定的网络地址

  2. 为 x86 设备提供 PXE 服务端地址

软件服务端

为了满足针对不同开发板的测试需求,本地服务器上需要部署各种软件服务端,以便为各种开发板提供资源。其中,最主要的一个就是针对 x86 架构开发板的固件加载服务端。

PXE 服务端

对于 x86 架构,我们需要通过 PXE 来实现内核固件的加载。PXE 规范描述了一个标准化的 客户端 ↔ 服务器 环境,通信过程使用的是 UDP/IP、DHCP、TFTP 等多个标准互联网协议。

PXE

x86 架构的引导程序(BIOS)中一般都集成了 PXE 客户端,我们需要提供一个服务端。目前,在 Linux 下没有类似于 Windows 下的 All in One 的工具,只能是分别搭建!