
不久前還只是論壇上的玩笑,如今卻變成現實了: Windows 95 在 ESP32-S3 上啟動 多虧了名為 Tiny386 的極簡 x86 模擬器。在一台配備 3,5 吋觸控螢幕的小型開發套件上,微軟系統啟動了,運行了幾分鐘,雖然勉強能運行,但可以打開記事本、玩紙牌遊戲,甚至可以透過網路載入一個老式網站。
責任人是開發商何春暉(hchunhui),他建造了一座 在 C99 上從零開始編寫 i386 模擬器 並已將其移植到 Espressif 微控制器上。令人驚訝的是,它不僅能夠運行,而且根據 GitHub、Hackster/Hackaday 和專業媒體上發布的信息,這可能是首次有人成功地在 Espressif 上加載 Windows 系統。 硬件 ESP32 在先前的里程碑事件(例如啟動)之後 Linux 在其他 ESP32 開發板上使用 5.0 版本,在 Olimex ESP32-S3-DevKit-LiPo 上使用 Linux 6.3 鏡像。
Tiny386 是什麼?它的幕後推手是誰?
Tiny386本質上是 一個用 C99 寫的虛擬 x86 PC,設計為可移植型。它的核心是CPU模擬器 Intel英特爾 用作者自己的話來說,i386 是“簡單而笨拙的”,其目標非常明確:在不增加軟體複雜性的前提下,盡可能多地運行 16 位元和 32 位元軟體。
虛擬 CPU 實作了 80386 指令集並增加了 486 和 586 指令 它們用於啟動現代 Linux 核心和同時代 Windows 系統。內核程式碼大約有 6.000 行(LOC),考慮到它的功能,這個數量令人驚訝,並且還可以選擇性地包含以下內容。 x87 FPU 模擬 適用於需要它的軟體。
任何新創項目都有需要完善的地方,事實上, 缺少調試、硬體任務分配和某些權限檢查等功能。即便如此,這個前提仍然成立:對於大多數經典的 DOS/Windows 3.x/95 軟體,甚至對於啟動現代 Linux 系統,目前的實作方式都能勝任。
如何在 ESP32-S3 上模擬 i386 PC
為了理解其優點,有必要回顧一下 80386 是什麼: 32 位元 x86 處理器,附六級管線和記憶體管理單元 (MMU)。 整合式處理器,於 20 世紀 80 年代中期推出。它奠定了個人電腦整個時代的基礎。 手提 甚至伺服器也具有真實模式和安全模式,這標誌著軟體的發展歷程。
另一方面, ESP32-S3 它是一款當前主流的低成本微控制器,配備兩個主頻為 240 MHz 的 Tensilica Xtensa LX7 內核,支援 Wi-Fi/藍牙連接,並且功耗極低。雖然兩者並非直接比較(模擬總是會有其局限性),但這款 SoC 的強大性能以及對外部 PSRAM 記憶體的支援使其成為強有力的競爭者。 它們可以讓你模擬一台功能齊全的386機器。 麥克風本身整合了基本的圖形、網路和聲音功能。
訣竅在於採取務實的方法:用簡單的方式模擬CPU, 已新增必要說明 現代機殼所缺乏的功能,以及其餘的PC體驗,都是基於已在其他專案中測試過的虛擬外設建構而成。這種極簡主義與巧妙的資源再利用相結合的方式,使得系統能夠順利啟動Windows 95而不崩潰。
模擬週邊和固件
為了完善PC生態系統,Tiny386借鑒了以下程式碼: TinyEMU 和 QEMU 為了模擬 20 世紀 90 年代早期 ISA 機器的經典組件。 的BIOS 同時,VGABIOS 來自 SeaBIOS 項目,它使得系統啟動更加容易,而無需依賴專有 ROM。
支援的外圍設備清單中包含了一些對於任何玩過經典PC模擬器的人來說都非常熟悉的部件: 中斷控制器、定時器、鍵盤、視訊、磁碟、網路和音訊詳細:
- 中斷控制器 8259 (PIC) 和定時器 8254 (PIT) 是系統定時所必需的。
- 8042 和鍵盤控制器 CMOS RTC 用於時鐘和基本設定。
- VGA ISA 博世VBE 提供相容的視訊模式。
- IDE磁碟控制器 存儲.
- NE2000 ISA 網路卡,一款應用廣泛且易於模仿的老牌產品。
- DMA ISA 8257,PC揚聲器, Adlib OPL2 音訊方面則使用 Sound Blaster 16。
得益於此目錄,系統不僅可以顯示圖形並啟動帶有介面的 Windows 環境,而且還能 它具有網路連接功能 並且可以播放聲音 驅動程序 非常合適,它以令人驚訝的完整性完善了“老式 PC”體驗。
參考硬體:JC3248W535 搭配 ESP32-S3
這場吸引了所有人注意力的示威活動持續進行… Guition JC3248W535這是一款開發板,配備 ESP32-S3 晶片和 3,5 吋觸控螢幕 LCD。這款開發套件在 AliExpress 等網站上的售價約為 25-30 美元,據我們了解,它包含了玩「90 年代掌上電腦」遊戲所需的一切。
一個重要的細節:這款主機板上的 USB-C 連接埠似乎是專為…而設計的。 程序設計 並精煉並非作為外圍主機 USB ESP32-S3 的標準。即便如此,憑藉該晶片的 USB OTG 外設,人們可以設想一種這樣的設定: 集線器USB 您可以連接鍵盤和滑鼠,從而創建一個帶有直接有線輸入的迷你 386。
目前,官方專案支援主要集中在這個特定的開發板上,作者也指出: 僅限 ESP32-S3 它本身就支援這些功能。然而,此模擬器的架構優先考慮的是可移植性:只需付出合理的努力,它就可以移植到其他微控制器和平台上,從而支援更多格式和螢幕。
效能和使用者體驗
大家都在問:最近怎麼樣?簡單來說就是「只要有耐心,它就能奏效。在公開演示中,Windows 95 的完整啟動過程大約需要 4 分鐘。系統啟動後,雖然運行速度緩慢,但尚可接受:您可以開啟記事本、玩紙牌遊戲,甚至啟動 Internet Explorer。
網路連接已實現,因此模擬器可以 載入基本網站演示展示了它如何打開 info.cern.ch,這是歷史上第一個網站,這給運行在售價不到 30 歐元的微晶片上的 Windows 95 的場景增添了一絲令人愉悅的懷舊氣息。
就效能而言,系統達到極限是可以理解的:模擬會增加開銷,而且 ESP32-S3 缺乏 PC 等級圖形加速。儘管如此, 總體感覺是“可用性處於邊緣”。 這不只是「影片開始播放後就卡住了」這麼簡單。如果你以兩倍速播放影片——這是看過影片的人常用的技巧——播放起來就會順暢得多。
有趣的是,Tiny386 可以運行 厄運經典的「如果運行不了《毀滅戰士》,那就沒用」的測試。而且,由於虛擬音訊設備(PC揚聲器、Adlib OPL2和SB16),音訊方面也在硬體限制範圍內得到了最大程度的保障。
支援的作業系統和軟體
該產品目錄已在影片中展示,其中包括 Windows 3.1 / 3.2 (使用中文版 3.1)和 Windows 95。除此之外,作者也強調 Tiny386“它應該可以運行大多數 16 位元/32 位元軟體”,並且隨著 486/586 指令集的擴展,可以啟動當時相對較新的 Linux 核心和 Windows NT。
一個非常有趣的細節是,Tiny386 能夠 直接啟動 Linux 內核無需經過傳統的 BIOS,這簡化了一些測試工作流程。此外,該專案還提供了無需組裝硬體即可進行探索的功能。 WebAssembly 演示 它可以啟動瀏覽器中的 Windows 3.2,並提及 FreeDOS 或 JSLinux 等替代方案,供想要在網路上比較模擬體驗的人參考。
在應用程式領域,除了前面提到的《毀滅戰士》之外,還有基本的 Windows 95 程式(記事本、 紙牌遊戲和 Internet Explorer這些方法已被證明有效,但存在明顯的性能限制。這足以證明圖形、輸入/輸出和網路協定棧的整合度相當高。
輸入和連接埠的處理方式
在 JC3248W535 開發板上,實體週邊裝置的使用受到以下因素的限制: 用於編程的 USB-C為了克服這一障礙,在目前的實現方式中,鍵盤和滑鼠可以… 透過 Wi-Fi 重定向 面向模擬器,無需開發套件中的專用連接埠即可提供控制。
展望未來,利用以下技術進行建置並不令人意外: ESP32-S3 USB OTG 它可以作為主機,並允許創建一個中心樞紐,用於連接傳統的鍵盤和滑鼠。這項突破將極大地簡化互動過程,而無需依賴觸控螢幕或遠端輸入解決方案。
許可證、程式碼和測試資源
該項目已發布。 3 條款 BSD 許可證這有利於程式碼的重複使用和移植。完整的原始碼可在 GitHub 程式碼庫中找到。 基本編譯說明配置文件文檔,以及,為那些時間緊迫的人, 預編譯圖像 準備刷寫。
除了技術文件之外,還有 瀏覽器中的演示 (GitHub Pages)可讓您了解 Windows 3.2 的啟動方式和系統回應,而無需任何硬體。想要深入了解的用戶還可以在 Hackster.io 和 Hackaday.io 等網站以及社群中找到相關資訊和討論。 /r/硬體這些復古科技壯舉常常引發熱烈的討論。
CNX Software 和 Tom's Hardware 等媒體都報導了這個開發過程,並重點介紹了以下細節: 模擬週邊列表SeaBIOS 對 BIOS/VGABIOS 的依賴性以及目前對 JC3248W535 主機板的支援狀況。事實上,部分傳播得益於社群的推動——這要感謝像 Zoobab 這樣的用戶提供的技巧——這也解釋了該計畫為何能如此迅速地躍升至創客圈的前沿。
從 AVR 上的 Linux 到 ESP32-S3 上的 Windows 95
為了更客觀地看待這件事,那些記得當時嘗試過的人… 在8位元微控制器上啟動Linux (例如 AVR)知道這需要多長時間。相比之下,看到 ESP32-S3 模擬運行 Windows 95 的 386 處理器感覺“很快”,當然也實用得多。
先前在 ESP32 生態系統中也取得了一些成就: ESP32 板上的 Linux 5.0 最近,Linux 6.3 鏡像也出現在其中。 Olimex ESP32-S3-DevKit-LiPo但 Windows 的出現標誌著微型電腦探索極限的一個轉折點,因為目標的特殊性以及運行經典圖形環境的要求非常高。
目前的限制和改進機會
「尚未」列表包括: 集成調試器除了純模擬不可避免的效能瓶頸之外,硬體任務分配和某些權限檢查也是缺點。此外,目前官方支援僅限於…也是一個不利因素。 JC3248W535這限制了標準配置的螢幕和配件種類。
從積極的一面來看,Tiny386 的方法非常簡單直接,因此… 為優化留出空間改進外部記憶體(PSRAM 延遲)、最佳化 CPU 模擬、解決圖形或磁碟週邊裝置中的潛在關鍵路徑問題,並利用 USB OTG 增強與真實裝置的互動體驗。在開發週期預算如此緊張的情況下,任何一點改進都至關重要。
保護、教育和復古樂趣
拋開「因為我們能做到」這一前提,這類計畫還具有重要的教育和保護價值。 Tiny386 計畫就是如此。 開發人員和教師 它們無需原始硬體(而原始硬體越來越稀缺且脆弱)即可重現歷史上的 x86 環境,並且能夠在超廉價、低功耗的平台上實現這一點。
對於社區而言,這打開了一扇門… 測試舊軟體記錄遺留系統的行為,並舉辦研討會,透過具體的例子解釋 386 的真實模式和受保護模式如何影響設計。 OS 例如 Windows 3.x/95 和 Linux 的發展歷程。
還有一個不容低估的文化因素:這很矛盾,也很有意思,因為如今我們要想“感受到力量”,就必須… 模擬 80 年代的 CPU 如今,我們口袋裡裝著的手機,其表現比最初的個人電腦強上千倍,而現代麥克風卻能與之媲美。這種對比有助於我們理解我們取得了多大的進步,以及為什麼模擬技術如此強大。
內部架構:模式、記憶體和BIOS
真正的 i386 組合模式 真實且受保護分頁和MMU為以下方面奠定了基礎: 虛擬內存 在 PC 上,Tiny386 複製了這種行為的關鍵方面,使作業系統感覺“像在家一樣”,它將 CPU 模擬與一組外圍設備相結合,這些外圍設備會在軟體期望收到良好的舊式 ISA 信號時做出響應。
這裡的一根柱子是 海洋BIOS所使用的BIOS和VGABIOS均來自此來源。這確保了與廣泛支援的啟動例程的兼容性,並避免了對封閉ROM的依賴。同時,在必要時,模擬器可以繞過BIOS和VGABIOS。 載入 Linux 內核 直接來說,這是一個非常有用的測試快捷方式。
便攜性和生態系統
由於是用 C99 編寫的,並且 CPU 核心非常簡潔, 攜帶 Tiny386 對於其他平台,任務就變得簡單了:只需實現 I/O 層並調整與顯示、輸入和儲存的整合即可。作者本人也強調,可移植性是該計畫最大的優勢。
這不僅有利於那些想將其移植到其他微型電腦或單板電腦的用戶,也使第三方更容易進行移植。 增加外圍設備嘗試進行最佳化,甚至建立特定的前端(例如,直接啟動不同的 Windows 映像或復古的 DOS/Linux 發行版)。
目前已證明的情況
Windows 95 的“存活證明” 啟動大約需要 4 分鐘 它是本次展會的重頭戲,但並非唯一亮點。 Windows 3.1/3.2、基本網頁瀏覽(包括info.cern.ch)、系統應用程式以及像Doom這樣的經典軟體也都在展會上亮相。
同時,還有 WebAssembly 演示 它能在瀏覽器中啟動 Windows 3.2,無需焊接或刷寫任何程式即可體驗模擬作業系統,非常方便。對於技術更嫻熟的用戶,該軟體倉庫還提供了配置和預編譯鏡像,讓用戶能夠輕鬆上手 JC3248W535。
與其他ESP32經驗的比較

與其他演示(例如“無硬體”的 ESP32 上的 Linux)相比,這方面的飛躍是… Windows 95 模擬器 它增添了一項特殊意義:它迫使人們重現更反覆無常的圖形和驅動程式堆疊,並處理在主機啟動中不存在的介面預期。
與…的經歷 Olimex ESP32-S3-DevKit-LiPo 與 Linux 6.3 這顯示 ESP32-S3 生態系仍有無限的潛力。 Tiny386 將這一領域拓展到了 Windows 平台,填補了以往只有像 Raspberry Pi 這樣功能更強大的單板電腦才能實現的空白。
最後,顯而易見的是,只要發揮一些創造力, 低成本麥克風 它可以成為一台相當逼真的復古機器,能夠啟動完整的系統,並為我們帶來 90 年代電腦架構的精彩課程。
從整體來看,Tiny386 的發展歷程體現了多項成就: 簡潔的 i386 模擬關鍵週邊整合良好,BIOS 是開源的,從一開始就注重可移植性,演示雖然速度慢,但卻教會了我們什麼:Windows 95 和 Linux 可以在 ESP32-S3 上以相當不錯的保真度運行。
沒錯,這確實帶有一種詩意:為了在2025年重溫Windows 95的“魔力”,我們不會去碰一台老舊的奔騰處理器,而是會使用… 一個6.000行的模擬器 還有一款可以放進口袋的帶觸控螢幕的開發套件。當懷舊情懷與創新精神結合時,電腦領域有時會變得更有趣。
對字節世界和一般技術充滿熱情的作家。我喜歡透過寫作分享我的知識,這就是我在這個部落格中要做的,向您展示有關小工具、軟體、硬體、技術趨勢等的所有最有趣的事情。我的目標是幫助您以簡單有趣的方式暢遊數位世界。