International conference of developers
and users of free / open source software

Платформа разработчика OpenMoko

Александр Боровский – ООО Скэнд, Минск, Беларусь – alex.borovsky@gmail.com

LVEE 2007

В работе выполнен обзор проекта OpenMoko, рассмотрены особенности интерфейса, связанные со спецификой устройств ввода-вывода. Рассмотрены способы разработки и отладки программ для платформы OpenMoko, в том числе на настольном компьютере.

Мобильные устройства характеризуются большим разнообразием устройств ввода (ограниченный набор кнопок, сенсорный экран, внешняя клавиатура и т.д.), ограниченным пространством на экране – на PC наоборот используется стандартный набор из клавиатуры, мыши и монитора – а также широким разнообразием архитектур процессора.

история

На данный момент существует несколько распространённых мобильных платформ, и конечно каждая из них имеет свои недостатки:

- Symbian – очень распространённая на смартфонах операционная система. Характеризуется высокой кастомизируемостью, имеет неплохую безопасность (однако системы защиты могут использоваться для сокрытия вредоносного кода), высокую эффективность использования ресурсов. Требует лицензирования.

- WinCE – распространённая система на смартфонах и еще более – на наладонниках. Хотя ядро очень эффективно, сама система отличается неторопливостью. Требует лицензирования.

- Palm – отличается высокой эффективностью и очень быстрой работой (однозадачная на пользовательском уровне и многозадачная на уровне ядра). Разработка PalmOS уже не ведётся.

- Linux на мобильных устройствах появился впервые на Zaurus SL-5000D (ноябрь 2001) и в виде Familiar linux (проект по разработке дистрибутива для наладонников Compaq iPAQ (февраль 2002). Затем наработки этих проектов объединились в проект OpenEmbedded (в феврале 2003).

OpenMoko

OpenMoko был представлен 7 ноября 2006 года. Система построена на базе OpenEmbedded (ядро 2.6, busybox, udev, blueZ, dbus, X Server, GTK+2, matchbox).

Поверх базовых сервисов написан набор библиотек, предоставляющих высокоуровневые функции для стандартных операций, таких как отправка SMS и звонок по заданному номеру (libmokocore); высокоуровневые сетевые функции, например отправка файла через bluetooth (libmokonet), работа с персональной информацией, контактами, календарями (libmokopim) и дополнительные элементы управления (libmokoui).

интерфейс OpenMoko

Т.к. Neo1973 имеет только touchscreen и 2 кнопки, то навигация в интерфейсе производится с помощью стилуса или пальцев. Это отражено и в интерфейсе: есть приложения, управляемые стилусом (stylos-based), а есть – управляемые пальцами (finger-based, с увеличенными размерами элементов). Для каждого типа приложений характерен свой макет (layout) интерфейса и, частично, набор элементов управления.

Макет интерфейса для finger-based приложений может варьироваться, например в calculator и dialer это панель с кнопками и небольшим экраном сверху, а для main menu это куча иконок с прокруткой с помощью специального колеса (отдельный элемент управления).

Макет интерфейса для stylos-based приложений более-менее одинаков: сверху меню приложения/фильтрации, под ним список элементов (navigation area), затем toolbar/searchbar; снизу расположена details area, которая может развёртываться на весь экран (кнопкой на scrollbar).

Neo1973

Neo1973 – это мобильный телефон для обкатки OpenMoko. Он имеет 200Mhz процессор (ARM920T), 128Mb RAM, 64Mb flash, GSM/GPRS, AGPS, высококонтрастный LСD дисплей (480×640), Unpowered USB host.

Все устройства доступны для программ: GSM и AGPS как обычные serial устройства, микрофон, стереовыход и динамик через ALSA, USB через стандартные драйвера.

разработка на OpenMoko

Сейчас для разработки используется окружение OpenEmbedded. В качестве UI toolkit используется GTK+2 с дополнительными элементами управления.

Есть несколько способов отладки программ для OpenMoko: использовать Xoo (XNest), использовать эмуляцию в qemu или использовать debug board.

Xoo обладает наибольшей скоростью, однако почти никакие аппаратные особенности не эмулируются (выполняется приложение в chroot с ядром системы). QEmu позволяет тестировать приложения в более-менее приближенных к реальности условиях (в OpenMoko SDK идёт qemu, эмулирующий почти все устройства). Debug board подключается к реальному телефону (Neo1973), и идеально подходит для разработки драйверов.

Для упрощения разработки и сборки образов был разработан MokoMakefile, который позволяет:

1. Собирать образы дисков (под разные платформы);
2. Запускать эти образы в qemu;
3. Обновлять среду разработки (из которой собираются образы).

Литература

1. PDA, история http://en.wikipedia.org/
2. Информация о OpenMoko http://wiki.openmoko.com/