本教程内容整理自 张子彤 - 在 Milk-V Duo 上跑通 Alpine 与 RuyiSDK 的完整实践 - 20250827 的演讲视频,属于 PLCT 实验室内部报告,仅供技术交流使用。演讲围绕 RISC-V 嵌入式系统的完整部署与工具链集成展开 ,以 Milk-V Duo 开发板和 Alpine Linux 系统为例 ,讲解了系统安装 、RuyiSDK 在 Musl 环境下的离线部署 、基于 WSL 的 coremark 交叉编译测试 、以及如何配置 IDE 实现远程构建、运行和 GDB 远程调试等步骤 。
如有疏漏或错误之处,欢迎批评指正,共同完善。如需转载或引用本文内容,请注明出处,尊重原作者的劳动成果。
一、基础环境准备与 Alpine 系统安装
1.1 测试环境概览
- 平台: Milk-V Duo 256M 开发板
- 系统: Alpine Linux Edge 3.19 alpha
- 架构: riscv64
- 硬件: Milk-V Duo 256M 开发板、USB Type-C 数据线、Micro SD 卡和读卡器
1.2 Alpine 系统烧录与初次连接
- 从指定链接下载 Alpine 系统的镜像文件
- 解压镜像文件,并使用 BalenaEtcher 或类似软件将镜像烧录到 Micro SD 卡
- 将 USB Type-C 数据线一端插到电脑,另一端插到 Milk-V Duo 开发板;打开电脑端的
设备管理器;在其他设备栏目中,可以看到一个带有感叹号的 RNDIS 设备;点击该 RNDIS 设备,选择更新驱动;选择网络适配器,然后选择远程 NDIS 兼容设备,成功更新驱动 - 使用 PuTTY 等工具进行 SSH 登录测试
- 默认 IP 地址为:
192.168.42.1 - 输入用户名和密码即可登录到开发板
- 默认 IP 地址为:
二、开发板网络配置:设置共享网络与自启
为了让开发板能够访问互联网,需要额外设置共享主机的网络
- 在主机上,将 Wi-Fi 选择 共享,共享给 RNDIS 设备
- 给 RNDIS 网卡设置一个静态 IP(例如,在
192.168.137.1的子网) - 在开发板内部(SSH 终端):
- 删掉旧的默认网关
- 将主机的共享网络地址(如
192.168.137.1)设置为默认网关 - 配置 DNS 服务器
- 解决时间/证书问题: 校准系统时间,并修改证书错误
- 设置开机自启: 将上述所有网络配置和校准操作设置为开机自启
三、RuyiSDK 在 Alpine 上的离线安装
由于官方预编译的 RuyiSDK 二进制包是 glibc 目标,与 Alpine 使用的 musl 运行时不兼容,故需采用 Python Wheel 包离线安装。
- 在主机侧(PowerShell/WSL)准备依赖:
- 下载 RuyiSDK 运行所需的依赖包
- 下载 RuyiSDK 的 Wheel (whl) 包
- 将这些依赖包打包上传到开发板
- 在开发板侧离线安装:
- 在开发板上进行这些依赖包的离线安装
- 部署 RuyiSDK 的 whl 包,完成离线安装
- 配置全局可用性:
- 配置启动器,使离线安装的 RuyiSDK 变成全局可用的命令
- 允许 root 用户运行
- 验证: 使用
ruyi version命令验证版本号
四、RuyiSDK 的使用与 coremark 性能测试
4.1 RuyiSDK 基础使用
- 通过 SSH 远程连接开发板
- 演示
ruyi update刷新本地缓存包 - 演示
ruyi news list --new列出未读新闻 - 演示
ruyi list --name-contains''列出软件包
4.2 coremark 交叉编译测试
- 原因: Milk-V Duo 内存(256M)和算力有限,在板端进行构建编译会因内存不足和耗时长而失败,因此选择在主机上进行交叉编译 。
- 主机 WSL 侧操作:
- 在 WSL 上安装 RuyiSDK 工具
- 创建并激活虚拟环境
- 使用 RuyiSDK 的包管理功能安装 coremark 源码并解包
- 指定交叉工具链
- 构建 coremark
- 验证产物架构,确认是 RISC-V 架构的可执行文件
- 传输与运行:
- 将 coremark 可执行文件传输到开发板上
- 在开发板上执行 coremark
五、IDE 集成与远程调试
- 环境切换: 将主机环境从 WSL 切换到 VMware 虚拟机,以解决网络连接问题
5.1 IDE 配置与 Hello World 远程运行
- 在虚拟机中安装并启动 RuyiSDK IDE (REEXTRACT)
- 获取
hello-world源码 - 导入工程: 在 IDE 中导入
helloworld工程 - 绑定工具链:
- 选择 RISC-V Cross GCC
- 配置 Watching Folder 为工具链的 bin 目录(通过终端查询工具链的路径后填入)
- 配置编译器前缀为
riscv-linux-musl
- 准备
Makefile: 填写工具链前缀、开发板设备信息、编译参数和编译规则 - 运行: 进入项目目录,执行
make run_remote,实现远程连接、上传可执行文件并在板端运行,输出hello world
5.2 远程调试 (GDB Server)
- GDB Server 安装: 在开发板上下载并安装 GDB Server
- 板端启动: 通过 SSH 连接开发板,启动 GDB Server,调试目标项目(如
sumdemo) - 主机端调试:
- 在主机端进入虚拟环境
- 使用交叉编译的 GDB,调试主机端的二进制文件
- 设置远程端口,连接到开发板上的 GDB Server
- 设置断点(例如在第 6 行),让程序运行
- 查看 back trace 回溯,完成远程调试
补充说明
- 网络自动化: Milk-V Duo 的 USB 网卡设备名会变化,建议使用
netplan等工具配合自动化脚本来管理网络,并增加开机自动修复功能 - 免密配置: 配置 SSH 免密登录,避免在执行
make等操作时重复输入密码