Linux на калькуляторе: как HP Prime G2 научили запускать X11 и Doom
Реми ван Элст, автор 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
Комментарии
Войдите, чтобы комментировать.