И, видимо, часы на 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)


  1. spanasik
    22.05.2019 12:40
    +1

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


    1. BOOtak Автор
      22.05.2019 12:57
      +1

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


      1. ErgoZru
        22.05.2019 17:12

        в телевизорах LG вроде как раз WebOS используется (по крайней мере как я понял про свой «смарт»-телек)


      1. valis
        22.05.2019 17:59

        WebOS как я понял имеет очень посредственное отношение к PalmOS
        Тут скорее действительно исходники и права у ACCESS CO. Судя по всему, последняя их наработка, связанная с PalmOS датируется 2007 годом и называется Access Linux Platform — они хотели запускать PalmOS приложения на Linux
        Скорее всего там исходники и похоронят, а жаль — система была реально классной — минимализм, скорость, а Graphiti 2 тогда мне казался вершиной технологичности.


    1. MShevchenko
      23.05.2019 17:49
      +1

      13 Июня 2013-го года я лично выкосил из исходников WebOS копирайты PalmOS и HP и закомитил копирайты LG. На тот момент сохранялась _бинарная_ совместимость с PalmOS и в репозитории были исходники с копирайтами Palm.
      WebOS частично открыт на GitHub. Есть ли что-то Palm-овское в открытом коде я не скажу.


  1. FForth
    22.05.2019 14:22

    Страница других проектов Dmitry.GR
    Это он запускал Линукс на AVR под системой команд ARM!


  1. potan
    22.05.2019 18:05
    +1

    А на ремейк какая лицензия?


  1. Newbilius
    22.05.2019 19:32
    +3

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


  1. Harbour
    22.05.2019 20:37

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

    imgur.com/a/FSBwD3g


    1. BOOtak Автор
      22.05.2019 21:07

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


      1. Harbour
        22.05.2019 21:15
        +1

        для Z80 еще больше туториалов и софта, но поезд-то ушел. гик должен быть не только на острие современных технологий, но и создавать будущее своим творчеством. а то чем занимается этот чувак — явное прошлое без перспектив. хайтек через какой-то год полностью погрузится в виртуальную реальность с AI и 5G. какой тут Palm…


        1. FForth
          23.05.2019 02:25

          Компьютер для гиков без микропроцессора (на небольшом количестве логических микросхем) и достаточно непритязательной, но интересного дизайна, системой команд
          Сайт проекта Gigatron
          on Hackday.io
          Forum

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

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


      1. areht
        23.05.2019 03:20

        > Актуализация и полирование на stm32

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

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


    1. pfalcon
      23.05.2019 01:47
      +1

      > потратил бы свои силы на что-то более перспективное

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

      Ссылка на историю его проектов за десяток лет в одном из коментов выше.


  1. vbifkol
    23.05.2019 21:06

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