EVM3588
本文详细介绍 AxVisor + Linux 客户机、AxVisor + ArceOS 客户机 以及 AxVisor + Linux 客户机 和 ArceOS 客户机三种情况在 EVM3588 开发板上的构建、部署及运行!
开发环境
AxVisor 及 EVM3588 的 SDK 仅支持在 Linux 系统进中进行开发。本文中的构建及部署环境均采用 Ubuntu 24.04 系统作为开发环境。
-
官方 SDK 完成度较低,其中有很多缺失、错误,在实际构建中会给出相关修改
-
EVM3588 的 SDK 本身不支持使用 Python3 来构建,需要稍加修改,文中会给出相关修改
-
如果不使用 Python3 环境,则需要手动安装 Python2 环境,因为很多新的 Linux 发行版本,例如, Ubuntu 24.04,默认已经不提供 Python2 的相关包了
构建
准备 AxVisor 镜像 + Linux 客户机镜像。或者可以直接从 https://github.com/arceos-hypervisor/axvisor-guest/releases 下载预编译好的 AxVisor 镜像 + Linux 客户机镜像以及相关文件!
构建 Linux 客户机镜像
根据 EVM3588 开发板官方文档,构建 Linux 客户机镜像。或者直接 wget https://github.com/arceos-hypervisor/axvisor-guest/releases/latest/download/evm3588_linux.tar.gz 下载预编译好的 Linux 客户机镜像及相关文件!
获取 SDK
从英码嵌入式官方的百度网盘中下载提供的 SDK evm3588_linux_sdk-rkr3_v1.0.3-ab_v98.tar.gz。下载的 SDK 实际上是一个仓库的源码的压缩包,直接使用 tar xvf evm3588_linux_sdk-rkr3_v1.0.3-ab_v98.tar.gz 解压即可,其中的 build.sh 就是构建入口。

移植适配
由于 EVM3588 的 SDK 不支持使用 Python3 来构建,如果当前构建环境系统中 Python 版本是 Python3 版本,则需要做如下修改:
-
修改 U-Boot 源码中的
u-boot/make.sh文件,其中的如下位置来取消对于 Python2 的检测即可:
-
修改 U-Boot 源码中的
u-boot/arch/arm/mach-rockchip/decode_bl31.py文件,直接将开头的#!/usr/bin/env python2改为#!/usr/bin/env python3即可实际上,U-Boot 源码中还有大量基于 Python2 的脚本文件,在默认的构建中没有用的,因此这里不再继续修改
-
修改 Kernel 源码中的
kernel/scripts/mkmultidtb.py,直接改为如下内容:#!/usr/bin/env python3
# SPDX-License-Identifier: (GPL-2.0+ OR MIT)
# Copyright (c) 2018 Fuzhou Rockchip Electronics Co., Ltd
#
"""
Multiple dtb package tool
Usage: scripts/mkmultidtb.py board
The board is what you defined in DTBS dictionary like DTBS['board'],
Such as: PX30-EVB, RK3308-EVB
"""
import os
import sys
import shutil
from collections import OrderedDict
DTBS = {}
DTBS['PX30-EVB'] = OrderedDict([('px30-evb-ddr3-v10', '#_saradc_ch0=1024'),
('px30-evb-ddr3-lvds-v10', '#_saradc_ch0=512')])
DTBS['RK3308-EVB'] = OrderedDict([('rk3308-evb-dmic-i2s-v10', '#_saradc_ch3=288'),
('rk3308-evb-dmic-pdm-v10', '#_saradc_ch3=1024'),
('rk3308-evb-amic-v10', '#_saradc_ch3=407')])
#_saradc_ch5=3750 => evm3588 b1
DTBS['evm3588'] = OrderedDict([('evm3588', '#_saradc_ch5=2048'),
('evm3588-b1', '#_saradc_ch5=3754')])
def main():
if (len(sys.argv) < 2) or (sys.argv[1] == '-h'):
print (__doc__)
sys.exit(2)
BOARD = sys.argv[1]
TARGET_DTBS = DTBS[BOARD]
target_dtb_list = ''
default_dtb = True
for dtb, value in TARGET_DTBS.items():
if default_dtb:
ori_file = 'arch/arm64/boot/dts/rockchip/' + dtb + '.dtb'
board_name = dtb
shutil.copyfile(ori_file, "rk-kernel.dtb")
target_dtb_list += 'rk-kernel.dtb '
default_dtb = False
new_file = board_name + value + '.dtb'
ori_file = 'arch/arm64/boot/dts/rockchip/' + dtb + '.dtb'
shutil.copyfile(ori_file, new_file)
target_dtb_list += ' ' + new_file
print(' '.join(target_dtb_list))
os.system('scripts/resource_tool logo.bmp logo_kernel.bmp ' + target_dtb_list)
os.system('rm ' + target_dtb_list)
if __name__ == '__main__':
main() -
默认的构建采用的是 Buildroot 来构建 rootfs,而默认配置中会使用 Buildroot 来构建一个内置的编译工具链,版本为 gcc11.3,然而 gcc11.3 的文档比较旧,与新版本的
texinfo工具不兼容(报错:extend.texi:2490: @itemx should not begin @table),因此需要对 gcc11.3 的源码进行 patch,直接将 patch 放到buildroot/package/gcc/11.3.0/目录下即可:
patch 需要我们
git clone https://gcc.gnu.org/git/gcc.git,然后git checkout releases/gcc-11.3.0,然后修改extend.texi并提交,最后git format-patch --subject-prefix='PATCH' HEAD^来生成:From d4b2ac63d09849a78a5c93a875dd2f5dc50ff4d9 Mon Sep 17 00:00:00 2001
From: ZCShou <72115@163.com>
Date: Thu, 25 Sep 2025 06:36:51 +0000
Subject: [PATCH] doc: fix extend.texi:2490: @itemx should not begin @table
---
gcc/doc/extend.texi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
index 689ec7de4d3..84f9b9ecd66 100644
--- a/gcc/doc/extend.texi
+++ b/gcc/doc/extend.texi
@@ -2487,7 +2487,7 @@ The following attributes are supported on most targets.
@table @code
@c Keep this table alphabetized by attribute name. Treat _ as space.
-@itemx access (@var{access-mode}, @var{ref-index})
+@item access (@var{access-mode}, @var{ref-index})
@itemx access (@var{access-mode}, @var{ref-index}, @var{size-index})
The @code{access} attribute enables the detection of invalid or unsafe
--
2.43.0 -
修改
buildroot/package/rockchip/libv4l-rkmpp/libv4l-rkmpp.hash中的 sha256 值为35eefaec3cec77144368c1bb2d860457cefcf7609b54745e90bc417d3ad1eeb6,默认的是错误的
-
修改
buildroot/package/stressapptest/stressapptest.hash中的 sha256 值为cc35d5687c40cb368b7aa7704928285e1d756928bb4c5bab13c230efc0abc540