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

Система Qtopia Core (ранее она называлась Qt/Embedded) — это версия Qt, оптимизированная для разработки встроенных систем под Linux. Qtopia Core имеет такие же утилиты и программный интерфейс, какие предусмотрены в версиях Qt для настольных компьютеров (Qt/Windows, Qt/X11 и Qt/Mac), а также дополнительно предлагает классы и утилиты, необходимые для программирования встроенных систем. Через двойное лицензирование эта система доступна как для разработок с открытым исходным кодом, так и для коммерческих разработок.

Qtopia Core может работать на любом оборудовании, функционирующем под управлением Linux (включая архитектуры Intel x86, MIPS, ARM, StrongARM, Motorola 68000 и PowerPC). Эта система имеет буфер фреймов основной памяти, отображаемой на дисплей, и поддерживает компилятор С++. В отличие от Qt/X11, она не нуждается в системе X Window; вместо этого в ней реализуется собственная оконная система (own window system — QWS), которая приводит к значительной экономии постоянной и основной памяти. Для еще большего уменьшения расхода памяти можно перекомпилировать Qtopia Core и исключить неиспользуемые возможности. Если заранее известны используемые устройством приложения и компоненты, они могут быть скомпилированы совместно в один исполняемый модуль и собраны статически с библиотеками Qtopia Core.

Кроме того, Qtopia Core использует преимущества многих функций, присущих также версиям Qt для настольных компьютеров, в частности широко применяется неявное совместное использование данных («копирование при записи») как метод экономии основной памяти, поддерживаются пользовательские стили виджетов с помощью класса QStyle и обеспечивается система компоновки виджетов, позволяющая максимально использовать пространство экрана.

Qtopia Core представляет собой базовый компонент, на котором строятся другие предложения по встроенным системам компании «Trolltech»; к ним относятся Qtopia Platform, Qtopia PDA и Qtopia Phone. Они содержат классы и приложения, специально предназначенные для мобильных устройств и способные интегрироваться с некоторыми виртуальными машинами Java независимых разработчиков.

<p>Первое знакомство с Qtopia</p>

Приложения Qtopia Core могут разрабатываться на любой платформе, позволяющей запускать цепочки многоплатформенных инструментальных средств. Наиболее распространено построение кросс-компилятора GNU С++ в системе Unix. Этот процесс упрощается благодаря наличию скрипта и набора пакетов обновлений Дана Кегеля (Dan Kegel), доступного на веб-страницеПоскольку Qtopia Core имеет программный интерфейс Qt, в большинстве разработках, как правило, можно использовать версию Qt для настольных компьютеров, например Qt/X11 или Qt/Windows.

Система конфигурации Qtopia Core поддерживает кросс-компиляторы с помощью опции —embedded скрипта configure. Например, для построения ARM—архитектуры мы могли бы ввести команду

./configure -embedded arm

Можно создавать пользовательские конфигурации путем добавления новых файлов в каталог Qt mkspecs/qws.

Qtopia Core рисует непосредственно в буфере фреймов системы Linux (область основной памяти, связанная с дисплеем). Для обращения к буферу фреймов, возможно, потребуется получить разрешение для записи на устройство /dev/fb0.

Для выполнения приложений Qtopia Core сначала необходимо запустить один процесс, выполняющий функции сервера. Этот сервер отвечает за распределение между клиентами областей экрана и за генерацию событий мышки и клавиатуры. Любое приложение Qtopia Core может стать сервером, если в командной строке указать опцию —qws или в качестве третьего параметра конструктора QApplication передать QApplication::GuiServer.

Клиентские приложения связываются с сервером Qtopia Core при помощи совместно используемой области в основной памяти. Внутренне операции рисования реализованы так, что клиенты рисуют самих себя в совместно используемой области памяти и отвечают за оформление собственных окон. Это сводит к минимуму объем данных, передаваемых между клиентами и сервером, и в результате интерфейс пользователя работает без задержек. Приложения Qtopia Core обычно используют рисовальщик QPainter для рисования самих себя, но они могут также получать непосредственный доступ к видеооборудованию, используя класс QDirectPainter.

Клиенты могут связываться друг с другом при помощи протокола QCOP. Клиент может прослушивать именованный канал, создавая объект QCopChannel и устанавливая связь с его сигналом received. Например:

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже