- Tiny386 emuliert einen i386 auf einem ESP32-S3 und startet. Windows 95 mit Video, Netzwerk und Ton.
- Mäßige Leistung: Starten ~4 Minuten; Notepad, Solitaire und Internet Explorer funktionieren.
- Code in C99 (~6k LOC), BSD-3-Lizenz; WebAssembly-Demo verfügbar.
- Aktuelle Unterstützung für JC3248W535; mögliche Portabilität auf andere Mikrocontroller.

Was vor Kurzem noch wie ein Forumswitz wirkte, ist nun Realität geworden: Windows 95 bootet auf einem ESP32-S3 Dank eines minimalistischen x86-Emulators namens Tiny386. Auf einem kleinen Entwicklerkit mit 3,5-Zoll-Touchscreen startet das Microsoft-System, braucht ein paar Minuten und läuft nur mühsam, öffnet aber Notepad, spielt Solitaire und lädt sogar eine alte Website über das Netzwerk.
Verantwortlich ist der Bauträger He Chunhui (hchunhui), der ein i386-Emulator von Grund auf auf C99 und hat es auf den Espressif-Mikrocontroller portiert. Das Bemerkenswerte daran ist nicht nur, dass es funktioniert, sondern laut Informationen auf GitHub, Hackster/Hackaday und Fachmedien ist dies vermutlich das erste Mal, dass es jemandem gelungen ist, Windows auf einem Espressif-Mikrocontroller zu installieren. Hardware ESP32, nach vorherigen Meilensteinen wie dem Start von Linux 5.0 auf anderen ESP32-Boards und ein Linux 6.3-Image auf dem Olimex ESP32-S3-DevKit-LiPo.
Was ist Tiny386 und wer steckt dahinter?
Tiny386 ist im Wesentlichen ein virtueller x86-PC, geschrieben in C99 und für den mobilen Einsatz konzipiertSein Kern ist ein CPU-Emulator. Intel i386 „einfach und dumm“ – in den Worten des Autors – mit einem ganz klaren Ziel: so viel 16- und 32-Bit-Software wie möglich auszuführen, ohne sie mit enormer Komplexität zu belasten.
Die virtuelle CPU implementiert den 80386-Befehlssatz und fügt hinzu 486 und 586 Anweisungen Sie werden benötigt, um moderne Linux-Kernel und Windows-Systeme der damaligen Zeit zu starten. Der Kernel umfasst etwa 6.000 Codezeilen (LOC), was angesichts seiner Leistungsfähigkeit überraschend ist, und beinhaltet optional x87 FPU-Emulation für Software, die dies benötigt.
Wie bei jedem jungen Projekt gibt es noch Lücken zu füllen. Tatsächlich Funktionen wie Debugging, Hardware-Tasks und bestimmte Berechtigungsprüfungen fehlen.Dennoch bleibt die Grundannahme wahr: Für die meisten klassischen DOS/Windows 3.x/95-Programme und sogar für das Booten eines modernen Linux-Systems ist die aktuelle Implementierung ausreichend.
Wie man einen i386-PC auf einem ESP32-S3 emuliert
Um den Wert dieser Funktion zu würdigen, lohnt es sich, sich daran zu erinnern, was ein 80386 war: ein 32-Bit-x86-Prozessor mit sechsstufiger Pipeline und MMU Es wurde Mitte der 80er Jahre eingeführt und bildete die Grundlage für eine ganze Ära von Personal-PCs. portátiles und sogar Server, mit realen und geschützten Modi, die die Evolution der Software kennzeichneten.
Auf der gegenüberliegenden Seite, ESP32-S3 Es handelt sich um einen aktuellen, kostengünstigen Mikrocontroller mit zwei Tensilica Xtensa LX7-Kernen mit 240 MHz, WLAN-/Bluetooth-Konnektivität und sehr geringem Stromverbrauch. Obwohl der Vergleich nicht direkt ist (Emulation hat immer einen Nachteil), machen die hohe Leistung dieses SoC und die Unterstützung für externen PSRAM-Speicher ihn zu einem ernstzunehmenden Konkurrenten. Sie ermöglichen die Simulation einer funktionsfähigen 386er-Maschine. mit grundlegender Grafik, Netzwerk und Ton, alles im Mikrofon selbst integriert.
Der Trick besteht in einem pragmatischen Ansatz: Die CPU wird auf einfache Weise emuliert. Die wichtigsten Anweisungen werden hinzugefügt Diese fehlten für moderne Gehäuse, und die übrige PC-Benutzererfahrung basiert auf virtuellen Peripheriegeräten, die bereits in anderen Projekten getestet wurden. Diese Mischung aus Minimalismus und cleverem Recycling ermöglicht es dem System, Windows 95 ohne Absturz zu starten.
Emulierte Peripheriegeräte und Firmware
Um das PC-Ökosystem zu vervollständigen, verwendet Tiny386 Code von TinyEMU und QEMU um die klassischen Komponenten einer ISA-Maschine aus den frühen 90er Jahren nachzubilden. BIOS VGABIOS hingegen stammt aus dem SeaBIOS-Projekt, das das Booten von Systemen vereinfacht, ohne auf proprietäre ROMs angewiesen zu sein.
Die Liste der unterstützten Peripheriegeräte enthält Komponenten, die jedem, der sich mit klassischer PC-Emulation beschäftigt hat, bestens bekannt sein dürften: Interrupt-Controller, Timer, Tastatur, Video, Festplatte, Netzwerk und AudioIm Einzelnen:
- Interrupt-Controller 8259 (PIC) und Timer 8254 (PIT), unerlässlich für das Systemtiming.
- 8042 und Tastatur-Controller CMOS-RTC für Uhrzeit und Grundeinstellungen.
- VGA ISA mit Bosch VBE um kompatible Videomodi anzubieten.
- IDE-Festplattencontroller für Lagerung.
- NE2000 ISA-Netzwerkkarte, ein Klassiker, der weit verbreitet und leicht zu emulieren ist.
- DMA ISA 8257, PC-Lautsprecher Adlib OPL2 und Sound Blaster 16 für den Ton.
Dank dieses Katalogs zeigt das System nicht nur Grafiken an und startet eine Windows-Umgebung mit Benutzeroberfläche, sondern auch Es verfügt über Netzwerkverbindungen. und kann Töne abspielen mit dem Treiber passend, was das Erlebnis des "alten PCs" auf überraschend vollständige Weise abrundet.
Referenzhardware: JC3248W535 mit ESP32-S3
Die Demonstration, die die Aufmerksamkeit aller auf sich gezogen hat, verläuft über die Guition JC3248W535Es handelt sich um ein Entwicklungsboard mit einem ESP32-S3 und einem 3,5-Zoll-Touchscreen-LCD. Dieses Entwicklerkit ist auf Seiten wie AliExpress für etwa 25–30 US-Dollar erhältlich und enthält, soweit wir das beurteilen können, alles, was man zum Spielen von „Pocket-PC-Spielen der 90er-Jahre“ benötigt.
Ein wichtiges Detail: Der USB-C-Anschluss auf diesem Motherboard scheint für Folgendes ausgelegt zu sein: Programmierung und verfeinertnicht als peripherer Wirt USB Standard des ESP32-S3. Trotzdem könnte man sich mit dem USB-OTG-Peripheriegerät des Chips eine Konfiguration mit einem vorstellen. Hub USB An diese können Sie eine Tastatur und eine Maus anschließen und so einen Mini-386 mit direkter kabelgebundener Eingabe erstellen.
Aktuell konzentriert sich die offizielle Projektförderung auf dieses spezielle Board, und der Autor gibt an, dass nur ESP32-S3 Es wird nativ unterstützt. Die Architektur des Emulators legt jedoch Wert auf Portabilität: Mit überschaubarem Aufwand könnte er auf andere Mikrocontroller und Plattformen portiert werden, wodurch sich die Möglichkeit für weitere Formate und Bildschirmgrößen eröffnet.
Leistung und Benutzererfahrung
Die Frage, die sich alle stellen: Wie läuft's? Die kurze Antwort lautet: „Mit Geduld funktioniert es.Der vollständige Systemstart von Windows 95 dauert in der öffentlichen Demo etwa 4 Minuten. Nach dem Hochfahren ist das System zwar langsam, aber noch brauchbar: Man kann Notepad öffnen, Solitaire spielen und sogar den Internet Explorer starten.
Die Netzwerkverbindung ist implementiert, sodass der Emulator Laden Sie einfache WebsitesDie Demonstration zeigt, wie sich info.cern.ch öffnet, die erste Website der Geschichte, was der Szene, in der Windows 95 auf einem Mikrochip für weniger als 30 Euro läuft, einen reizvollen Hauch von Nostalgie verleiht.
Leistungstechnisch ist es verständlich, dass das System an seine Grenzen stößt: Die Emulation verursacht zusätzlichen Aufwand, und dem ESP32-S3 fehlt die Grafikbeschleunigung eines PCs. Trotzdem Der Gesamteindruck ist „Benutzerfreundlichkeit am Limit“. Es ist mehr als nur ein einfaches „Es startet und friert ein“. Wenn man das Video in doppelter Geschwindigkeit abspielt – ein beliebter Tipp unter denen, die es bereits gesehen haben – wird es viel erträglicher.
Übrigens, Tiny386 kann Folgendes ausführen: UntergangDer klassische Test: „Wenn es Doom nicht ausführt, taugt es nichts.“ Und dank virtualisierter Soundgeräte (PC-Lautsprecher, Adlib OPL2 und SB16) ist auch der Audioaspekt im Rahmen der Hardwarebeschränkungen bestmöglich abgedeckt.
Unterstützte Betriebssysteme und Software
Der Katalog, der bereits in einem Video gezeigt wurde, umfasst Windows-3.1 / 3.2 (mit der chinesischen Variante von 3.1) und Windows 95. Darüber hinaus betont der Autor, dass Tiny386 „Es sollte die meisten 16/32-Bit-Softwareprogramme ausführen können.“, und dass es mit der Erweiterung der 486/586-Befehle möglich ist, sowohl relativ moderne Linux-Kernel als auch Windows NT der damaligen Zeit zu starten.
Ein sehr interessantes Detail ist, dass Tiny386 dazu fähig ist Den Linux-Kernel direkt startenohne den Umweg über ein herkömmliches BIOS, was einige Testabläufe vereinfacht. Für Erkundungen ohne Hardware-Montage bietet das Projekt außerdem eine Demo in WebAssembly Dabei wird Windows 3.2 im Browser gestartet und Alternativen wie FreeDOS oder JSLinux für diejenigen erwähnt, die Emulationserfahrungen im Web vergleichen möchten.
Im Bereich der Anwendungen gab es neben dem bereits erwähnten Doom auch die grundlegenden Windows 95-Programme (Notepad, Solitaire und Internet ExplorerDiese Systeme haben sich trotz der offensichtlichen Leistungseinschränkungen als funktionsfähig erwiesen. Dies ist ausreichend, um zu dem Schluss zu kommen, dass die Grafik-, Ein-/Ausgabe- und Netzwerkarchitektur hinreichend gut integriert ist.
Wie Eingänge und Ports gehandhabt werden
Auf dem JC3248W535-Board ist die Verwendung physischer Peripheriegeräte durch Folgendes bedingt: USB-C-programmierorientiertUm dieses Hindernis zu überwinden, können in der aktuellen Implementierung Tastatur und Maus verwendet werden. Umleitung über WLAN in Richtung des Emulators, wodurch eine Steuerung ohne die Notwendigkeit dedizierter Ports im Entwicklerkit ermöglicht wird.
Mit Blick auf die Zukunft wäre es nicht überraschend, Konstruktionen zu sehen, die die Vorteile der ESP32-S3 USB OTG Als Host fungiert es und ermöglicht die Einrichtung einer zentralen Schnittstelle zum Anschluss herkömmlicher Tastaturen und Mäuse. Dieser Fortschritt würde die Interaktion erheblich vereinfachen, ohne auf Touchscreens oder Fernbedienungslösungen angewiesen zu sein.
Lizenz-, Code- und Testressourcen
Das Projekt wird veröffentlicht unter 3 Klausel BSD-LizenzDies fördert die Wiederverwendbarkeit und Portabilität. Der vollständige Quellcode ist im GitHub-Repository verfügbar. grundlegende KompilierungsanweisungenDokumentation der Konfigurationsdateien und, für diejenigen, die es eilig haben, vorkompilierte Bilder Bereit zum Flashen.
Zusätzlich zur technischen Dokumentation gibt es eine Demo im Browser (GitHub Pages) ermöglicht es, sich einen Eindruck vom Startvorgang und der Systemreaktion von Windows 3.2 zu verschaffen, ohne dass zusätzliche Hardware benötigt wird. Wer tiefer in die Materie einsteigen möchte, findet Informationen und Diskussionen auch auf Seiten wie Hackster.io und Hackaday.io sowie in Communities wie /r/hardware, wo diese Retro-Technik-Meisterleistungen oft zu lebhaften Gesprächen führen.
Medien wie CNX Software und Tom's Hardware haben über die Entwicklung berichtet und dabei Details wie die folgenden hervorgehoben: Liste der emulierten PeripheriegeräteDie Abhängigkeit von SeaBIOS von BIOS/VGABIOS und der aktuelle Stand der Unterstützung für das JC3248W535-Board. Tatsächlich ist ein Teil der Verbreitung dem Engagement der Community zu verdanken – dank Tipps wie dem von Zoobab –, was erklärt, warum das Projekt so schnell an die Spitze der Maker-Szene aufgestiegen ist.
Von Linux auf AVR zu Windows 95 auf ESP32‐S3
Um die Dinge ins richtige Verhältnis zu rücken, erinnern sich diejenigen, die die Versuche, Linux auf 8-Bit-Mikrocontrollern booten (wie AVR) wissen, wie lange es dauern könnte. Im Vergleich dazu wirkt ein ESP32-S3, der einen 386er mit Windows 95 emuliert, „schnell“ und ist sicherlich viel praktischer.
Auch im ESP32-Ökosystem wurden bereits Erfolge erzielt: Linux 5.0 auf ESP32-Boards und, in jüngerer Zeit, ein Linux 6.3-Image in der Olimex ESP32‑S3‑DevKit‑LiPoDoch die Einführung von Windows auf dieser Familie von Mikrocomputern markiert einen Wendepunkt bei der Erforschung der Grenzen, bedingt durch die Besonderheit des Ziels und die hohen Anforderungen an den Betrieb einer klassischen grafischen Umgebung.
Aktuelle Einschränkungen und Verbesserungsmöglichkeiten
Die Liste „Noch nicht“ umfasst die integrierter DebuggerHardware-Tasks und bestimmte Berechtigungsprüfungen sind neben den unvermeidlichen Leistungsengpässen, die reine Emulation mit sich bringt, ebenfalls Nachteile. Ein weiterer Nachteil ist, dass die offizielle Unterstützung derzeit auf die Emulation beschränkt ist. JC3248W535Dies schränkt die Vielfalt der standardmäßig verfügbaren Bildschirme und Zubehörteile ein.
Positiv ist, dass der Ansatz von Tiny386 so unkompliziert ist, dass es Freiraum für OptimierungVerbesserungen beim externen Speicher (PSRAM-Latenzen), Feinabstimmung der CPU-Emulation, Behebung potenziell kritischer Pfade in Grafik- oder Festplattenperipheriegeräten und Nutzung von USB OTG zur Optimierung der Benutzererfahrung mit realen Geräten. Jede Kleinigkeit zählt, wenn das Budget für den Entwicklungszyklus so knapp bemessen ist.
Erhaltung, Bildung und Retro-Spaß
Über den bloßen Grundsatz „weil wir es können“ hinaus besitzen Projekte wie dieses einen bedeutenden Bildungs- und Denkmalschutzwert. Mit Tiny386, Entwickler und Lehrer Sie können historische x86-Umgebungen ohne die immer knapper und anfälliger werdende Originalhardware nachbilden und dies auf einer extrem günstigen und energiesparenden Plattform.
Für die Gemeinschaft öffnet es die Tür zu alte Software testen, das Verhalten von Altsystemen zu dokumentieren und Workshops einzurichten, in denen anhand konkreter Beispiele erläutert wird, wie die realen und geschützten Modi des 386 die Konstruktion von OS wie beispielsweise Windows 3.x/95 und die Entwicklung von Linux.
Es gibt auch einen kulturellen Aspekt, der nicht unterschätzt werden sollte: Es ist paradox – und sehr amüsant –, dass wir heute, um uns „mächtig zu fühlen“, … einen 80er-Jahre-Prozessor emulieren Auf einem modernen Mikrofon, während wir Mobiltelefone in der Tasche tragen, die tausendfach leistungsfähiger sind als die ursprünglichen PCs. Dieser Kontrast verdeutlicht, wie weit wir gekommen sind und warum Emulation ein so mächtiges Werkzeug ist.
Interne Architektur: Modi, Speicher und BIOS
Die echten i386 kombinierten Modi real und geschützt, Seitennummerierung und eine MMU, die die Grundlagen für die virtueller Speicher Auf PCs bildet Tiny386 die kritischen Aspekte dieses Verhaltens nach, damit sich die Betriebssysteme „wie zu Hause“ fühlen. Dabei wird die CPU-Emulation mit einer Reihe von Peripheriegeräten kombiniert, die dort reagieren, wo die Software altbekannte ISA-Signale erwartet.
Eine Säule hier ist Meeres-BIOSDas verwendete BIOS und VGABIOS stammen aus dieser Quelle. Dies gewährleistet Kompatibilität mit weit verbreiteten Boot-Routinen und vermeidet die Abhängigkeit von proprietären ROMs. Gleichzeitig kann der Emulator bei Bedarf das BIOS umgehen. den Linux-Kernel laden direkt, eine sehr nützliche Abkürzung zum Testen.
Portabilität und Ökosystem
Da es in C99 geschrieben wurde und über einen so kompakten CPU-Kern verfügt, Tiny386 tragen Für andere Plattformen gestaltet sich die Aufgabe unkompliziert: Es genügt, die I/O-Schicht zu implementieren und die Integration mit Display, Eingabegeräten und Speicher anzupassen. Der Autor selbst hebt die Portabilität als größte Stärke des Projekts hervor.
Dies kommt nicht nur denjenigen zugute, die es auf andere Micro- oder SBCs übertragen möchten, sondern erleichtert es auch Drittanbietern. Peripheriegeräte hinzufügenVersuchen Sie Optimierungen oder entwickeln Sie sogar spezielle Frontends (zum Beispiel, um direkt verschiedene Windows-Images oder Retro-DOS/Linux-Distributionen zu starten).
Was wurde bisher gezeigt?
Der „Lebensbeweis“ von Windows 95 mit Startvorgang in ca. 4 Minuten Es ist zwar die Hauptattraktion, aber nicht die einzige. Windows 3.1/3.2, einfaches Surfen im Internet (einschließlich info.cern.ch), Systemanwendungen und Kultsoftware wie Doom wurden ebenfalls präsentiert.
Parallel dazu gibt es ein WebAssembly-Demo Es startet Windows 3.2 im Browser – eine hervorragende Möglichkeit, Emulation ohne Löten oder Flashen zu erleben. Und für technisch versierte Nutzer bietet das Repository Konfigurationen und ein vorkompiliertes Image, um den Einstieg in die Arbeit mit dem JC3248W535 unkompliziert zu gestalten.
Vergleich mit anderen Erfahrungen auf dem ESP32

Im Vergleich zu anderen Demos wie Linux auf ESP32 „ohne Hardware“ ist der Sprung zu Windows 95 emuliert Es bringt einen besonderen Reiz mit sich: Es erzwingt die Reproduktion eines unberechenbareren Grafik- und Treiberstapels und die Auseinandersetzung mit Schnittstellenerwartungen, die es beim Konsolenstart nicht gab.
Die Erfahrung mit dem Olimex ESP32‐S3‐DevKit‐LiPo und Linux 6.3 Dies beweist, dass das ESP32-S3-Ökosystem noch Überraschungspotenzial birgt. Tiny386 erweitert diese Grenzen in den Windows-Bereich und schließt damit einen Kreis, der bisher leistungsstärkeren Einplatinencomputern wie dem Raspberry Pi vorbehalten schien.
Am Ende ist klar, dass mit etwas Einfallsreichtum ein preisgünstiges Mikrofon Es kann zu einer ziemlich überzeugenden Retro-Maschine werden, die in der Lage ist, komplette Systeme zu starten und uns eine Meisterklasse in Computerarchitektur der 90er Jahre zu bieten.
Die Geschichte von Tiny386 als Ganzes betrachtet, umfasst mehrere Errungenschaften: prägnante i386-EmulationDie wichtigsten Peripheriegeräte sind gut integriert, das BIOS ist Open Source, Portabilität wurde von Anfang an berücksichtigt, und eine Demo, die zwar langsam ist, aber das Wichtigste lehrt: dass Windows 95 und Linux auf einem ESP32-S3 mit mehr als ordentlicher Wiedergabetreue laufen können.
Und ja, es hat etwas Poetisches, dass wir, um den „Zauber“ von Windows 95 im Jahr 2025 wiederzuerleben, keinen alten Pentium mehr benutzen werden, sondern … ein 6.000-Zeilen-Emulator Und ein Entwicklerkit mit Touchscreen, das in die Hosentasche passt. Programmieren macht manchmal viel mehr Spaß, wenn Nostalgie mit Einfallsreichtum einhergeht.
Leidenschaftlicher Autor über die Welt der Bytes und der Technologie im Allgemeinen. Ich liebe es, mein Wissen durch Schreiben zu teilen, und genau das werde ich in diesem Blog tun und Ihnen die interessantesten Dinge über Gadgets, Software, Hardware, technologische Trends und mehr zeigen. Mein Ziel ist es, Ihnen dabei zu helfen, sich auf einfache und unterhaltsame Weise in der digitalen Welt zurechtzufinden.