Näin Windows 95 toimii ESP32-S3:lla Tiny386:n ansiosta

Viimeisin päivitys: 17/11/2025
Kirjoittaja: Isaac
  • Tiny386 emuloi i386:ta ESP32-S3:lla ja käynnistyy Windows 95 videolla, verkolla ja äänellä.
  • Vaatimaton suoritus: tavaratila ~4 minuuttia; Muistio, Solitaire ja IE toimivat.
  • Koodia C99-kielellä (~6k LOC), BSD-3-lisenssi; WebAssembly-demo saatavilla.
  • Nykyinen tuki JC3248W535:lle; mahdollinen siirrettävyys muihin mikrokontrollereihin.

Windows 95 ESP32-S3:ssa

Se, mikä vielä hetki sitten tuntui foorumivitsiltä, ​​on muuttunut todeksi: Windows 95 käynnistyy ESP32-S3:lla Minimalistisen x86-emulaattorin nimeltä Tiny386 ansiosta. Pienessä 3,5-tuumaisella kosketusnäytöllä varustetussa kehityspaketissa Microsoftin järjestelmä käynnistyy muutaman minuutin kuluttua ja toimii tuskin lainkaan, mutta avaa Muistio-ohjelman, pelaa pasianssia ja lataa jopa vintage-verkkosivuston verkon kautta.

Vastuullinen henkilö on rakennuttaja He Chunhui (hchunhui), joka on rakentanut i386-emulaattori tyhjästä C99:llä ja on portannut sen Espressif-mikrokontrollerille. Merkittävää ei ole vain se, että se toimii, vaan GitHubissa, Hackster/Hackadayssa ja erikoistuneissa medioissa julkaistujen tietojen mukaan tämä on luultavasti ensimmäinen kerta, kun joku on onnistunut lataamaan Windowsin Espressifiin. laitteisto ESP32, aiempien virstanpylväiden, kuten yrityksen perustamisen, jälkeen Linux 5.0 muilla ESP32-levyillä ja Linux 6.3 -levykuva Olimex ESP32-S3-DevKit-LiPo -akulla.

Mikä on Tiny386 ja kuka sen takana on?

Tiny386 on pohjimmiltaan virtuaalinen x86-tietokone, joka on kirjoitettu C99:llä ja suunniteltu kannettavaksiSen ydin on CPU-emulaattori Intel i386 on kirjoittajan omin sanoin ”yksinkertainen ja tyhmä” – ja sillä on hyvin selkeä tavoite: ajaa mahdollisimman paljon 16- ja 32-bittisiä ohjelmistoja ilman, että ne kuormittavat sitä valtavalla monimutkaisuudella.

Virtuaalinen CPU toteuttaa 80386-käskykannan ja lisää 486- ja 586-ohjeet ...joissa niitä tarvitaan nykyaikaisten Linux-ytimien ja tuon aikakauden Windows-järjestelmien käynnistämiseen. Ydin on noin 6 000 riviä koodia (LOC), mikä on yllättävää ottaen huomioon, mitä se pystyy käsittelemään, ja valinnaisesti sisältää x87 FPU-emulointi ohjelmistoille, jotka sitä tarvitsevat.

Kuten missä tahansa nuoressa projektissa, on myös aukkoja täytettävänä. Itse asiassa, Ominaisuudet, kuten virheenkorjaus, laitteistotehtävien suorittaminen ja tietyt käyttöoikeustarkistukset, puuttuvat.Silti lähtökohta pitää paikkansa: useimmille klassisille DOS/Windows 3.x/95 -ohjelmistoille ja jopa nykyaikaisen Linux-järjestelmän käynnistämiseen nykyinen toteutus on tehtävänsä tasalla.

Kuinka emuloida i386-tietokonetta ESP32-S3:lla

Ansioiden ymmärtämiseksi on syytä muistaa, mitä 80386 oli: a 32-bittinen x86-prosessori, jossa on kuusivaiheinen liukuhihna ja MMU integroitu, lanseerattiin 80-luvun puolivälissä. Se oli perusta koko henkilökohtaisten tietokoneiden aikakaudelle, kannettava ja jopa palvelimia, joissa oli sekä reaaliaikaisia ​​että suojattuja tiloja, jotka merkitsivät ohjelmistojen kehitystä.

Vastakkaisella puolella ESP32-S3 Se on nykyaikainen ja edullinen mikrokontrolleri, jossa on kaksi Tensilica Xtensa LX7 -ydintä 240 MHz:n kellotaajuudella, Wi-Fi/Bluetooth-yhteys ja erittäin alhainen virrankulutus. Vaikka vertailu ei olekaan suora (emulointi on aina epäedullinen), tämän SoC:n raaka teho ja ulkoisen PSRAM-muistin tuki tekevät siitä vahvan kilpailijan. Niiden avulla voit simuloida toimivaa 386-konetta perusgrafiikalla, verkolla ja äänellä, kaikki itse mikrofonissa.

Temppu piilee pragmaattisessa lähestymistavassa: suoritinta emuloidaan yksinkertaisella tavalla, Olennaiset ohjeet on lisätty jotka puuttuivat nykyaikaisista koteloista, ja loput PC-kokemuksesta rakennetaan virtuaalisten oheislaitteiden päälle, joita on jo testattu muissa projekteissa. Tämä minimalismin ja älykkään kierrätyksen yhdistelmä mahdollistaa sen, että järjestelmä voi käynnistää Windows 95:n kaatumatta.

Emuloidut oheislaitteet ja laiteohjelmistot

Täydentääkseen PC-ekosysteemiä Tiny386 lainaa koodia TinyEMU ja QEMU jäljittelemään 90-luvun alun ISA-koneen klassisia komponentteja. BIOS VGABIOS puolestaan ​​tulee SeaBIOS-projektista, joka helpottaa järjestelmien käynnistämistä ilman, että tarvitaan omia ROM-levyjä.

Tuettujen oheislaitteiden luettelo sisältää osia, jotka ovat hyvin tuttuja kaikille, jotka ovat kokeilleet klassista PC-emulointia: keskeytysohjaimet, ajastimet, näppäimistö, video, levy, verkko ja ääniYksityiskohtaisesti:

  • Keskeytysohjain 8259 (PIC) ja ajastin 8254 (PIT), välttämättömät järjestelmän ajoitukselle.
  • 8042 ja näppäimistöohjain CMOS-reaaliaikamittari kelloa ja perusasetuksia varten.
  • VGA ISA ja Bosch VBE tarjotakseen yhteensopivia videotiloja.
  • IDE-levyohjain varastointi.
  • NE2000 ISA -verkkokortti, veteraani, joka on laajalle levinnyt ja helppo jäljitellä.
  • DMA ISA 8257, PC-kaiutin, Adlib OPL2 ja Sound Blaster 16 äänelle.
  QNAP NASin asentaminen askel askeleelta ja turvallisesti

Tämän luettelon ansiosta järjestelmä ei ainoastaan ​​näytä grafiikkaa ja käynnistä Windows-ympäristöä käyttöliittymällä, vaan myös Siinä on verkkoyhteys ja voi toistaa ääntä kuljettajat sopiva, mikä täydentää "vanhan PC:n" kokemuksen yllättävän täydellisellä tavalla.

Referenssilaitteisto: JC3248W535 ja ESP32-S3

Mielenosoitus, joka on herättänyt kaikkien huomion, kulkee yli Ohje JC3248W535Se on kehityslevy, jossa on ESP32-S3 ja 3,5 tuuman kosketusnäyttö. Tätä kehityspakettia voi löytää noin 25–30 dollarilla esimerkiksi AliExpressin kaltaisilta sivustoilta, ja näkemiemme perusteella se sisältää kaiken tarvittavan "90-luvun taskutietokonepelien" pelaamiseen.

Yksi tärkeä yksityiskohta: tämän emolevyn USB-C-portti näyttää olevan suunniteltu ohjelmointi ja hienostunutei perifeerisenä isäntänä USB ESP32-S3:n standardi. Silti sirun USB OTG -oheislaitteella voisi kuvitella kokoonpanon, jossa on keskittimen USB johon voit liittää näppäimistön ja hiiren, luoden mini-386:n suoralla langallisella tulolla.

Tällä hetkellä virallinen projektituki keskittyy tähän tiettyyn lautaan, ja kirjoittaja toteaa, että Vain ESP32-S3 Sitä tuetaan natiivisti. Emulaattorin arkkitehtuuri kuitenkin priorisoi siirrettävyyttä: kohtuullisella vaivalla se voitaisiin siirtää muille mikrokontrollereille ja alustoille, mikä avaisi oven useampiin formaatteihin ja näyttöihin.

Suorituskyky ja käyttäjäkokemus

Kysymys, jota kaikki kysyvät: miten menee? Lyhyt vastaus on "Se toimii, kärsivällisyydellä.Windows 95:n täydellinen käynnistys kestää noin neljä minuuttia julkisessa demoversiossa. Latauksen jälkeen järjestelmä on hidas mutta hallittavissa: sillä voi avata Muistio-ominaisuuden, pelata pasianssia ja jopa käynnistää Internet Explorerin.

Verkkoyhteys on toteutettu, joten emulaattori voi Lataa perusverkkosivustotDemonstraatio näyttää, kuinka se avaa info.cern.ch-sivuston, historian ensimmäisen verkkosivuston, joka lisää ihastuttavan nostalgian sävyn alle 30 euroa maksavalla mikrosirulla toimivan Windows 95:n kuvaan.

Suorituskyvyn kannalta on ymmärrettävää, että järjestelmä on venytetty äärirajoilleen: emulointi lisää työmäärää, eikä ESP32-S3:lta löydy PC-tason grafiikkakiihdytystä. Tästä huolimatta yleinen vaikutelma on ”käytettävyys reunalla” Se on enemmän kuin vain yksinkertainen "se käynnistyy ja jumiutuu". Jos toistat videon kaksinkertaisella nopeudella – suosittu vinkki niiden keskuudessa, jotka ovat jo nähneet sen – siitä tulee paljon siedettävämpi.

Hauskana faktana Tiny386 voi toimia TuomioSe klassinen "jos se ei aja Doomia, se ei ole hyvä" -testi. Ja virtualisoitujen äänilaitteiden (PC-kaiutin, Adlib OPL2 ja SB16) ansiosta myös ääniaspekti on katettu niin hyvin kuin mahdollista laitteiston rajoitusten puitteissa.

Tuetut käyttöjärjestelmät ja ohjelmistot

Luettelo, joka on jo näytetty videolla, sisältää Windows 3.1 / 3.2 (kiinalaisella versiolla 3.1) ja Windows 95:llä. Tämän lisäksi kirjoittaja korostaa, että Tiny386 ”Sen pitäisi toimia useimmissa 16/32-bittisissä ohjelmissa”, ja että 486/586-käskyjen laajennuksen myötä on mahdollista käynnistää sekä suhteellisen moderneja Linux-ytimiä että tuolloin käytössä olevia Windows NT:tä.

Yksi erittäin mielenkiintoinen yksityiskohta on, että Tiny386 pystyy käynnistä Linux-ydin suoraanilman perinteistä BIOSia, mikä yksinkertaistaa joitakin testaustyönkulkuja. Projekti tarjoaa myös mahdollisuuden tutkia laitteistoa kokoamatta demo WebAssemblyssa joka käynnistää Windows 3.2:n selaimessa ja mainitsee vaihtoehtoja, kuten FreeDOSin tai JSLinuxin, niille, jotka haluavat vertailla emulointikokemuksia verkossa.

Sovellusten osalta edellä mainitun Doomin lisäksi Windows 95:n perusohjelmat (Notepad, Pasianssi ja Internet ExplorerNäiden on osoitettu toimivan, ilmeisillä suorituskykyrajoituksilla. Tämä on riittävä todiste siitä, että grafiikka-, tulo-/lähtö- ja verkkopino on kohtuullisen hyvin integroitu.

  Avaa useita verkkosivustoja yhdellä napsautuksella Windowsin Muistiossa

Tulon ja porttien käsittely

JC3248W535-piirilevyllä fyysisten oheislaitteiden käyttö riippuu USB-C-ohjelmointiin suuntautunutTämän esteen voittamiseksi nykyisessä toteutuksessa näppäimistö ja hiiri voidaan uudelleenohjaus Wi-Fin kautta emulaattoria kohti, mikä tarjoaa hallinnan ilman erillisiä portteja kehityspaketissa.

Tulevaisuudessa ei olisi yllättävää nähdä rakennelmia, jotka hyödyntävät ESP32-S3 USB OTG isäntänä ja mahdollistaen keskittimen luomisen perinteisten näppäimistöjen ja hiirien kytkemistä varten. Tämä harppaus helpottaisi huomattavasti vuorovaikutusta ilman kosketusnäyttöjä tai etäsyöttöratkaisuja.

Lisenssi-, koodi- ja testausresurssit

Projekti on julkaistu nimellä 3 lausekkeen BSD -lisenssiTämä kannustaa sen uudelleenkäyttöön ja siirrettävyyteen. Koko lähdekoodi on saatavilla GitHub-arkistossa. peruskääntämisohjeetkonfiguraatiotiedostojen dokumentaatio ja kiireisille valmiiksi käännetyt kuvat valmis vilkkumaan.

Teknisen dokumentaation lisäksi on olemassa demo selaimessa (GitHub Pages), jonka avulla saat käsityksen Windows 3.2:n käynnistymisestä ja järjestelmän reagoinnista ilman laitteistoa. Ne, jotka haluavat perehtyä aiheeseen syvällisemmin, voivat löytää tietoa ja keskusteluja myös sivustoilta, kuten Hackster.io ja Hackaday.io, sekä yhteisöistä, kuten /r/laitteisto, jossa nämä retroteknologiset saavutukset usein synnyttävät vilkkaita keskusteluja.

Mediat, kuten CNX Software ja Tom's Hardware, ovat uutisoineet kehityksestä ja korostaneet yksityiskohtia, kuten emuloitujen oheislaitteiden luetteloSeaBIOSin riippuvuus BIOSista/VGABIOSista ja JC3248W535-kortin nykyinen tuki. Itse asiassa osa levityksestä on tullut yhteisön aloitteesta – kiitos vinkkien, kuten Zoobabin – mikä selittää projektin nopeuden, jolla se on noussut tekijäkentän eturintamaan.

Linuxista AVR:ssä Windows 95:een ESP32‑S3:ssa

Jotta asiat saataisiin perspektiiviin, ne jotka muistavat yritykset Linuxin käynnistäminen 8-bittisillä mikrokontrollereilla (kuten AVR) tietävät kuinka kauan se voi kestää. Siihen verrattuna ESP32-S3:n näkeminen emuloivan 386:ta Windows 95:ssä tuntuu "nopealta" ja varmasti paljon käytännöllisemmältä.

ESP32-ekosysteemissä on nähty myös aiempia saavutuksia: Linux 5.0 ESP32-levyillä ja viime aikoina Linux 6.3 -levykuva Olimex ESP32‑S3‑DevKit‑LiPoMutta Windowsin saapuminen tähän mikrotietokoneperheeseen merkitsee käännekohtaa rajojen tutkimisessa, johtuen tavoitteen erikoisuudesta ja siitä, kuinka vaativaa klassisen graafisen ympäristön ajaminen on.

Nykyiset rajoitukset ja parannusmahdollisuudet

"Ei vielä" -lista sisältää mm. integroitu virheenkorjausLaitteiston tehtävien hallinta ja tietyt käyttöoikeustarkistukset sekä pelkkään emulointiin liittyvät väistämättömät suorituskykyyn liittyvät pullonkaulat ovat myös haittoja. Haittapuolena on myös se, että tällä hetkellä virallinen tuki rajoittuu... JC3248W535Tämä rajoittaa vakiona saatavilla olevien näyttöjen ja lisävarusteiden valikoimaa.

Positiivista on, että Tiny386:n lähestymistapa on niin suoraviivainen, että on olemassa selkeää tilaa optimoinnilleUlkoisen muistin parannuksia (PSRAM-latenssit), suorittimen emuloinnin hienosäätöä, mahdollisten kriittisten polkujen käsittelyä grafiikassa tai levyoheislaitteissa ja USB OTG:n hyödyntämistä oikeiden laitteiden käyttökokemuksen parantamiseksi. Jokainen pieni apu auttaa, kun kehityssyklin budjetti on niin tiukka.

Säilytystä, koulutusta ja retrohauskaa

"Koska me voimme" -lähtökohdan lisäksi tällaisilla projekteilla on merkittävää koulutuksellista ja säilyttämiseen liittyvää arvoa. Tiny386:n avulla kehittäjät ja opettajat Ne voivat toistaa historiallisia x86-ympäristöjä ilman alkuperäistä laitteistoa, joka on yhä harvinaisempaa ja hauraampaa, ja tehdä sen erittäin halvalla ja vähän virtaa kuluttavalla alustalla.

Yhteisölle se avaa oven testaa vanhaa ohjelmistoa, dokumentoimalla vanhojen järjestelmien toimintaa ja järjestämällä työpajoja, joissa selitetään konkreettisten esimerkkien avulla, miten 386:n todelliset ja suojatut tilat vaikuttivat järjestelmien suunnitteluun käyttöjärjestelmät kuten Windows 3.x/95 ja Linuxin kehitys.

On myös kulttuurinen näkökulma, jota ei pidä aliarvioida: on paradoksaalista – ja hyvin huvittavaa – että "tunteaksemme olomme voimakkaiksi" meidän on nykyään jäljittele 80-luvun prosessoria nykyaikaisella mikrofonilla, kun kannamme taskuissamme matkapuhelimia, jotka ovat tuhansia kertoja tehokkaampia kuin alkuperäiset tietokoneet. Tämä kontrasti auttaa ymmärtämään, kuinka pitkälle olemme tulleet ja miksi emulointi on niin tehokas työkalu.

  Mitä tehdä, jos ulkoinen kiintolevy näkyy Windowsissa alustamattomana

Sisäinen arkkitehtuuri: tilat, muisti ja BIOS

Todelliset i386-yhdistetyt tilat aito ja suojattu, sivutus ja MMU, joka loi perustan virtuaalimuisti PC-tietokoneilla Tiny386 kopioi kyseisen toiminnan kriittiset osa-alueet, jotta käyttöjärjestelmät tuntuvat "kotona", yhdistämällä suorittimen emuloinnin oheislaitteisiin, jotka reagoivat sinne, missä ohjelmisto odottaa vanhoja kunnon ISA-signaaleja.

Tässä on pylväs SeaBIOSKäytetyt BIOS ja VGABIOS ovat tästä lähteestä. Tämä varmistaa yhteensopivuuden laajalti tuettujen käynnistysrutiinien kanssa ja välttää suljettujen ROM-levyjen käytön. Samalla emulaattori voi tarvittaessa ohittaa BIOSin ja lataa Linux-ydin suoraan, erittäin hyödyllinen oikotie testaukseen.

Siirrettävyys ja ekosysteemi

Koska se on kirjoitettu C99:llä ja siinä on niin ytimekäs suorittimen ydin, kantaa Tiny386 Muilla alustoilla tehtävä on suoraviivainen: I/O-kerros on vain toteutettava ja integroitava näyttöön, tuloon ja tallennustilaan. Kirjoittaja itse korostaa siirrettävyyttä projektin suurimpana vahvuutena.

Tämä ei hyödytä ainoastaan ​​niitä, jotka haluavat viedä sen muihin mikro- tai säästöpankkiyrityksiin, vaan se myös helpottaa kolmansien osapuolten toimintaa. lisää oheislaitteita, kokeile optimointeja tai jopa luo erityisiä käyttöliittymiä (esimerkiksi käynnistääksesi suoraan erilaisia ​​Windows-levykuvia tai retro-DOS/Linux-jakeluja).

Mitä on tähän mennessä osoitettu

Windows 95:n "todiste elämästä" Käynnistys ~4 minuutissa Se on ohjelman päänähtävyys, mutta ei ainoa. Esittelyssä olivat myös Windows 3.1/3.2, peruskäyttöjärjestelmät verkossa (mukaan lukien info.cern.ch), järjestelmäsovellukset ja ikoniset ohjelmistot, kuten Doom.

Samanaikaisesti on olemassa WebAssembly-demo Se käynnistää Windows 3.2:n selaimessa, mikä on loistava tapa kokea emulointi ilman juottamista tai flashaamista. Ja tekniikkaa taitavammille repositorio tarjoaa kokoonpanoja ja esikäännetyn näköistiedoston, jotta pääset alkuun JC3248W535:n kanssa minimaalisella vaivalla.

Vertailu muihin ESP32-kokemuksiin

aikatauluta tehtäviä Linuxissa cronilla ja osoitteessa

Verrattuna muihin demoihin, kuten Linux ESP32:een "ilman laitteistoa", harppaus Windows 95 emuloitu Se lisää erityisen mielenkiintoisen ominaisuuden: se pakottaa toistamaan oikukkaamman grafiikka- ja ajuripinon ja käsittelemään käyttöliittymäodotuksia, joita ei ollut olemassa konsolin käynnistyksessä.

Kokemus tuotteen kanssa Olimex ESP32‑S3‑DevKit‑LiPo ja Linux 6.3 Se osoittaa, että ESP32-S3-ekosysteemillä on tilaa yllättää. Tiny386 vie tätä rajaa Windowsin alueelle ja sulkee ympyrän, joka näytti olevan varattu tehokkaammille SBC-järjestelmille, kuten Raspberry Pille.

Loppujen lopuksi selvää on, että pienellä kekseliäisyydellä edullinen mikrofoni Siitä voi tulla melko vakuuttava retrokone, joka pystyy käynnistämään kokonaisia ​​järjestelmiä ja antamaan meille mestarikurssin 90-luvun tietokonearkkitehtuurissa.

Kokonaisuutena tarkasteltuna Tiny386:n tarina kiteyttää useita saavutuksia: ytimekäs i386-emulointiTärkeimmät oheislaitteet on integroitu hyvin, BIOS on avoimen lähdekoodin, kannettavuus on suunniteltu alusta alkaen ja demo, joka, vaikkakin hidas, opettaa tärkeimmät asiat: että Windows 95 ja Linux toimivat ESP32-S3:lla enemmän kuin kohtuullisella tarkkuudella.

Ja kyllä, siinä on tiettyä runollista sävyä, että elääksemme uudelleen Windows 95:n "taikaa" vuonna 2025 emme koske vanhaan Pentiumiin, vaan käytämme... 6 000-rivinen emulaattori Ja taskuun mahtuva kosketusnäytöllinen kehityspaketti. Tietokoneiden käyttö on joskus paljon hauskempaa, kun nostalgiaa sekoitetaan kekseliäisyyteen.

Arduino CLI -opetusohjelma
Aiheeseen liittyvä artikkeli:
Täydellinen Arduino CLI -opetusohjelma: Asennus, käyttö ja vinkit