Linux на калькуляторе: как HP Prime G2 научили запускать X11 и Doom

· Linux и open source
Инженер Реми ван Элст обновил порт Linux для графического калькулятора HP Prime G2 — с рабочей клавиатурой, тачскрином, X-сервером и, конечно, Doom.

cover.svg

Реми ван Элст, автор Raymii.org, задаётся вопросом, ставшим уже мемом: а ваш калькулятор умеет в Linux? Его любимый аппарат — HP-16C, RPN-калькулятор для программистов с поддержкой шестнадцатеричной, двоичной и восьмеричной систем. Но запустить Linux на нём, разумеется, невозможно: у чипа NUT частота порядка 220 кГц и 203 байта под программы. Зато это по силам куда более серьёзной машине.

Калькулятор мощнее кофемашины

Графический HP Prime G2 автор называет «комично переразмеренным». Внутри — ARM Cortex-A7 (i.MX 6 UltraLite), 256 МБ оперативной памяти и 512 МБ хранилища. По его словам, это ближе к небольшому встраиваемому Linux-компьютеру с калькуляторной клавиатурой, чем к традиционному калькулятору. Для сравнения: промышленная кофемашина, с которой он работает на основной работе, использует модуль i.MX6 схожего класса.

Автор придерживается принципа: купленное устройство принадлежит владельцу, а не производителю, поэтому root-доступ обязателен — иначе гаджет превращается в электронный мусор ещё на заводе. На Prime, в отличие от Texas Instruments и Numworks (те урезали функции из-за экзаменационных режимов и борьбы со списыванием), ассемблера никогда не было, только собственный бейсикоподобный язык PPL, — а значит, отбирать нечего. Впрочем, инженер HP предупреждал, что новый чип при желании можно «зашифровать и заблокировать наглухо».

Что удалось оживить

Существующий порт с ядром 4.14 давно заброшен: репозитории переехали, buildroot не собирался, devicetree был испорчен. Восстановив исходники через Software Heritage, автор довёл сборку до ума:

  • пропатчил драйвер клавиатуры (imx_keypad.c), чтобы через клавишу Alpha вводились цифры и спецсимволы вроде дефиса, подчёркивания и вертикальной черты;
  • написал драйвер для нового тачскрина Ilitek ILI211X, пришедшего на смену снятому с производства Goodix, и сделал утилиту калибровки;
  • вкомпилировал USB-serial прямо в ядро, поскольку загрузка модуля намертво вешала устройство;
  • поднял лимит образа в RAM с 15 до 130 МБ, изменив смещения в конфиге ядра, u-boot и скриптах uuu;
  • настроил getty, чтобы система доходила до логина.

После команды startx запускается twm с xeyes, xclock и xcalc — да, теперь можно запускать калькулятор на калькуляторе (долгое нажатие считается правым кликом). В комплекте едет prboom с приличным фреймрейтом и крошечный компилятор tcc: в /root лежит hello.c, который можно собрать прямо на устройстве.

Автор запускал всё только в оперативной памяти, не рискуя перепрошивать NAND, чтобы не потерять родное ПО. Для желающих есть готовый образ. Для модели G1 существует отдельный порт с ядром 6.x, а самый абсурдный трофей коллекции — чужой порт Windows 10 через UEFI, где на калькуляторе запущен calc.exe.


Источник: Lobsters

Комментарии

Войдите, чтобы комментировать.

  • Пока нет комментариев.