FRANK 386 项目使 Raspberry Pi Pico 2 (RP2350) 微控制器能够作为完整的 i386 PC 模拟器运行,支持 Windows 3.x、Windows 95 和 Linux 等传统软件。通过将 Tiny386 引擎移植到 RP2350,该项目允许用户在配备 VGA/HDMI 输出和 SD 卡存储的现代低成本微控制器平台上运行复古计算环境。

FRANK 386 项目平台的视觉呈现。
FRANK 386 项目提供了一个在 RP2350 微控制器上运行传统软件的平台。github.com

这张图片代表了该项目用于模拟 i386 PC 环境的平台。

核心模拟与硬件支持

FRANK 386 为 i386 架构提供全面的模拟套件,包括对 8259 PIC、8254 PIT、8042 键盘控制器和 VGA 的外设支持。它旨在配合 RP2350 的特定硬件能力工作,例如其与外部内存和显示输出接口的能力。

该项目支持多种音频设备,包括 PC Speaker、Tandy、Covox 和 Disney Sound Source。图形支持包括文本模式和通过 VGA 或 HDMI 连接支持高达 640x480 分辨率的图形模式。

“支持 VGA/HDMI 输出、SD 卡存储、PS/2 和 USB 键盘/鼠标、NES 游戏手柄以及音频输出的 RP2350 (Raspberry Pi Pico 2) i386 PC 模拟器。”

— GitHub - rh1tech/frank-386: Tiny386 port to RP2350

存储与输入机制

系统利用 SPI 模式的 SD 卡为软盘、硬盘和 CD-ROM 镜像提供存储空间。一个可通过 Win+F12 快捷键访问的专用运行时磁盘管理器,允许用户在不重启系统的情况下插入或弹出这些镜像。

模拟器中显示文件夹和文件的表格截图。
显示模拟器支持的文件系统和文件夹结构的截图。github.com

这张截图展示了 FRANK 386 项目的文件管理功能。

输入通过多种方式处理:原生 PS/2 键盘和鼠标连接,或现代 USB HID 支持。对于 Waveshare Z2 等特定板子,系统可以使用 PIO-USB 实现来处理 USB 主机功能。

内存架构与性能权衡

为了满足传统系统的内存需求,FRANK 386 支持使用外部 QSPI PSRAM 芯片提供高达 8MB 的 RAM。此 PSRAM 必须连接到特定的 GPIO 引脚 (XIP CS1),以便与闪存共享总线。

在内存访问速度方面存在技术限制。虽然 RP2350 比原始 386 芯片快得多,但访问内部 SRAM 之外的内存可能会引入 40 个周期的访问延迟。当模拟软件频繁访问外部 PSRAM 时,这可能会在某些情况下导致卡顿。

Hacker News 读者的反应

  • 技术补充: 一位评论者表示担心 RP2350 的内存架构可能会导致性能问题,指出访问前 640kb 之外的内存可能会导致显著的周期延迟,并在模拟过程中产生卡顿。 评论 ↗
  • 替代方案: 一位评论者指出已经存在一个运行在 ESP32 上的类似项目。 评论 ↗
  • 疑问: 一位读者询问该项目是否模拟了特定的硬件端口(如 RS232 或打印机),这对于重新利用旧的嵌入式设备是必要的。 评论 ↗

以上为 Hacker News 讨论中观点的摘要,并非经过核实的事实。 阅读完整讨论 ↗