RISC-V 介绍

TL;DR

RISC由美国加州大学伯克利分校教授David Patterson发明。
RISC-V(读作”risk-five“),表示第五代精简指令集,起源于2010年伯克利大学并行计算实验室(Par Lab) 的1位教授和2个研究生的一个项目(该项目也由David Patterson指导),希望选择一款指令集用于科研和教学,该项目在x86、ARM等指令集架构中徘徊,最终决定自己设计一个全新的指令集,RISC-V由此诞生。RISC-V的最初目标是实用、开源、可在学术上使用,并且在任何硬件或软件设计中部署时无需版税。
2015年,为了更好的推动RISC-V在技术和商业上的发展,3位创始人做了如下安排:
 - 成立RISC-V基金会,维护指令集架构的完整性和非碎片化
 - 成立SiFive公司,推动RISC-V商业化
2019年,RISC-V基金会宣布将总部迁往瑞士,改名RISC-V国际基金会。作为全球性非营利组织,已在全球70多个国家拥有2000+成员。包括华为、中兴、阿里巴巴、、乐鑫等众多国内企业。
通过十多年的发展,RISC-V这一星星之火已有燎原之势。倪光南院士表示,未来RISC-V很可能发展成为世界主流CPU之一,从而在CPU领域形成Intel (x86)、ARM、RISC-V三分天下的格局。

点击此处询问 AI :-D

RISC-V Emualtor

自主开发的开源教学用 RISC-V 模拟器,支持 RV64GC 指令集和 uart、virtio-blk 等众多外设,带有内置调试器和 gdb 支持。采用 Rust 语言开发,兼具性能和安全。

如果您需要开启探索仓库之旅,可以参阅 zread,其中包含AI生成的项目详细解析,以及与LLM进行交互式探索代码的功能。 (AI 未必完全正确,请保持理性看待,请勿盲从)

仓库:riscv-emulator

环境配置

Rust toolchain

需要安装 nightly 版本的 rust 工具链

  • 对于大多数发行版如 Ubuntu:

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    source "$HOME/.cargo/env" && rustup default nightly
    
  • 对于 Arch Linux,可以使用 pacman 包管理:

    sudo pacman -S rustup
    source "$HOME/.cargo/env" && rustup default nightly
    

RISC-V 交叉编译器

除非你使用的电脑或虚拟机是 RISC-V 指令集(如果你不清楚,则一定不是),否则你需要安装 RISC-V 的交叉编译器来编译、链接 RISC-V 程序。

下面的 bash 脚本会将预编译的交叉工具链安装到 /opt/riscv

export TOOLCHAIN_URL="https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2025.11.21/riscv64-elf-ubuntu-22.04-gcc.tar.xz"

sudo mkdir -p /opt/riscv
wget $TOOLCHAIN_URL -O /tmp/toolchain.tar.xz

sudo tar -xvf /tmp/toolchain.tar.xz --strip-components=1 -C /opt/riscv

rm /tmp/toolchain.tar.xz

这之后,为了方便使用,你需要将 /opt/riscv 加入环境变量:

export PATH=/opt/riscv/bin:$PATH

也可以将这行代码放入 .bashrc(对于 bash)或者其他启动脚本中

测试:

riscv64-unknown-elf-gcc --version

GNU 的常用工具链都有包含,如 gdbobjdump

RISC-V Emulator

项目地址:RISC-V Emulator

如果你对该项目的使用需要额外的帮助,请参考项目的 readme;如果你遇到了问题,请检索或发表 issue

拉取项目源码和 submodule:

git clone https://github.com/WanDejun/riscv-emulator.git

git submodule init
git submodule update

编译并运行自带的 C 语言 demo 程序:(你需要先安装 makefile

cd ./test_resources
make
cargo run --release -- ./bin/main.elf

测试

编译 riscv-tests 测试套件,从项目根目录下(你需要先安装 autoconfmakefile):

export PATH=/opt/riscv/bin:$PATH
cd riscv-tests
autoconf
./configure --prefix=/opt/riscv
make

运行命令 cargo test,会同时运行项目内置的单元测试和 riscv-tests

issue

如果遇到无法解决的 bug,请检查软件在终端的输出,运行目录下的 log 文件夹下的日志。我们在仓库目录中有附上 create_issue.md 的 skill,您可以将遇到的 bug 告知您的 agent,交由 agent 提交 issue。