- Tiny386 emuluje i386 na ESP32-S3 i uruchamia się Windows 95 z obrazem, siecią i dźwiękiem.
- Skromna wydajność: boot ~4 minuty; Działa Notatnik, Pasjans i IE.
- Kod w języku C99 (~6k LOC), licencja BSD-3; dostępna demonstracja WebAssembly.
- Aktualne wsparcie dla JC3248W535, możliwa przenośność na inne mikrokontrolery.

To, co jeszcze niedawno wydawało się żartem na forum, stało się rzeczywistością: Uruchamianie systemu Windows 95 na komputerze ESP32-S3 Dzięki minimalistycznemu emulatorowi x86 o nazwie Tiny386. Na małym zestawie deweloperskim z 3,5-calowym ekranem dotykowym system Microsoft uruchamia się w kilka minut i działa ledwo, ale otwiera Notatnik, gra w Pasjansa, a nawet ładuje starą stronę internetową przez sieć.
Za osobę odpowiedzialną odpowiedzialny jest deweloper He Chunhui (hchunhui), który zbudował Emulator i386 od podstaw na C99 i przeniósł go na mikrokontroler Espressif. Co ciekawe, nie tylko działa, ale – według informacji opublikowanych na GitHubie, Hacksterze/Hackaday i w mediach specjalistycznych – jest to prawdopodobnie pierwszy raz, kiedy komuś udało się uruchomić system Windows na Espressifie. sprzęt komputerowy ESP32, po wcześniejszych kamieniach milowych, takich jak uruchomienie Linux 5.0 na innych płytkach ESP32 i obraz Linux 6.3 na płytce Olimex ESP32-S3-DevKit-LiPo.
Czym jest Tiny386 i kto za tym stoi?
Tiny386 to w zasadzie wirtualny komputer x86, napisany w C99 i zaprojektowany tak, aby był przenośnyJego rdzeniem jest emulator procesora Intel i386 jest „prosty i głupi” — według słów autora — i ma jasny cel: uruchamiać jak najwięcej oprogramowania 16- i 32-bitowego bez obciążania go ogromną złożonością.
Wirtualny procesor implementuje zestaw instrukcji 80386 i dodaje Instrukcje 486 i 586 gdzie są potrzebne do uruchomienia współczesnych jąder Linuksa i systemów Windows z tamtej epoki. Jądro zawiera około 6.000 linii kodu (LOC), co jest zaskakujące, biorąc pod uwagę jego możliwości, i opcjonalnie zawiera Emulacja FPU x87 dla oprogramowania, które tego wymaga.
Jak w każdym młodym projekcie, są luki do wypełnienia. Właściwie, Brakuje takich funkcji, jak debugowanie, przydzielanie zadań sprzętowych i niektóre sprawdzanie uprawnień.Mimo wszystko założenie jest prawdziwe: w przypadku większości klasycznego oprogramowania DOS/Windows 3.x/95, a nawet uruchomienia nowoczesnego systemu Linux, obecna implementacja jest wystarczająca.
Jak emulować komputer i386 na ESP32-S3
Aby docenić tę zaletę, warto przypomnieć sobie, czym był 80386: 32-bitowy procesor x86 z sześcioetapowym potokiem i MMU zintegrowany, wprowadzony na rynek w połowie lat 80. Był podstawą całej ery komputerów osobistych, laptopy i nawet serwery, z trybem rzeczywistym i chronionym, które zapoczątkowały ewolucję oprogramowania.
Po przeciwnej stronie, ESP32-S3 To nowoczesny, niedrogi mikrokontroler z dwoma rdzeniami Tensilica Xtensa LX7 o częstotliwości 240 MHz, łącznością Wi-Fi/Bluetooth i bardzo niskim poborem mocy. Chociaż porównanie nie jest bezpośrednie (emulacja zawsze ma swoją wadę), moc obliczeniowa tego układu SoC i obsługa zewnętrznej pamięci PSRAM czynią go mocnym konkurentem. Umożliwiają symulację funkcjonalnej maszyny 386 z podstawową grafiką, siecią i dźwiękiem, wszystko w samym mikrofonie.
Sztuczka polega na pragmatycznym podejściu: emuluje się procesor w prosty sposób, Dodano niezbędne instrukcje których brakowało w nowoczesnych obudowach, a reszta doświadczenia z komputerem PC opiera się na wirtualnych urządzeniach peryferyjnych, przetestowanych już w innych projektach. To połączenie minimalizmu i sprytnego recyklingu umożliwia systemowi uruchomienie systemu Windows 95 bez awarii.
Emulowane urządzenia peryferyjne i oprogramowanie sprzętowe
Aby uzupełnić ekosystem PC, Tiny386 pożycza kod z TinyEMU i QEMU w celu emulowania klasycznych komponentów komputera ISA z początku lat 90. BIOS VGABIOS z kolei wywodzi się z projektu SeaBIOS, który ułatwia uruchamianie systemów bez konieczności korzystania z zastrzeżonych pamięci ROM.
Lista obsługiwanych urządzeń peryferyjnych zawiera części doskonale znane każdemu, kto miał do czynienia z klasyczną emulacją komputera PC: kontrolery przerwań, timery, klawiatura, wideo, dysk, sieć i dźwiękSzczegółowo:
- Kontroler przerwań 8259 (PIC) i timer 8254 (PIT), niezbędne do pomiaru czasu w systemie.
- 8042 i kontroler klawiatury Zegar czasu rzeczywistego CMOS do zegara i ustawień podstawowych.
- VGA ISA z Bosch VBE aby zapewnić kompatybilne tryby wideo.
- Kontroler dysku IDE dla magazynowanie.
- Karta sieciowa ISA NE2000, weteran, powszechnie stosowany i łatwy do emulacji.
- DMA ISA 8257, głośnik komputerowy, Adlib OPL2 i Sound Blaster 16 do dźwięku.
Dzięki temu katalogowi system nie tylko wyświetla grafikę i uruchamia środowisko Windows z interfejsem, ale także Posiada łączność sieciową i może odtwarzać dźwięk za pomocą sterowniki odpowiedni, co w zaskakująco kompletny sposób uzupełnia doświadczenie korzystania ze „starego komputera”.
Sprzęt referencyjny: JC3248W535 z ESP32-S3
Demonstracja, która przykuła uwagę wszystkich, przebiega przez Instrukcja JC3248W535To płytka rozwojowa z układem ESP32-S3 i 3,5-calowym ekranem dotykowym LCD. Ten zestaw deweloperski można kupić za około 25-30 dolarów na stronach takich jak AliExpress i z tego, co widzieliśmy, zawiera wszystko, czego potrzeba do grania w gry „z lat 90. na kieszonkowym komputerze”.
Jeden ważny szczegół: port USB-C na tej płycie głównej wydaje się być zaprojektowany do programowanie i wyrafinowanenie jako gospodarz peryferyjny USB standard ESP32-S3. Mimo to, dzięki peryferiom USB OTG układu, można sobie wyobrazić konfigurację z Hub USB do którego można podłączyć klawiaturę i myszkę, tworząc mini-386 z bezpośrednim przewodowym wejściem.
Obecnie oficjalne wsparcie projektu koncentruje się na tej konkretnej płycie, a autor wskazuje, że Tylko ESP32-S3 Jest on obsługiwany natywnie. Architektura emulatora stawia jednak na przenośność: przy odpowiednim wysiłku można go przenieść na inne mikrokontrolery i platformy, otwierając drzwi do większej liczby formatów i ekranów.
Wydajność i doświadczenie użytkownika
Pytanie, które wszyscy sobie zadają: jak leci? Krótka odpowiedź brzmi: „Działa, jeśli jesteś cierpliwy.Pełne uruchomienie systemu Windows 95 w publicznej wersji demonstracyjnej zajmuje około 4 minut. Po załadowaniu system działa wolno, ale jest łatwy w obsłudze: można otworzyć Notatnik, zagrać w pasjansa, a nawet uruchomić przeglądarkę Internet Explorer.
Zaimplementowano łączność sieciową, dzięki czemu emulator może Załaduj podstawowe strony internetoweDemonstracja pokazuje, jak otwiera się info.cern.ch, pierwsza strona internetowa w historii, która dodaje miły akcent nostalgii do widoku systemu Windows 95 działającego na mikroprocesorze kosztującym mniej niż 30 euro.
Pod względem wydajności zrozumiałe jest, że system jest wykorzystywany do granic możliwości: emulacja generuje dodatkowe obciążenie, a ESP32-S3 nie oferuje akceleracji graficznej na poziomie komputerów PC. Mimo to ogólne wrażenie jest takie, że „użyteczność jest na krawędzi” To coś więcej niż tylko „odpala się i zawiesza”. Jeśli odtworzysz film z podwójną prędkością – popularna rada wśród tych, którzy już go widzieli – stanie się o wiele bardziej znośny.
Ciekawostką jest, że Tiny386 może działać FatumKlasyczny test „jeśli nie działa Doom, to jest do niczego”. A dzięki zwirtualizowanym urządzeniom dźwiękowym (głośnik PC, Adlib OPL2 i SB16), aspekt audio jest również w pełni obsługiwany, w miarę możliwości sprzętowych.
Obsługiwane systemy operacyjne i oprogramowanie
Katalog, który już był prezentowany na filmie, zawiera: Okna 3.1 / 3.2 (z chińską wersją 3.1) i Windows 95. Poza tym autor podkreśla, że Tiny386 „Powinien obsługiwać większość oprogramowania 16/32-bitowego”, a dzięki rozszerzeniu instrukcji 486/586 możliwe jest uruchomienie zarówno stosunkowo nowoczesnych jąder Linuksa, jak i ówczesnego systemu Windows NT.
Bardzo ciekawym szczegółem jest to, że Tiny386 jest w stanie uruchom bezpośrednio jądro Linuksabez konieczności przechodzenia przez tradycyjny BIOS, co upraszcza niektóre procesy testowe. Projekt oferuje również możliwość eksploracji bez konieczności montażu sprzętu. demo w WebAssembly który uruchamia system Windows 3.2 w przeglądarce i wspomina o alternatywach, takich jak FreeDOS lub JSLinux, dla tych, którzy chcą porównać doświadczenia emulacji w sieci.
W zakresie zastosowań oprócz wspomnianego Dooma dostępne są podstawowe programy systemu Windows 95 (Notatnik, Pasjans i Internet ExplorerUdowodniono ich skuteczność, mimo oczywistych ograniczeń wydajnościowych. Stanowi to wystarczający dowód na to, że grafika, wejście/wyjście i stos sieciowy są dość dobrze zintegrowane.
Jak obsługiwane są dane wejściowe i porty
W przypadku płyty JC3248W535 korzystanie z fizycznych urządzeń peryferyjnych jest uwarunkowane USB-C do programowaniaAby pokonać tę przeszkodę, w obecnej implementacji klawiatura i mysz mogą być przekierowanie przez Wi-Fi w kierunku emulatora, oferując kontrolę bez konieczności posiadania dedykowanych portów w zestawie deweloperskim.
Patrząc w przyszłość, nie byłoby zaskoczeniem, gdybyśmy zobaczyli konstrukcje wykorzystujące tę przewagę ESP32-S3 USB OTG jako hosta i umożliwiając stworzenie huba do podłączania tradycyjnych klawiatur i myszy. Ten krok znacznie ułatwiłby interakcję bez konieczności korzystania z ekranów dotykowych lub zdalnych rozwiązań wprowadzania danych.
Licencja, kod i zasoby testowe
Projekt jest publikowany pod 3 klauzula licencji BSDZachęca to do ponownego wykorzystania i przenośności. Pełny kod źródłowy jest dostępny w repozytorium GitHub. podstawowe instrukcje kompilacjidokumentację plików konfiguracyjnych i, dla tych, którzy się spieszą, wstępnie skompilowane obrazy gotowy do flashowania.
Oprócz dokumentacji technicznej dostępna jest również demo w przeglądarce (GitHub Pages), który pozwala zorientować się, jak uruchamia się system Windows 3.2 i jak reaguje system, bez potrzeby instalowania dodatkowego sprzętu. Osoby zainteresowane głębszym poznaniem tematu mogą również znaleźć informacje i dyskusje na stronach takich jak Hackster.io i Hackaday.io, a także w społecznościach takich jak /r/sprzęt, gdzie tego typu osiągnięcia techniki retro często wywołują ożywione dyskusje.
Media takie jak CNX Software i Tom's Hardware relacjonowały rozwój sytuacji, zwracając uwagę na takie szczegóły, jak lista emulowanych urządzeń peryferyjnychZależność SeaBIOS od BIOS-u/VGABIOS-u i obecny stan wsparcia dla płyty JC3248W535. W rzeczywistości, część rozpowszechniania nastąpiła dzięki zaangażowaniu społeczności – dzięki wskazówkom takim jak Zoobab – co wyjaśnia szybkość, z jaką projekt znalazł się w czołówce sceny twórców.
Z Linuksa na AVR do Windows 95 na ESP32‑S3
Aby spojrzeć na to z szerszej perspektywy, ci, którzy pamiętają próby uruchamianie Linuksa na 8-bitowych mikrokontrolerach (jak AVR) nie wiem, ile to może zająć. W porównaniu z tym, widok ESP32-S3 emulującego 386 z systemem Windows 95 wydaje się „szybki” i z pewnością znacznie bardziej praktyczny.
W ekosystemie ESP32 odnotowano również wcześniejsze osiągnięcia: Linux 5.0 na płytach ESP32 i, ostatnio, obraz Linux 6.3 w Olimex ESP32‑S3‑DevKit‑LiPoJednak pojawienie się systemu Windows w tej rodzinie mikrokomputerów oznacza punkt zwrotny w badaniu ograniczeń, ze względu na specyfikę celu i wymagania, jakie stawia uruchomienie klasycznego środowiska graficznego.
Obecne ograniczenia i możliwości poprawy
Na liście „jeszcze nie” znajdują się: zintegrowany debuggerWadami są również zadania sprzętowe i pewne kontrole uprawnień, a także nieuniknione wąskie gardła wydajnościowe związane z czystą emulacją. Wadą jest również to, że na razie oficjalne wsparcie ogranicza się do JC3248W535Ogranicza to różnorodność ekranów i akcesoriów dostępnych standardowo.
Pozytywnym aspektem jest to, że podejście Tiny386 jest tak proste, że istnieje wyraźne pole do optymalizacjiUlepszenia pamięci zewnętrznej (opóźnienia PSRAM), dopracowanie emulacji procesora, zajęcie się potencjalnie krytycznymi ścieżkami w grafice lub dyskowych urządzeniach peryferyjnych oraz wykorzystanie USB OTG do poprawy wrażeń z użytkowania z prawdziwymi urządzeniami. Każda pomoc się liczy, gdy budżet cyklu rozwoju jest tak napięty.
Ochrona, edukacja i zabawa retro
Poza założeniem „bo możemy”, projekty takie jak ten mają istotną wartość edukacyjną i konserwatorską. Dzięki Tiny386, programiści i nauczyciele Potrafią odtworzyć historyczne środowiska x86 bez oryginalnego sprzętu, który jest coraz rzadszy i bardziej kruchy, i to na bardzo taniej platformie o niskim poborze mocy.
Dla społeczności otwiera to drzwi do testowanie starego oprogramowaniadokumentowanie zachowania starszych systemów i organizowanie warsztatów, na których wyjaśniano na konkretnych przykładach, w jaki sposób rzeczywiste i chronione tryby 386 warunkowały projekt OS takich jak Windows 3.x/95 i ewolucja Linuksa.
Istnieje również aspekt kulturowy, którego nie należy lekceważyć: jest to paradoksalne i bardzo zabawne, że aby „czuć się potężnym”, musimy dzisiaj emulować procesor z lat 80. na nowoczesnym mikrofonie, gdy nosimy w kieszeniach telefony komórkowe tysiące razy bardziej zaawansowane niż te oryginalne komputery. Ten kontrast pomaga zrozumieć, jak daleko zaszliśmy i dlaczego emulacja jest tak potężnym narzędziem.
Architektura wewnętrzna: tryby, pamięć i BIOS
Prawdziwe tryby łączone i386 prawdziwy i chroniony, paginacja i MMU, które położyły podwaliny pod pamięć wirtualna Na komputerach PC Tiny386 replikuje najważniejsze aspekty tego zachowania, aby systemy operacyjne czuły się „jak w domu”, łącząc emulację procesora z zestawem urządzeń peryferyjnych, które reagują w miejscach, w których oprogramowanie spodziewa się dobrych, starych sygnałów ISA.
Tutaj jest filar MorzeBIOSBIOS i VGABIOS pochodzą z tego źródła. Zapewnia to zgodność z powszechnie obsługiwanymi procedurami rozruchowymi i eliminuje konieczność korzystania z zamkniętych pamięci ROM. Jednocześnie, w razie potrzeby, emulator może ominąć BIOS i… załaduj jądro Linuxa bezpośrednio, bardzo użyteczny skrót do testowania.
Przenośność i ekosystem
Będąc napisanym w C99 i mając tak zwięzły rdzeń procesora, nosić Tiny386 W przypadku innych platform zadanie staje się proste: wystarczy zaimplementować warstwę wejścia/wyjścia i dostosować integrację z wyświetlaczem, wejściem i pamięcią masową. Sam autor podkreśla przenośność jako największą zaletę projektu.
Nie tylko przynosi to korzyści tym, którzy chcą przenieść je do innych mikrofirm lub SBC, ale także ułatwia to pracę osobom trzecim dodaj urządzenia peryferyjne, wypróbuj optymalizacje lub nawet zbuduj specjalne interfejsy użytkownika (na przykład umożliwiające bezpośrednie uruchamianie różnych obrazów systemu Windows lub dystrybucji retro DOS/Linux).
Co do tej pory zostało zademonstrowane
„Dowód życia” systemu Windows 95 z Uruchomienie w ~4 minuty To główna atrakcja, ale nie jedyna. Zaprezentowano również systemy Windows 3.1/3.2, podstawowe narzędzia do przeglądania stron internetowych (w tym info.cern.ch), aplikacje systemowe i kultowe oprogramowanie, takie jak Doom.
Równolegle istnieje Demo WebAssembly Uruchamia system Windows 3.2 w przeglądarce, co stanowi doskonały sposób na emulację bez lutowania i flashowania. Dla bardziej zaawansowanych technicznie, repozytorium oferuje konfiguracje i wstępnie skompilowany obraz, pozwalający na rozpoczęcie pracy z JC3248W535 bez większych problemów.
Porównanie z innymi doświadczeniami na ESP32

W porównaniu do innych wersji demonstracyjnych, takich jak Linux na ESP32 „bez sprzętu”, skok do Emulacja systemu Windows 95 Dodaje to szczególnego zainteresowania: wymusza odtwarzanie bardziej kapryśnej grafiki i stosu sterowników oraz radzenie sobie z oczekiwaniami dotyczącymi interfejsu, których nie ma podczas rozruchu konsoli.
Doświadczenie z Olimex ESP32‑S3‑DevKit‑LiPo i Linux 6.3 Pokazuje, że ekosystem ESP32-S3 ma potencjał, by zaskoczyć. Tiny386 przesuwa tę granicę w kierunku Windowsa, zamykając krąg, który wydawał się zarezerwowany dla bardziej wydajnych komputerów jednopłytkowych (SBC), takich jak Raspberry Pi.
Na koniec jasne jest, że przy odrobinie pomysłowości, niedrogi mikrofon Może stać się całkiem przekonującą maszyną retro, zdolną do uruchomienia całych systemów i dającą nam mistrzowską lekcję architektury komputerowej lat 90.
Patrząc całościowo, historię Tiny386 można podsumować kilkoma osiągnięciami: zwięzła emulacja i386Najważniejsze urządzenia peryferyjne są dobrze zintegrowane, BIOS jest dostępny na zasadzie open source, przenośność została zaprojektowana od samego początku, a demo, choć powolne, uczy tego, co najważniejsze: że Windows 95 i Linux mogą działać na ESP32-S3 z więcej niż przyzwoitą jakością.
I owszem, ma to w sobie pewien poetycki charakter, że aby w 2025 roku przeżyć na nowo „magię” Windowsa 95, nie będziemy dotykać starego Pentiuma, lecz używać... emulator 6.000 linii I zestaw deweloperski z ekranem dotykowym, który mieści się w kieszeni. Komputery bywają o wiele przyjemniejsze, gdy nostalgia miesza się z pomysłowością.
Pisarz z pasją zajmujący się światem bajtów i technologii w ogóle. Uwielbiam dzielić się swoją wiedzą poprzez pisanie i właśnie to będę robić na tym blogu, pokazywać Ci wszystkie najciekawsze rzeczy o gadżetach, oprogramowaniu, sprzęcie, trendach technologicznych i nie tylko. Moim celem jest pomóc Ci poruszać się po cyfrowym świecie w prosty i zabawny sposób.