Github上复古嵌入式项目,把 Palm OS 跑进了 ESP32+墨水屏

\n

最近看到一个项目,名字叫 Dragonfruit。它干的事挺有意思:不是做一个 Palm OS 皮肤,也不是把几张 Palm 界面截图贴到墨水屏上,而是真的在 ESP32 设备上模拟一台68k Palm,更准确点说,它模拟的是 Motorola MC68EZ328,也就是当年 Palm IIIx 这类机器里面那颗 DragonBall EZ,一看这个名字就很有年代感。

Github地址:

https://github.com/megabytefisher/Dragonfruit

左边是真 Palm IIIxe,右边是 M5Paper。右边这个白色墨水屏设备里跑出来的 Launcher,不是图片,是 Palm OS 3.x 真启动后的界面。

这类项目最怕只做到“像”。图标像、字体像、外壳像,最后其实就是个怀旧主题。Dragonfruit 不是这个玩法,它更像是把一台 Palm 的硬件行为重新捏出来,然后让原版 Palm OS ROM 自己跑起来。

Github上复古嵌入式项目,把 Palm OS 跑进了 ESP32+墨水屏

简单讲就是:ESP32 负责跑模拟器,PSRAM 放 Palm 的 RAM 和 ROM 镜像,墨水屏显示原有的Palm 的 160x160 黑白画面,触摸屏负责把手指/笔的位置变成 Palm 能理解的 pen event。

这个项目里几个主要器件挺关键。

第一个是 ESP32-D0WDQ6-V3。M5Paper 上这颗是双核 240MHz,纯解释器能跑,但速度不够舒服,所以设备端还做了 burst JIT,把热点 68000 ROM 代码翻译成 Xtensa 本机代码。JIT 编译器跑在第二个核上,不是随便拿个 ESP32 点亮屏幕。

第二个是 8MB PSRAM。Palm IIIx 的模拟 RAM 是 2MB,ROM 镜像也要放进去。README 里直接说了,没有外部 PSRAM 不行,像 ESP32-C3 那种单核、没 PSRAM 的芯片就别想了。

第三个是 IT8951 墨水屏控制器。M5Paper 是 960x540 的电子纸屏,而 Palm 原来是 160x160、1bit framebuffer。Dragonfruit 要把 Palm 的小黑白画面放大、旋转,再把 Graffiti 那块丝印区叠到下面。墨水屏刷新慢,所以显示这块不能当普通 LCD 随便刷。

Github上复古嵌入式项目,把 Palm OS 跑进了 ESP32+墨水屏

第四个是 GT911 电容触控。Palm 原来是电阻屏和触控笔,M5Paper 是电容屏。

第五个是 SD 卡。Palm OS ROM 不随项目分发,因为有版权。你得自己从拥有的 Palm 设备里导出 ROM,放到 FAT32 SD 卡根目录,命名为 palm.rom。启动时固件读进 PSRAM。SD 卡里还可以放 PRC/PDB/PQA,让系统启动时安装;也可以放备份目录,把 Palm 数据库导出来。

上面这张图更有意思。M5Paper 上已经能跑 Graffiti 手写练习了。你看它不是只能进 Launcher,触控、手写区、按钮区这些都已经能跟 Palm OS 对上。

很多模拟器项目,启动系统那一刻最激动,后面就没下文了。Dragonfruit 反而是在这些小地方下功夫:首次启动向导、触控校准、国家/时间/日期设置、Graffiti 输入、Apps/Menu/Calc/Find 这些丝印按钮、睡眠和自动关机、数据库安装和备份。

觉得这个项目复古好玩,不是因为 Palm OS 多先进。现在看 Palm,那套东西当然很老了,160x160 黑白屏、Graffiti 手写、Date Book、Memo Pad,都是上个时代的东西。但它放在 M5Paper 上,突然又顺眼了。墨水屏本来就慢,Palm OS 本来也不追求花哨动画;Palm 的黑白 UI 碰上电子纸,反而比很多现代系统更合适。再加上 ESP32、PSRAM、JIT、触控映射、SD 卡这些嵌入式细节,整个项目就不是单纯怀旧,而是一次挺完整的“旧系统搬家”。

暂无评论,快来发表第一条评论吧!

📮 需求咨询