Ruyisdk+香山南湖实操笔记

Ruyisdk+香山南湖实操过程


学习目标

  • 掌握 RuyiSDK 包管理器的安装和基础使用
  • 学会搭建 RISC-V 的交叉编译环境
  • 理解 RISC-V 程序编译与运行流程
  • 通过 QEMU 模拟香山南湖处理器环境,完成项目实践

环境要求

  • 操作平台:Linux x86_64(推荐主流开发环境,如 WSL2)
  • 安装内容
    • RuyiSDK 包管理器
    • gnu-upstream 交叉编译工具链
    • QEMU RISC-V 模拟器(支持香山南湖或替代架构)

0. 判断 QEMU 是否支持香山南湖架构

步骤 0.1:查看可用的 QEMU 包

ruyi list --all | grep qemu

步骤 0.2:查看 QEMU 支持的 CPU 类型

创建临时环境并激活:

ruyi venv -t gnu-upstream -e qemu-user-riscv-upstream generic ~/ruyi-test-env
source ~/ruyi-test-env/bin/ruyi-activate

检查支持的 CPU(查找 nanhuxiangshanc910):

ruyi-qemu -cpu help | grep -i "nanhu\|xiangshan\|c910"

结果判断

  • 如支持 "xiangshan""nanhu":可直接使用 -cpu xiangshan-nanhu
  • 如支持 "xuantie-c910":可使用 -cpu xuantie-c910 作为替代
  • 如仅支持 "rv64"
    ruyi update
    
    然后重复上述步骤更新 QEMU 包。

1. 环境搭建与安装

步骤 1.1:创建虚拟环境

ruyi venv -t gnu-upstream -e qemu-user-riscv-upstream generic ~/ruyi-nanhu-env

步骤 1.2:激活虚拟环境

source ~/ruyi-nanhu-env/bin/ruyi-activate

激活成功后提示符变为:
«Ruyi ruyi-nanhu-env» user@host:~$

image

步骤 1.3:验证工具链和 QEMU

riscv64-unknown-linux-gnu-gcc --version
ruyi-qemu --version

说明:RuyiSDK 提供的 ruyi-qemu 自动配置了 sysroot 和动态链接器路径,无需手动指定 -static


2. 项目实践:Hello World

步骤 2.1:编写示例程序

创建源文件 hello.c

#include <stdio.h>
int main() {
    printf("Hello, World!\n");
    return 0;
}

步骤 2.2:交叉编译

riscv64-unknown-linux-gnu-gcc hello.c -o hello

步骤 2.3:验证文件格式

file hello

验证输出应该显示为:
ELF 64-bit LSB pie executable, UCB RISC-V, RVC, dynamically linked...

步骤 2.4:在 QEMU 中模拟运行

ruyi-qemu ./hello

预期输出:

Hello, World!

3. 项目实践进阶:Coremark 基准测试

步骤 3.1:提取 Coremark 源码

mkdir -p ~/coremark && cd ~/coremark
ruyi extract coremark

步骤 3.2:进入源码目录

cd coremark-1.0.1

步骤 3.3:编译程序

make PORT_DIR=linux64 CC=riscv64-unknown-linux-gnu-gcc link

步骤 3.4:在 QEMU 中运行

ruyi-qemu ./coremark.exe

预期输出:
显示 CoreMark 的基准测试结果,如:

CoreMark 1.0 : 6604.623236 / GCC13.2.0 ...


4. 常用命令速查

  • 创建开发环境

    ruyi venv -t gnu-upstream -e qemu-user-riscv-upstream generic ~/ruyi-nanhu-env
    
  • 激活环境

    source ~/ruyi-nanhu-env/bin/ruyi-activate
    
  • 退出环境

    ruyi-deactivate
    
  • 更新包列表

    ruyi update
    
  • 查看已安装包

    ruyi list installed
    

5. 常见问题

Q1: 激活时报错 “No such file or directory”

解决方法:确保使用的是 ruyi-activate 而非常规的 activate

Q2: riscv64-unknown-linux-gnu-gcc 找不到

解决方法

ruyi update
ruyi venv -t gnu-upstream -e qemu-user-riscv-upstream generic ~/new-env

Q3: Coremark 编译报错 “gcc: command not found”

解决方法:显式指定交叉编译器:

make CC=riscv64-unknown-linux-gnu-gcc link

2 个赞