- A Tiny386 egy i386-ot emulál ESP32-S3-on és bootol. Windows 95 videóval, hálózattal és hanggal.
- Szerény teljesítmény: csomagtartó ~4 perc; Jegyzettömb, Solitaire és IE is működik.
- C99 nyelven írt kód (~6k LOC), BSD-3 licenc; WebAssembly demó elérhető.
- Jelenlegi támogatás a JC3248W535-höz; lehetséges hordozhatóság más mikrovezérlőkkel.

Ami nemrég még fórumviccnek tűnt, az valósággá vált: Windows 95 indítása ESP32-S3-on Köszönhetően egy minimalista x86 emulátornak, a Tiny386-nak. Egy kis fejlesztői készleten, egy 3,5 hüvelykes érintőképernyővel a Microsoft rendszer elindul, néhány percet vesz igénybe, és alig fut, de megnyitja a Jegyzettömböt, játszik pasziánszot, sőt, még egy vintage weboldalt is betölt a hálózaton keresztül.
A felelős személy a fejlesztő, He Chunhui (hchunhui), aki egy i386 emulátor a nulláról C99-en és át is portolta az Espressif mikrovezérlőre. A figyelemre méltó dolog nemcsak az, hogy működik, de a GitHubon, a Hackster/Hackaday-n és szakosodott médiákon közzétett információk szerint ez valószínűleg az első alkalom, hogy valakinek sikerült Windowst betöltenie az Espressifre. hardver Az ESP32, a korábbi mérföldkövek, például a vállalat elindítása után Linux 5.0 más ESP32 alaplapokon és egy Linux 6.3-as kép az Olimex ESP32-S3-DevKit-LiPo akkumulátoron.
Mi az a Tiny386 és ki áll mögötte?
A Tiny386 lényegében... egy virtuális x86-os PC, C99-ben írva és hordozhatóra tervezveA magja egy CPU emulátor Intel Az i386 „egyszerű és buta” – a szerző saját szavaival élve –, nagyon világos céllal: a lehető legtöbb 16 és 32 bites szoftvert futtatni anélkül, hogy hatalmas bonyolultsággal terhelné azokat.
A virtuális CPU megvalósítja a 80386 utasításkészletet, és hozzáadja 486-os és 586-os utasítások ahol a modern Linux kernelek és az akkori kor Windows rendszereinek indításához szükségesek. A kernel körülbelül 6.000 sornyi kódot (LOC) tartalmaz, ami meglepő ahhoz képest, hogy mire képes, és opcionálisan tartalmazhat x87 FPU emuláció olyan szoftverekhez, amelyeknek szüksége van rá.
Mint minden fiatal projektnél, itt is vannak hiányosságok, amiket be kell tölteni. Valójában, Olyan funkciók hiányoznak, mint a hibakeresés, a hardveres feladatok végrehajtása és bizonyos jogosultságellenőrzések.Ennek ellenére az alapfeltevés igaz: a legtöbb klasszikus DOS/Windows 3.x/95 szoftverhez, sőt egy modern Linux rendszer indításához is, a jelenlegi implementáció megfelel a feladatnak.
Hogyan emuláljunk egy i386 PC-t egy ESP32-S3-on?
Az érdemének megértéséhez érdemes emlékezni arra, hogy mi is volt a 80386: a 32 bites x86 processzor hatfokozatú pipeline-nal és MMU-val integrált, a 80-as évek közepén került piacra. Ez volt a személyi számítógépek egy egész korszakának alapja, hordozható és még szervereket is, valós és védett módokkal, amelyek a szoftverek fejlődését jellemezték.
Az ellenkező oldalon a ESP32-S3 Ez egy modern, alacsony költségű mikrovezérlő két Tensilica Xtensa LX7 maggal 240 MHz-en, Wi-Fi/Bluetooth kapcsolattal és nagyon alacsony energiafogyasztással. Bár az összehasonlítás nem közvetlen (az emulációnak mindig van hátránya), ennek a SoC-nek a nyers ereje és a külső PSRAM memória támogatása erős versenyzővé teszi. Lehetővé teszik egy működő 386-os gép szimulálását alapvető grafikával, hálózattal és hanggal, mindezt magában a mikrofonban.
A trükk a pragmatikus megközelítésben rejlik: a CPU-t egyszerű módon emulálják, A lényeges utasítások hozzáadva amelyek hiányoztak a modern házakból, és a PC-s élmény többi része más projektekben már tesztelt virtuális perifériákra épül. A minimalizmus és az okos újrahasznosítás ezen keveréke teszi lehetővé, hogy a rendszer összeomlás nélkül indítsa el a Windows 95-öt.
Emulált perifériák és firmware
A PC-s ökoszisztéma kiegészítése érdekében a Tiny386 kódot kölcsönöz a következőtől: TinyEMU és QEMU hogy utánozza az 90-es évek eleji ISA gép klasszikus alkatrészeit. BIOS A VGABIOS eközben a SeaBIOS projektből származik, amely megkönnyíti a rendszerek indítását anélkül, hogy saját ROM-okra kellene támaszkodni.
A támogatott perifériák listája olyan részeket tartalmaz, amelyek nagyon ismerősek mindazok számára, akik már próbálkoztak a klasszikus PC-emulációval: megszakításvezérlők, időzítők, billentyűzet, videó, lemez, hálózat és hangRészletesen:
- A 8259-es megszakításvezérlő (PIC) és a 8254-es időzítő (PIT) elengedhetetlen a rendszer időzítéséhez.
- 8042 és billentyűzetvezérlő CMOS RTC az óra és az alapvető beállítások eléréséhez.
- VGA ISA-val Bosch VBE kompatibilis videomódok kínálásához.
- IDE lemezvezérlő a következőhöz: tárolás.
- NE2000 ISA hálózati kártya, egy széles körben elterjedt és könnyen emulálható veterán.
- DMA ISA 8257, PC hangszóró, Adlib OPL2 és Sound Blaster 16 a hangzáshoz.
Ennek a katalógusnak köszönhetően a rendszer nemcsak grafikákat jelenít meg és egy felülettel ellátott Windows környezetet indít, hanem Hálózati kapcsolattal rendelkezik és hangot tud lejátszani a illesztőprogramok alkalmas, ami meglepően teljessé teszi a "régi PC" élményt.
Referencia hardver: JC3248W535 ESP32-S3-mal
A tüntetés, amely mindenki figyelmét felkeltette, átvonul a JC3248W535 útmutatóEz egy ESP32-S3 processzorral és 3,5 hüvelykes érintőképernyős LCD kijelzővel ellátott fejlesztőkártya. Ez a fejlesztőkészlet körülbelül 25-30 dollárért megtalálható olyan oldalakon, mint az AliExpress, és amennyire láttuk, mindent tartalmaz, amire szükséged van a "90-es évekbeli zsebszámítógépes" játékokhoz.
Egy fontos részlet: úgy tűnik, hogy az alaplap USB-C portját erre tervezték programozás és finomítottnem perifériás gazdaszervezetként USB az ESP32-S3 szabványa. Ennek ellenére a chip USB OTG perifériájával el lehet képzelni egy olyan beállítást, amely egy hub USB amelyhez billentyűzetet és egeret csatlakoztathatsz, így egy mini-386-ot hozhatsz létre közvetlen vezetékes bemenettel.
Jelenleg a hivatalos projekttámogatás erre a konkrét táblára összpontosít, és a szerző jelzi, hogy Csak ESP32-S3 Natívan támogatott. Az emulátor architektúrája azonban a hordozhatóságot helyezi előtérbe: ésszerű erőfeszítéssel más mikrovezérlőkre és platformokra is portolható, megnyitva az utat több formátum és képernyő előtt.
Teljesítmény és felhasználói élmény
A kérdés, amit mindenki feltesz: hogy vagy? A rövid válasz: „Működik, türelemmel.A Windows 95 teljes rendszerindítása körülbelül 4 percet vesz igénybe a nyilvános demóban. Betöltés után a rendszer lassú, de kezelhető: megnyithatjuk a Jegyzettömböt, játszhatunk a Pasziánszszal, sőt, még az Internet Explorert is elindíthatjuk.
A hálózati kapcsolat megvalósítva van, így az emulátor képes Alapvető weboldalak betöltéseA bemutató bemutatja, hogyan nyitja meg az info.cern.ch-t, a történelem első weboldalát, amely kellemes nosztalgikus hangulatot kölcsönöz a kevesebb mint 30 euróba kerülő mikrochipen futó Windows 95 jelenetének.
Teljesítmény szempontjából érthető, hogy a rendszer a határait feszegeti: az emuláció többletterhelést jelent, és az ESP32-S3 nem rendelkezik PC-szintű grafikus gyorsítással. Ennek ellenére, az összbenyomás a „használhatóság a határon” Ez több, mint egy egyszerű „elindul és lefagy”. Ha dupla sebességgel játszod le a videót – ami népszerű tipp azok körében, akik már látták –, sokkal elviselhetőbbé válik.
Érdekesség, hogy a Tiny386 futhat VégzetA klasszikus „ha nem fut rajta a Doom, akkor nem jó” teszt. A virtualizált hangeszközöknek (PC hangszóró, Adlib OPL2 és SB16) köszönhetően az audio aspektus is a lehető legjobban le van fedve a hardveres korlátokon belül.
Támogatott operációs rendszerek és szoftverek
A katalógus, amelyet már bemutattunk egy videóban, tartalmazza A Windows 3.1 / 3.2 (a 3.1 kínai változatával) és a Windows 95-tel. Ezen túlmenően a szerző hangsúlyozza, hogy a Tiny386 „A legtöbb 16/32 bites szoftvert futtatnia kell”, és hogy a 486/586 utasítások bővítésével mind a viszonylag modern Linux kernelek, mind az akkori Windows NT rendszer indítható.
Egy nagyon érdekes részlet, hogy a Tiny386 képes rá közvetlenül indítsa el a Linux kerneltanélkül, hogy egy hagyományos BIOS-on kellene keresztülmenni, ami leegyszerűsít bizonyos tesztelési munkafolyamatokat. A hardver összeszerelése nélküli felfedezéshez a projekt azt is kínálja egy WebAssembly demó amely a böngészőben indítja a Windows 3.2-t, és alternatívákat, például a FreeDOS-t vagy a JSLinux-ot említ azok számára, akik össze szeretnék hasonlítani az emulációs élményeket a weben.
Az alkalmazások terén a már említett Doom mellett az alapvető Windows 95 programok (Notepad, Pasziánsz és Internet ExplorerEzek bizonyítottan működnek, a nyilvánvaló teljesítménybeli korlátokkal. Ez elegendő bizonyíték arra a következtetésre, hogy a grafika, a bemenet/kimenet és a hálózati verem meglehetősen jól integrált.
A bemenet és a portok kezelése
A JC3248W535 panelen a fizikai perifériák használatát a következők határozzák meg: USB-C programozáshozEnnek az akadálynak a leküzdésére a jelenlegi megvalósításban a billentyűzet és az egér átirányítás Wi-Fi-n keresztül az emulátor felé, így dedikált portok nélkül is vezérelhető a fejlesztői készletben.
Előretekintve nem lenne meglepő, ha olyan építményeket látnánk, amelyek kihasználják a ESP32-S3 USB OTG gazdagépként, és lehetővé téve egy hub létrehozását a hagyományos billentyűzetek és egerek csatlakoztatásához. Ez a ugrás nagyban megkönnyítené az interakciót anélkül, hogy érintőképernyőkre vagy távoli beviteli megoldásokra kellene támaszkodni.
Licenc-, kód- és tesztelési források
A projekt a következő címen jelent meg: 3 záradékú BSD licencEz ösztönzi az újrafelhasználását és a hordozhatóságát. A teljes forráskód elérhető a GitHub repositoryban. alapvető fordítási utasításoka konfigurációs fájlok dokumentációja, és a sietősebbek számára előre összeállított képek villogásra kész.
A műszaki dokumentáció mellett van egy demó a böngészőben (GitHub Pages), amely lehetővé teszi, hogy hardver nélkül képet kapjunk arról, hogyan indul el a Windows 3.2, és hogyan reagál a rendszer. Azok, akik mélyebbre szeretnének ásni, információkat és beszélgetéseket találhatnak olyan oldalakon, mint a Hackster.io és a Hackaday.io, valamint olyan közösségekben, mint a /r/hardver, ahol ezek a retró-technológiai mutatványok gyakran élénk beszélgetéseket generálnak.
Olyan médiaorgánumok, mint a CNX Software és a Tom's Hardware is beszámoltak a fejlesztésről, kiemelve olyan részleteket, mint a emulált perifériák listájaA SeaBIOS BIOS/VGABIOS-függősége és a JC3248W535 alaplap jelenlegi támogatottsága. Valójában a terjesztés egy része a közösség lendületének köszönhető – olyan tippeknek köszönhetően, mint a Zoobab tippje –, ami megmagyarázza, hogy a projekt milyen gyorsan ugrott a gyártók élvonalába.
Linuxról AVR-en Windows 95-re ESP32‑S3-on
Hogy a dolgokat perspektívába helyezzük, azok, akik emlékeznek a kísérletekre, Linux indítása 8 bites mikrovezérlőkön (mint az AVR) tudom, mennyi ideig tarthat. Ehhez képest egy ESP32-S3 emulációja egy 386-os lejátszóval, Windows 95-tel, "gyorsnak" és minden bizonnyal sokkal praktikusabbnak tűnik.
Korábbi eredmények is megfigyelhetők voltak az ESP32 ökoszisztémában: Linux 5.0 ESP32 alaplapokon és újabban egy Linux 6.3-as rendszerkép a Olimex ESP32‑S3‑DevKit‑LiPo akkumulátorDe a Windows érkezése ebbe a mikrokomputercsaládba fordulópontot jelent a határok feltárásában, a cél sajátossága és a klasszikus grafikus környezet futtatásának igényessége miatt.
Jelenlegi korlátok és fejlesztési lehetőségek
A „még nem” lista tartalmazza a következőket: integrált hibakeresőA hardveres feladatkezelés és bizonyos jogosultságellenőrzések, a tiszta emulációval járó elkerülhetetlen teljesítménybeli szűk keresztmetszetek mellett, szintén hátrányok. Az is hátrány, hogy jelenleg a hivatalos támogatás a következőkre korlátozódik: JC3248W535Ez korlátozza az alapfelszereltségként elérhető képernyők és tartozékok választékát.
A pozitív oldalon a Tiny386 megközelítése annyira egyszerű, hogy vannak tiszta teret az optimalizálásnakKülső memória fejlesztései (PSRAM késleltetések), CPU-emuláció finomhangolása, a grafikus vagy lemezperifériák potenciális kritikus útvonalainak kezelése, valamint az USB OTG kihasználása a valódi eszközökkel való élmény javítása érdekében. Minden apróság segít, amikor a fejlesztési ciklus költségvetése ilyen szűkös.
Megőrzés, oktatás és retró szórakozás
A „mert megtehetjük” feltételezésen túl az ehhez hasonló projektek jelentős oktatási és megőrzési értékkel is bírnak. A Tiny386-tal... fejlesztők és tanárok Képesek reprodukálni a történelmi x86-os környezeteket eredeti hardver nélkül, amely egyre ritkább és törékenyebb, és mindezt egy ultraolcsó, alacsony fogyasztású platformon teszik.
A közösség számára ez megnyitja az utat a régi szoftver tesztelése, dokumentálva a régi rendszerek viselkedését, és workshopokat szervezve, ahol kézzelfogható példákkal magyarázzák el, hogy a 386-os valós és védett módjai hogyan befolyásolták a tervezését operációs rendszerek mint például a Windows 3.x/95 és a Linux fejlődése.
Van egy kulturális aspektus is, amelyet nem szabad alábecsülni: paradox – és nagyon mulatságos –, hogy ma ahhoz, hogy „hatalmasnak érezzük magunkat”, 80-as évekbeli CPU emulálása egy modern mikrofonon, amikor a zsebünkben olyan mobiltelefonokat hordunk, amelyek ezerszer hatékonyabbak, mint az eredeti PC-k. Ez az ellentét segít megérteni, milyen messzire jutottunk, és miért olyan hatékony eszköz az emuláció.
Belső architektúra: módok, memória és BIOS
Az igazi i386 kombinált módok valódi és védett, oldalszámozás és egy MMU, amely lerakta az alapjait a virtuális memória PC-ken a Tiny386 lemásolja ennek a viselkedésnek a kritikus aspektusait, hogy az operációs rendszerek „otthonosan” érezzék magukat, a CPU-emulációt olyan perifériákkal kombinálva, amelyek ott reagálnak, ahol a szoftver a jó öreg ISA-jeleket várja.
Egy oszlop itt van SeaBIOSA használt BIOS és VGABIOS ebből a forrásból származik. Ez biztosítja a kompatibilitást a széles körben támogatott rendszerindítási rutinokkal, és elkerüli a zárt ROM-októl való függést. Ugyanakkor, ha szükséges, az emulátor megkerülheti a BIOS-t és betölti a Linux kernelt közvetlenül, ami egy nagyon hasznos rövidítés a teszteléshez.
Hordozhatóság és ökoszisztéma
Mivel C99-ben íródott, és ilyen tömör CPU maggal rendelkezik, carry Tiny386 Más platformok esetében a feladat egyszerűvé válik: egyszerűen implementálni kell az I/O réteget, és adaptálni az integrációt a kijelzővel, a bemenettel és a tárolóeszközzel. Maga a szerző a hordozhatóságot emeli ki a projekt legnagyobb erősségeként.
Ez nemcsak azoknak előnyös, akik más mikro- vagy SMBC-khez szeretnék eljuttatni, hanem harmadik felek számára is megkönnyíti a dolgukat. perifériák hozzáadása, próbálkozzon optimalizálásokkal, vagy akár speciális frontendeket is építsen (például különböző Windows-lemezképek vagy retró DOS/Linux disztribúciók közvetlen elindításához).
Amit eddig bebizonyítottak
A Windows 95 „életbizonyítéka” Indítás ~4 perc alatt Ez a fő attrakció, de nem az egyetlen. Bemutatták a Windows 3.1/3.2-t, az alapvető webböngészési lehetőségeket (beleértve az info.cern.ch-t), a rendszeralkalmazásokat és az olyan ikonikus szoftvereket is, mint a Doom.
Ezzel párhuzamosan van egy WebAssembly demó A Windows 3.2-t a böngészőben indítja, ami nagyszerű módja annak, hogy forrasztás vagy flashelés nélkül élvezhessük az emulációt. A tech-hozzáértőbbek számára a tárhely konfigurációkat és egy előre lefordított rendszerképet kínál, hogy minimális gonddal elkezdhessük a JC3248W535 használatát.
Összehasonlítás más ESP32-vel kapcsolatos tapasztalatokkal

Más demókhoz, mint például a Linux ESP32-n "hardver nélkül", az ugrás a következőre: Windows 95 emuláció Különleges érdekességet ad hozzá: egy szeszélyesebb grafikai és illesztőprogram-verem reprodukcióját kényszeríti ki, és olyan interfész-elvárásokkal foglalkozik, amelyek egy konzolos rendszerindításkor nem léteztek.
A tapasztalat a Olimex ESP32‑S3‑DevKit‑LiPo és Linux 6.3 Ez azt mutatja, hogy az ESP32-S3 ökoszisztéma meglepetéseket okozhat. A Tiny386 ezt a határt a Windows területére is kitolja, lezárva egy olyan kört, amely látszólag a Raspberry Pi-hez hasonló erősebb SBC-k számára volt fenntartva.
Végső soron az világos, hogy némi találékonysággal egy olcsó mikrofon Elég meggyőző retró géppé válhat belőle, amely képes komplett rendszereket elindítani, és mesterkurzust nyújt a 90-es évek számítógép-architektúrájában.
Összességében a Tiny386 története számos eredményt foglal magában: tömör i386 emulációA főbb perifériák jól integráltak, a BIOS nyílt forráskódú, a hordozhatóságot az első naptól kezdve tervezték, és egy demó, amely bár lassú, megtanítja a lényeget: hogy a Windows 95 és a Linux több mint tisztességes minőségben futhat egy ESP32-S3-on.
És igen, van benne egyfajta költői érzés, hogy a Windows 95 "varázslatának" újraéléséhez 2025-ben nem egy régi Pentiumot fogunk a kezembe venni, hanem egy... egy 6.000 soros emulátor És egy zsebben elférő érintőképernyős fejlesztőkészlet. A számítástechnika néha sokkal szórakoztatóbb, ha a nosztalgia találékonysággal keveredik.
Szenvedélyes író a bájtok és általában a technológia világáról. Szeretem megosztani tudásomat írásban, és ezt fogom tenni ebben a blogban, megmutatom a legérdekesebb dolgokat a kütyükről, szoftverekről, hardverekről, technológiai trendekről stb. Célom, hogy egyszerű és szórakoztató módon segítsek eligazodni a digitális világban.