Linux на борту

Linux приобрел заслуженную популярность в мобильных и встроенных приложениях, благодаря его способности сокращаться до небольших размеров, необходимых для эффективной работы на компактных устройствах. Коммуникатор Nokia N800 пользуется этим и предлагает широкий спектр общей функциональности, которую может использовать разработчик. Однако моя цель в этом и следующем выпускахLinux на борту состоит не в том, чтобы обсуждать возможности, а в том, чтобы показать, как начать разрабатывать приложения, на реальном примере, используя возможности камеры устройства для создания Web-камеры.

Nokia N800 является весьма зрелым продуктом. Его предшественник Nokia 770 уже отличался развитостью по сравнению с более ранними устройствами, работающими под управлением Linux, а N800 явно разрабатывался с учетом пожеланий пользователей. Тяжелого корпуса больше нет, и вы можете доставать и прятать стилус во время работы с устройством в его нормальной конфигурации. (Недавно вышедшая модель Nokia N810 станет темой одной из следующих статей. )Вместо одного разъема "RS-MMC" в N800 реализовано два разъема для обычных карт SD.

Подставка встроена в устройство. Что еще более важно, увеличена оперативная память, flash-память и скорость процессора. Компания даже наклеила на экран защитную пленку. (Мой опыт обращения с защитными пленками поражает воображение мне, кажется, удалось однажды поймать целого кота под защитную плёнку для сотового телефона поэтому я очень высоко ценю эту особенность. ) Ниже приведены некоторые наиболее важныеN800. Было улучшено множество характеристик, хотя завершено еще не все; например, код WiFi не поддерживает доверительные серверы корневых сертификатов, хотя пустое выпадающее меню для этого есть.

Возможно, эта поддержка будет добавлена в следующей версии. Одной из наиболее впечатливших меня функций 770 стала его среда разработки, построенная на базе scratchbox. Давайте посмотрим, как эта среда разработки действует на практике. N800 оборудован встроенной камерой. Когда вы открываете ее, N800 запускает программу видеочата.

Это приятно, но не то, что мне нужно. Мне нужна старая добрая Web-камера. N800 выглядит идеальной платформой для Web-камеры: он маленький, переносной, подключен к сети и (не забудьте) у него есть камера. Поэтому давайте вернемся к реальности и начнем работу с кодом. Я настроил в системе терминальную программу и получил права доступа root. На самом деле это необязательно; я это делаю потому, что мне нравится копаться в технике. Я загрузил терминальную программу из каталога приложений maemo Wiki (ссылку можно найти в разделе). Эта программа была разработана специально для 770, но она не привязана к конкретным версиям ядра и прочим мелочам, поэтому отлично работает. Получение прав root немногим сложнее: вам нужно перевести устройство в режим "RD", для чего используется утилита flasher, которую можно загрузить с сайта maemo. Утилиту flasher необходимо установить на компьютере под x86 Linux, который является предпочтительной средой для запуска scratchbox.

Если у вас нет x86 Linux-компьютера, достаточно мощную для этого x86-машину можно купить по цене одного завтрака (а Linux вообще загрузить бесплатно). Я использовал платформу Kubuntu, но это не имеет особого значения; я делал то же самое под управлением SuSE, а пользователи maemo, по-моему, предпочитают Debian. Инструкции по установке, представленные на сайте maemo, отлично работают. Для начала необходимо установить scratchbox. Предоставляемая программа установки отлично работает, хотя у нее есть одна странность - по умолчанию она зачем-то удаляет все уже загруженные вами файлы и загружает их снова.

(Вы также можете установить пакет вручную, но я не вижу каких-либо причин для этого. )Для установки scratchbox требуются права доступа root, но для работы с ним доступ root не нужен. Если вы используете программу установки scratchbox с сайта maemo, все, что вам нужно - это запуститьпод вашей учетной записью. Выйдите из системы и зайдите обратно, чтобы вступило в силу членство в новой группе (группа sbox), и установка будет завершена. Права доступа root вам больше не нужны. На самом деле программа установки maemo SDK (я использовал maemo-sdk-install_3. 1. sh; обновление до новой версии 3. 2 устанавливается из SDK) работает не под пользователем root, а под обычным пользователем с правами доступа к scratchbox. Шум, который вы только что услышали, был вздохом облегчения множества системных администраторов.

Мне нравится, что программа установки не требует привилегий root тогда, когда в них нет необходимости. Перед запуском программы установки maemo вам не нужно устанавливать цель; не обращайте внимания на сообщения о необходимости предварительного запуска sb-menu (если не обращать внимания, их можно вообще пропустить, программа установки сама со всем разберется). Хочу выразить отдельную благодарность дружелюбному сообществу канала #maemo сети Freenode, которые заверили меня в том, что эти сообщения об ошибках безобидны.

Если до этого вы не работали со scratchbox, ниже приводится небольшое введение. В прошлом кросс-компиляция порождала множество проблем. Основной из них была сложность отладки программ в целевой среде; если она отличается от среды разработки, это делает задачу настройки крайне нетривиальной. Scratchbox решает эту проблему наиболее естественным образом: для запуска двоичного кода в среде используется эмуляция процессора. Учитывая, что скорость моего процессора примерно в восемь раз выше целевого процессора, это очень хорошее решение; время разработки экономится невероятно.

Этот отличный пример прогресса технологий позволяет нам просто игнорировать проблему, преодолеть которую раньше было очень тяжело. Scratchbox позволяет иметь несколько сред сборки, в которых вы можете совмещать двоичный код целевой системы и системы разработки.

Если вы используете scratchbox для ARM на процессоре x86, двоичный код ARM волшебным образом начинает работать и одновременно создает в виде копии двоичный код ARM. Это замечательная игрушка. Nokia финансировала ее разработку, очевидно, с прицелом на рассматриваемое сегодня устройство и ему подобные. К слову, если вы вернетесь к этому спустя некоторое время и получите загадочное сообщение "Scratchbox is not properly set up! ", вероятно, вам нужно запустить его. Запуститепод пользователем root, и все должно заработать. Некоторые системы могут отключаться некорректно, если перед их остановом вы не запустили. Если вы по какой-либо причине перезапустили систему между установкой scratchbox и установкой SDK, как это сделал я, и не настраивали систему на запуск scratchbox во время загрузки, это может стать сюрпризом.

Другая распространенная ловушка состоит в том, что apt-get в scratchbox не может найти узел repository. maemo. org. Чтобы исправить это, измените файл /scratchbox/etc/nsswitch. conf и убедитесь, что в строке "hosts:" установлено значение "dns" вместо "mdns". (Обратите внимание, что это не тот же самый файл, что и nsswitch. conf в вашей среде scratchbox. )Повторение пройденного: создаем "hello, world! "Первый шаг всегда состоял в получении работающего приложения "hello, world! ".

Это несложно, но, прежде чем начать, необходимо выбратьцель. Целью называется совокупность настроек и инструментов, соответствующих определенному устройству (N800). В типичной среде scratchbox вам пришлось бы создать её самостоятельно. Однако программа установки maemo сама создает две цели, которые называются SDK_X86 и SDK_ARMEL. Вы можете переключаться между ними с помощью команды; например,выбирает цель ARM. Сохраните пример кода в файле. Теперь выполним кросс-компиляцию, и это очень хитрый момент:Все просто. Возможно, вы спросите: как этот файл попадёт в наш планшет? Если вы установили на планшет командный процессор и в каком-либо из разъемов установлена карта SD, это очень просто: подключите планшет к Linux-системе, смонтируйте файловую систему на появившийся диск и скопируйте на него файл.

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

Однако этот способ не годится для реальных приложений, особенно графических. В этом случае вам придется создать соответствующий файл пакета (в N800 используются пакеты Debian) и дать пользователю возможность установить его надлежащим образом. Действительно, когда речь заходит о реальных вещах, а не о поделках, не надо ничего откладывать на потом. На developerWorks я нашел лучшую документацию по созданию пакетов Debian из всех виденных мной (см. раздел). Конечно же, этого недостаточно для maemo, поскольку нужно не только установить программу в /usr/bin; вам также нужен способ сказать интерфейсу, как найти пакет и запустить его. Ссылка на пример приложения "hello, world! " не работает на момент написания, но ничего страшного - просто выполнитев среде scratchbox. Этот пакет все раскладывает по местам, в том числе пиктограммы и конфигурацию запуска.

autogen. sh. Если произойдет ошибка, связанная с тем, что в пути $ ATH отсутствует команда dpkg-buildpackage, запуститеи проверьте, установлен ли у вас инструментарий разработчика debian. Не устанавливайте пакет debian-sarge devkit; он заставит инструменты Debian думать, что вы разрабатываете приложения под архитектуру arm, а не armel, и вы никогда не сможете сделать ничего хорошего. Кроме того, N800 не будет устанавливать ваши пакеты, поскольку они созданы для несовместимой архитектуры.

Поэтому не делайте этого. Приложения maemo создаются с помощью виджетов Gtk. Здесь есть еще немного волшебства: семейство функций "osso_... ", которые представляют собой оболочки к обычным функциям Gnome dbus. Если вы не будете использовать их, ваше приложение может работать некорректно в среде maemo. Пример "hello world" - это хорошая отправная точка для изучения среды. Посмотрите на него, создайте пакеты и убедитесь, что чувствуете себя уверенно. Учитывая всё, что мы узнали, давайте создадим какое-нибудь приложение. Хотя приложение Hello World достаточно поучительно, этот пример в некоторой степени даже избыточен. Типичному приложению не требуется вывод в строку состояния, отображение в панели управления, как службы DBUS и обычного приложения, а также как апплета домашней страницы.

Фактически обычно бывает достаточно одной-двух из перечисленных функций. Помимо всего прочего, необходимость выполнять все эти действия привела к тому, что наше приложение было реализовано как библиотека общего доступа, используемая различными компонентами. Это простейший способ организации общего доступа к коду, а также концентрации внимания примеров на реализуемых задачах. Это отлично подходит для обучения и демонстрации, но не всегда является лучшим вариантом для вашего приложения.

Какое же приложение мы будем создавать? У N800 есть очень изящная особенность - небольшая выдвижная камера. По умолчанию, если вы открываете её, незамедлительно запускается небольшая программа ведения интерактивного чата. Она хороша, но не очень гибка. Было бы здорово иметь приложение, которое может делать отдельные снимки и автоматически загружать их на удаленный сервер. Оно использовало бы широкие возможности N800 по подключению по различным сетям и предоставляло нам чуть больше возможностей по управлению количеством отправляемых кадров. Этот процесс на самом деле весьма сложен, поэтому я не собираюсь разрабатывать полностью завершенное приложение. Вместо этого я собираюсь сконцентрироваться на основах его работы. Очень удобно, что большая часть работы уже выполнена за нас в виде библиотекиgstreamer, обрабатывающей медиа-потоки.

Наша цель состоит в том, чтобы извлекать кадры с камеры с определенными интервалами, сохранять их в определенном месте, желательно на другой машине, и, возможно, предоставить пользователю возможность нажимать на кнопку для сохранения кадров. Во второй части этой серии мы рассмотрим программу, которая делает основную работу по формированию потока gstreamer для захвата изображений с Web-камеры на экран или в другую систему. Цель состоит в получении изображений с камеры, их преобразовании в J EG, а также загрузки куда-нибудь. Пока же познакомьтесь с gstreamer, если вы еще не сделали этого. В среде gstreamer реализовано множество интересных концепций. Не пожалейте времени и время и установите программу терминала; я рекомендую osso-xterm.

В целом Nokia N800 представляет собой переносной Интернет-планшет, который предоставляет доступ к Интернету с применением следующих технологий:Многопротокольный клиент электронной почты. Сенсорный экран 800 x 480 пикселов, 65 536 цветовОбъём: 138 куб. см. Масса: 206 г. Память DDR RAM 128 МБ; и Flash 256 МБ, а также MiniSD 128 МБ с возможностью расширения. Два встроенных разъема карт памяти совместимы с SD, MicroSD, MiniSD, MMC и RS-MMC. Поддерживает карты памяти до 8 ГБ. Карты SD объемом более 2 ГБ должны быть совместимы с SDHC. Батарея B -5L рассчитана на время работы в Интернете до 3,5 часов (в режиме ожидания 13 дней). Звук: AAC, AMR, AWB, M4A, M 2, M 3, RA (RealAudio), WAV, WMAИзображения: BM , GIF, ICO, J EG, NG, TIFF, SVG-tinyВидео: 3G , AVI, H. 263, M EG-1, M EG-4, RV (Real Video)Плейлисты Интернет-радио: M3U, LSБеспроводная сеть: 802.

11b/gСпецификация Bluetooth: 2. 0 (для подключения к Интернету и передачи файлов через телефон)Аудиоразъем Nokia 3,5 мм. Поддерживаемые профили: Коммутируемое сетевое соединение, передача файлов, общий доступ, доступ к SIM, профиль передачи объектов, профиль пользовательского интерфейса и последовательного портаВысокоскоростной режим USB 2. 0 для соединения с ПКНаучиться Оригинал статьи (EN).

предлагает платформу разработки приложений для Интернет-планшетов. На этом сайте можно найти, многие из которых написаны для Nokia 770,(где вы можете загрузить версию 3. 0 "bora" для N800), и превосходное. (EN)" (EN) (developerWorks, июль 2003 г. ) рассказывает о том, как собрать удобные для распространения пакеты для устройств Linux (maemo делает акцент на близости к технологиям GTK+/GNOME и Debian Tools). " (developerWorks, ноябрь 2006 г. ) знакомит вас с предшественником N800 - Интернет планшетом Nokia 770 на базе Linux.

Узнайте больше о Nokia и в Википедии. (EN)- это инструментарий для кросс-компиляции, разработанный для облегчения разработки приложений для встроенных версий Linux. (EN)В можно найти дополнительные ресурсы для разработчиков Linux, а также(EN). Посмотрите все (EN)и (EN)на сайте developerWorks. Следите на последними новостями на портале. (EN)Получить продукты и технологии - набор из двух DVD, содержащий новейшие ознакомительные версии программного обеспечения IBM для Linux от DB2, Lotus, Rational, Tivoli и WebSphere. (EN)Используйте в своем следующем проекте разработки для Linux, которые можно скачать непосредственно с developerWorks.

(EN)Обсудить. Присоединяйтесь к и ознакомьтесь с блогами, форумами, подкастами и материалами для совместного обсуждения на обновленном пространстве нашего. (EN).