这份路线以自动化与嵌入式基础为起点,分为嵌入式控制、系统软件和硬件微架构三个方向。
先定 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 + 工具链 + 仿真跑通
- 读 ISA 手册时别“通读”,先抓最常用部分:
- 基础 ISA(I)+ 乘除(M)+ 压缩(C)+ CSR/栅栏相关(Zicsr/Zifencei) 官方 Unprivileged 手册直接当权威参考。(RISC-V Documentation)
交付物:
- 一个能在 Spike 上跑的“最小程序”(startup + main),并能解释:栈如何建、函数如何调用、寄存器怎么用。
第 3–4 周:裸机运行时 + 中断/定时器/PWM(贴近自动化)
- 自己写/理解:链接脚本、异常入口、上下文保存恢复
- 做一个“控制友好”的时间基准:定时器中断 1kHz / 10kHz tick
- 做 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)。
资源清单(按“最值得花时间”的顺序)
权威规格与参考
- RISC-V Unprivileged ISA 手册(官方 PDF)(RISC-V Documentation)
- ISA 手册源码仓库(便于查版本/勘误)(GitHub)
工具链与仿真
固件/启动链
- OpenSBI 官方仓库(GitHub)
- SBI 规范(理解接口设计动机)(scs.stanford.edu)
OS 学习
- xv6-riscv + 配套讲义(非常适合把“特权级/陷入/页表”学扎实)(GitHub)
- rCore Tutorial Guide(中文、体系化)(learningos.cn)
评论发表评论 +
评论