GitHub 用户 rochus-keller 在自己的 OberonSystem 仓库开了个 op2-rv32 分支:把 Niklaus Wirth 1992 年那套 Project Oberon 操作系统,从 Oberon-07 迁移到 Oberon-90,用 OP2 编译器的 RISC-V(RV32)后端重新编译,再配一台模拟 Wirth 原版机器的虚拟机。内存映射照搬,Kernel.Mod、Display.Mod、Input.Mod 一行没改。截图显示,这套四十年前设计的系统已经能在虚拟 RISC-V 机器上原生跑起来。
听起来像"老古董蹭新热点"。但真正撑住这次移植的,是一个已经打过好几场硬仗的编译器,外加一个还没兑现的硬件承诺。
一本书讲完的操作系统
Wirth 和 Jürg Gutknecht 在 1986 到 1989 年间,几乎独自完成了一整套计算机系统——操作系统、编译器、语言、图形和文本编辑器,写成《Project Oberon》一书。1992 年那版用的是 National Semiconductor 的 NS32032 处理器,后来这颗芯片停产。Wirth 退休后重启项目,2013 年推出修订版:自己设计了一颗极简 RISC 处理器,取名 RISC-5,用 FPGA 把它真正做成一颗能跑的芯片,整套系统(含编译器)塞进一块低成本开发板。
软硬件之间的契约,只有内存映射加指令集——薄到可以一本书讲完,这正是 Oberon 系统的核心卖点:小,但完整,能看懂全部原理。
RISC-V 撞名不是巧合
RISC-5 和 RISC-V 撞名纯属意外,但气质相通:都追求规整的 32 位 load/store、编译器友好、固定 32 位指令编码,同属 Berkeley RISC 一脉的设计哲学。真正驱动这次迁移的,是现实理由——RISC-V 硬件便宜、随处可买,Espressif 的 ESP32 系列和 Olimex 的开发板尤其合适。
容易被忽略的一点是:Oberon 系统本身不需要 MMU,而这恰好和 ESP32 这类无 MMU 微控制器天生对上号。选架构不是选热闹,是选谁跟自己的极简设计不冲突。
OP2 不是新手,这是它的第五仗
普通读者容易把这次移植当成一次孤立的爱好者实验。实情是,OP2 编译器早就是 ETH Oberon 技术遗产的一部分,前后端分离的设计就是为跨平台准备的:同一个前端,后端已经喂过 SPARC、MIPS、i386,最近又加了 ARMv7 和 RV32。同一位开发者此前已经用它把 Oberon System 3 搬到过树莓派。这次 RISC-V 移植,是同一条技术路径的延续,不是从零攻坚。
- 结论.维护一套编译器,比同时维护 Wirth 自己针对 RISC-5 的 OR 编译器、再另开一个 RV32 版本划算得多,这也是作者选 OP2 而不是给 OR 加后端的真实动机。
模拟器里赢了,硬件上还没开始
现在能看到的截图、能跑起来的系统,都是在 rv32emu 改造出来的模拟 VM 里完成的,不是真实芯片。这台虚拟机器的内存映射跟 Wirth 原版 1:1 对应,系统模块几乎原封不动地搬了过来,这本身已经说明移植方案站得住脚。
但模拟器的时序和性能,跟 Wirth 当年真正把 RISC-5 烧进 FPGA、变成一颗物理芯片的体验,是两回事。作者自己也说,下一步要把这套系统(连同 Oberon System 3)迁到 Olimex 的 ESP32-P4 板上——但这仍只是路线图上的一项,没有时间表。
陆游那句"纸上得来终觉浅,绝知此事要躬行",用在这里刚好贴切。模拟器证明的是软件层面的可行性——编译器工作正常、内存模型对得上、系统能启动。但一套以"便宜、可懂、能落地"为卖点的极简系统,价值从来不只是"能跑",而是真正跑在一块几十块钱就能买到的板子上,还能让人看清全部原理。
- 提醒.目前的"RISC-V 复兴老系统"更像是一次干净利落的软件验证,离它真正想讲的故事——微控制器上的教学级操作系统——还差最后那块真实硬件。
这块拼图什么时候补上,值得接着看。
