RISC-V 架构入门:从原理到第一块开发板

RISC-V 架构入门:从原理到第一块开发板

写在前面

过去二十年,处理器架构市场基本被两家瓜分:Intel 的 x86 统治 PC 和服务,ARM 统治移动端和 IoT。你想自己做一颗芯片?抱歉,先交一笔不便宜的授权费。

RISC-V 的出现打破了这个局面。

RISC-V 是一个完全开源的指令集架构(ISA)。任何人可以免费使用它设计、制造、销售芯片或基于 RISC-V 的产品,而无需向任何公司支付许可费。它由加州大学伯克利分校的 Krste Asanović教授和团队于 2010 年发起,现已成为芯片行业最热门的新势力。

这篇文章,我会从指令集的基本概念讲起,帮你理解 RISC-V 到底有什么不同,然后带你挑选一块开发板,运行你的第一个 RISC-V 程序。

一、什么是指令集架构(ISA)?

1.1 最简单的理解

指令集架构,就是 CPU 和软件之间的”合同”——它规定了:

  • CPU 能执行哪些基本操作(加法、减法、加载数据、跳转……)

  • 有多少个寄存器,每个多宽

  • 内存怎么寻址

  • 指令的编码格式

你可以把它理解为 CPU 的”语言规范”。 软件用这种语言写指令,CPU 听懂并执行。

1.2 x86 vs ARM vs RISC-V

x86ARMRISC-V
开发者Intel/AMDArm Ltd.RISC-V 基金会(开源)
授权模式封闭授权收费完全免费开源
指令类型CISC(复杂指令集)RISC(精简指令集)RISC(精简指令集)
主要领域PC/服务器手机/嵌入式IoT/嵌入式/AI/全领域
可扩展性不可扩展有限扩展高度可扩展

RISC-V 的杀手锏是两个字:自由。

你不需要获得任何人的许可就能使用 RISC-V ISA。你可以根据需求自定义指令集扩展。你可以设计一颗极简的 32 位 MCU,也可以设计一颗支持向量扩展的 AI 加速器——都合法,都免费。

1.3 为什么叫 “V”?

V 代表”五”(罗马数字)。伯克利团队之前已经设计了四代 RISC 处理器(ROCK I~IV),第五代就叫 RISC-V。同时 V 也暗示”Variable”(可变),因为 RISC-V 的指令集是可扩展的。

二、RISC-V 架构核心特点

2.1 精简指令集(RISC)

RISC-V 遵循精简指令集哲学:

  • 指令长度固定为 32 位(基础 ISA)——解码简单,硬件设计简洁

  • Load/Store 架构——只有 load 和 store 指令能访问内存,算术运算只能在寄存器之间进行

  • 寄存器数量充足——32 个通用整数寄存器(x0~x31),比 x86 的 16 个多一倍

这种设计让硬件实现更简单,功耗更低,非常适合嵌入式场景。

2.2 模块化设计

RISC-V 不是”一套指令集适合所有场景”,而是按模块组合:

扩展名称说明
RV32I / RV64I基础整数 ISA必选,所有 RISC-V 处理器都包含
M乘除扩展硬件乘除法指令
A原子操作扩展多核同步用的原子指令
F单精度浮点硬件单精度浮点运算
D双精度浮点硬件双精度浮点运算
C压缩指令16 位编码的压缩指令,减小代码体积
V向量扩展SIMD 向量运算,适合 AI/多媒体

典型组合示例:

  • 极简 IoT 节点:RV32I + C(最小代码体积)

  • 通用 MCU:RV32IMAC(带乘除、原子、压缩)

  • 应用处理器:RV64IMAFDC(64 位 + 全功能)

  • AI 加速器:RV64IMAFDCV(加上向量扩展)

2.3 特权级别

RISC-V 定义了三种特权级别:

级别名称用途
U 模式User(用户模式)运行用户应用
S 模式Supervisor(监管模式)运行操作系统内核
M 模式Machine(机器模式)固件/Bootloader,最高权限

MCU 通常只需要 M 模式;跑 Linux 的 SoC 需要 M+S+U。

三、RISC-V 生态现状

3.1 芯片厂商

RISC-V 已经不再只是学术项目,各大厂商都在量产:

厂商代表产品定位
平头哥(T-Head)C906/C910/C920高性能应用处理器
兆易创新(GigaDevice)GD32VMCU,Arduino 兼容
乐鑫(Espressif)ESP32-C3WiFi/BLE IoT
沁恒(WCH)CH32V低成本 MCU
SiFiveE/P/U 系列通用 RISC-V IP
Andes TechnologyRISC-V IPIoT/汽车电子

3.2 操作系统支持

  • Linux:2019 年合并到主线内核(5.0+),完全支持

  • FreeRTOS:官方支持

  • Zephyr:官方支持

  • RT-Thread:官方支持

  • Bare-metal:各种裸机 SDK 可用

3.3 开发板推荐

开发板芯片价格适合场景
Sipeed Longan NanoGD32VF103¥30-50入门学习,带 LCD
ESP32-C3ESP32-C3¥15-25IoT 开发,WiFi+BLE
Milk-V DuoCV1800B¥50-80Linux 应用处理器
StarFive VisionFive 2JH7110¥500-700完整 Linux SBC
HiFive1 Rev BFE310-G002¥300+官方推荐入门板

入门推荐:ESP32-C3 或 Sipeed Longan Nano——便宜、资料多、上手快。

四、实战:在 RISC-V 开发板上跑起第一个程序

4.1 硬件准备

我们以 ESP32-C3 为例——它搭载 RISC-V 单核处理器,支持 WiFi 和 BLE 5.0,价格不到 20 块。

你需要:

  • ESP32-C3 开发板(如 ESP32-C3-DevKitM-1)

  • USB-C 数据线

  • 电脑(Windows/Mac/Linux 均可)

4.2 搭建开发环境

方案一:Arduino IDE(最简单)

  1. $1

  2. $1

  3. $1

  4. $1

  5. $1

// ESP32-C3 Blink 示例
void setup() {
  pinMode(8, OUTPUT);
  Serial.begin(115200);
  Serial.println(\"Hello from RISC-V!\");
}

void loop() {
  digitalWrite(8, HIGH);
  delay(500);
  digitalWrite(8, LOW);
  delay(500);
}

就这样——你已经在 RISC-V 处理器上运行代码了。

方案二:ESP-IDF(官方 SDK,更灵活)

如果你需要更底层的控制,用 Espressif 的官方 SDK:

# 1. 安装 ESP-IDF 工具链
git clone --recursive https://github.com/espressif/esp-idf.git
cd esp-idf
./install.sh esp32c3  # 指定 RISC-V 芯片

# 2. 设置环境
. ./export.sh

# 3. 创建项目
idf.py create-project my_riscv_app
cd my_riscv_app

# 4. 编辑 main/main.c
# 5. 编译(注意这里编译的是 RISC-V 目标代码)
idf.py set-target esp32c3
idf.py build

# 6. 烧录
idf.py -p /dev/ttyUSB0 flash monitor

4.3 方案三:裸机开发(纯 RISC-V 学习)

如果你想从最底层理解 RISC-V,可以尝试纯裸机开发:

# 安装 RISC-V GCC 工具链
# Ubuntu/Debian:
sudo apt install gcc-riscv64-unknown-elf gdb-riscv64-unknown-elf

# 或者用预编译版本:
wget https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases/latest/download/xpack-riscv-none-elf-gcc-linux-x64.tar.gz
tar xzf xpack-riscv-none-elf-gcc-linux-x64.tar.gz

写一段最基础的汇编程序:

# hello.S - 在 RISC-V 上打印字符到串口
.section .text
.globl _start

_start:
    # 设置栈指针
    la sp, _stack_top

    # 打印 \"Hello RISC-V!\"
    la a0, hello_msg
    jal uart_puts

    # 停机
1:  j 1b

.section .rodata
hello_msg:
    .string \"Hello RISC-V!\\n\"

编译:

riscv64-unknown-elf-gcc -march=rv32imac -mabi=ilp32 -nostdlib hello.S -o hello.elf

这就是你在裸 RISC-V 硬件上能跑的最小程序。

五、深入理解 RISC-V 指令

5.1 基础指令(RV32I)

掌握这几条核心指令,你就理解了 RISC-V 的基本运作方式:

指令格式示例说明
addird, rs1, immaddi x1, x0, 10x1 = x0 + 10 = 10
addrd, rs1, rs2add x2, x1, x1x2 = x1 + x1 = 20
lwrd, offset(rs1)lw x3, 0(x4)从内存加载
swrs2, offset(rs1)sw x3, 0(x4)写入内存
beqrs1, rs2, labelbeq x1, x2, equal条件跳转
jalrd, labeljal ra, my_func跳转并链接

5.2 一个完整的小程序

// 用 C 写的 RISC-V 程序,编译器会生成对应的 RISC-V 汇编
int fibonacci(int n) {
    if (n  1, skip return

    lw a5, -20(s0)
    mv a0, a5               # return n
    j .L3

.L2:
    lw a5, -20(s0)
    addi a5, a5, -1
    mv a0, a5
    jal fibonacci           # fibonacci(n-1)

    mv a5, a0
    lw a4, -20(s0)
    addi a4, a4, -2
    mv a0, a4
    jal fibonacci           # fibonacci(n-2)

    add a0, a5, a0          # result = fib(n-1) + fib(n-2)

.L3:
    lw ra, 28(sp)
    lw s0, 24(sp)
    addi sp, sp, 32
    jr ra

虽然看起来复杂,但 RISC-V 的汇编非常规整——每条指令做一件事,没有 x86 那种”一条指令干三件事”的魔幻操作。这也是 RISC 哲学在代码层面的体现。

六、RISC-V vs 传统架构:嵌入式场景对比

6.1 功耗

架构典型待机电流典型工作电流适合电池应用
RISC-V (ESP32-C3)~10μA~50mA✅ 优秀
ARM Cortex-M (STM32)~5μA~30mA✅ 优秀
x86 (Atom)~1mA~500mA❌ 不适用

RISC-V 和 ARM 在低功耗领域旗鼓相当。RISC-V 的优势在于没有授权费,可以大规模量产而不增加成本。

6.2 性能

指标RISC-V (C906)ARM Cortex-A53说明
Dhrystone DMIPS/MHz~2.8~2.0RISC-V 略优
时钟频率最高 2GHz最高 1.5GHz取决于芯片实现
多核支持两者都支持

重要提醒:RISC-V 只是 ISA,具体性能取决于芯片实现。 同样的 RISC-V ISA,平头哥 C906 和一颗简单的 MCU 性能差距巨大——就像同样的 x86 ISA,i9 和 Celeron 不是一个量级。

6.3 开发生态

RISC-VARM
编译器支持GCC/Clang 主线GCC/Clang 主线
RTOS 支持FreeRTOS/Zephyr 全支持全支持
Linux 支持主线内核 5.0+成熟
IDE 支持PlatformIO/VSCode/CLionKeil/IAR/STM32CubeIDE
社区教程增长中(中文资料较多)非常丰富
芯片选型快速增长中极其丰富

RISC-V 的生态还在快速成长期。对于常规嵌入式开发,工具和生态已经够用;但如果你需要特定的外设库或评估板支持,ARM 的选择面仍然更广。

七、常见问题

Q: RISC-V 能跑 Linux 吗?

能。 从 2019 年 Linux 5.0 内核开始,RISC-V 就是主线支持的目标架构。Milk-V Duo、StarFive VisionFive 2 等开发板都能跑完整的 Linux 发行版。

Q: RISC-V 和 ARM 哪个更好?

没有绝对答案。如果你在做商业产品且成本敏感,RISC-V 没有授权费是巨大优势。如果你需要成熟的生态和现成的库支持,ARM 目前更丰富。 但 RISC-V 的追赶速度极快,预计 3-5 年内生态差距会显著缩小。

Q: 入门应该选哪块开发板?

  • 预算最低:ESP32-C3(¥15,WiFi+BLE,Arduino 兼容)

  • 想学裸机开发:Sipeed Longan Nano(¥30,带 LCD 和 RGB LED)

  • 想跑 Linux:Milk-V Duo(¥50)或 VisionFive 2(¥500)

Q: RISC-V 的未来会怎样?

乐观地说,非常好。Google 宣布 Android 15 支持 RISC-V,NVIDIA 也在 RISC-V 上投入研发。嵌入式领域更是 RISC-V 的主场——ESP32-C3 已经证明 RISC-V 在 IoT 场景完全可用。

八、总结

RISC-V 不是”又一个处理器架构”,它是一次架构民主化的尝试——任何人都可以自由设计和使用处理器,不再被授权费和技术壁垒束缚。

核心要点回顾:

  • RISC-V 是开源指令集,免费且可扩展

  • 采用模块化设计(I/M/A/F/D/C/V),按需组合

  • ESP32-C3 等芯片已量产,生态快速成熟

  • 入门门槛低,¥15 的开发板就能上手

  • 适合 IoT、嵌入式、AI 加速等多种场景

如果你之前只接触过 Arduino(AVR)或 STM32(ARM),RISC-V 会给你带来全新的视角。下一期,我会聊聊 ESP32 的 RISC-V 系列(C2/C3/C6)相比传统 Xtensa 架构的优劣对比。

本文测试环境:ESP32-C3-DevKitM-1 + Arduino IDE 2.x + ESP-IDF 5.0