Автор проекта rePalm переписал Palm OS с нуля и планирует превратить её в платформу для смарт-часов

    И, видимо, часы на Palm OS найдут своего покупателя:


    image


    Palm OS — операционная система для карманных компьютеров, бывшая на пике популярности с 1998 года по первую половину 2000-х. Она очень простая и не требовательная к ресурсам, бережно расходует заряд аккумулятора и замечательно спроектирована для использования в карманных компьютерах. Но в 2004–2005 годах устройства на Palm OS уступили место устройствам на Windows Mobile:


    image
    (source)


    Это произошло по разным причинам, частично — из за ошибок менеджмента, отчасти — из за особенностей самой операционной системы: в 2004 году Palm OS тащила за собой длинный хвост обратной совместимости, который мешал ей развиваться и двигаться вперёд. Чего стоило, например, отсутствие защиты памяти: ошибка в приложении могла привести к зависанию или падению операционной системы целиком, как во времена Windows 9x или Mac OS 9. Или реализация файловой системы: файлы хранились в виде записей в базе данных, и размер одной записи не мог превышать 64 килобайта. Наверное, в 1996 году это было неплохим решением, но такая система хранения данных оказалась не приспособленной под большие мультимедиа файлы и карты памяти, появившиеся позднее.


    Ну и нельзя обойти стороной смену архитектуры в Palm OS 5.0 с Motorola 68k на ARM. Тогда для совместимости со старыми приложениями в операционную систему добавили бинарный транслятор, который на лету перекодировал инструкции из M68k в ARM. В принципе, даже с такой прослойкой старые приложения работали на новых процессорах не хуже, чем на родных 68K, поскольку cистемные вызовы Palm OS выполнялись нативно на ARM, а потерю производительности от трансляции нивелировала возросшая в несколько раз частота новых процессоров по сравнению с Motorola Dragonball. Настоящая проблема была в том, что разработчики не получили инструментов для создания нативных ARM приложений. Код для Palm OS 5 по-прежнему компилировался под 68k, и даже стандартные приложения работали через прослойку транслятора.


    Тем не менее, несмотря на множество архитектурных особенностей Palm OS, её сильные стороны не перестали быть сильными. Это по-прежнему простая, низкоуровневая, нетребовательная к ресурсам система. В 2015 году я пользовался Palm Pilot с процессором на 16 МГц как ежедневником, и мне было совершенно комфортно! Более того, многие любили эту систему именно за простоту, и многим было достаточно базовых приложений. Читалки, плееры, ежедневники и планировщики, игры — всё это существует под Palm OS в избытке. Найти применение этой операционной системе можно и сегодня.


    Поэтому по прошествии стольких лет сохранилось сообщество фанатов этой системы, которое поддерживает сайты с приложениями, ведёт собственный сабреддит и продолжает пользоваться палмами.


    image


    Но один из участников сообщества пошёл дальше, решив перенести Palm OS на более современное железо и найти этому проекту полезное применение.


    Дмитрий Гринберг, программист из Google, с 2003 года создавал твики и хаки для устройств на Palm OS, среди которых WarpSpeed — программа для “разгона” КПК, и PowerSDHC — драйвер для карт памяти SDHC.


    В Google Дмитрий занимался, в основном, встраиваемыми системами. В том числе, он принимал участие в разработке операционной системы для смарт-часов Android Wear, медиаплеера Nexus Q и платформы Android TV.


    Уволившись из Google, Дмитрий решил создать платформу для смарт-часов на основе Palm OS 5.x, операционной системы, которая последний раз обновлялась 15 лет назад:


    image


    На первый взгляд, план отличный: вряд ли современные платформы для смарт-часов сравнятся с Palm OS по потреблению ресурсов и по времени автономной работы.


    Проблема в том, что исходные коды Palm OS никогда не были опубликованы. Да, некоторые кусочки исходников появлялись в открытом доступе в учебниках по разработке приложений, но этого недостаточно. Исходники были у компании PalmSource и у лицензиатов, главным образом, компаний, которые выпускали свои устройства на Palm OS — на условиях NDA, конечно же. Поэтому найти исходный код этой операционной системы спустя столько лет не представляется возможным, да и законность его использования будет под вопросом.


    Остаётся сложный и тернистый путь для самых хардкорных энтузиастов с железобетонной силой воли: реверс-инжиниринг. Именно этот путь и выбрал Дмитрий, постепенно, в несколько этапов реализовав задуманное.


    Для начала следовало написать инструмент для распаковки ROM образов Palm OS устройств. Затем следовало дизассемблировать основные компоненты операционной системы, полученные из распакованного образа. Затем — самая долгая и монотонная работа — следовало разобраться в логике работы функций системного API и написать собственные реализации этих функций. И, самое сложное — написать ядро операционной системы, поскольку уже существующие (например, linux) не поддерживают некоторые функции ядра Palm OS (приостановка потоков, включение-выключение вытесняющей многозадачности).


    Прочитать полную историю переписывания Palm OS с нуля можно в блоге Дмитрия, я лишь вкратце перескажу реализацию основных этапов. Несколько месяцев у Дмитрия ушло на реализацию системных API, которых было бы достаточно для загрузки ОС. Ещё несколько недель — на реверс-инжинеринг графической подсистемы, и два месяца — на написание кода для поддержки рисования. К этому моменту реализованной функциональности было достаточно, чтобы запустить операционную систему поверх ядра linux в QEMU, и загрузить в этом окружении образ какого-нибудь Palm OS устройства.


    rePalm’s *FIRST* boot (с) Dmitry Grinberg
    rePalm’s FIRST boot (с) Dmitry Grinberg


    Чтобы перейти от эмулятора к реальному железу, потребовалось решить ещё немало задач: выбрать хорошо документированную и стабильно работающую аппаратную платформу, написать ядро ОС под выбранную архитектуру, написать транслятор ARM в Thumb (выбранный Дмитрием процессор Cortex-M4 поддерживает только двухбайтные Thumb инструкции, в то время как многие компоненты Palm OS используют полноценные 4-байтные инструкции ARM), и написать JIT компилятор (!!!), чтобы двойная трансляция M68k -> ARM -> Thumb работала с адекватной скоростью.


    Спустя год активной разработки, rePalm запускается на отладочной плате STM32F429, работает графика, тачскрин и SD-карта, работает синхронизация через HotSync, а так же замечательно работает большинство приложений и игр, написанных под Palm OS 5.x. В планах — поддержка Wi-Fi и Bluetooth, поддержка звука и подключения устройства по USB в режиме запоминающего устройства, и актуализация библиотеки SSL. Дмитрий дополняет свой пост в блоге по мере разработки, а так же регулярно постит обновления проекта в сабреддит r/Palm.


    image
    (с) Dmitry Grinberg




    Приятно следить за работой увлечённого человека и наблюдать, как развивается интересный и амбициозный проект. Но стоит помнить, что Дмитрий — в первую очередь инженер и программист. Для него решение инженерной задачи (приведение Palm OS в соответствие с современным миром) стоит выше, чем создание коммерческого продукта, будь то смарт часы или что-то ещё. Я уверен, что проекту найдётся множество интересных применений, но что будет дальше, и увидим ли мы современную версию Fossil WristPDA— сказать сложно. Остаётся пожелать Дмитрию удачи и следить за развитием rePalm.


    image
    (с) Dmitry Grinberg


    P.S. Спасибо Newbilius за мысль перепостить эту статью сюда из блога. О таких крутых проектах должно знать больше людей!

    Поделиться публикацией

    Комментарии 15

      +3
      Кому принадлежит лицензия на оригинальную ОС?
        +4

        PalmSource продались в ACCESS CO, так что лицензия на Palm OS должны быть у них. До этого PalmOne купили лицензию на Palm OS 5.x с правом вносить свои изменения. PalmOne продались в HP, те перепродали WebOS в LG, но кто теперь обладатель этой лицензии и действительна ли она — не знаю. Может, я что-то упустил и все на самом деле ещё хитрее

          +1
          в телевизорах LG вроде как раз WebOS используется (по крайней мере как я понял про свой «смарт»-телек)
            0
            WebOS как я понял имеет очень посредственное отношение к PalmOS
            Тут скорее действительно исходники и права у ACCESS CO. Судя по всему, последняя их наработка, связанная с PalmOS датируется 2007 годом и называется Access Linux Platform — они хотели запускать PalmOS приложения на Linux
            Скорее всего там исходники и похоронят, а жаль — система была реально классной — минимализм, скорость, а Graphiti 2 тогда мне казался вершиной технологичности.
            +3
            13 Июня 2013-го года я лично выкосил из исходников WebOS копирайты PalmOS и HP и закомитил копирайты LG. На тот момент сохранялась _бинарная_ совместимость с PalmOS и в репозитории были исходники с копирайтами Palm.
            WebOS частично открыт на GitHub. Есть ли что-то Palm-овское в открытом коде я не скажу.
            +4
            Страница других проектов Dmitry.GR
            Это он запускал Линукс на AVR под системой команд ARM!
              +1
              А на ремейк какая лицензия?
                +3

                Довольно забавно, что на хабре совсем недавно была статья про самодельный КПК. Любопытно, насколько реально на нём поднять новое воплощение Palm'а… :)

                  –2
                  мертвi бджоли не гудуть, а якщо гудуть, то тихесенько-тихесенько. потратил бы свои силы на что-то более перспективное, как например этот чувак, который сделал часы на 3D принтере и коленке и выложил полностью проект на github (3D файлы, схему, плату, прошиву):

                  imgur.com/a/FSBwD3g
                    0

                    Ну… не знаю. Актуализация и полирование на stm32 очень нетребовательной ОС, для которой уже есть инструменты разработки, документация, написано много учебников и туториалов, и готового софта лично мне кажется более перспективным занятием.

                      0
                      для Z80 еще больше туториалов и софта, но поезд-то ушел. гик должен быть не только на острие современных технологий, но и создавать будущее своим творчеством. а то чем занимается этот чувак — явное прошлое без перспектив. хайтек через какой-то год полностью погрузится в виртуальную реальность с AI и 5G. какой тут Palm…
                        0
                        Компьютер для гиков без микропроцессора (на небольшом количестве логических микросхем) и достаточно непритязательной, но интересного дизайна, системой команд
                        Сайт проекта Gigatron
                        on Hackday.io
                        Forum

                        Статья описания Часть1
                        Часть2

                        P.S. А также Gigatron on STM32F405


                        разрешение вывода картинки 160х120 (64color), частота компьютера 6.25 МГц (но может быть и 12,5МГц) — вывод на VGA разъём
                        Gigatron on Github
                        а, также есть и его реализации уже на FPGA :)
                        Кто то уже увидел возможность включения в учебный процесс и разработал дополнительно дебагер на форуме проекта.
                        0
                        > Актуализация и полирование на stm32

                        Дословно, «polishing a turd». При всей моей любви к палму, сейчас он никакой практической ценности не имеет. Начиная с того, он весь софт под стилус заточен, и никаким JIT это не поправить.

                        А на теоретически полезные штуки, вроде Graphiti, всё равно патенты есть.
                        +3
                        > потратил бы свои силы на что-то более перспективное

                        Дмитрий классический, не обезображенный современным миром кул-хацкерист. Перспективное он делает в рабочее время во всяких Lab126 (Amazon R&D) и Google. В свое свободное время он делает абсолютно чудесные и бесполезные штуки. Бесполезные и тем, что многие (некоторые?) проекты не Open Source, включают clause'ы вроде «cannot be used in a commercial product/service without first obtaining permission from me».

                        Ссылка на историю его проектов за десяток лет в одном из коментов выше.
                        0
                        Даже не знаю. С одной стороны хочется пальму, с другой — понятно что в нынешних реалиях оно не очень актуально. Все фичи, которые привлекали (например сквозной поиск по выделению + росчерку) либо закрыты патентами либо реализуемы вне ОС. Всякая фигота типа долгой жизни на батарейках — свойство не только хардвари и ОС, но и отсутствия необходимости в фоне заниматься кучей всяких вещей, от геолокации до синхронизации аккаунтов.

                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                        Самое читаемое