LVEE 2007 09

Материал из Linux Vacation/Eastern Europe (LVEE).

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

Александр Боровский - ООО Скэнд - Минск, Беларусь


В работе выполнен обзор проекта 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 дисплей (480x640), 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, история
  2. Информация о OpenMoko
Личные инструменты