Lūk, kā Windows 95 darbojas uz ESP32-S3, pateicoties Tiny386

Pēdējā atjaunošana: 17/11/2025
Autors: Isaac
  • Tiny386 emulē i386 uz ESP32-S3 un palaiž Windows 95 ar video, tīklu un skaņu.
  • Pieticīgs sniegums: zābaks ~4 minūtes; darbojas Notepad, Solitaire un IE.
  • Kods C99 valodā (~6 000 LOC), BSD-3 licence; pieejama WebAssembly demonstrācija.
  • Pašreizējais atbalsts JC3248W535; iespējama pārnesamība uz citiem mikrokontrolleriem.

Windows 95 operētājsistēmā ESP32-S3

Kas vēl nesen šķita kā foruma joks, ir kļuvis par realitāti: Windows 95 palaišana ESP32-S3 diskdzinī Pateicoties minimālistiskam x86 emulatoram ar nosaukumu Tiny386. Uz neliela izstrādes komplekta ar 3,5 collu skārienekrānu Microsoft sistēma startējas, aizņem dažas minūtes un darbojas tik tikko, bet atver Notepad, spēlē Solitaire un pat ielādē vintage vietni tīklā.

Atbildīgā persona ir attīstītājs He Čunhui (hchunhui), kurš ir uzbūvējis i386 emulators no nulles uz C99 un ir to pārnesis uz Espressif mikrokontrolleri. Ievērības cienīgi ir ne tikai tas, ka tas darbojas, bet, saskaņā ar informāciju, kas publicēta GitHub, Hackster/Hackaday un specializētos plašsaziņas līdzekļos, šī, iespējams, ir pirmā reize, kad kādam ir izdevies ielādēt Windows operētājsistēmu Espressif. detaļas ESP32 pēc iepriekšējiem sasniegumiem, piemēram, uzņēmuma darbības uzsākšanas Linux 5.0 uz citām ESP32 platēm un Linux 6.3 attēls uz Olimex ESP32-S3-DevKit-LiPo.

Kas ir Tiny386 un kas aiz tā stāv?

Tiny386 būtībā ir virtuāls x86 dators, kas rakstīts C99 valodā un paredzēts pārnēsāšanaiTās kodols ir CPU emulators Intel i386 “vienkāršs un muļķīgs” — autora paša vārdiem sakot — ar ļoti skaidru mērķi: palaist pēc iespējas vairāk 16 un 32 bitu programmatūras, neapgrūtinot to ar milzīgu sarežģītību.

Virtuālais centrālais procesors ievieš 80386 instrukciju kopu un pievieno 486. un 586. instrukcijas kur tie ir nepieciešami, lai palaistu mūsdienu Linux kodolus un tā laika Windows sistēmas. Kodols ir aptuveni 6.000 koda rindiņu (LOC), kas ir pārsteidzoši, ņemot vērā to, ko tas spēj apstrādāt, un pēc izvēles ietver x87 FPU emulācija programmatūrai, kurai tas ir nepieciešams.

Tāpat kā jebkurā jaunā projektā, ir jāaizpilda nepilnības. Patiesībā, Trūkst tādu funkciju kā atkļūdošana, aparatūras uzdevumu veikšana un noteiktas atļauju pārbaudes.Pat ja tā, pieņēmums ir patiess: lielākajai daļai klasiskās DOS/Windows 3.x/95 programmatūras un pat modernas Linux sistēmas palaišanai pašreizējā ieviešana ir piemērota.

Kā emulēt i386 datoru uz ESP32-S3

Lai novērtētu tā vērtību, ir vērts atcerēties, kas bija 80386: a 32 bitu x86 procesors ar sešpakāpju cauruļvadu un MMU integrēts, laists klajā 80. gadu vidū. Tas bija pamats veselai personālo datoru ērai, pārnēsājamas un pat serverus ar reāliem un aizsargātiem režīmiem, kas iezīmēja programmatūras attīstību.

Pretējā pusē, ESP32-S3 Tas ir mūsdienīgs, lēts mikrokontrolleris ar diviem Tensilica Xtensa LX7 kodoliem ar 240 MHz frekvenci, Wi-Fi/Bluetooth savienojumu un ļoti zemu enerģijas patēriņu. Lai gan salīdzinājums nav tiešs (emulācijai vienmēr ir trūkumi), šī SoC jauda un ārējās PSRAM atmiņas atbalsts padara to par spēcīgu konkurentu. Tie ļauj simulēt funkcionējošu 386 mašīnu ar pamata grafiku, tīklu un skaņu, visu mikrofonā.

Knifs slēpjas pragmatiskā pieejā: centrālais procesors tiek emulēts vienkāršā veidā, Svarīgākie norādījumi ir pievienoti kas mūsdienu korpusos trūka, un pārējā datora pieredze ir veidota uz virtuālām perifērijas ierīcēm, kas jau ir pārbaudītas citos projektos. Šis minimālisma un pārdomātas pārstrādes apvienojums ļauj sistēmai startēt Windows 95 bez avārijas.

Emulētas perifērijas ierīces un programmaparatūra

Lai pabeigtu datoru ekosistēmu, Tiny386 aizņemas kodu no TinyEMU un QEMU lai atdarinātu 90. gs. deviņdesmito gadu sākuma ISA iekārtas klasiskās sastāvdaļas. BIOS Tikmēr VGABIOS nāk no SeaBIOS projekta, kas atvieglo sistēmu palaišanu, nepaļaujoties uz patentētām ROM atmiņām.

Atbalstīto perifērijas ierīču sarakstā ir iekļautas daļas, kas ir ļoti pazīstamas ikvienam, kurš ir eksperimentējis ar klasisko datora emulāciju: pārtraukumu kontrolieri, taimeri, tastatūra, video, disks, tīkls un audioDetalizēti:

  • Pārtraukuma kontrolieris 8259 (PIC) un taimeris 8254 (PIT), kas ir būtiski sistēmas laika noteikšanai.
  • 8042 un tastatūras kontrolieris CMOS RTC pulkstenim un pamata iestatījumiem.
  • VGA ISA ar Bosch VBE lai piedāvātu saderīgus video režīmus.
  • IDE disku kontrolieris glabāšana.
  • NE2000 ISA tīkla karte — plaši izplatīts un viegli atdarināms veterāns.
  • DMA ISA 8257, datora skaļrunis, Adlib OPL2 un Sound Blaster 16 audio atskaņošanai.
  Mikrofona atbalss vai robota skaņa: cēloņi un pārbaudīti risinājumi

Pateicoties šim katalogam, sistēma ne tikai attēlo grafiku un palaiž Windows vidi ar saskarni, bet arī Tam ir tīkla savienojums un var atskaņot skaņu ar vadītājiem piemērots, kas pārsteidzoši pilnīgā veidā papildina "vecā datora" pieredzi.

Atsauces aparatūra: JC3248W535 ar ESP32-S3

Demonstrācija, kas piesaistījusi visu uzmanību, norisinās pāri Vadlīnija JC3248W535Tā ir izstrādes plate ar ESP32-S3 procesoru un 3,5 collu skārienekrānu LCD displeju. Šo izstrādes komplektu var atrast par aptuveni 25–30 ASV dolāriem tādās vietnēs kā AliExpress, un no tā, ko esam redzējuši, tajā ir viss nepieciešamais, lai spēlētu "90. gadu kabatas datoru" spēles.

Viena svarīga detaļa: šķiet, ka šīs mātesplates USB-C ports ir paredzēts programmēšana un rafinētsnevis kā perifēra saimniekorganisma USB ESP32-S3 standarts. Pat ja tā, ar mikroshēmas USB OTG perifērijas ierīci varētu iedomāties iestatījumu ar mezgls USB kuram var pievienot tastatūru un peli, izveidojot mini-386 ar tiešu vadu ieeju.

Pašlaik oficiālais projekta atbalsts ir vērsts uz šo konkrēto plati, un autors norāda, ka Tikai ESP32-S3 Tas ir iebūvēti atbalstīts. Tomēr emulatora arhitektūra prioritāri piešķir pārnesamību: ar saprātīgām pūlēm to varētu pārnest uz citiem mikrokontrolleriem un platformām, paverot durvis uz vairākiem formātiem un ekrāniem.

Veiktspēja un lietotāja pieredze

Jautājums, ko visi uzdod: kā tev iet? Īsā atbilde ir “Tas darbojas, ar pacietību.Pilnīga Windows 95 palaišana publiskajā demonstrācijas versijā aizņem aptuveni 4 minūtes. Pēc ielādes sistēma ir lēna, bet viegli pārvaldāma: var atvērt Notepad, spēlēt Solitaire un pat palaist Internet Explorer.

Ir ieviests tīkla savienojums, lai emulators varētu Ielādēt pamata tīmekļa vietnesDemonstrācijā parādīts, kā tiek atvērta vietne info.cern.ch — pirmā vēsturē pieejamā vietne, kas piešķir patīkamu nostalģijas pieskārienu ainai, kurā Windows 95 darbojas uz mikroshēmas, kas maksā mazāk nekā 30 eiro.

Runājot par veiktspēju, ir saprotams, ka sistēma ir pārslogota līdz robežai: emulācija palielina slodzi, un ESP32-S3 trūkst datora līmeņa grafikas paātrinājuma. Neskatoties uz to, kopējā sajūta ir “lietojamība uz robežas” Tas ir vairāk nekā tikai vienkārša "tas ieslēdzas un sastingst". Ja video atskaņojat dubultā ātrumā — populārs padoms to vidū, kas to jau ir redzējuši —, tas kļūst daudz panesamāks.

Kā interesants fakts, Tiny386 var darboties LiktenisKlasiskais tests "ja tas nedarbojas ar Doom, tas nav labs". Pateicoties virtualizētām skaņas ierīcēm (datora skaļrunim, Adlib OPL2 un SB16), audio aspekts ir maksimāli aptverts aparatūras ierobežojumu robežās.

Atbalstītās operētājsistēmas un programmatūra

Katalogā, kas jau ir parādīts video, ir iekļauts Windows 3.1 / 3.2 (ar ķīniešu valodas 3.1 variantu) un Windows 95. Turklāt autors uzsver, ka Tiny386 “Tam vajadzētu darboties lielākajai daļai 16/32 bitu programmatūras”, un ka, paplašinot 486/586 instrukcijas, ir iespējams ielādēt gan relatīvi modernus Linux kodolus, gan tā laika Windows NT.

Viena ļoti interesanta detaļa ir tā, ka Tiny386 spēj tieši palaidiet Linux kodoluneizmantojot tradicionālo BIOS, kas vienkāršo dažas testēšanas darbplūsmas. Lai izpētītu, nesaliekot aparatūru, projekts piedāvā arī demonstrācija WebAssembly valodā kas pārlūkprogrammā palaiž Windows 3.2 un tiem, kas vēlas salīdzināt emulācijas pieredzi tīmeklī, piemin alternatīvas, piemēram, FreeDOS vai JSLinux.

Lietojumprogrammu jomā papildus iepriekšminētajam Doom ir arī Windows 95 pamatprogrammas (Notepad, Solitaire un Internet ExplorerTie ir pierādījuši savu darbību, lai gan ir acīmredzami veiktspējas ierobežojumi. Tas ir pietiekams pierādījums, lai secinātu, ka grafika, ievades/izvades un tīkla steks ir samērā labi integrēts.

  Viss par pagaidu failiem sistēmā Windows: kas tie ir, kam tie paredzēti un kā tos pareizi dzēst.

Kā tiek apstrādāta ievade un porti

JC3248W535 plates fizisko perifērijas ierīču izmantošanu nosaka USB-C programmēšanas orientētsLai pārvarētu šo šķērsli, pašreizējā ieviešanā tastatūru un peli var pāradresācija, izmantojot Wi-Fi emulatora virzienā, piedāvājot kontroli bez nepieciešamības pēc īpašiem portiem izstrādes komplektā.

Raugoties nākotnē, nebūtu pārsteigums redzēt būves, kas izmanto priekšrocības, ko sniedz ESP32-S3 USB OTG kā resursdatoru un ļaujot izveidot centrmezglu, lai pievienotu parastās tastatūras un peles. Šis solis ievērojami atvieglotu mijiedarbību, neizmantojot skārienekrānus vai attālinātas ievades risinājumus.

Licences, koda un testēšanas resursi

Projekts ir publicēts sadaļā 3. punkta BSD licenceTas veicina tā atkārtotu izmantošanu un pārnesamību. Pilns pirmkods ir pieejams GitHub repozitorijā. pamata kompilācijas instrukcijaskonfigurācijas failu dokumentācija un, tiem, kas steidzas, iepriekš kompilēti attēli gatavs mirgošanai.

Papildus tehniskajai dokumentācijai ir arī demonstrācija pārlūkprogrammā (GitHub Pages), kas ļauj iegūt priekšstatu par to, kā tiek startēta Windows 3.2 un kā sistēma reaģē, neizmantojot aparatūru. Tie, kas vēlas iedziļināties, var atrast informāciju un diskusijas arī tādās vietnēs kā Hackster.io un Hackaday.io, kā arī kopienās, piemēram, /r/aparatūra, kur šie retrotehnoloģiskie sasniegumi bieži vien izraisa dzīvas sarunas.

Tādi plašsaziņas līdzekļi kā CNX Software un Tom's Hardware ir atspoguļojuši izstrādi, izceļot tādas detaļas kā emulēto perifērijas ierīču sarakstsSeaBIOS atkarība no BIOS/VGABIOS un pašreizējais JC3248W535 plates atbalsts. Patiesībā daļa no izplatīšanas ir notikusi kopienas iniciatīvas dēļ — pateicoties tādiem padomiem kā Zoobab —, kas izskaidro ātrumu, ar kādu projekts ir izvirzījies veidotāju aprindu priekšplānā.

No Linux uz AVR uz Windows 95 uz ESP32‑S3

Lai visu aplūkotu perspektīvā, tie, kas atceras mēģinājumus Linux palaišana uz 8 bitu mikrokontrolleriem (tāpat kā AVR) zina, cik ilgi tas varētu aizņemt. Salīdzinot ar to, redzēt ESP32-S3, kas emulē 386 ar Windows 95, šķiet "ātri" un, protams, daudz praktiskāk.

ESP32 ekosistēmā ir novēroti arī iepriekšējie sasniegumi: Linux 5.0 uz ESP32 platēm un pavisam nesen Linux 6.3 attēls Olimex ESP32-S3-DevKit-LiPo akumulatorsTaču Windows ienākšana šajā mikrodatoru saimē iezīmē pagrieziena punktu robežu izpētē, ņemot vērā mērķa īpatnības un to, cik prasīgi ir palaist klasisku grafisko vidi.

Pašreizējie ierobežojumi un uzlabošanas iespējas

Sarakstā "vēl ne" ir iekļauts integrēts atkļūdotājsAparatūras uzdevumu veikšana un noteiktas atļauju pārbaudes, kā arī neizbēgamās veiktspējas problēmas, kas rodas tīras emulācijas rezultātā, ir arī trūkumi. Trūkums ir arī tas, ka pagaidām oficiālais atbalsts ir ierobežots līdz JC3248W535Tas ierobežo standarta komplektācijā pieejamo ekrānu un piederumu klāstu.

Pozitīvi ir tas, ka Tiny386 pieeja ir tik vienkārša, ka pastāv brīva vieta optimizācijaiĀrējās atmiņas uzlabojumi (PSRAM latentumi), centrālā procesora emulācijas precizēšana, potenciāli kritisku ceļu novēršana grafikā vai disku perifērijas ierīcēs un USB OTG izmantošana, lai uzlabotu pieredzi ar reālām ierīcēm. Katrs sīkums palīdz, kad izstrādes cikla budžets ir tik ierobežots.

Saglabāšana, izglītība un retro izklaide

Papildus principam "jo mēs to varam", šādiem projektiem ir ievērojama izglītojoša un saglabāšanas vērtība. Ar Tiny386, izstrādātāji un skolotāji Tie var reproducēt vēsturiskas x86 vides bez oriģinālās aparatūras, kas kļūst arvien retāka un trauslāka, un darīt to uz īpaši lētas, mazjaudas platformas.

Sabiedrībai tas paver durvis uz pārbaudīt veco programmatūru, dokumentējot mantotu sistēmu darbību un organizējot seminārus, kuros ar konkrētiem piemēriem tiek skaidrots, kā 386 reālie un aizsargātie režīmi noteica [sistēmas] dizainu. OS piemēram, Windows 3.x/95 un Linux evolūcija.

Pastāv arī kultūras aspekts, ko nevajadzētu novērtēt par zemu: ir paradoksāli — un ļoti amizanti —, ka, lai mūsdienās “justos vareni”, mums ir emulēt 80. gadu centrālo procesoru uz mūsdienu mikrofona, kad kabatās nēsājam mobilos tālruņus, kas ir tūkstošiem reižu jaudīgāki nekā oriģinālie datori. Šis kontrasts palīdz saprast, cik tālu esam tikuši un kāpēc emulācija ir tik spēcīgs rīks.

  Lejupielāžu mape neatveras operētājsistēmā Windows 11: cēloņi un galīgie risinājumi

Iekšējā arhitektūra: režīmi, atmiņa un BIOS

Īstie i386 kombinētie režīmi īsts un aizsargāts, lappušu numerāciju un MMU, kas lika pamatus virtuālā atmiņa Datoros Tiny386 atkārto šīs uzvedības kritiskos aspektus, lai operētājsistēmas justos “kā mājās”, apvienojot CPU emulāciju ar perifērijas ierīču komplektu, kas reaģē tur, kur programmatūra sagaida labus, vecos ISA signālus.

Šeit ir stabs SeaBIOSIzmantotā BIOS un VGABIOS tiek iegūtas no šī avota. Tas nodrošina saderību ar plaši atbalstītajām sāknēšanas rutīnām un ļauj izvairīties no atkarības no slēgtām ROM atmiņām. Vienlaikus, ja nepieciešams, emulators var apiet BIOS un ielādēt Linux kodolu tieši, ļoti noderīgs saīsinājums testēšanai.

Pārnesamība un ekosistēma

Tā kā tas ir rakstīts C99 valodā un ar tik kodolīgu centrālā procesora kodolu, nēsāt Tiny386 Citām platformām uzdevums kļūst vienkāršs: vienkārši ieviest I/O slāni un pielāgot integrāciju ar displeju, ievadi un krātuvi. Pats autors kā projekta lielāko priekšrocību izceļ pārnesamību.

Tas ne tikai dod labumu tiem, kas vēlas to izmantot citās mikrouzņēmumos vai SBK, bet arī atvieglo darbu trešajām personām. pievienot perifērijas ierīces, izmēģiniet optimizācijas vai pat izveidojiet specifiskas front-end sistēmas (piemēram, lai tieši palaistu dažādus Windows attēlus vai retro DOS/Linux distribūcijas).

Kas līdz šim ir pierādīts

Windows 95 “dzīvības pierādījums” ar Ieslēgšana ~4 minūtēs Tā ir galvenā atrakcija, taču tā nav vienīgā. Tika demonstrēta arī Windows 3.1/3.2, pamata tīmekļa pārlūkošana (tostarp info.cern.ch), sistēmas lietojumprogrammas un ikoniska programmatūra, piemēram, Doom.

Paralēli pastāv WebAssembly demonstrācija Tas palaiž Windows 3.2 pārlūkprogrammā, kas ir lielisks veids, kā izbaudīt emulāciju bez lodēšanas vai zibatmiņas. Savukārt tehnoloģiju jomā pieredzējušākiem lietotājiem repozitorijs piedāvā konfigurācijas un iepriekš kompilētu attēlu, lai bez liekas piepūles sāktu darbu ar JC3248W535.

Salīdzinājums ar citām pieredzēm par ESP32

Plānojiet uzdevumus operētājsistēmā Linux, izmantojot cron un vietnē

Salīdzinot ar citām demonstrācijām, piemēram, Linux uz ESP32 "bez aparatūras", lēciens uz Windows 95 emulācija Tas pievieno īpašu interesi: tas piespiež reproducēt kaprīzāku grafikas un draiveru steku un tikt galā ar saskarnes cerībām, kas nepastāvēja konsoles sāknēšanas laikā.

Pieredze ar Olimex ESP32-S3-DevKit-LiPo un Linux 6.3 Tas parāda, ka ESP32-S3 ekosistēmai ir vieta pārsteigumiem. Tiny386 paplašina šo robežu Windows teritorijā, noslēdzot apli, kas šķita paredzēts jaudīgākiem SBC, piemēram, Raspberry Pi.

Galu galā ir skaidrs, ka ar zināmu atjautību, lēts mikrofons Tā var kļūt par diezgan pārliecinošu retro mašīnu, kas spēj ielādēt pilnīgas sistēmas un sniegt mums meistarklasi 90. gadu datoru arhitektūrā.

Kopumā Tiny386 stāsts ietver vairākus sasniegumus: kodolīga i386 emulācijaGalvenās perifērijas ierīces ir labi integrētas, BIOS ir atvērtā koda, pārnesamība tika izstrādāta jau no pirmās dienas, un demonstrācija, kas, lai arī lēna, māca svarīgāko: ka Windows 95 un Linux var darboties uz ESP32-S3 ar vairāk nekā pienācīgu precizitāti.

Un jā, tam piemīt zināma poētiska kvalitāte, ka, lai atdzīvinātu Windows 95 "burvību" 2025. gadā, mēs nepieskarsimies vecam Pentium, bet gan izmantosim... 6.000 rindu emulators Un izstrādes komplekts ar skārienekrānu, kas ietilpst kabatā. Datorzinības dažreiz sagādā daudz lielāku prieku, ja nostalģija ir apvienota ar atjautību.

Arduino CLI apmācība
saistīto rakstu:
Pilnīga Arduino CLI apmācība: instalēšana, lietošana un padomi