И, видимо, часы на Palm OS найдут своего покупателя:
Palm OS?—?операционная система для карманных компьютеров, бывшая на пике популярности с 1998 года по первую половину 2000-х. Она очень простая и не требовательная к ресурсам, бережно расходует заряд аккумулятора и замечательно спроектирована для использования в карманных компьютерах. Но в 2004–2005 годах устройства на Palm OS уступили место устройствам на Windows Mobile:
Это произошло по разным причинам, частично?—?из за ошибок менеджмента, отчасти?—?из за особенностей самой операционной системы: в 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 в избытке. Найти применение этой операционной системе можно и сегодня.
Поэтому по прошествии стольких лет сохранилось сообщество фанатов этой системы, которое поддерживает сайты с приложениями, ведёт собственный сабреддит и продолжает пользоваться палмами.
Но один из участников сообщества пошёл дальше, решив перенести Palm OS на более современное железо и найти этому проекту полезное применение.
Дмитрий Гринберг, программист из Google, с 2003 года создавал твики и хаки для устройств на Palm OS, среди которых WarpSpeed?—?программа для “разгона” КПК, и PowerSDHC?—?драйвер для карт памяти SDHC.
В Google Дмитрий занимался, в основном, встраиваемыми системами. В том числе, он принимал участие в разработке операционной системы для смарт-часов Android Wear, медиаплеера Nexus Q и платформы Android TV.
Уволившись из Google, Дмитрий решил создать платформу для смарт-часов на основе Palm OS 5.x, операционной системы, которая последний раз обновлялась 15 лет назад:
На первый взгляд, план отличный: вряд ли современные платформы для смарт-часов сравнятся с 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
Чтобы перейти от эмулятора к реальному железу, потребовалось решить ещё немало задач: выбрать хорошо документированную и стабильно работающую аппаратную платформу, написать ядро ОС под выбранную архитектуру, написать транслятор 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.
(с) Dmitry Grinberg
Приятно следить за работой увлечённого человека и наблюдать, как развивается интересный и амбициозный проект. Но стоит помнить, что Дмитрий?—?в первую очередь инженер и программист. Для него решение инженерной задачи (приведение Palm OS в соответствие с современным миром) стоит выше, чем создание коммерческого продукта, будь то смарт часы или что-то ещё. Я уверен, что проекту найдётся множество интересных применений, но что будет дальше, и увидим ли мы современную версию Fossil WristPDA—?сказать сложно. Остаётся пожелать Дмитрию удачи и следить за развитием rePalm.
(с) Dmitry Grinberg
P.S. Спасибо Newbilius за мысль перепостить эту статью сюда из блога. О таких крутых проектах должно знать больше людей!
Комментарии (15)
FForth
22.05.2019 14:22Страница других проектов Dmitry.GR
Это он запускал Линукс на AVR под системой команд ARM!
Newbilius
22.05.2019 19:32+3Довольно забавно, что на хабре совсем недавно была статья про самодельный КПК. Любопытно, насколько реально на нём поднять новое воплощение Palm'а… :)
Harbour
22.05.2019 20:37мертвi бджоли не гудуть, а якщо гудуть, то тихесенько-тихесенько. потратил бы свои силы на что-то более перспективное, как например этот чувак, который сделал часы на 3D принтере и коленке и выложил полностью проект на github (3D файлы, схему, плату, прошиву):
imgur.com/a/FSBwD3gBOOtak Автор
22.05.2019 21:07Ну… не знаю. Актуализация и полирование на stm32 очень нетребовательной ОС, для которой уже есть инструменты разработки, документация, написано много учебников и туториалов, и готового софта лично мне кажется более перспективным занятием.
Harbour
22.05.2019 21:15+1для Z80 еще больше туториалов и софта, но поезд-то ушел. гик должен быть не только на острие современных технологий, но и создавать будущее своим творчеством. а то чем занимается этот чувак — явное прошлое без перспектив. хайтек через какой-то год полностью погрузится в виртуальную реальность с AI и 5G. какой тут Palm…
FForth
23.05.2019 02:25Компьютер для гиков без микропроцессора (на небольшом количестве логических микросхем) и достаточно непритязательной, но интересного дизайна, системой команд
Сайт проекта Gigatron
on Hackday.io
Forum
Статья описания Часть1
Часть2
P.S. А также Gigatron on STM32F405
areht
23.05.2019 03:20> Актуализация и полирование на stm32
Дословно, «polishing a turd». При всей моей любви к палму, сейчас он никакой практической ценности не имеет. Начиная с того, он весь софт под стилус заточен, и никаким JIT это не поправить.
А на теоретически полезные штуки, вроде Graphiti, всё равно патенты есть.
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».
Ссылка на историю его проектов за десяток лет в одном из коментов выше.
vbifkol
23.05.2019 21:06Даже не знаю. С одной стороны хочется пальму, с другой — понятно что в нынешних реалиях оно не очень актуально. Все фичи, которые привлекали (например сквозной поиск по выделению + росчерку) либо закрыты патентами либо реализуемы вне ОС. Всякая фигота типа долгой жизни на батарейках — свойство не только хардвари и ОС, но и отсутствия необходимости в фоне заниматься кучей всяких вещей, от геолокации до синхронизации аккаунтов.
spanasik
Кому принадлежит лицензия на оригинальную ОС?
BOOtak Автор
PalmSource продались в ACCESS CO, так что лицензия на Palm OS должны быть у них. До этого PalmOne купили лицензию на Palm OS 5.x с правом вносить свои изменения. PalmOne продались в HP, те перепродали WebOS в LG, но кто теперь обладатель этой лицензии и действительна ли она — не знаю. Может, я что-то упустил и все на самом деле ещё хитрее
ErgoZru
в телевизорах LG вроде как раз WebOS используется (по крайней мере как я понял про свой «смарт»-телек)
valis
WebOS как я понял имеет очень посредственное отношение к PalmOS
Тут скорее действительно исходники и права у ACCESS CO. Судя по всему, последняя их наработка, связанная с PalmOS датируется 2007 годом и называется Access Linux Platform — они хотели запускать PalmOS приложения на Linux
Скорее всего там исходники и похоронят, а жаль — система была реально классной — минимализм, скорость, а Graphiti 2 тогда мне казался вершиной технологичности.
MShevchenko
13 Июня 2013-го года я лично выкосил из исходников WebOS копирайты PalmOS и HP и закомитил копирайты LG. На тот момент сохранялась _бинарная_ совместимость с PalmOS и в репозитории были исходники с копирайтами Palm.
WebOS частично открыт на GitHub. Есть ли что-то Palm-овское в открытом коде я не скажу.