返回首页

ZVM-RK3588v2.0发行版部署文档

一、ZVM-RK3588v2.0 简介

ZVM-RK3588v2.0 发行版是基于瑞芯微 RK3588 处理器芯片的一款定制版本,方便用户体验 ZVM 的功能与性能。本次更新主要包括:

在原有 ZVM-RK3588(25 年 9 月发布)特性的基础上优化/新增了如下功能:

(1)灵活的多 OS 混合部署

支持同时启动多达 7 个客户 OS。默认上电即自启动 1 个 Zephyr RTOS 和 1 个 Linux (通过VisualZVM连接ZVM后,用户可“点击按钮”自行删除)。

客户 OS Zephyr FreeRTOS Linux Android OpenHarmony
可分配的核数 1/2/3/4核 1核 1/2/3/4核 1核 1核
内存大小 32M 128M 512/1024M 1024M 1024M
支持 AMP? × × ×

重要 Linux 客户 OS 用户名:root, 密码:zvm

(2)灵活的多核 OS 支持

RK3588 为 8 核处理器,ZVM 默认占用 0 核,客户 OS 可自主选择部署在 A55 与 A76 的核心上:

处理器型号 核号 分配说明
Cortex-A55 0 ZVM
Cortex-A55 1~3 客户 OS 灵活部署
Cortex-A76 4~7 客户 OS 灵活部署

(3)设备资源分配

支持通过VisualZVMv2.0观察客户OS所分配的设备,启动时客户OS自动完成设备分配,删除时释放设备。

(4)启动时间统计

支持在VisualZVMv2.0上显示ZVM-RK3588v2.0启动时间和RTOS启动时间。

(5)时间同步

支持客户OS与ZVM的时间同步,并在VisualZVMv2.0端显示同步时间和精度。

(6)性能监控

支持通过VisualZVMv2.0监控各个客户OS的性能,包括CPU利用率,缓存命中率和中断数量等。

(7)VisualZVMv2.0 自动化测试系统

支持在 VisualZVMv2.0 中使用按键方式对功能和性能进行完善测试。具体指南详见:自动化测试系统文档

测试项 ZVM FreeRTOS Zephyr Linux Android OpenHarmony
VirtIO 暂未支持 暂未支持
Zshm
vCPU - - - - -
生命周期管理 - - - - -
系统性能 - 暂未支持 暂未支持
中断测试 暂未支持 暂未支持 暂未支持 暂未支持

二、ZVM-RK3588v2.0 部署教程

1. 准备硬件

2. 使用DiskGenius给TF卡分区(windows主机下操作)

💡 提示: 如果您手中已经是按照此教程分区过的TF卡,可以直接跳往第3步。

将TF卡插入读卡器,连接到你的PC中,打开 DiskGenius(ZVM官方网站 https://esnl.hnu.edu.cn/zvm/downloads.html 中资源下载中心可以免费获取)

下载安装完成后打开DiskGenius,选中你的TF卡

点击 Quick Partition (快速分区)

按照以下选项操作,然后点击 OK(注意:ZVM要求第一个分区必须是8G,第二个分区大于21G,不然会导致Linux客户OS启动失败;)

加载完成后可以看到TF卡已经被划分成两个分区,完成后可以退出DiskGenius


3. 客户 OS 文件系统镜像烧录(Linux主机下操作)

💡 提示: 如果TF卡中已经成功写入过文件系统镜像,可以直接跳往第4步。

将TF卡插入读卡器,连接到Linux主机,从ZVM官网资源中心(https://esnl.hnu.edu.cn/zvm/downloads/download_rk3588.html) 分别下载获取对应版本的压缩包(共需要3个压缩包:kernel_images.zipfile_system_images_part1.zipfile_system_images_part2.zip),按照最终部署目录结构,放入ZVM-RK3588v2.0文件夹。

首先在 ZVM-RK3588v2.0 目录下创建 file_system_images 目录,并将 file_system_images_part1.zipfile_system_images_part2.zip 文件放入该目录中,随后使用以下命令解压:

unzip file_system_images_part1.zip
unzip file_system_images_part2.zip

随后,回到 ZVM-RK3588v2.0 目录下使用 unzip kernel_images.zip 命令进行解压。解压完成后,ZVM-RK3588v2.0目录下会得到 kernel_images 文件夹和 file_system_images 文件夹,其中 file_system_images 文件夹中包含了我们需要烧录到 TF 卡的文件系统镜像压缩包。

进入到file_system_images文件夹中,使用unpack.sh脚本自动解压image.7z分卷包,会得到image文件夹,里面包含了所有需要写入的文件系统镜像以及烧录脚本: auto_dd.sh(也可以自行编译文件系统进行替换)。

然后进入image目录打开终端,执行命令dflsblk命令找到设备,这里TF卡的第二个分区设备名称是sdb2(不同版本的Linux或者不同型号TF卡设备名称不一定相同,以自己主机查找到的设备信息为准)

确认显示的设备名称和位置,根据自己的设备信息修改脚本中的TARGET项。脚本文件auto_dd.sh内容如下图所示,根据你的需要可以自定义seek位置和文件系统镜像名称等。ZVM默认一个块大小是3GB,需要每隔3GB写入,否则可能导致写入的文件系统损坏,也可以根据需要修改写入镜像的数量。

⚠️ 注意

第一:请务必确认of后的设备名称正确,否则可能会误写入其他磁盘导致数据丢失。

第二:请务必确认TF卡第二个分区有足够的空间存放这些文件系统镜像,如果TF卡容量较小,可以将写入的镜像数量减少,只要注释掉对应的写入命令即可,否则可能导致写入失败或者文件系统损坏。

⚠️ 重要提示

ZVM新增了Guest运行记录保存功能,会将运行过且未删除的Guest信息保存到TF卡第二个分区的前3GB空间中。当设备因异常导致断电或者重启后,再此运行ZVM可以直接从TF卡加载这些记录来重新创建并运行相同的Guest。因此往写入TF卡镜像时需要将第二个分区的前3GB预留,第一个seek要从3GB(seek=3072)开始。

例如图中这里将第二个安卓和鸿蒙的文件系统镜像的写入命令已经注释掉了,并且修改了seek的位置,让这6个客户OS的seek的位置从3GB开始并且连续,这样就会分别写入了1个安卓,1个鸿蒙和4个Linux的文件系统镜像,最终需要占用第二个分区的22GB空间。

如果自己需要更改启动客户OS的数量,例如启动2个安卓OS,那么即可重新修改图中写入顺序和镜像,只要保证最终写入大小不超过你的TF卡容量即可。

然后执行命令./auto_dd.sh,等待镜像写入完成即可,实际写入速度取决于TF卡、读卡器的性能和写入镜像的数量。或者按照脚本中的格式,手动在终端执行dd命令单独写入某一个镜像,手动执行dd命令前同样需要先使用dflsblk命令查看自己的设备名称。


4. 准备ZVM启动镜像(Linux主机下操作)

如果你已经完成了第3步文件系统镜像的写入,那么接下来就可以准备ZVM的启动镜像了。我们回到kernel_images文件中,里面包含了制作ZVM镜像所需要的所有文件和脚本,也包含了已经制作完毕的所有启动镜像,可以直接使用这个文件夹中的镜像文件,进行后面的启动操作。主要用到3个文件:nrtos_images.binboot.scrzvm_release_rk3588v2.bin

4.1 写入nrtos_images.bin

Non-RTOS镜像包写入TF卡中(注意根据实际情况修改设备名of,使用df或者lsblk命令确认设备名称,如/dev/sdb2):

sudo dd if=nrtos_images.bin of=/dev/sdb2 bs=1M seek=1024 conv=fsync status=progress
4.2 复制启动文件

zvm_release_rk3588v2.binboot.scr复制到TF卡的第一个分区(演示中的TF卡命名为ZVM)。

复制完成后弹出TF卡,插入对应的开发板中,开发板上电的同时按Ctrl+C阻止进入autoboot,然后在命令行输入ZVM启动命令:run distro_bootcmd

注意:板卡请连接网线,不然ZVM没法初始化网卡导致Linux启动失败

💡 提示:如果板卡不支持该命令,可以使用以下替代命令手动加载:
mmc list; mmc dev 1; fatload mmc 1:1 0x00c00000 boot.scr; source 0x00c00000

ZVM就能正确启动啦,启动时间取决于板卡和TF卡性能。

4.3 自行编译镜像(可选)

kernel_images中会包含一个raw_kernel_images文件夹,这个文件夹中包含了制作ZVM所需要的镜像源以及打包脚本,可以替换其中对应的文件,例如Linux的内核镜像Image,然后使用打包脚本制作您专属的ZVM guest镜像。

我们回到上一级目录,进入kernel_images文件夹,执行auto_py.sh,进行选择,生成需要的文件,这里选择3制作ZVM镜像、启动boot.scrNon-RTOS镜像包。

执行完成后会在当前目录下生成新的zvm_release_rk3588v2.binboot.scrNon-RTOS镜像包文件。

完成后再按照4.1的步骤进行镜像包文件烧录,即可完成镜像替换。

祝您开发愉快!✨

三、部署后的使用教程

项目名称 链接地址
VisualZVM 的使用指南 http://esnl.hnu.edu.cn/zvm/features/visual-zvm.html
基于 VisualZVM 的自动化测试系统 http://esnl.hnu.edu.cn/zvm/features/auto-test.html