rePalm项目的作者从头重写了Palm OS,并计划将其转变为智能手表平台。

而且,显然,Palm OS上的手表会找到他们的买家:


图片


Palm OS是一种用于手持式计算机的操作系统,从1998年到2000年代上半年,它一直处于普及高峰。 它非常简单,不需要资源,小心消耗电池电量,并且特别设计用于手持式计算机。 但是在2004-2005年,Palm OS设备让位给Windows Mobile设备:


图片
(来源)


发生这种情况的原因有很多,部分是由于管理错误,部分是由于操作系统本身的特殊性:2004年,Palm OS拖了很长的向后兼容性,这阻止了它的发展和前进。 值得一说的是,缺少内存保护:在Windows 9x或Mac OS 9时代,应用程序中的错误可能会导致整个操作系统的冻结或崩溃。或者文件系统的实现:文件作为记录存储在数据库中,并且一个记录的大小不能超过64 KB。 大概在1996年,这是一个很好的解决方案,但是这种数据存储系统不适用于后来出现的大型多媒体文件和存储卡。


好吧,您不能忽略Palm OS 5.0中从Motorola 68k到ARM的体系结构更改。 然后,为了与较早的应用程序兼容,在操作系统中添加了二进制转换器,该指令将指令从M68k即时转换为ARM。 原则上,即使有这样一个层,旧的应用程序在新处理器上的运行也不会比其本机68K差,因为Palm OS系统调用是在ARM上本地进行的,并且与摩托罗拉Dragonball相比,新处理器的频率增加了数倍,从而抵消了广播性能的损失。 真正的问题是开发人员没有获得用于创建本机ARM应用程序的工具。 Palm OS 5的代码仍被编译为68k,甚至标准应用程序也可以通过转换器层工作。


尽管如此,尽管Palm OS具有许多体系结构功能,但它的优势并没有停止。 它仍然是一个简单的,低级别的,低资源的系统。 在2015年,我将带有16 MHz处理器的Palm Pilot用作日常计划,我感到非常舒适! 此外,许多人正是出于简单性而爱上该系统,并且许多人具有足够的基本应用程序。 读者,玩家,日记和计划者,游戏-在Palm OS下,所有这些都大量存在。 您可以在今天找到此操作系统的应用程序。


因此,经过这么多年,该系统的粉丝社区得以幸存下来,该社区支持具有应用程序的站点,维护其自己的子目录,并继续使用棕榈树。


图片


但是其中一位社区成员走得更远,决定将Palm OS转移到更现代的硬件上,并为该项目找到有用的应用程序。


Google程序员德米特里·格林伯格(Dmitry Greenberg)自2003年以来就一直在为Palm OS设备创建调整和黑客手段,其中包括用于PDA超频的程序WarpSpeed和用于SDHC存储卡的驱动程序PowerSDHC。


在Google,Dmitry主要处理嵌入式系统。 特别是,他参与了Android Wear智能手表,Nexus Q媒体播放器和Android TV平台的操作系统开发。


从Google退休后,Dmitry决定创建一个基于Palm OS 5.x的智能手表平台,该操作系统的最新更新时间为15年前:


图片


乍一看,该计划非常出色:就资源消耗和电池寿命而言,现代智能手表平台不可能与Palm OS相提并论。


问题是Palm OS源代码从未发布过。 是的,一些源代码出现在应用程序开发教科书的公共领域中,但这还不够。 消息来源是针对PalmSource和被许可方的,当然,主要是那些以NDA条款在Palm OS上发布了其设备的公司。 因此,经过这么多年无法找到该操作系统的源代码,并且使用它的合法性将受到质疑。


对于大多数具有钢筋混凝土意志力的铁杆爱好者来说,这仍然是一条艰难而棘手的道路:逆向工程。 德米特里就是通过这条路径分阶段逐步选择实施他的计划。


首先,您应该编写一个用于解压缩Palm OS设备的ROM映像的工具。 然后有必要拆解从解压缩后的映像获得的操作系统的主要组件。 然后-最长且最单调的工作-您应该了解系统API函数的逻辑,并编写自己的这些函数的实现。 而且,最困难的事情是编写操作系统的内核,因为现有的内核(例如linux)不支持某些Palm OS内核功能(线程暂停,打开/关闭抢先式多任务处理)。


您可以在Dmitry的博客上从头开始阅读重写Palm OS的完整历史,我仅简要回顾主要阶段的实现。 Dmitry花了几个月的时间来实现系统API,足以加载操作系统。 再花几周的时间(用于图形子系统的逆向工程),再花两个月的时间(用于编写支持绘图的代码)。 至此,已实现的功能足以在QEMU的Linux内核之上启动操作系统,并在此环境中加载某些Palm OS设备的映像。


rePalm的*第一*靴子(c)德米特里·格林伯格
rePalm的第一双靴子(c)德米特里·格林伯格


为了从仿真器转变为真实的硬件,仍然有必要解决许多问题:选择一个有据可查且稳定的工作硬件平台,为所选架构编写OS内核,在Thumb中编写ARM转换器(Dmitry选择的Cortex-M4处理器仅支持双字节Thumb指令,当时同时许多Palm OS组件使用完整的4字节ARM指令),并编写JIT编译器(!!!),以便双翻译M68k-> ARM-> Thumb以足够的速度运行。


经过一年的积极开发,rePalm在STM32F429调试板上启动,图形,触摸屏和SD卡可以工作,通过HotSync进行同步可以工作,并且大多数在Palm OS 5.x下编写的应用程序和游戏也可以正常工作。 该计划包括对Wi-Fi和蓝牙的支持,对声音的支持以及在大容量存储模式下通过USB连接设备以及更新SSL库。 Dmitry在他的博客文章的发展中对其进行了补充,并定期将项目更新发布到r / Palm subreddit上


图片
(c)德米特里·格林伯格




跟随一个热情的人的工作,并观察一个有趣而雄心勃勃的项目是如何发展的,这是很高兴的。 但是值得记住的是,德米特里(Dmitry)主要是一名工程师和程序员。 对他来说,解决工程问题(使Palm OS与现代世界保持一致)的解决方案要比制造商业产品(无论是智能手表还是其他产品)更高。 我确信该项目将有许多有趣的应用程序,但是接下来会发生什么,以及我们是否会看到现代版本的Fossil WristPDA很难说。 仍然希望德米特里好运并跟随rePalm的发展。


图片
(c)德米特里·格林伯格


PS感谢Newbilius提出了从博客此处重新发布本文的想法。 更多的人应该知道这样的酷项目!

Source: https://habr.com/ru/post/zh-CN452692/


All Articles