PineTime 是由 Pine64 开发的一款开源且价格合理的智能手表。与高端智能手表不同,它被设计为一个可编程设备,配备 64 MHz ARM Cortex-M4 处理器,且内存占用非常有限,仅有 64 KB 的 RAM。由于蓝牙堆栈和 MicroPython 运行时环境占据了很大一部分内存,开发者仅剩下约 12 KB 的 RAM 用于应用程序。这种限制要求软件必须高度优化,并具备高效的资源管理能力。

这张图片展示了 PineTime 硬件,它是 wasp-os 项目的运行平台。
为了解决 wasp-os 项目停滞的问题,一名开发者最近进行了一次重大重构,将该操作系统从 2019 年的 MicroPython 分支迁移到主流 MicroPython 发行版。此次过渡涉及向上游 MicroPython 项目提交了三个拉取请求——涵盖冻结的本地代码、PWM 分配以及 ADC 采样时间选项——这些请求随后已被合并。此次更新还引入了多项技术改进:构建系统现在使用 `uv` 工具进行管理的 Python 工具链,通过 `bleak` 库进行的蓝牙固件闪存速度更快且描述更清晰,并且实现了一个看门狗,可在系统挂起时自动重置手表。
其中最关键的优化之一涉及外部闪存文件系统。通过将文件系统与芯片原生的 4 KB 块对齐,开发者消除了一个永久性的 4 KB 缓冲区,将启动时可用的空闲 RAM 从 7.1 KB 增加到 12.4 KB。虽然从绝对数值来看这是微小的增加,但它占到了设备总可用内存的很大比例。尽管有了这些改进,硬件依然受到高度限制;例如,一张单张全屏原始像素图像就会消耗近三分之一的 330 KB 固件闪存限制,这导致开发者实现了一种自定义的行程长度编码(RLE)图像格式,以将占用空间控制在 12 KB 以内。虽然目前的 PineTime 仍是 MicroPython 爱好者的一个小众平台,但其后续型号 PineTime Pro 预计将提供更强大的环境,配备双核处理器和 AMOLED 屏幕。

此视觉效果展示了 PineTime 的显示输出,由于内存限制,它需要优化的图像格式。