Pull to refresh

Операционная система реального времени 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):

QNX 4.25 (КПДА.00002-01). Файловый менеджер.

В конце 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 позволяет строить производительные сетевые кластеры.

Обычно ОСРВ QNX применяется там, где требуется высокая надёжность системы: медицинская техника, военная техника и вооружение, нефтегазовая и металлургическая промышленность и т.д. В конце прошлого десятилетия QNX стал развиваться в сторону поддержки мультимедиа технологий, что способствовало появлению проекта QNX Car, а также планшетного ПК BlackBerry PlayBook.

Состав 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.com.

Заключение


Сначала я хотел написать заметку об установке QNX, но так увлёкся введением, что понял — если я напишу ещё и про установку, то мало кто захочет дочитать всё это до конца. В связи с этим, наверное, мне стоит извиниться, что в заметке так мало интересных технических деталей. С другой стороны, наверное, я подготовлю отдельную заметку по установке QNX и не только на x86 ПК. А может быть и не только по установке. А если вдруг кто-то попросить описать какую-то технологию QNX или тему связанную с QNX, то я постараюсь пойти навстречу.

Темы следующих топиков по QNX


В ходе обсуждения были предложены следующие темы для будущих топиков по QNX:
  • Сеть в QNX: Qnet.
  • Обзор механизмов межпроцессного взаимодействия в QNX.
  • Архитектура QNX. Микроядро.
  • Средства разработки для QNX.
Буду потихоньку готовить и публиковать. Если что-то интересно ещё, то пишите в личку.

Опубликованные топики по QNX


Ниже идёт список материалов, которые уже опубликованы:
Tags: ОСРВQNX
Hubs: *nix
Total votes 123: ↑117 and ↓6 +111
Comments 70
Comments Comments 70

Top of the last 24 hours