ESC
开源 2 分钟阅读

为你的 RP2350 打造一台 386 PC

开源固件项目 frank-386 可将 Raspberry Pi Pico 2(RP2350)等开发板变成一台 386 PC,支持 VGA/HDMI 输出、SD 卡、PS/2 或 USB 键盘及 I2S 音频,可运行 DOS 系统。项目提供 M1/M2/PC/Z2 四种 GPIO 布局,需 8MB PSRAM 与 SeaBIOS 等文件,CPU 可超频至 504MHz,并附带完整构建脚本与配置说明

来源:Hacker News

该固件专为集成 VGA/HDMI、SD 卡和键盘输入的 RP2350 开发板设计:

  • Raspberry Pi Pico 2(RP2350)或兼容开发板
  • 8MB PSRAM(扩展内存所需)
  • VGA 或 HDMI 接口
  • SD 卡模块(SPI 模式)
  • PS/2 键盘(直连)- 或 - USB 键盘(通过原生 USB 端口)
  • 音频输出(可选):I2S DAC 或 PWM

注意: 启用 USB HID 后,原生 USB 端口将用于键盘/鼠标输入。此模式下 USB 串口控制台(CDC)被禁用;请使用 UART 进行调试输出。

支持四种 GPIO 布局:M1、M2、PC(Olimex)和 Z2(Waveshare)。

信号 M1 GPIO M2 GPIO

基址 6 12

范围 6-13 12-19

SD 卡(SPI 模式)

信号 M1 GPIO M2 GPIO

CLK 2 6

CMD 3 7

DAT0 4 4

DAT3/CS 5 5

PS/2 键盘

信号 M1 GPIO M2 GPIO

CLK 0 2

DATA 1 3

PS/2 鼠标

信号 M1 GPIO M2 GPIO

CLK 14 0

DATA 15 1

NES/SNES 游戏手柄

信号 M1 GPIO M2 GPIO

CLK 14 20

DATA 16 26

LATCH 15 21

I2S 音频

信号 M1 GPIO M2 GPIO

DATA 26 9

BCLK 27 10

LRCLK 28 11

SD 卡设置

目录结构

在 SD 卡上创建一个 386/ 目录:

SD 卡根目录/ └── 386/ ├── config.ini # 配置文件 ├── bios.bin # SeaBIOS ROM(必需) ├── vgabios.bin # VGA BIOS ROM(必需) ├── dos622.img # 硬盘映像 ├── boot.img # 软盘映像 └── ... # 其他磁盘映像

BIOS 文件

从 SeaBIOS 发布页下载 SeaBIOS 和 VGA BIOS,或使用 sdcard/386 中的 bios.bin/vgabios.bin。

[pc] mem=8M bios=bios.bin vga_bios=vgabios.bin

[frank-386] cpu_freq=504 psram_freq=166

准备磁盘映像

软盘映像(.img):

启动时: 如上所示在 config.ini 中配置磁盘映像。

通过磁盘管理器所做的更改会自动保存到 config.ini。

键盘快捷键

快捷键 操作

Win+F12 打开磁盘管理器

Win+F11 打开设置菜单

Ctrl+Alt+Delete 系统复位(发送给客户操作系统)

设置菜单(Win+F11)

在运行时配置模拟器设置:

设置保存到 config.ini,重启后生效。

前提条件

  1. 安装 Raspberry Pi Pico SDK(2.0 及以上版本)
  2. 设置环境变量:export PICO_SDK_PATH=/path/to/pico-sdk
  3. 安装 ARM GCC 工具链

构建步骤

# 克隆仓库
git clone https://github.com/rh1tech/frank-386.git
cd frank-386

# 使用默认设置构建(M2 开发板、378MHz、PS/2 键盘)
./build.sh

# 为 M1 开发板构建
./build.sh -M1

# 构建支持 USB 键盘的版本
./build.sh --usb-hid

# 自定义构建
./build.sh -b M1 -c 504 -p 166 --debug

构建选项(build.sh)

选项 说明

-b, --board <M1|M2|PC|Z2> 开发板型号(默认:M2)

-c, --cpu <MHz> CPU 频率:378(默认)、504

-p, --psram <MHz> PSRAM 频率:133(默认)、166

--usb-hid 启用 USB 键盘(禁用 USB 串口)

--hdmi 强制 HDMI 输出

--debug 启用调试输出

-clean 先清理构建目录

构建选项(CMake)

选项 说明

-DPICO_BOARD=pico2 针对 RP2350 构建(默认)

-DBOARD=M1 使用 M1 GPIO 布局

-DBOARD=M2 使用 M2 GPIO 布局(默认)

-DBOARD=PC 使用 Olimex PICO-PC 布局

-DBOARD=Z2 使用 Waveshare RP2350-PiZero 布局

-DCPU_SPEED=378 CPU 时钟频率,单位 MHz(378、504)

-DPSRAM_SPEED=133 PSRAM 时钟频率,单位 MHz(133、166)

-DUSB_HID_ENABLED=ON 启用 USB 键盘(禁用 USB 串口)

-DDEBUG_ENABLED=ON 启用详细调试日志

-DFORCE_HDMI=ON 强制 HDMI 输出

发布版本构建

构建所有固件变体:

交互式(提示输入版本号)

./release.sh

指定版本号

./release.sh 1.02

这会在 release/ 目录中生成固件文件: