Tiny386
tiny386
项目简介
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 许可证。
标签
项目特点
技术规格
| CPU模拟 | i386(支持部分486/586指令) |
|---|---|
| FPU模拟 | 可选x87 FPU |
| 代码规模 | CPU模拟器约6K LOC |
| 编程语言 | C99 |
| 支持平台 | Linux、ESP32-S3、ESP32-P4 |
| 显示输出 | ISA VGA with Bochs VBE |
| 存储支持 | IDE硬盘、软盘、CD-ROM |
| 网络支持 | NE2000 ISA网卡 |
| 音频支持 | PC Speaker、Adlib OPL2(可选)、SoundBlaster 16 |
| 固件 | SeaBIOS BIOS/VGABIOS |
| 许可证 | BSD-3-Clause(核心),部分组件使用LGPL/MIT |
项目资源
搜索资源
物料清单 (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 | — | 用于键盘鼠标转发 |