21 июля 2011 в 20:56

Операционная система реального времени QNX: Знакомство

  • *nix

Так сложилось, что моя деятельность связана с операционной системой реального времени (ОСРВ) QNX. Уже несколько лет занимаюсь разработкой как под эту ОС, так и некоторых частей самой системы. Обратил внимание на то, что поиск на хабре выводит немного результатов по запросу QNX, однако, мне кажется, что эта ОСРВ может быть интересна не только специалистам по встраиваемым и высоконадёжным системам, но и более широкой публике. Не секрет, что планшетный компьютер BlackBerry PlayBook производства компании RIM основан на QNX и имеет популярность и у нас.

Немного о QNX

ОСРВ QNX это не клон или дистрибутив Linux или ответвление какой-то другой UNIX-подобной системы. QNX самостоятельная UNIX-подобная операционная система реального времени, основанная на микроядре и передаче сообщений. Современные версии QNX имеют поддержку стандартов POSIX (и сертифицированны по ним). Первая версия QNX вышла в далёком 1981 году. С тех пор утекло достаточно много времени и поколения QNX сменяли друг друга: QNX2, QNX4 и, наконец, QNX 6 (или QNX Neutrino). Старичок QNX2 и сейчас ещё используется, хотя его расцвет пришёлся на 80-е годы прошлого столетия. Надёжная и более современная ОСРВ QNX4 могла конкурировать на десктопе с Windows в середине 90-х (на скриншоте ниже экран русифицированной версии QNX4):

В конце 90-х стала развиваться новая ветка QNX - QNX6 или QNX Neutrino. Это современная версия ОСРВ, которая вышла в самом начале 2000-х и привнесла много нового в QNX: поддержку отличных от x86 аппаратных архитектур (MIPS, PowerPC, ARM, SH4), поддержку многопроцессорности, поддержку разделяемых библиотек и т.д. Были переработаны подсистемы ОСРВ, например, графическая система Photon и сетевая подсистема. К слову, теперь существует возможность достаточно простого портирования сетевых драйверов NetBSD в QNX6.

О QNX как таковом можно написать очень и очень много хороших и тёплых слов, чему способствует модульная структура, высокая надёжность, простота разработки под эту ОС, отличное встроенное справочное руководство, и многое-многое другое. Но наверное не стоит так сразу перехваливать?

Пожалуй, сейчас самая интересная версия QNX для ознакомления это QNX6. Все новые проекты преимущественно строятся именно на QNX6, а сама система поддерживает много современных и популярных технологий. Помимо этого, для QNX4 не существует пробных или некоммерческих лицензий и сама система уже не развивается, а только поддерживается производителем (выпускаются обновления драйверов и исправления ошибок). Дальше я буду писать именно о QNX6, если прямо не указано иное.

Области применения QNX

QNX это в первую очередь операционная система для построения встраиваемых систем. Но одной из основных особенностей QNX является модульность и, как следствие, масштабируемость. Благодаря этому QNX может применяться и в миниатюрных контроллерах, и в настольных компьютерах. А прозрачная сеть QNX позволяет строить производительные сетевые кластеры.

Состав QNX6

У некоторых новых пользователей QNX (наверное не таких продвинутых, как участники Хабрахабр) может вызвать недоумение состав и компоненты QNX6. Постараюсь предотвратить путаницу, которая может возникнуть в дальнейшем. За те десять лет, что QNX6 доступен пользователям, применялись различные варианты поставки QNX. Сейчас используется упрощённая и наиболее удачная (на мой взгляд) схема поставки, и QNX 6.5.0 состоит из следующих двух основных компонентов:
  • QNX Neutrino - включает в себя микроядро (даже набор микроядер), драйверы, утилиты, графическую среду и т.д. для поддерживаемых аппаратных платформ (x86, MIPS, PowerPC, ARM, SH4).
  • QNX SDP (Software Development Platform) - включает в себя среду разработки Momentics IDE на базе Eclipse, компиляторы, заголовочные файлы и библиотеки для разработки, а также QNX Neutrino.
Надо отметить, что QNX SDP доступен для Windows и Linux платформ. Официально поддерживаются только несколько дистрибутивов Linux, но на практике требуется не так и много, по большему счёту, только современная Java. Я лично разрабатываю под QNX в инструментальной системе на базе ArchLinux 64-бит.

На всякий случай, уточню, что операционной системой является QNX Neutrino, а QNX SDP это средства кроссплатформенной разработки для QNX Neutrino.

ПО для QNX Neutrino

В дистрибутив QNX6 входят помимо микроядра и драйверов ряд консольных утилит, как специфичных для QNX, так и общих для всех UNIX-подобных систем. Помимо этого присутствует графическая подсистема на базе Photon 2.0. Это самостоятельная графическая среда, которая не совместима ни с Windows, ни с X-Window. Однако, существует системный сервис XPhoton, который позволяет запускать графические приложения использующие X-протокол.

Для QNX6 доступны и другие графические среды, которые основаны на технологиях Adobe Flash Lite 3 (доступен отдельно) или Qt/Embedded (на данный момент в Foundry27 доступна версия 4.7.1).

Помимо всего прочего QNX поддерживает систему управления пакетами pkgsrc , в которой доступно большое количество ПО с открытым исходным кодом как в виде собранных бинарных пакетов, так и в виде скриптов для сборки.

QNX6 поддерживает спецификации POSIX, а значит не должно составить большого труда собрать в QNX грамотно написанный код на языке C. Что, кстати, я делал неоднократно.

Типы лицензий QNX6

QNX это коммерческая операционная система и для установки понадобится лицензия. Существуют различные виды лицензий QNX6:
  • Коммерческая лицензия предполагает покупку ОСРВ QNX6 у дистрибьютора. Это необходимо делать в случае коммерческой разработки устройств или ПО на базе QNX.
  • Академическая лицензия предоставляется вузам для обучения студентов и работы преподавателей.
  • Пробная лицензия (на 30 дней) позволяет ознакомиться с полнофункциональной версией QNX и средой разработки, чтобы оценить целесообразность приобретения ОСРВ.
  • Некоммерческая лицензия позволяет работать с QNX и вести некоммерческую разработку.
Понятное дело, что некоммерческая лицензия без ограничения срока действия наиболее интересный вариант знакомства с ОСРВ QNX6.

Регистрация аккаунта myQNX

Для доступа ко многим разделам сайта qnx.com и сообществу Foundry27 требуется регистрация. Регистрация простая и не занимает много времени. Для регистрации надо зайти на сайт www.qnx.com и перейти по ссылке Login , расположенной в верхнем правом углу. После этого следует выбрать пункт New member? после чего откроется форма регистрации в нижней части экрана. Теперь осталось указать e-mail, ввести и подтвердить пароль и нажать кнопку Create Account . Для окончания регистрации понадобится заполнить небольшую анкету и получить код подтверждения по электронной почте, который необходимо указать в форме на следующей странице. На этом регистрация заканчивается, теперь можно скачать дистрибутив QNX.

Регистрация некоммерческой лицензии

Переходим на страницу Non-commercial developers . На первом шаге предлагают скачать QNX SDP под ту инструментальную платформу, в которой планируется вести разработку. Сейчас этот шаг можно пропустить и сразу перейти к шагу два (ниже). Надо отметить, что Вы согласны с лицензионным соглашением (если Вы действительно согласны), проверить, что указанные данные верны, и нажать кнопку Submit . После этого лицензия будет выслана на указанный адрес электронной почты.

Если письмо с лицензионным ключом будет утеряно, то его всегда можно будет посмотреть

Системы реального времени

Лабораторная работа №1

«Взаимодействие целевой и инструментальной систем в QNX»

В работе будут рассмотрены следующие вопросы:

􀂈что такое платформы QNX4 и QNX6, чем они отличаются;

􀂈что представляет собой инструментальный комплект QNX Momentics;

􀂈что представляет собой операционная система реального времени QNX Neutrino.

Вы научитесь получать и устанавливать дистрибутивQNX SDP, организовывать взаимодействие между целевой и инструментальной системой, а также расширять функциональность базового комплекта разработчика с помощью плагинов Eclipse.

QNX4 и QNX6

Понятие "QNX" неоднократно трансформировалось в течение почти 30 лет своего существования. Обычно под термином QNX понимают семейство операционных систем жесткого реального времени. Однако правильнее рассматривать QNX как собирательное название программных платформ для построения компьютерных систем реального времени. В настоящее время для коммерческого использования доступны программные платформы QNX двух поколений: QNX4 и QNX6.

Платформа QNX4

QNX4 - технологии, появившиеся в начале 90-х годов прошлого века и с некоторыми усовершенствованиями дошедшие до сего дня. Основу платформы QNX4 составляет ОСРВ QNX 4.25, графическая оболочка PhotonmicroGUI 1.14, Socket 4.25/5.0 (средства поддержки стека протоколов TCP/IPv4) и система программирования Watcom C/C++ 10.6.

Важный момент: QNX4 работает исключительно на архитектурной платформе x86 начиная с i386. ОСРВ QNX 4.25 - первая ОСРВ, прошедшая сертификацию POSIX в 1993 году - упорное следование различным международным и промышленным стандартам всегда было отличительным свойством компании QNX Software Systems.

Сопровождение ОСРВ QNX 4.25 продолжается в основном в направлении поддержки новых аппаратных устройств, хотя и неограничивается этим. Последняя редакция дистрибутива выпущена в ноябре 2009 года. Среди новинок последних двух-трех лет - поддержка USB и приводов SATA. Прекращение сопровождения QNX 4.25 даже не обсуждается - это обусловлено длительными сроками эксплуатации компьютерных систем реального времени, построенных на основе QNX4.

В 2003 году на базе ОСРВ QNX 4.25 была создана защищенная операционная система реального времени (ЗОСРВ) "QNX" (децимальный номер КПДА.00002-01), которая в 2004 году успешно прошла сертификацию в ФСТЭК (Федеральная служба по техническому и экспортному контролю - http://www.fstec.ru/) России по 3-му классу защиты от несанкционированного доступа (НСД) и 2-му уровню контроля отсутствия недекларированных возможностей (НДВ) - это позволяет предприятиям, разработавшим автоматизированную систему (АС, на базе QNX 4.25), с минимальными усилиями аттестовать свои изделия до класса 1Б включительно.

Конечно, несмотря на свою удивительную эффективность и доказанную надежность, продукты QNX4 родом из 1990-х годов - выпускникам вузов третьего тысячелетия, привыкшим к интегрированным средам разработки, не комфортно работать в текстовом редакторе vedit и использовать командную строку для сборки проектов. Однако если все-таки им придется сопровождать созданные лет десять тому назад (и, надо сказать, прекрасно работающие) системы на базе QNX4, то они могут использовать кроссплатформенный подход к разработке (т. е. разработку в среде Windows или Linux) в интегрированной среде системы программирования OpenWatcom (www.openwatcom.org).

QNX4 продолжает занимать существенную нишу на рынке промышленной автоматизации. Мало того, платформу QNX4 используют даже в новых проектах.

Для использования QNX4 также есть причины, которые называют программисты, применявшие DOS. В России (и не только в ней) DOS по факту является самой широко используемой программной платформой на рынке промышленной автоматизации. Во-первых, инструменты QNX4 гораздо комфортнее и мощнее инструментов DOS. Не говоря уже о полной защите памяти, многозадачности и встроенной поддержке распределенных вычислений. Во-вторых, в QNX4 (как и в QNX6) для доступа к регистрам используются хорошо известные функции in/out. И в-третьих, многие графические приложения для DOS разрабатывались с использованием программного интерфейса VESA BIOS Extensions (VBE), поддерживаемого в QNX. Все эти факторы делают перенос ПО систем реального времени из DOS в QNX4 достаточно комфортным занятием.

Платформа QNX6

Платформа QNX6 включает ряд технологий, основными среди которых являются:

􀂈операционная система реального времени QNX Neutrino . Ее часто для краткости называют просто QNX6 - так что всегда обращайте внимание, в каком контексте используется термин "QNX6";

􀂈комплект инструментальных средств QNX Momentics ;

􀂈пакеты программного обеспечения так называемого "промежуточного слоя" (англ. middleware ) QNX Aviage .

Программное обеспечение QNX6 обычно делится на две категории: средства разработки и средства исполнения. Вспомним этидва понятия.

Инструментальные средства - это программное обеспечение, предназначенное для создания и/или конфигурирования средств исполнения. Средства разработки не требуются во время эксплуатации целевых систем.

Средства исполнения - это программные компоненты, используемые в ЭВМ, предназначенной для эксплуатации конечными потребителями, т. е. программное обеспечение целевых систем.

По-английски этап эксплуатации называют runtime- отсюда средства исполнения (англ. Runtime modules, дословно компоненты для этапа эксплуатации) часто называют жаргонизмом рантаймы.

QNX Momentics и QNX Neutrino поставляются в виде продукта, который называется QNX Software Development Platform (SDP).

Существует три почти равнозначных дистрибутива QNX SDP - Windows-host (для кроссплатформенной разработки приложений QNX Neutrino в среде Windows),Linux-host (для кроссплатформенной разработки приложений QNX Neutrino в среде Linux) и Neutrino-host (для кроссплатформенной разработки приложений QNX Neutrino в среде самой QNX Neutrino, т. е. для резидентной разработки).

Выбор комплекта зависит исключительно от личных предпочтений.

Кроме QNX Momentics в состав каждого из дистрибутивов QNXSDP так же входят одинаковые средства исполнения ОСРВ QNX Neutrino, из которых можно"лепить" собственные конфигурации этой операционной системы для всех поддерживаемых аппаратных архитектур. Дистрибутив Neutrino-host дополнительно содержит инсталлятор ОСРВ QNX Neutrino для платформы Intelx86.

Имеются также дистрибутивы QNX SDP Lite. В них включены средства исполнения QNX Neutrino только для платформыIntelx86. Это облегчает скачивание дистрибутива из Интернета для ознакомительных целей.

QNX Momentics

Комплект инструментальных средств QNX Momentics включает:

􀂈 инструменты разработки и отладки приложений на С/C++ с генерацией кода для всех аппаратных платформ, на которых работает ОСРВ QNX Neutrino;

􀂈 визуальный построитель графических интерфейсов Photon Application Builder (PhAB);

􀂈 инструменты для анализа и оптимизации программ - системный профилировщик, прикладной профилировщик, анализатор покрытия кода тестами;

􀂈 инструменты для построения целевых систем - формирования загружаемых образов, образов встраиваемой файловой системы, создания файловых систем PowerSafe и QNX4, конвертирования образов в форматы программаторов ППЗУ и т. д.;

􀂈 инструменты для мониторинга целевых систем QNX Neutrino (выполняющихся процессов, каналов и соединений, состояния потоков, сигнальных масок, файловых дескрипторов и т. д.), анализа использования ОЗУ процессами;

􀂈 программы удаленного доступа к рабочему столу Photon целевой системы QNX Neutrino из среды Windows и UNIX - Phindows и Phinx.

В состав QNX Momentics входит большой комплект весьма качественной и обстоятельной документации в формате HTML на английском языке. Эта документация относится как к QNX Momentics, так и к QNX Neutrino.

В Windows-host и Linux-host документация доступна через элемент меню Helpинтегрированной среды разработки, в Neutrino-host она доступна через запускаемую из панели инструментов или с помощью меню Launch программу Help viewer. Ключевые документы переведены на русский язык и доступны в книжных магазинах.

Специалисты рекомендуют начать с "Jumpstart Guide". Русский перевод этого руководства доступен на сайте www.swd.ru, а видеопрезентацию авторов инструкции на английском и немецком языках можно посмотреть на сайте www.youtube.com. Затем - концептуальный документ "QNX Neutrino Realtime Operating System. System Architecture" (он есть в штатной электронной документации (Help), а также издан на русском языке). Дальнейшее чтение зависит от вашей специализации.

QNX Neutrino

Операционная система жесткого реального времени QNX Neutrino разрабатывается сообществом Foundry27 (www.foundry27.com) в рамках проектов "QNX OperatingSystem", "Networking", "Filesystems", "Graphics", "Multimedia", "BSP andDrivers" идр.

QNX Neutrino очень хорошо документирована. Базовые книги, необходимые для ее использования ("ОСРВ QNX Neutrino. Системная архитектура", " ОСРВ QNX Neutrino. Руководство пользователя" и учебник Роберта Кртена "Введение в QNX Neutrino: Руководство для разработчиков приложений реального времени"), переведены на русский язык.

Получение и установка дистрибутива QNX SDP

Для получения QNX SDP необходимо зайти в раздел "QNX Software Development Platform Evaluation" сайта www.qnx.com (страница доступна по адресу http://www.qnx.com/products/ evaluation/). Там будет предоставлена возможность скачать свежую версию продукта и получить временный лицензионный ключ (рис. 1).

Рис. 1. Веб-страница для скачивания QNX SDP и получения временного лицензионного ключа

Для скачивания доступно три дистрибутива, каждый из которых может быть в варианте "LiteVersion" или в варианте "Alltargets". Второй вариант имеет объем примерно в 2 раза больший, чем первый. Дистрибутив "QNX NeutrinoHost" представляет собой образ инсталляционного компакт-диска, остальные дистрибутивы ("WindowsHost" и "LinuxHost") - просто инсталлируемые программы.

Все дистрибутивы QNX SDP являются полноценными. Их "ознакомительность" связана не с функциональностью, а с временем действия лицензионного ключа. Таким образом, ознакомительным (evaluation) является лицензионный ключ, а не дистрибутив.

Вторым этапом следует заказать временный ("ознакомительный") лицензионный ключ. Для этого необходимо заполнить небольшую форму, основным полем которой является электронный адрес, на который вам, при условии согласия с условиями лицензионного договора, пошлют электронное письмо со строкой, являющейся ключом.

√ Задание

1. Откройте указанные Интернет-ресурсы и изучите возможность скачивания дистрибутива QNX SDP и получения лицензионного ключа. Определите актуальную на момент выполнения работы версию инструментального пакета. Скачивать дистрибутив не нужно!

2. Из сетевой папки, предложенной преподавателем, скопируйте в локальную дистрибутив QNX SDP и текстовый файл с ключом.

3. Убедитесь, что на рабочей станции осуществлен вход с правами администратора. Установите пакет QNX SDP. Запомните каталог, который IDE будет использовать для хранения проектов.

Content management system (CMS) система wordpress

В этом разделе мы познакомимся как установить CMS на свой компьютер, а именно Wordpress. CMS и скрипты, написанные на языках программирования (таких, как PHP), которые выполняются на стороне сервера (а не в браузере, как, например...

Изучение операционной системы Windows Vista

В процессе знакомства с новым детищем компании Microsoft первое, что бросается в глаза - полностью переработанная процедура инсталляции. Участие пользователя в процессе установки Windows Vista сведено к минимуму...

Назначение, структура и принцип действия SD/MMC Bootloader

Установка ПЭВМ производится в следующей последовательности: изготовить кабели; установить составные части ПЭВМ на отведенные для них местах и закрепить в эксплуатационном положении в соответствии с рисунком 3...

Организация безопасного удалённого доступа к корпоративным ресурсам

1. Скачать ppp wget ftp://ftp.samba.org/pub/ppp/ppp-2.4.3.tar.gz 2. Распаковать tar zxvf ppp-2.3.4.tar.gz 3. Сконфигурировать cd ppp-2.4.3; ./configure 4...

Оценка характеристик и возможностей сетевых ОС локальных сетей

2.1.1 WINDOWS SERVER 2003, ENTERPRISE EDITION Требования к аппаратным ресурсам. Для компьютеров на основе процессоров семейства x86: один или более процессоров с рекомендуемой скоростью 550 мегагерц, минимально поддерживаемая скорость 133 мегагерц...

Разработка внутреннего корпоративного портала предприятия ПО Тотемские электрические сети

Устанавливаем InstantCMS на ранее созданный становить на сайт iissite.local. Открываем браузер и в адресной строке вводим iissite.local/install. Где нас встречает мастер установки, который можно увидеть на рисунке 37. Перед началом установки выбираем язык...

Разработка информационного сайта "Компьютерные вирусы и способы борьбы с ними"

Шаг 1: Для начала нужно скачать последнюю русскоязычную версию WordPress с сайта http://ru. wordpress.org/ или отсюда http://lecactus.ru/. После надо запустить Denwer. Кликните на ярлык на рабочем столе "Start Denwer"...

Разработка программного кода для распределительной станции FESTO

Разработка проекта по модернизации офисной конфигурации компьютера

Подключение дисководов производится аналогично подключению жестких дисков. В нашем случае используется DVD-привод cинтерфейсом SATА, поэтому перемычка не устанавливается. В первую очередь устанавливаем привод в корпус...

Разработка сайта для организации ОАО "Устьянское дорожное управление"

Скачать денвер бесплатно на сайте разработчика. Для скачивания, попросят ввести e-mail и нажать кнопку «Получить ссылку на скачивание». После нажатия кнопки на почту будет выслана ссылка для скачивания Денвера...

Разработка сайта для фитнес-клуба "Апельсин"

Нужно установить на своем компьютере домашний сервер, точнее серверные программы, с помощью которых можно создавать и тестировать РНР программы. В качестве ОС можно использовать Windows, желательно Windows XP или Windows 2000 SP4...

Программное обеспечение "ПРОЛОГ" устанавливается как обычное Windows-приложение. Компоненты программы "ПРОЛОГ" образуют одноименную группу в меню панели задач. Ярлык для запуска программы также создается на рабочем столе...

Разработка систем сбора и отображения данных систем теплоснабжения

Web-сервер Apache очень прост в установке, поэтому следует рассмотреть лишь самый важный шаг (рисунок 20). Рис. 20 - Установка Apache. Информация о сервере На данном шаге необходимо задать самые важные настройки Web-сервера: - Network Domain - имя вашего сервера DNS...

Создание тематического Интернет-портала на CMS E-107

веб контент cms хостинг Для создания и развития динамических веб-страниц вам потребуется понимать и использовать различные технологии. Разработка динамических веб-страниц включает три основных компонента: веб-сервер...

Установка и настройка локального web-сервера Apache, PHP, MySQL под операционную систему Windows

Загрузить дистрибутивов PHP можно с официальной страницы http://www.php.net/downloads.php из секции Windows Binaries файл с расширением ZIP. Версии РНР на этой странице обновляются редко. Если нужно получить самый последний дистрибутив, зайдите на сайт http://snaps.php.net...

Так сложилось, что моя деятельность связана с операционной системой реального времени (ОСРВ) QNX. Уже несколько лет занимаюсь разработкой как под эту ОС, так и некоторых частей самой системы. Обратил внимание на то, что поиск на хабре выводит немного результатов по запросу QNX, однако, мне кажется, что эта ОСРВ может быть интересна не только специалистам по встраиваемым и высоконадёжным системам, но и более широкой публике. Не секрет, что планшетный компьютер BlackBerry PlayBook производства компании RIM основан на QNX и имеет популярность и у нас.

Немного о QNX

ОСРВ QNX это не клон или дистрибутив Linux или ответвление какой-то другой UNIX-подобной системы. QNX самостоятельная UNIX-подобная операционная система реального времени, основанная на микроядре и передаче сообщений. Современные версии QNX имеют поддержку стандартов POSIX (и сертифицированны по ним). Первая версия QNX вышла в далёком 1981 году. С тех пор утекло достаточно много времени и поколения QNX сменяли друг друга: QNX2, QNX4 и, наконец, QNX 6 (или QNX Neutrino). Старичок QNX2 и сейчас ещё используется, хотя его расцвет пришёлся на 80-е годы прошлого столетия. Надёжная и более современная ОСРВ QNX4 могла конкурировать на десктопе с Windows в середине 90-х (на скриншоте ниже экран русифицированной версии QNX4):

В конце 90-х стала развиваться новая ветка QNX - QNX6 или QNX Neutrino. Это современная версия ОСРВ, которая вышла в самом начале 2000-х и привнесла много нового в QNX: поддержку отличных от x86 аппаратных архитектур (MIPS, PowerPC, ARM, SH4), поддержку многопроцессорности, поддержку разделяемых библиотек и т.д. Были переработаны подсистемы ОСРВ, например, графическая система Photon и сетевая подсистема. К слову, теперь существует возможность достаточно простого портирования сетевых драйверов NetBSD в QNX6.

О QNX как таковом можно написать очень и очень много хороших и тёплых слов, чему способствует модульная структура, высокая надёжность, простота разработки под эту ОС, отличное встроенное справочное руководство, и многое-многое другое. Но наверное не стоит так сразу перехваливать?

Пожалуй, сейчас самая интересная версия QNX для ознакомления это QNX6. Все новые проекты преимущественно строятся именно на QNX6, а сама система поддерживает много современных и популярных технологий. Помимо этого, для QNX4 не существует пробных или некоммерческих лицензий и сама система уже не развивается, а только поддерживается производителем (выпускаются обновления драйверов и исправления ошибок). Дальше я буду писать именно о QNX6, если прямо не указано иное.

Области применения QNX

QNX это в первую очередь операционная система для построения встраиваемых систем. Но одной из основных особенностей QNX является модульность и, как следствие, масштабируемость. Благодаря этому QNX может применяться и в миниатюрных контроллерах, и в настольных компьютерах. А прозрачная сеть QNX позволяет строить производительные сетевые кластеры.

Состав QNX6

У некоторых новых пользователей QNX (наверное не таких продвинутых, как участники Хабрахабр) может вызвать недоумение состав и компоненты QNX6. Постараюсь предотвратить путаницу, которая может возникнуть в дальнейшем. За те десять лет, что QNX6 доступен пользователям, применялись различные варианты поставки QNX. Сейчас используется упрощённая и наиболее удачная (на мой взгляд) схема поставки, и QNX 6.5.0 состоит из следующих двух основных компонентов:
  • QNX Neutrino - включает в себя микроядро (даже набор микроядер), драйверы, утилиты, графическую среду и т.д. для поддерживаемых аппаратных платформ (x86, MIPS, PowerPC, ARM, SH4).
  • QNX SDP (Software Development Platform) - включает в себя среду разработки Momentics IDE на базе Eclipse, компиляторы, заголовочные файлы и библиотеки для разработки, а также QNX Neutrino.
Надо отметить, что QNX SDP доступен для Windows и Linux платформ. Официально поддерживаются только несколько дистрибутивов Linux, но на практике требуется не так и много, по большему счёту, только современная Java. Я лично разрабатываю под QNX в инструментальной системе на базе ArchLinux 64-бит.

На всякий случай, уточню, что операционной системой является QNX Neutrino, а QNX SDP это средства кроссплатформенной разработки для QNX Neutrino.

ПО для QNX Neutrino

В дистрибутив QNX6 входят помимо микроядра и драйверов ряд консольных утилит, как специфичных для QNX, так и общих для всех UNIX-подобных систем. Помимо этого присутствует графическая подсистема на базе Photon 2.0. Это самостоятельная графическая среда, которая не совместима ни с Windows, ни с X-Window. Однако, существует системный сервис XPhoton, который позволяет запускать графические приложения использующие X-протокол.

Для QNX6 доступны и другие графические среды, которые основаны на технологиях Adobe Flash Lite 3 (доступен отдельно) или Qt/Embedded (на данный момент в Foundry27 доступна версия 4.7.1).

Помимо всего прочего QNX поддерживает систему управления пакетами pkgsrc , в которой доступно большое количество ПО с открытым исходным кодом как в виде собранных бинарных пакетов, так и в виде скриптов для сборки.

QNX6 поддерживает спецификации POSIX, а значит не должно составить большого труда собрать в QNX грамотно написанный код на языке C. Что, кстати, я делал неоднократно.

Типы лицензий QNX6

QNX это коммерческая операционная система и для установки понадобится лицензия. Существуют различные виды лицензий QNX6:
  • Коммерческая лицензия предполагает покупку ОСРВ QNX6 у дистрибьютора. Это необходимо делать в случае коммерческой разработки устройств или ПО на базе QNX.
  • Академическая лицензия предоставляется вузам для обучения студентов и работы преподавателей.
  • Пробная лицензия (на 30 дней) позволяет ознакомиться с полнофункциональной версией QNX и средой разработки, чтобы оценить целесообразность приобретения ОСРВ.
  • Некоммерческая лицензия позволяет работать с QNX и вести некоммерческую разработку.
Понятное дело, что некоммерческая лицензия без ограничения срока действия наиболее интересный вариант знакомства с ОСРВ QNX6.

Регистрация аккаунта myQNX

Для доступа ко многим разделам сайта qnx.com и сообществу Foundry27 требуется регистрация. Регистрация простая и не занимает много времени. Для регистрации надо зайти на сайт www.qnx.com и перейти по ссылке Login , расположенной в верхнем правом углу. После этого следует выбрать пункт New member? после чего откроется форма регистрации в нижней части экрана. Теперь осталось указать e-mail, ввести и подтвердить пароль и нажать кнопку Create Account . Для окончания регистрации понадобится заполнить небольшую анкету и получить код подтверждения по электронной почте, который необходимо указать в форме на следующей странице. На этом регистрация заканчивается, теперь можно скачать дистрибутив QNX.

Регистрация некоммерческой лицензии

Переходим на страницу Non-commercial developers . На первом шаге предлагают скачать QNX SDP под ту инструментальную платформу, в которой планируется вести разработку. Сейчас этот шаг можно пропустить и сразу перейти к шагу два (ниже). Надо отметить, что Вы согласны с лицензионным соглашением (если Вы действительно согласны), проверить, что указанные данные верны, и нажать кнопку Submit . После этого лицензия будет выслана на указанный адрес электронной почты.

Если письмо с лицензионным ключом будет утеряно, то его всегда можно будет посмотреть

Какие требования предъявляются к оборудованию и программному обеспечению для работы в QNX RtP ?
QNX RtP (а точнее Neutrino 2.1, положенная в основу QNX RtP) - мультиплатформенная ОС (QSSL планировала выпустить версии этой ОС для компьютеров с процессорами x86, PowerPC, MIPS, ARM). Базовый пакет QNX RtP доступен пока для архитектуры x86. Для установки рекомендуется, как минимум, наличие 32 Мб ОЗУ. Список поддерживаемого оборудования есть на support.qnx.com . Рекомендуем также прочитать FAQ по аппаратному обеспечению. Также для установки необходимо наличие либо Windows 95/98/2000/ME/NT либо QNX 4.2x. В настоящее время разработаны три варианта установочных базовых пакетов - для Windows, для QNX 4.2x, образ компакт-диска.

QNX 4 запускается с одной дискеты. Возможно ли такое с QNX RtP ?
В принципе, это возможно. Самый простой пример тому - инсталляционная дискета.

С чего начать?
Cкачайте базовый пакет QNX RtP qnxrtp.exe или образ компакт-диска qnxrtp.iso с get.qnx.com , qnx.tucows.com или ftp.qnx.org.ru/pub/qnxrtp .

Каким образом устанавливается QNX RtP и придется ли мне переразмечать разделы на жестком диске?
Возможны три варианта установки:
1. для установки через Windows (24 Mb) устанавливается как отдельный файл в FAT разделе, загрузка производится через дополнительный запрос при загрузке Windows. Потребуется файл qnxrtp.exe. Его будет нужно запустить из-под Windows и следовать указаниям программы-инсталлятора.
2. для установки через QNX4 (21 Mb) устанавливается как отдельный файл в QNX4 разделе, но при этом использует загрузку через /.altboot. Этот вариант доступен в файле qnxrtp.tar.F. Последовательность действий: cd /; /etc/install -u qnxrtp.tar.F
3. Также доступен ISO-образ для создания загрузочного компакт-диска (91 Mb), с компакт-диска доступен вариант установки на отдельный раздел. См. далее.
Вариант с образом компакт-диска уже включает в себя весь набор дополнительного софта, когда в первых двух случаях идет только базовый пакет, а дополнительный софт устанавливается через www-репозиторий.

Что мне делать с файлом qnxrtp.iso ?
Файл qnxrtp.iso - это не что иное как образ того самого компакт-диска, который можно заказать на get.qnx.com . Если у вас есть CD-Recorder, то можно записать с этого образа компакт-диск, это можно сделать из-под Windows с помощью, например, программы Adaptec Easy CD Creator Deluxe или любой другой ей аналогичной. Если же CD-Recorder"а нет, то можно распаковать qnxrtp.iso под Windows в раздел диска с помощью, например, программы WinImage (это не лучший метод, т.к. при этом потеряется главное преимущество компакт-диска - то что он загрузочный). После чего запустить оттуда setup.exe, выбрать тип установки - в файл в DOS-раздел или в отдельную партицию. В последнем случае нужно будет создать дискету, образ которой там же - instflop.dat, загрузиться с нее и следовать дальнейшим указаниям. Для установки в отдельный раздел на диске необходимо освободить под него место не менее 600 Мб.

Сколько необходимо дискового пространства для установки QNX RtP ?
Около 50 мегабайт для базовых файлов и 600 мегабайт (рекомендуется фирмой QSSL) для установки дополнительного программного обеспечения и работы.

Есть ли в QNX RtP поддержка подкачки (swap) ?
Да, если вы делаете рабочий раздел больше чем 256 Мб, файл подкачки размером в 128 Мб будет создан автоматически в /.swapfile. Его размер можно изменить в файлах конфигурации системы или с помощью утилиты swapctl. Следует здесь отметить, что подкачка осуществляется только для данных, а не для кода программ и работает только с ПО, которое написано с поддержкой подкачки. Например, компилятор GCC.

Как корректно заменить shell на BASH ?
Корректный метод - в файле /etc/passwd прописать вместо /bin/sh для требуемых пользователей /bin/bash в качестве shell по умолчанию. Естественно, придется сам бинарный файл "bash" поместить в каталог /bin.

Возможные проблемы, возникающие при этом и методы их решения:

Q1: При запуске Voyager не находит файл voyager.server. Как быть?

A1: Дело в том, что клиентская часть Voyager ищет файл voyager.server в каталоге /$SYSNAME/voyager/$PROCESSOR/bin. Избавиться от ошибки можно, вписав в /etc/profile следующие строки:

Export SYSNAME=nto
export PROCESSOR=x86

Q2: Программы, использующие screen manager curses/ncurses/slang (например Midnight Commander) отказываются работать в консоли и pterm, сообщая о некорректных установках переменной TERM и TERMCAP.

A2: Ситуацию можно поправить, добавив в /etc/profile строки:

Export TERM=qansi-m
export TERMCAP=qnx

Как пересобрать ядро системы?
Ядро системы (если быть точнее - загрузочный образ ОС Neutrino 2.1), установленной в раздел Windows, лежит по умолчанию в C:\Program Files\qnx\boot\fs\qnxbase.ifs (IFS - Image File System), в QNX 4 обычно ядро лежит в /.altboot. Чтобы создать новый образ ядра, используются сценарии с достаточно непростым языком описаний. В QNX RtP входят несколько уже готовых сценариев - qnxbase.build, qnxbasedma.build, qnxbasesmp.build. Их можно найти в /boot/build. Для создания Image File System в состав ОС включена утилита mkifs. В самом простом случае, для системы, установленной в раздел Windows, последовательность действий такова:

1. Загружаемся в QNX RtP.

2. cd /boot/build

3. mkifs qnxbase.build qnxbase.ifs (создание образа qnxbase.ifs по сценарию qnxbase.build).

4. cp qnxbase.ifs /fs/hd0-dos/program files/qnx/boot/fs (копирование нового образа ядра системы на место старого).

ВНИМАНИЕ!!! Не забудьте сохранить копию старого ядра на случай если система вдруг перестанет загружаться!
Более подробную информацию об утилите mkifs и языке сценариев можно найти в документации, прилагаемой к QNX RtP (доступна в HelpViewer).

Как изменить тип входа в QNX RtP (GUI или консоль) ?
Если вы хотите при загрузке попадать в консоль - создайте файл /etc/system/config/nophoton:

Touch /etc/system/config/nophoton

Как установить дополнительный софт из сетевого репозитория или из репозитория CD-ROM ?
В состав базового пакета QNX 6 входит программа Package Manager. С ее помощью можно просмотреть содержимое www- или CD-репозитория и установить требуемые пакеты программ. Что особенно полезно - всегда можно их потом и удалить, освободив занимаемое ими место - в Package Manager есть и такая возможность. Если требуемое ПО упаковано в файлы с расширением "qpr" (так называемые репозитории-архивы), установить их можно командой "pkg-installer -u имя_пакета.qpr" или если ссылка на такой пакет расположена в www, просто нажмите мышью на эту ссылку - Voyager автоматически запустит Package Manager, который скачает и установит пакет.

Как установить программное обеспечение, распространяющееся в виде архивов *.tar.gz или *.tar.bz2 ?
Скачиваете архив *.tar.gz (*.tgz) или *.tar.bz2, кладете в корень файловой системы и распаковываете с помощью команды соответственно tar xzvf *.tar.gz (*.tgz) и bzip2 -d *.tar.bz2; tar xvf *.tar. Включенные в пакет файлы лягут на свои места. Очень важно условие распаковки именно из корня файловой системы. При распаковке Вы можете получить сообщения об ошибках в атрибутах файлов - проигнорируйте это.

Я скачал программу и, согласно рекомендациям, установил ее, но она не запускается или пишет что что-то не найдено. Что делать?
Возможно, что программе не хватает некоторых библиотек. Перечитайте еще раз руководство по установке, прилагаемое к программному обеспечению или файлы readme, install (если таковые есть). Обычно ошибка заключается в том, что не установлены какие-либо дополнительные библиотеки. Их лучше всего брать с того же сайта разработчика, где Вы взяли программу. Если речь идет о софте с сайта qnx.org.ru, то лучше сразу установить все динамические библиотеки, выложенные у нас на сайте в разделе "Software" (или на ftp-сервере). Это касается glib-gtk, imlib, libpng, zlib, libgif, libungif, tiff, jpeg, aalib, mpeg_lib.
Еще одна распространенная ошибка бывает связана с отсутствием нужных для работы программы библиотек. Проверьте переменную окружения, отвечающую за пути к библиотекам:

# echo $LD_LIBRARY_PATH

Эта команда показывает список каталогов, в которых программы будут осуществлять поиск требуемых библиотек. Убедитесь, что каталог, в который Вы установили библиотеки, присутствует в списке. Если же его там нет, добавьте в конец файла /etc/profile следующую строку:

Export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/ваш/каталог/с/библиотеками

Иногда бывает достаточно установить из репозитория компакт-диска пакеты Neutrino Development / Runtime.

Как правильно осуществить обновление ОС QNX 6 до Patch B ?
ЗАМЕЧАНИЕ: У Вас должна быть уже установлена версия ОС QNX 6.0.0a (Patch A). Если же у Вас установлена более ранняя версия, установите версию Patch A или осуществите обновление до Patch A.

QNX 6.0.0a доступна для скачивания по адресам http://get.qnx.com , http://qnx.tucows.com , ftp://ftp.qnx.org.ru/pub/qnxrtp в варианте установки из-под Windows (qnxrtp.exe), QNX 4 (qnxrtp.tar.F) или в виде образа компакт-диска (qnxrtp.iso).

В общем случае обновление до Patch B осуществляется установкой новых пакетов через Package Manager.

Это общее обновление системы до Patch B.

Если Вы занимаетесь разработкой в ОС QNX 6, Вам потребуется обновить и инструментальные средства. Для этого придется установить пакеты-обновления средств разработки. Взять их можно здесь:

2. Установите скачанные пакеты с помощью Package Manager:

Pkg-installer -u qnx-6.0-x86.qpr (общее обновление)
pkg-installer -u qnx-dev-6.0-x86.qpr
pkg-installer -u qnx-devtools-6.0-x86.qpr (средства разработки)

3. Перезагрузите систему.

4. Пересоберите Neutrino Image (как это сделать - читайте FAQ или раздел помощи Building Embedded Systems).

5. Установите новый образ вместо старого (qnxbase.ifs для установки из-под Windows, .altboot (.boot) если у Вас система установлена на отдельном разделе или под QNX 4).

Как настроить QNX 6 для более полноценной работы на системах с малым объемом оперативной памяти (16, 24, 32 Mb) ?
Большое количество оперативной памяти используется в системе под кэш драйвера жесткого диска (до 12 Mb). Для того, чтобы уменьшить размер кэша и, таким образом, съэкономить оперативную память в системе, придется пересобрать образ Neutrino Image.

Примечание 2. Все вышесказанное справедливо для систем, имеющих контроллер жесткого диска IDE/ATAPI. В других случаях, если у вас scsi-контроллер, придется указывать в сценарии, вместо devb-eide, конкретный драйвер для вашей системы (например devb-aha8).

Примечание 3. Если Вы используете загрузку без поддержки DMA, соответственно вносите изменения в сценарий /boot/build/qnxbase.build и используйте именно его для сборки Neutrino Image.

Примечание 4. Размер дискового кэша указан в параметре строчки сценария "cache=xxx". Вы можете указать другой размер дискового кэша, например "cache=512k" или "cache=2m".

Как подключить мышь в консоли?
Запустить драйвер мыши можно следующим образом:
для PS/2 мыши:
#/usr/photon/bin/devi-hirun -Pr ps2 mousedev
для COM мыши:
#/usr/photon/bin/devi-hirun -Pr msoft fd -d/dev/ser1
Устройство мыши появится в /dev/devi/mouse0

Если драйвер работает некорректно (такое случается с NetScroll serial mouse), то вам следует обновить драйвер:
http://developers.qnx.com/Fixes/Software/devi-hirun