来了来了,用单片机 ESP32-S3 跑 RISC-V 模拟器运行 Linux,这次启动只要 8 秒

来了来了,用单片机 ESP32-S3 跑 RISC-V 模拟器运行 Linux,这次启动只要 8 秒

💡 原文中文,约2800字,阅读约需7分钟。
📝

内容提要

该文章介绍了将开源项目linux-ch32v003和mini-rv32ima移植到ESP32-S3开发板上运行Linux系统的过程。作者通过对接UART实现了读取键盘输入和输出Linux console内容到UART。文章还提到了编译Linux系统镜像的过程,并分享了GitHub项目地址。

🔎

延伸解读

从 CH32V003 到 ESP32-S3:性能提升与成本权衡

文章对比了在 CH32V003 和 ESP32-S3 上运行 RISC-V 模拟器的体验。CH32V003 启动 Linux 需 5 分钟,而 ESP32-S3 仅需 8 秒,速度大幅提升。但作者也指出,ESP32-S3-N16R8 价格 20 多元,已可购买像 V3S 这样的正经 ARM SoC 来运行 Linux,因此本项目更多是出于学习和娱乐目的,而非实用替代方案。

移植关键:镜像加载与 UART 交互

移植 mini-rv32ima 主要涉及三部分:加载 Linux 镜像、读取键盘输入、输出控制台信息。作者利用 ESP32-S3 内置的 16MB Flash,通过 xxd 命令将镜像转为 C 数组直接打包进固件,省去了外置存储。同时将输入输出对接 UART,使得用户可通过 minicom 等工具与 Linux 控制台交互。

PSRAM 限制与系统裁剪

ESP32-S3-N16R8 标称 8MB PSRAM,但实际可用空间不足,因此模拟器内存定义为 7MB。受此限制,默认的 Linux 内核和 buildroot 配置裁剪了许多功能,包括 busybox 命令。文章提到用户可通过 menuconfig 自行定制,以在有限资源下增加可玩性。

性能实测:Coremark 得分与启动时间

在 ESP32-S3 上运行 Coremark 得分为 6.65,仅略高于 ATmega2560 的 4.25 分,表明模拟器性能有限。不过 Linux 启动时间约 8 秒,相比 CH32V003 的 5 分钟有显著改善。作者也提到可用命令较少,反映了系统裁剪的程度。

❓

Q&A

如何将Linux系统移植到ESP32-S3开发板上?

通过将开源项目linux-ch32v003和mini-rv32ima移植到ESP32-S3,并对接UART实现输入输出。

ESP32-S3开发板的Flash容量是多少?

ESP32-S3-N16R8开发板自带16MB Flash。

如何编译适用于mini-rv32ima的Linux镜像?

可以使用tvlad1234提供的编译脚本,通过执行make all命令来编译Linux镜像。

ESP32-S3的可用PSRAM空间是多少?

ESP32-S3的可用PSRAM空间小于8MB,实际使用时定义为7MB。

如何通过UART与Linux console进行交互?

通过对接UART,使用minicom等工具可以直接与Linux console进行交互。

Linux系统启动需要多长时间?

Linux系统启动时间约为8秒。

🏷️

标签

➡️

继续阅读