搜索文章

输入标题或内容中的关键词。

← 回到技术手记
硬件

RISC-V 学习路线:从嵌入式应用到系统与开源核

gemhack··7 分钟阅读

这份路线以自动化与嵌入式基础为起点,分为嵌入式控制、系统软件和硬件微架构三个方向。


先定 3 条主线(你可以并行,但建议按顺序推进)

A. 嵌入式控制主线(嵌入式应用)

目标:能在 RISC-V MCU/SoC 上写裸机/RTOS程序,玩转中断、定时器、PWM、ADC、通信外设,把控制算法跑起来。

你会重点掌握:

  • RV32/64 的基础指令 + 常用扩展(先从 RV32IMC 很合适)
  • 启动流程(startup、链接脚本、异常/中断向量)
  • 外设与实时:定时器/PWM/中断优先级/临界区/延迟抖动

RTOS 推荐从 Zephyr 入手(板卡支持和文档体系都很全)。(Zephyr Project Documentation)


B. 系统软件主线(理解“为什么要特权级/固件/SBI”)

目标:搞懂从固件到 OS 的链路:OpenSBI →(可选 U-Boot)→ Linux / 教学 OS,以及 RISC-V 特权级与异常机制。

关键抓手:

  • 用 QEMU 跑 RISC-V 虚拟机(不买板子也能系统级学习)。(QEMU)
  • 理解 SBI 是 OS 与底层执行环境之间的“通用接口”,OpenSBI 是主流参考实现。(scs.stanford.edu)

C. 硬件/微架构主线(开源核与验证)

目标:不止会用,还能看懂/改动一个开源 RISC-V 核:流水线、访存、CSR、中断、简单缓存/总线接口,并用测试套件做基本验证。

建议从 Ibex 这种“嵌入式取向、文档齐、规模适中”的核开始。(GitHub) 想做得更专业,再引入架构一致性测试(riscv-arch-test)。(GitHub)


一套“12 周可落地”的学习计划(每周都有可交付成果)

第 1–2 周:ISA + 工具链 + 仿真跑通

  1. 读 ISA 手册时别“通读”,先抓最常用部分:
  • 基础 ISA(I)+ 乘除(M)+ 压缩(C)+ CSR/栅栏相关(Zicsr/Zifencei) 官方 Unprivileged 手册直接当权威参考。(RISC-V Documentation)
  1. 装工具链:riscv-gnu-toolchain(或用其预构建版本)(GitHub)
  2. 用 Spike 跑最小 ELF:写几段汇编 + C,学会看反汇编、寄存器、调用约定(GitHub)

交付物:

  • 一个能在 Spike 上跑的“最小程序”(startup + main),并能解释:栈如何建、函数如何调用、寄存器怎么用。

第 3–4 周:裸机运行时 + 中断/定时器/PWM(贴近自动化)

  1. 自己写/理解:链接脚本、异常入口、上下文保存恢复
  2. 做一个“控制友好”的时间基准:定时器中断 1kHz / 10kHz tick
  3. 做 PWM 输出 + 简单闭环(哪怕先是软件仿真“电机模型”)

交付物:

  • 一个固定频率控制循环(PID/前馈都行),并能量化:抖动、延迟、占用率(用 GPIO 翻转或 cycle counter 统计)。

第 5–6 周:上 RTOS(Zephyr 或 FreeRTOS),把工程化补齐

  • 用 Zephyr:任务、同步、定时、驱动框架、设备树(Devicetree)(Zephyr Project Documentation)
  • 把控制任务、通信任务(UART/CAN/ETH 任选)、日志任务拆开
  • 看看实时性:优先级反转、临界区、ISR → 线程通信

交付物:

  • 一个可配置、可测的控制应用:RTOS 任务划分清晰、可配置、可测。

第 7–8 周:特权级 + QEMU 启动链(把系统层打通)

  • 用 QEMU 的 RISC-V virt 机型跑起来:理解设备、内存映射、启动参数(QEMU)
  • 理解 OpenSBI 在 M-mode 做了什么:把平台差异隔离,让 S-mode OS 可移植(GitHub)

交付物:

  • 你能画出并解释:Reset → M-mode 固件(OpenSBI)→ S-mode OS 的控制流、异常/中断如何在不同特权级间切换。

第 9–10 周:用教学 OS “吃透机制”(强烈推荐)

二选一(甚至都做也行):

  • xv6-riscv:配套讲义非常适合系统入门,覆盖页表、陷入、系统调用等(GitHub)
  • rCore(中文 + Rust):如果你想顺便提升 Rust/OS 能力,这是很好的体系化路线(learningos.cn)

交付物:

  • 自己实现/修改 1–2 个 OS 功能点(比如:新增系统调用、改调度策略、加简单驱动)。

第 11–12 周:开源核 + 基本验证(真正“深入研究”的开始)

  • 读一本“架构+实现”桥梁书:Patterson & Hennessy 的 RISC-V 版《Computer Organization and Design》很对口(Open Library)
  • 上手一个核:Ibex(SystemVerilog)(GitHub)
  • 跑架构测试:riscv-arch-test(了解一致性测试框架怎么组织)(GitHub)

交付物:

  • 你能在仿真里跑过一批 ISA 测试,并能定位/解释一次失败(哪怕是你故意引入 bug)。

资源清单(按“最值得花时间”的顺序)

权威规格与参考

工具链与仿真

  • riscv-gnu-toolchain(GCC/binutils/newlib 等)(GitHub)
  • Spike(ISA 模拟器)(GitHub)
  • QEMU RISC-V 系统仿真文档(QEMU)

固件/启动链

OS 学习

  • xv6-riscv + 配套讲义(非常适合把“特权级/陷入/页表”学扎实)(GitHub)
  • rCore Tutorial Guide(中文、体系化)(learningos.cn)

开源核/硬件方向

  • Ibex(嵌入式取向的开源核 + 文档)(GitHub)
  • riscv-arch-test(架构一致性测试)(GitHub)

中文社区/项目型学习(很适合“做中学”)

  • 一生一芯(ysyx)项目主页与社区路线(OSCPU)
  • OneStudentOneChip 代码更新仓库(作为切入点之一)(GitHub)
评论发表评论

评论

发表评论

邮箱不会公开。标有 * 的项目为必填项。