内容提要
该文章介绍了将开源项目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秒。