Tiny386 tiny386

ESP32 ⭐⭐☆☆☆ (2/5) 已发布
hchunhui 557 Stars BSD-3-Clause BOM 完整度: /5 教程完整度: /5

项目简介

tiny 386 PC模拟器,在esp32上运行win9x。


Tiny386 是一个用 C99 编写的 x86 PC 模拟器,其最突出的特点是极致的可移植性——它甚至能在 ESP32-S3 这类微控制器上成功启动 Windows 9x/NT 操作系统。项目的核心是一个从零构建的、简洁而高效的 i386 CPU 模拟器,代码量仅约 6000 行。虽然缺少调试功能、硬件任务切换和部分权限检查,但它能够运行绝大多数 16/32 位软件。为了支持现代 Linux 内核和 Windows 系统,项目还加入了部分 486 和 586 指令,并提供了可选的 x87 FPU 模拟器。在完整 PC 系统的构建上,Tiny386 从 TinyEMU 和 QEMU 移植了大量外设,包括 8259 PIC、8254 PIT、8042 键盘控制器、CMOS RTC、ISA VGA(支持 Bochs VBE)、IDE 磁盘控制器、NE2000 ISA 网卡、8257 ISA DMA、PC 扬声器,以及可选的 Adlib OPL2 和 SoundBlaster 16 声卡。固件方面,它使用 SeaBIOS 提供的 BIOS/VGABIOS,同时也支持通过名为 linuxstart 的小型存根代码直接启动 Linux 内核,这一思路源自 JSLinux。Tiny386 解决了在资源受限的嵌入式平台上运行经典 x86 操作系统的问题,特别适合复古计算、操作系统教学、嵌入式系统开发调试等场景。其技术栈以纯 C99 为核心,依赖 libslirp、SDL1.2 或 rawdraw 等库实现图形和网络功能,在 ESP32 平台上则使用 ESP-IDF 框架。项目采用 BSD-3-Clause 许可证,部分移植代码采用 MIT 许可证,SeaBIOS 采用 LGPL-3 许可证。

标签

项目特点

高度可移植的x86 PC模拟器,能在ESP32-S3等MCU上运行
从零构建的i386 CPU模拟器,代码精简(约6K LOC)
支持Windows 9x/NT、Linux等操作系统
完整的PC外设模拟(PIC、PIT、键盘、RTC、VGA、IDE、网卡等)
支持KVM加速(Linux平台)
支持ESP32-S3和ESP32-P4开发板
提供预编译固件和在线烧录工具
支持WiFi键盘鼠标输入转发

技术规格

CPU模拟
FPU模拟
代码规模
编程语言
支持平台
显示输出
存储支持
网络支持
音频支持
固件
许可证

项目资源

物料清单 (BOM)

物料名称 数量 参考价格 备注
ESP32-S3开发板(JC3248W535/Elecrow CrowPanel Advance 7.0" HMI) 1 支持ESP32-S3和ESP32-P4
MicroSD卡(FAT/exFAT) 1 存放配置文件和磁盘镜像
480x320或800x480 LCD屏 1 集成在开发板上
USB电源线 1 为开发板供电
WiFi路由器 1 用于键盘鼠标转发

所需工具

工具用途是否必需
ESP-IDF 5.2.x/6.0.x ESP32开发环境 ▢ 推荐
esptool.py 烧录ESP固件 ✅ 是
make 编译项目 ▢ 推荐
libslirp 网络模拟库 ▢ 推荐
libx11 X11显示库 ▢ 推荐
libasound2 ALSA音频库 ▢ 推荐
SDL1.2/sdl12-compat SDL显示库 ▢ 推荐

能力画像

记忆与知识检索
2/5
逻辑推演
5/5
表达与交流
1/5
感知与观察
2/5
数理与计算
5/5
动手与操作
4/5
狂热与坚持
4/5
创造与创新
4/5

所需技能

🔧 **动手能力**:需要焊接和连接ESP32开发板、SD卡模块等硬件组件 💻 **编程能力**:需要C语言编程经验,理解x86架构和模拟器原理,熟悉ESP-IDF开发环境 ⚡ **电子电路**:了解ESP32开发板的基本电路连接,SD卡接口,LCD显示接口

适用场景

在嵌入式设备上运行经典Windows 9x/NT操作系统
学习和研究x86 CPU架构和PC模拟器实现
构建便携式复古PC游戏机
在MCU上运行Linux内核和应用程序
嵌入式系统开发和调试工具