top of page

FRANK 将 RP2350 变成可用的复古 386 PC

1天前
讀畢需時 14 分鐘

FRANK 如今让微控制器运行起 面向 RP2350 的 386 PC,尽管完整 PC 对内存和外设的需求颇高。该开源项目模拟 i386 处理器、VGA 图形、存储、输入设备以及多种不同时期的音频设备。开发者称,它可以启动 DOS、Windows 3.x、Windows 95 和 Linux。

这一成果挑战了微控制器与通用计算机之间的传统界限。RP2350 通常用于控制内存有限、没有桌面操作系统的嵌入式硬件。而 FRANK 则以它为基础,构建出一台可辨识的 PC,配有磁盘镜像和实体显示输出。

关键的比较对象并非 FRANK 与现代桌面电脑,而是完整系统模拟与既有微控制器复古项目之间的差异。早期项目重现的是单独的游戏主机或 16 位 PC。FRANK 则将这一思路扩展到 32 位 PC 软件所期待的、更庞大的硬件契约。

面向 RP2350 的 386 PC 模拟的不只是 CPU

FRANK 的意义在于,它模拟的是一个可用的 PC 平台,而不只是 Intel 指令集。

项目的 FRANK 386 firmware 描述了一款 i386 模拟器,并提供部分 i486 和 i586 指令支持。可选的 x87 组件可模拟某些旧软件使用的浮点运算单元。这些扩展让该机器能够尝试运行更广泛的操作系统和应用程序。

CPU 模拟只是系统的一部分。PC 软件还需要中断控制器、定时器、键盘接口、视频硬件、磁盘和声音设备。FRANK 必须重现足够多的组件,才能让软件识别出一台完整的 IBM 兼容机。

当前功能列表包括最高 640×480 像素分辨率的 VGA 和 HDMI 输出。存储依赖装有软盘、硬盘或 CD-ROM 镜像的 SD 卡。用户可根据固件配置连接 PS/2 设备,或 USB 键盘和鼠标。

音频支持覆盖了 PC 历史上多个时期的多种标准,包括 PC speaker、AdLib OPL2、Sound Blaster 16、Tandy audio、Covox 和 Disney Sound Source。这种广度很重要,因为 DOS 游戏往往会直接调用特定的声音硬件。

FRANK 还配备磁盘管理器,可在模拟器运行期间更换虚拟介质。设置界面能够控制内存大小、处理器代际、浮点模拟、声音设备、输入选项和硬件时钟设置。这些控制项让该系统更像一台可配置的复古 PC,而非固定的演示程序。

该模拟器可提供一到八兆字节的客户机内存。要达到上限,需要八兆字节的外部伪静态 RAM,通常称为 PSRAM。PSRAM 是以更简单接口呈现的外部动态内存,适合嵌入式设计。

这一要求带来了重要区别。标准 Pico 2 板载 520KB SRAM,但并没有八兆字节 PSRAM。因此,要构建完整机器,需要一块兼容的 RP2350 开发板,配有额外内存以及合适的显示、存储和输入连接。

支持的硬件列表反映了这一现实。FRANK 面向其自有开发板、Murmulator 的不同版本、Olimex PICO-PC 以及 Waveshare RP2350-PiZero。四种 GPIO 布局适配这些开发板连接视频、存储、键盘、控制器和音频的不同方式。

这并不是适用于每一块未经改装 Pico 2 的通用固件镜像。它是一款围绕一系列预先配置好的 RP2350 计算机设计的模拟器。这一区别既保留了成果的亮点,也没有掩盖复现它所需的硬件条件。

该项目还依赖存储在 SD 卡上的 BIOS 文件和操作系统磁盘镜像。用户必须自行提供有权使用的软件。FRANK 提供虚拟机,但并未消除商业操作系统和游戏相关的授权问题。

最重要的是,该项目将这些组件整合为一个可启动环境。微控制器如今能够向旧软件提供实体 PC 所应具备的接口。这种整合也形成了核心张力:灵活性能否弥补严苛的资源限制。

为什么 RP2350 能承载完整的 PC 模型

RP2350 能做到这一点,是因为可预测的 I/O 和软件控制与原始处理器速度同样重要。

Raspberry Pi 的 RP2350 specification 显示,该芯片配备两颗最高可运行于 150MHz 的 Arm Cortex-M33 核心,或两颗 Hazard3 RISC-V 核心。芯片内置 520KB SRAM,并支持 USB 主机和设备模式。它还提供十二个可编程 I/O 状态机。

可编程 I/O,通常简称 PIO,是一组用于执行短程序、通过引脚传输数据的小型硬件引擎。这些引擎能够处理对时序要求严格的信号,无需主处理器管理每一次状态转换。这一设计有助于嵌入式系统生成视频信号,或与非常规外设通信。

FRANK 正需要这类控制能力。VGA 输出要求持续输送具备准确时序的像素和同步数据。SD 卡访问、键盘输入、鼠标处理、游戏控制器和音频都会争夺处理时间和引脚资源。

传统计算机会将其中许多任务交给专用硬件。微控制器项目则必须在软件、固定外设、DMA 和可编程 I/O 之间分配这些任务。DMA,即直接内存访问,可在不让 CPU 逐项复制数据的情况下完成传输。

RP2350 包含三个 PIO 模块,每个模块配有四个状态机。Raspberry Pi 的 PIO documentation 表示,这些状态机强调确定性时序,以及与 GPIO 和 DMA 的紧密集成。FRANK 可利用这些特性,在主核心运行模拟器的同时维持外部接口。

该项目并未局限于芯片公布的 150MHz 工作目标。其构建配置提供 378MHz 或 504MHz 的 RP2350 时钟设置,也允许外部 PSRAM 运行于 133MHz 或 166MHz。

这些设置意味着大幅超频。超频是指让组件运行在其文档规定频率之上,可能提高性能,同时缩小时序、电压和散热余量。一项在某块开发板上可用的设置,在另一块板上可能表现不同。

模拟器的默认构建采用 378MHz CPU 设置和 133MHz PSRAM 设置。自定义构建可选择 504MHz 以及更快的外部内存。运行时设置也可以在重启前修改处理器和内存频率。

这一机制说明,FRANK 并非仅仅是更新硅片带来的直接结果。开发者结合了高效模拟器核心、激进的时钟设置、外部内存和精心分配的外设。每一项都在弥补其他部分留下的限制。

外部 PSRAM 提供了 32 位 PC 软件所需的容量,但访问成本高于片上 SRAM。超频为解释器带来更多周期,但这些周期无法消除所有内存延迟。PIO 能减轻 I/O 压力,却不能执行 x86 指令。

因此,工作负载依赖于统筹协调。客户机代码运行时,视频生成必须保持稳定。磁盘操作不能破坏对时序敏感设备的正常运行。音频模拟必须持续产出规律的采样数据,同时不能让被模拟的处理器缺乏资源。

这种统筹也是基于 RP2350 的开发板受到模拟器开发者青睐的原因。该芯片允许直接控制底层硬件行为,无需依赖下方的桌面操作系统。开发者几乎可以控制客户机软件与引脚之间的每一层。

一台完整的 Linux 计算机可以凭借更多资源运行成熟模拟器。然而,它也会引入更庞大的软件栈、更高的内存使用量和更少的直接时序控制。FRANK 探索的是相反的路线:通过严密管理资源,让小型主机重现一台更庞大的历史机器。

FRANK 将 Tiny386 路线扩展至原始主机之外

该项目的核心较量,是完整系统的雄心与通常适合微控制器的更窄范围模拟器之间的竞争。

FRANK 基于 Chunhui He 的 Tiny386 core,这是一款最初与 ESP32 级别硬件相关联的模拟器。Tiny386 以紧凑的 C 代码实现主要的 x86 执行机制,也吸收了成熟项目中的外设理念。

FRANK 开发者 Mikhail Matveev 和 DnCraptor 将这一基础移植到 RP2350。他们的代码库将 i386 处理器及核心 PC 外设模拟归功于 Tiny386,也列出了为平台思路或组件实现作出贡献的多个项目。

其中一个前身项目是 Pico-286 emulator。Pico-286 面向 RP2040 和 RP2350 硬件运行 8086、8088、80186 和 286 软件。它的出现证明,Pico 级微控制器能够承载实用的早期 PC 环境。

从 286 模型转向 i386 模型意义重大。i386 引入了 32 位编程模型和与更高要求操作系统相关的分页功能。围绕这些能力构建的软件,期待的是更广泛、更复杂的机器。

FRANK 并未止步于严格的 i386 行为。对后续部分指令的支持,帮助它运行原本会拒绝旧处理器的软件。这是务实的兼容性选择,尽管它让这台机器不再是对某一历史 PC 的精确复现。

同样务实的思路也体现在外设集合中。真实计算机通常不会同时配备所有列出的声音设备。模拟器则可提供可选的硬件模型,因为兼容性比重现某一出厂配置更重要。

这让 FRANK 与游戏主机模拟走上不同分支。游戏主机拥有相对固定的硬件目标和受控的软件库。PC 则必须接纳面向多种配置编写的操作系统、驱动程序、BIOS 交互、存储布局和应用程序。

这种开放性同时增加了吸引力与难度。用户可以安装熟悉的生产力软件、游戏、工具或操作系统。然而,每个程序都可能触及硬件模型的不同角落,并暴露另一项缺失的行为。

FRANK 的传承也展现了开源模拟器项目如何逐步累积能力。Tiny386 提供核心执行模型。Pico-286 提供 RP2350 集成理念和磁盘管理思路。源自 QEMU 的组件则帮助呈现经典 PC 外设。

SeaBIOS 提供开源 BIOS 基础,FatFs 负责 FAT 格式存储访问。其他代码支持声音合成、配置文件和特定开发板输入。最终成果与其说是一项孤立的发明,不如说是对可复用系统工程成果的精心组合。

这一模式不同于围绕更简单处理器设计一台定制复古计算机。定制机器只需定义其创建者需要的功能。FRANK 接受了数十年 PC 软件所形成的、难度高得多的兼容性目标。

这一选择给其他微控制器复古项目带来了压力。用户越来越期待固件提供完善的菜单、可移动存储介质、多种输入方式和声音支持。如今,一个只能进入命令提示符的技术验证项目,必须与那些体验更接近完整产品的项目竞争。

FRANK 在保持工程项目属性的同时提高了这一期待。其仓库提供构建脚本和开发板配置,但安装仍需要兼容硬件和已准备好的存储设备。目标受众依然需要熟悉固件、接线和磁盘镜像。

这一限制并未削弱项目的重要性。它揭示了可复现的业余电脑与消费级设备之间当前的边界。跨越这条边界,需要更完善的封装、经过测试的镜像,以及针对常见软件的性能文档。

真正的限制是性能一致性,而非启动画面

启动 Windows 或 Linux 证明了兼容性,但并不意味着具备速度、准确性或日常使用可靠性。

仓库称 FRANK 可以启动 DOS、Windows 3.x、Windows 95、Linux 和其他系统。这是一项有价值的兼容性说明,但它并未提供关于启动时间、应用性能、帧率或模拟处理器吞吐量的标准化基准测试。

这一缺口很重要,因为模拟性能会随工作负载而变化。文本编辑器可能长时间等待输入;而游戏则会持续占用 CPU、图形、计时器、音频和存储资源。

操作系统成功进入桌面,测试的行为也不同于长时间运行应用程序。安装程序可能需要进行内存检测、切换保护模式以及执行非常规磁盘访问。FRANK 的故障排除说明已经记录了 Windows 95 安装和启动所需的特定处理方式。

例如,当安装程序报告没有可用内存时,文档建议跳过一次安装内存检查。它还引导用户使用单独的补丁来解决 Windows 保护错误。这些变通方案表明项目取得了有价值的进展,同时也说明兼容性仍有条件限制。

8MB 的客户机内存上限带来了另一条边界。对于许多 DOS 程序和早期 Windows 应用而言,这一容量相当充裕;但对于后期 Windows 95 软件或更具雄心的 Linux 配置来说,依然相当紧张。

内存容量只是问题的一部分。模拟器需要在不同架构的处理器上,反复翻译或解释客户机指令。它还必须呈现各种设备,而这些设备的时序假设源于物理总线和专用控制器。

一些旧程序会刻意与精确的视频或处理器行为同步。演示程序和游戏可能依赖未公开的时序效应。即使硬件模型在功能上正确,只要这些假设被打破,仍可能出现视觉错误或节奏不正确的问题。

音频则带来了另一层敏感性。Sound Blaster 软件可能依赖中断时序、DMA 行为和缓冲区填充节奏。在电子表格中不易察觉的短暂延迟,可能变成可听见的爆音,或导致游戏卡顿。

相关的社区讨论很快聚焦于这一不确定性。评论者称赞这台机器的规模,但也反复询问性能表现。另一些人指出,依赖时序的软件始终是虚拟机和模拟器难以处理的问题。

这些评论属于用户反应,而非受控测试。不过,它们指出了正确的怀疑方向。当兼容性列表中的每一项都附有已测试版本、配置设置、观察到的速度和已知故障时,这份列表会更有参考价值。

超频使这些证据变得更复杂。504MHz 下获得的结果不一定能代表每一块 RP2350 开发板。稳定性可能取决于芯片个体差异、电源质量、散热、板卡布局和外接 PSRAM。

该项目支持四种开发板布局,拓宽了可用范围,但也扩大了测试矩阵。HDMI 与 VGA 路径可能消耗不同的资源。在一种配置中,USB 输入会禁用 USB 串口控制台,从而改变用户诊断故障的方式。

因此,谨慎的解读应区分三项主张。FRANK 显然实现了尝试构建完整 PC 环境所需的组件。开发者报告称,多个操作系统能够启动。至于速度与兼容性的更广泛主张,仍需要可重复的测量结果。

一套有用的基准测试不应只覆盖一个吸睛应用。它可以衡量 DOS CPU 基准、存储吞吐量、VGA 更新速度、音频稳定性和操作系统启动时间。每项结果都应注明开发板、时钟频率、PSRAM 设置、显示模式和固件版本。

准确性测试还会增加另一层维度。指令测试套件可以检查标志位、异常和保护模式行为;硬件测试则可以探测中断顺序、计时器分辨率、VGA 寄存器以及声卡通信。

这些测试不会削弱项目的魅力,反而会使其成果更易比较和复现。它们还能帮助开发者判断故障究竟来自模拟器、客户机软件,还是不稳定的超频。

在这些证据出现之前,应将 A 386 PC for Your RP2350 视为一个异常完整且前景可期的移植项目。它尚不能作为成熟桌面模拟器或原始硬件的经过验证的替代品。

微控制器模拟正在成为一个平台类别

FRANK 表明,灵活的微控制器如今已能支持过去仅属于应用处理器的系统级项目。

RP2350 已经吸引了主机模拟器、视频生成器、合成器和早期 PC 环境等移植项目。这些项目遵循共同策略:结合两个通用核心、可编程 I/O、DMA、外部内存和直接硬件访问。

微控制器不同于桌面电脑或单板 Linux 计算机中的应用处理器。它通常运行单一固件镜像,没有虚拟内存或通用主机操作系统。这种更简单的环境让开发者拥有可预测的控制能力,但资源也更有限。

模拟器作者可以利用这种可预测性。一个核心可以专注于客户机执行,另一个则负责视频、音频或存储。即使处理器遇到高成本工作负载,硬件状态机仍可维持外部信号。

这种分工对复古系统尤其有价值。较旧的显示设备和输入设备往往更需要稳定时序,而非极高带宽。它们原有的处理器也远慢于当代微控制器核心,因此为软件解释留下了空间。

与 8 位主机相比,i386 将这一公式推进得更远。它带来了保护模式、更大的地址空间、复杂指令和庞杂的 PC 外设集合。FRANK 的成功表明,当前的限制更取决于整机系统设计,而非某一个醒目的时钟频率。

该项目也改变了复古电脑的外观形态。传统复刻方案会使用原始芯片、现场可编程门阵列或 Linux 开发板。RP2350 方案则处于这些方法之间。

原始组件能够提供历史行为,但可能稀缺且难以集成。FPGA 设计会直接复现数字逻辑,通常具备较强的时序特性。Linux 系统提供成熟的模拟器和丰富资源,但也将机器隐藏在一台更大的计算机之下。

微控制器模拟器则保持小巧且易于审视。开发者可以追踪固件、分配单独引脚,并理解每个外设如何连接到客户机。其代价是,软件必须在有限的性能预算内完成更多工作。

这一妥协让这些项目的价值不止于怀旧。它们展示了高压条件下的调度、内存管理、协议实现和实时 I/O。开发者可以研究复杂系统如何被精简,同时又不至于面目全非。

FRANK 也说明了可移植 C 实现的价值。紧凑的模拟器核心能在 ESP32 和 RP2350 硬件之间迁移,因为它避免了对某一种主机操作系统的深度依赖。随后,特定开发板的适配层将核心连接到视频、存储和输入设备。

由于显示与 I/O 技术因芯片而异,可移植性仍不完整。并非每一种微控制器都拥有 RP2350 PIO,外部内存接口和 DMA 行为也各不相同。

尽管如此,可复用的核心改变了实验的成本结构。开发者无需在测试新开发板前重新构建一个 x86 解释器,而可以专注于内存布局、外设调度和主机特定加速。

由此产生的竞争是积极的。Pico-286 可以针对更早期的 PC 软件和更低的需求进行优化;FRANK 可以追求 32 位兼容性;主机项目则可以牺牲通用性,以换取更高帧率和更精确的硬件行为。

没有任何一种路线能赢得所有使用场景。它们的共存表明,微控制器模拟已经成为一个平台类别,而不再只是一组彼此孤立的炫技项目。共享开发板、固件格式和硬件模式,可以支撑多种复刻机器。

三个信号将表明 FRANK 是否能超越演示项目

下一阶段取决于可测量的性能、更广泛的兼容性证据,以及在受支持开发板上更容易复现的能力。

第一个信号是一套已发布的基准测试。FRANK 需要提供将客户机性能与固件版本、开发板型号、CPU 时钟、PSRAM 速度和视频模式关联起来的结果。可重复的数据将显示,RP2350 移植版是否能稳定优于早期 Tiny386 主机。

一套基准测试也能阐明两个可用超频目标的价值。如果更高设置能在多块开发板上带来显著提升且不产生错误,项目的性能论据就会更有说服力。频繁崩溃或画面损坏则会削弱这一论据。

第二个信号是公开的兼容性目录。启动截图能吸引关注,但持续测试能提供更好的证据。报告应覆盖安装过程、应用程序、游戏、音频模式、磁盘格式和输入设备。

有用的目录应区分完全可用的软件与仅能启动的程序,并记录所需补丁和特殊配置选项。这些信息将把零散的用户实验转化为工程资源。

第三个信号是更简单的部署方式。预构建固件已经降低了一部分门槛,但特定开发板的硬件需求和存储准备工作仍然重要。清晰的接线指南、经过验证的配件组合和版本化配置示例,将使结果更容易复现。

部署改进还将揭示,该项目能否在不压垮维护者的情况下支持新用户。若围绕接线和磁盘设置的 issue 积压不断增长,可能意味着封装存在问题;若社区贡献增加开发板支持、测试或文档,则表明平台正在变得更健康。

这些信号比又一个不寻常的启动目标更重要。FRANK 已经表明,RP2350 可以承载一台 32 位 PC 的基本轮廓。剩下的问题是,是否有许多用户能够复现同一台机器,并获得可比较的行为表现。

开发者应关注仓库的发布版本、兼容性报告和基准测试贡献。复古计算爱好者在选择平台之前,应将这些结果与 Pico-286、桌面模拟器和原始硬件进行比较。开发板设计者则应关注哪些内存与视频配置能带来最少的妥协。

A 386 PC for Your RP2350 引人入胜,正是因为它的限制仍然清晰可见。每一兆字节、每一个时钟周期和每一条 I/O 路径都必须证明自身的价值。这种压力使该项目成为对模拟工作原理格外清晰的展示。

仅在硬件兼容、固件设置已有文档说明、且软件可合法使用的前提下尝试该项目。随后,记录的不应只是桌面是否成功显示:还要衡量哪些功能能够运行、运行表现如何,以及是哪种配置使这一结果成为可能。

 
 

免费开始

一款本地优先的AI助手

为了获得更好的人工智能体验,

remio 目前仅支持Windows 10+ (x64)M-Chip Mac

你的 AI 工作伙伴

remio 一起高效工作

规划、创作、交付

一站式完成

bottom of page