乐鑫的 ESP32-S31 是一款微控制器,却拥有异常适合 Linux 的特性组合:两个 320 MHz RISC-V 核心、512 KB 片上 SRAM、最高 64 MB 外部 PSRAM 支持、千兆以太网、USB 2.0 主机支持、两个 SD 卡槽,以及摄像头和显示接口。这种组合解释了人们为何会将其与 Raspberry Pi 相比较,但这款芯片的规模和能力仍远小于典型的单板计算机,限制也更多。

硬件框图通过在同一视图中呈现两个 RISC-V 核心、SRAM、PSRAM、以太网、USB、存储、摄像头和显示接口,阐明了它与 Raspberry Pi 的可比之处。
重要的架构变化是内存管理单元(MMU):它通过页表转换虚拟地址,并支持相互分离的特权层级。S31 实现了 RISC-V 的 Sv32 两级分页方案,以及机器态、监管态和用户态。简单来说,这使 Linux 能够在监管态运行,应用程序在独立的用户态运行,而更底层的固件继续保有机器态控制权。

该层级图展示了用户进程、Linux 内核和 OpenSBI 固件如何使用相互分离的特权模式,同时共享 Sv32 地址转换路径。

这项对比 pinpoint 了支持 Linux 背后的架构变化:独立的页表层级取代了乐鑫早期设计使用的单一内存映射。
乐鑫的 Linux 板级支持包(BSP)——包括特定于硬件的内核、引导加载程序、设备树和根文件系统组件——将这些部分打包成一个闪存映像。其代码仓库表示,ESP32-S31 分支是面向评估的开发者预览版,不建议用于生产。另一个社区移植版本报告称,Linux 6.18 已在 ESP32-S31 上原生启动,Buildroot 根文件系统和控制台表现稳定,但以太网、USB、无线和存储等许多外设仍仅获实验性支持。
核心权衡在于内存。文章提到有封装 16 MB 或 32 MB PSRAM 的型号,上限为 64 MB,而文中列举的 Milk-V Duo S 则配备 512 MB。由于 PSRAM 十分有限,社区移植版本从闪存执行 Linux 的代码段,并将可写状态保存在 RAM 中。结果是,它可以用于终端或嵌入式实验,但没有足够余量运行传统桌面环境,也尚未可靠到足以用于生产硬件。