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


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

Установка QNX Neutrino 6.3.2.

1. Задание на лабораторную работу

    Установить операционную систему QNX

    Создать в домашней директории папку и текстовый файл в ней.

    Ознакомится с устройством файловой системы QNX

2. Введение

QNX - POSIX-совместимая операционная система реального времени, предназначенная преимущественно для встраиваемых систем. Считается одной из лучших реализаций концепции микроядерных операционных систем.

Как микроядерная операционная система, QNX основана на идее работы основной части своих компонентов, как небольших задач, называемых сервисами. Это отличает её от традиционных монолитных ядер, в которых ядро операционной системы - одна большая программа, состоящая из большого количества «частей», каждая со своими особенностями. Использование микроядра в QNX позволяет пользователям (разработчикам) отключить любую ненужную им функциональность, не изменяя ядро. Вместо этого можно просто не запускать определённый процесс.

Система достаточно небольшая, чтобы в минимальной комплектации уместиться на одну дискету, вместе с этим она считается очень быстрой и должным образом «законченной» (практически не содержащей ошибок).

QNX Neutrino, выпущенная в 2001 году, перенесена на многие платформы, и сейчас способна работать практически на любом современном процессоре, используемом на рынке встраиваемых систем. Среди этих платформ присутствуют семейства x86, MIPS, PowerPC, а также специализированные семейства процессоров, такие, как SH-4, ARM, StrongARM и xScale.

Система платная, при этом для некоммерческого использования и для обучения она предлагается бесплатно.

Консоли и терминалы

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

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

Команда mount используется для загрузки дополнительных драйверов, а также для загрузки многочисленных "псевдодрайверов", таких как диски в оперативной памяти (электронный диск) и т.п. Одно из устройств, которое вы можете монтировать вручную - это вторая "консоль".

С помощью команды mount можно также вывести список текущих смонтированных устройств, библиотек и т. д.

Программа, которая интерпретирует другие команды, называется shell (оболочка), так как она эффективно покрывает внутренние работы системы. Shell - не просто интерпретатор командной строки, она поддерживает свой собственный простой язык программирования, снабженный переменными и управляющими структурами.

Командный файл не настолько гибкий, как программы на языке Cи, но он обычно удовлетворяет основным потребностям.

        3. Выполнение лабораторной работы

Установка ОСРВ QNX

Самый простой способ установки QNX - с инсталляционного CD, который в виде образа можно скачать с сайта производителя (http://www.qnx.com). Диск этот является загрузочным, и потому никаких дополнительных манипуляций не требует - достаточно вставить его в привод и, установив в BIOS соответствующую опцию, перезагрузить машину.

После загрузки с CD нам предлагают либо загрузиться с LiveCD, либо установить систему на жесткий диск.

Выбираем «F3» - Установка QNX на раздел жесткого диска

    обычный, для его выбора необходимо нажать «F1»

    подробный, после чего все дальнейшие шаги будут сопровождаться подробными комментариями. Каковые, хотя и по английски, дают достаточно информации для выбора с спорных случаях. Для его выбора необходимо нажать «F2»

На следующем шаге необходимо выбрать жесткий диск для установки

В
ыбираемF1 -Использовать все доступное пространство для установки

Выбираем установку в директорию по умолчанию, установкуQNX Neutrino SDK и встроенной среды разработки.

После окончание установки вынимаем установочный CD и перезагружаем систему.

После перезагрузки можем наблюдать экран входа в систему QNX

Запуск терминала и выполнение простейших команд

Кнопка для запуска терминала находится во вкладке«Utilities» панели управления QNX.

Основные команды shell

cd - изменть текущий рабочий каталог;

cp - сделать копию файла;

ls - список имен файлов в каталоге;

pwd - печать текущего рабочего каталога (на экран)

rm - удалить файлы.

mkdir - создать новый каталог;

mv - переместить или переименовать один файл;

rmdir - удалить каталог.

Vi текстовый редактор,для создания или окрытия файла необходимо запустить

vi имя_файла

для входа в режим редактирования необходимо нажать Insert, для выхода из него Esc. Для выхода из редактора с сохранением файла необходимо нажать ZZ (с зажатым Shift"ом)

/home -домашний каталог пользователя

Задание

    Создать в домашнем каталоге папку “Labs”

    Перейти в него

    Создать в нем тестовый файл с названием “Lab1”

Описание структуры файловой системе Linux

Для доступа к файлам также можно воспользоваться «Photon File Manager»

находящийся во вкладке «Utilities» панели управления QNX.

Корневой раздел.

В этом каталоге хранятся основные команды операционной системы, такие как команды оболочки и команды файловой системы (ls, cp и т.д.).

Здесь хранятся образы ядер QNX и менеджер загрузки

Директория содержит файлы устройств, подключенные к операционной системе.

В Linux вообще всё рассматривается, как файл, даже различные устройства, такие как принтеры, жёсткие диски, сканеры и т.д. Для получения доступа к определённому устройству, необходимо чтобы существовал специальный файл. Аналогично устроено большинство UNIX-подобных операционных систем.

В этой директории находится основная часть конфигурационных файлов самой операционной системы (настройки сети, список пользователей, групп и т.д.) и различных программ (Apache, Samba и т. д.).

В этом месте должна размещаться вся личная информация пользователей системы.

Почему должна? Потому что владелец компьютера может хранить свою личную информацию в любом понравившемся ему месте. В целях безопасности самой операционной системы и пользовательских данных хранить последние строго рекомендуется в директории /home. Для получения более высокой надежности операционной системы и сохранности пользовательской информации директорию /home рекомендуется выделить в отдельный раздел жесткого диска.

Эта директория предназначена для хранения системных библиотек, необходимые для работы программ из директорий /bin и /sbin и операционной системы вцелом.

Директория, в которой обычно размещаются установленные программы, имеющие большой дисковый размер или вспомогательные пакеты (например /opt/openoffice.org).

/proc - это директория, к которой примонтирована виртуальная файловая система procfs. Различная информация, которую ядро может сообщить пользователям, находится в "файлах" каталога /proc. Например, в файле /proc/modules находится список загруженных модулей ядра. А в файле /proc/cpuinfo - информация о процессоре компьютера.

Это домашний каталог или Домашняя папка суперпользователя. Эта директория фактически ничем не отличается от директории обычного пользователя. Данная директория по умолчанию всегда расположена в корневом каталоге файловой системы. Это было сделано для предотвращения проблем с доступом к директории /home. В случае когда к каталогу /home по какой-то причине невозможно получить доступ, в системе всегда есть возможность залогиниться под учетной записью суперпользователя, для решения возникших проблем с доступом.

Основные системные программы для администрирования и настройки системы (iptables, ifconfig и т.д.).

Временное хранилище данных. Аналог папки в ОС Windows - C:/Windows/Temp. Все пользователи имеют права чтения и записи в этом каталоге.

В этом каталоге хранятся все установленные пакеты программ, документация, исходный код ядра и система X Window. Все пользователи кроме суперпользователя root имеют доступ только для чтения. Может быть смонтирована по сети и может быть общей для нескольких машин.

Директория дополнительных программ для всех учетных записей.

Заголовочные файлы С++.

Системные библиотеки для программ, расположенных в директории /usr.

По стандарту /usr должен быть общим для нескольких компьютеров и смонтирован по сети, а /usr/local должен содержать установленные пакеты программы только на локальной машине (к примеру, /usr - бюджет семьи, а /usr/local - личный кошелек каждого). Но чаще всего директория /usr/local используется для установки программ, которые не предназначены для конкретного дистрибутива/

Дополнительные системные программы.

Общие данные установленных программ.

        /usr/share/icons

В каталоге находятся все иконки системы.

Директория, в которой обычно находится справочная документация по установленным программам.

Это каталог для часто меняющихся данных. Здесь находятся журналы операционной системы, системные log-файлы, cache-файлы и т. д.

В этом месте хранятся все кэши различных программ.

4. Контрольные вопросы.

    Какие ОС называются реального времени? Их основные задачи.

    В чем отличие ОС реального времени от ОС для персональных РС?

    Версии QNX.

5. Литература

    Баррет Д. Linux - основные команды. Карманный справочник - М.; Кудиц-образ, 2005.

    Федорчук А. QNX: очень краткие заметки 2001

Нет-нет, вы меня, вероятно, не так поняли! Не для "чайников", а для чайников - чувствуете разницу? Это, конечно, некоторое художественное преувеличение - гипербола, но по сути своей QNX - действительно операционная система, предназначенная не только для персональных компьютеров, но и для самых разных бытовых и промышленных интеллектуальных устройств - систем, управляющих технологическими процессами, станков с ЧПУ, интернет-приставок, видеовоспроизводящих агрегатов, игровых консолей, а возможно, и для холодильников, кофеварок и чайников недалекого будущего. ОС эта во многом весьма примечательна и уникальна, но обо всем по порядку…

В далеком 1982 году в не менее далекой от нас Канаде фирма "Quantum Software Systems, Limited" - QSSL, созданная некими Гордоном Беллом и Дэном Доджем (Gordon Bell & Dan Dodge), представила миру новейшую многозадачную многопользовательскую операционную систему реального времени "Quick UNIX", разработка которой, говорят, началась аж по заказу Министерства обороны США. Это была UNIX-подобная операционная система, вернее, совместимая со стандартом на переносимость приложений POSIX, в соответствии с которым сделаны также UNIX и его популярный клон Linux.

Очень быстро, правда, новую ОС пришлось переименовать в "QNX", так как фирма AT&T имела права на торговую марку "UNIX" и ей не очень пришлось по вкусу использование этого слова в разработке малоизвестной компании. Но горевать по этому поводу особенно никто не стал, тем более что QNX серьезно отличалась от UNIX: даже файловая система у нее была своя собственная, несовместимая ни с FAT, ни с другими "никсами". Данное переименование затронуло, в конце концов, и название самой конторы, создавшей QNX, - однажды решено было расшифровывать QSSL как "QNX Software Systems, Limited", дабы не перекликаться со многими другими фирмами, активно склоняющими в своих названиях слово "Quantum". К счастью, чехарда названий мало повлияла на творческий процесс: в то время аналогов у QNX просто не было - она оказалась первой в мире системой подобного класса.

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

Ряд операций QNX выполняет в 20 раз быстрее UNIX. Входные данные при этом обрабатываются почти мгновенно - ОС работает быстрее, чем они поступают, и при этом не пропадает ни один бит. Если же ОС будет обрабатывать данные медленнее, чем они приходят, то часть их может потеряться или же возникнет некая задержка - рассогласование действительных входных данных с той картиной, которую видит оператор после их обработки системой, что, разумеется, неприемлемо в промышленных условиях - такие потери данных и задержки могут привести к многомиллиардным убыткам и даже человеческим жертвам.

Что же лежит в основе этого почти чуда, которое не виснет? Достигается этот интересный эффект в первую очередь истинной принудительной многозадачностью, используемой в QNX. То есть ни один зависший процесс не может ни при каких условиях заблокировать работу самой ОС или как-то повлиять на другие задачи. Разумеется, QNX (здесь и далее имеется в виду ее последний дистрибутив QNX RTP) является и полностью 32-разрядной системой - без этого необходимой надежности достигнуть было бы невозможно.

Следующая отличительная особенность QNX - чрезвычайно низкая требовательность к аппаратным ресурсам, что обусловлено тем, что QNX - микроядерная ОС. Ядро этой ОС, называемое Neutrino, имеет размер всего 32 кб и выполняет только самые базовые функции, остальные же сервисы реализованы в динамически подключаемых модулях. Благодаря такому решению операционная система с минимальным набором дополнительных сервисов способна полноценно работать на 386-м процессоре с 8 Мб оперативки. Именно это обстоятельство позволяет найти ей еще одну область применения - бытовые интеллектуальные устройства типа интернет-планшетов, банкоматов или кассовых аппаратов в магазинах.

Система получилась весьма удачной, всегда была далеко не самой дешевой (наиболее тяжелые дистрибутивы стоили по несколько тысяч долларов), и сегодня в работе ее можно увидеть на оборудовании, используемом многими известнейшими фирмами, например, Ford, IBM, Kodak, General Motors, DuPont, VISA, Canon, Honda, SAAB, Panasonic, Sony. Говорят, что QNX работает даже на истребителях F16 - не зря все-таки Минобороны на нее тратилось. А всего инсталляций QNX в мире зарегистрировано более 400 000!

Главная область ее применения - сложное и ответственное производство с серьезными требованиями к надежности и непрерывности управления, а также ко времени реакции в аварийных ситуациях. Наибольшее распространение она получила в добывающих отраслях, в металлургии, машиностроении, химической промышленности, энергетике, банковском деле. Небезызвестная фирма Texaco использует QNX для дистанционного управления нефте- и газодобывающим оборудованием на платформах в Мексиканском заливе. General Electric и General Dynamics - для управления холодной прокаткой стали на своих предприятиях. Что самое интересное, даже в России эта малоизвестная основной массе наших пользователей ОС сегодня весьма широко представлена - она управляет магистральными нефтепроводами в городе Ухта, автоматической работой станов холодной прокатки на Магнитогорском металлургическом комбинате, применяется в банках города Набережные Челны и в лабораториях Ачинского глиноземного комбината.

И это далеко не полный список! А ведь до 1990 года эта ОС даже попадала под запрет КОКОМ на поставки в страны Восточной Европы как технология, которую можно использовать в военных целях. Короче говоря, QNX очень известна среди специалистов, чрезвычайно надежна и давно нашла своего потребителя во многих отраслях промышленности.

Но какой интерес эта коммерческая промышленная ОС представляет для нас с вами, давно привыкшим к Windows или к Linux? А дело в том, что совсем недавно QSSL предложила всем пользователям абсолютно новый и полностью бесплатный дистрибутив своей ОС, называемый "QNX Real Time Platform". Причем это не "демонстрашка", а абсолютно полноценная система, которую вы можете получить на сайте QSSL в двух вариантах - обычном exe-файле размером 27 Мб либо в виде ISO-образа загрузочного компакт-диска для самостоятельного переноса его на CD-R. Но тут уже вам придется качать аж 270 "метров" - в основном это дополнительные программы, которые при необходимости без труда докачиваются и по отдельности. Так что теперь в полку альтернативных ОС для домашних компьютеров пополнение, а этот факт вниманием обойти никак нельзя - вдруг это окажется именно то, что мы так долго искали на замену ненавистных "форточек". Давайте же взглянем на нее с точки зрения рядового пользователя бытового ПК.

Установка

Впрочем, малюсенькая "демонстрашка" тоже есть, и есть уже довольно давно, года этак с 1997-го - она знаменита тем, что, имея полностью графический интерфейс, несколько небольших программ и интернет-браузер Voyager, умещалась всего на одной дискете (!!!), позволяя при этом выходить в интернет даже на самых слабых машинах. Что и говорить, такое чудо производило впечатление! То, что нам предлагается сегодня, устанавливается уже на жесткий диск и не имеет никаких ограничений в работе.

Рекомендуемый минимум аппаратных мощностей - Pentium 200 МГц и 32 Мб оперативной памяти. Установка QNX абсолютно никаких трудностей не вызывает - она осуществляется из-под Windows как для любой обычной программы (практически так же, как и установка еще одной альтернативной ОС - BeOS), в файл с виртуальной файловой системой QNX. Места на диске этот файл занимает совсем немного - вы сами можете выбрать его размер в довольно широких пределах - даже на 100 Мб она заработает, поскольку базовые файлы ОС занимают всего около 50 "метров".

Для первого же знакомства и начальных экспериментов с ОС и программами для нее вполне подойдет файл объемом порядка 600 Мб, из которых 128 Мб будет отведено под файл виртуальной памяти. Удалить QNX столь же просто - в меню "Пуск" ваших "форточек" появится предназначенный специально для этого ярлык. Удаление осуществляется вполне корректно - никаких "хвостов" от QNX в системе не остается за исключением зарезервированных ей копий файлов autoexec.bat и config.sys. После очень быстрой процедуры инсталляции, при которой в обязательном порядке надо создать учетные записи "админа" root и одного пользователя, инсталлятор модифицирует файл config.sys, прописывая туда загрузочное меню и вызов загрузчика QNX. Естественно, если у вас стоит "Миллениум", то такой вариант с "конфигом" не пройдет - на этот случай предусмотрено создание загрузочной дискеты.

Загрузка ОС начинается с текстовой фазы, при этом, как и положено родному брату UNIX, в случае неполадок можно вызвать довольно обширное меню с дополнительными опциями. В небольшом диалоговом окне вам потребуется задать первоначальное разрешение экрана и выбрать драйвер видеокарты. Для моего оборудования предлагался только стандартный VESA-драйвер, который не хотел воспринимать частоту обновления экрана выше 60 Гц и позднее весьма заметно тормозил работу видеосистемы. Впоследствии все заданные в этом меню параметры легко изменить уже из самой ОС. Имеющиеся в наличии жесткие диски IDE и CD-ROM монтируются в системе автоматически также на стадии загрузки. Время загрузки заметно больше, чем у Windows 9x. После входа в систему перед нами предстает давно ставший стандартом для современных ОС Рабочий стол.

Интерфейс

Собственно графическая оболочка QNX называется Photon - это очень компактная и крайне нетребовательная к ресурсам разработка самой QSSL, но его можно при желании сменить на устаревший GUI "QNX Window", тоже от QSSL, либо на "юниксовский" "X Window", гораздо более прожорливый, чем Photon, но зато и более совместимый с другими приложениями. "Фотон" же не вызывает никакой антипатии - весьма симпатичные обои Рабочего стола, справа - панель "Быстрый запуск" с иконками установленных вместе с ОС утилит, регулятором громкости и индикаторами расходования системных ресурсов. В нижней части экрана - привычная панель задач и кнопка "Launch" - аналог "виндового" меню "Пуск".

Изначальная расцветка элементов интерфейса радует глаз, при этом практически все настраивается и видоизменяется - цвета, шрифты, настройки параметров монитора. Однако не надо забывать, что родная среда для всех "Юниксов" - это командная строка, из-за чего графический интерфейс мне показался все-таки недостаточно гибким в настройке: отсутствуют Device Manager и многие другие служебные компоненты, так облегчающие работу в Windows, а для работы с командной строкой надо перелопатить нереальное количество документации - встроенных системных утилит-команд порядка 150 - попробуй удержать все это в голове. Но зато есть набор простых скринсейверов - мелочь, а приятно.

Комплектация

Изначально в состав QNX включено совсем немного программ, но что же вы хотели от 27 Мб дистрибутива? Если вам этого окажется мало, а так, скорее всего, и будет, то ничто не мешает либо скачать целиком образ компакт-диска QNX с огромным пакетом дополнительных бесплатных утилит, либо найти все, что нужно для работы, по кускам в интернете. Пока же вы имеете в своем распоряжении:

Editor - простенький текстовый редактор класса WordPad с минимальными возможностями форматирования текста.
File Manager - аналог Проводника, весьма удобный и простой. Обратите только внимание, что ваши диски надо искать в папке /FS корневого каталога. QNX позволяет работать с различными файловыми системами - POSIX, FAT12, FAT16, FAT32, ISO-9660 - так что с DOS-разделами проблем не бывает.

Media Player - универсальный проигрыватель для звука и видео с регулировками цвета, яркости и контраста. Поддерживаются плей-листы, встроен неплохой микшер. Проигрыватель проглотит и новейший MP3, и AudioCD, и MPEG1, и MPEG2 - вот только c MPEG4 пока облом.

Voyager - достаточно современный и мощный веб-браузер, работает с Java, фреймами, в общем - все при нем.

Vmail - очень грамотный почтовый клиент, читает ньюс-группы UseNet, поддерживает автоматическую вставку подписи в текст сообщения, но не работает пока с несколькими почтовыми ящиками.

Package Mgr - менеджер программ, предельно облегчающий установку и, что немаловажно, удаление приложений.

Ну и, разумеется, всякая полезная мелочевка - калькулятор, звонилка "Dialer", менеджер печати, утилита настройки региональных установок, терминал командной строки. Для того, чтобы с этим самым терминалом разобраться, вам придется обратиться к системе помощи - это огромнейшая и очень подробная база данных по всем командам; без досконального ее изучения настроить ОС просто невозможно - это вам не Windows, где все делается методом научного тыка.

Программы

Благодаря тому, что QNX является POSIX-совместимой ОС, большинство программ для UNIX-подобных операционных систем достаточно легко переносятся в QNX. Правда, для этого вам скорее всего придется самолично компилировать исходники - полной совместимости с UNIX все-таки нет. За установку же уже готовых для QNX программ отвечает Package Mgr, однако у меня он почему-то отказался воспринимать более двух программ с установочного диска, коих на нем, разумеется, в десятки раз больше. Но диск не особенно и нужен - на ftp-сервере QSSL (http://ftp.qnx.com/) вы найдете практически все из имеющегося на диске бесплатного софта.

Наиболее примечательны среди приложений для QNX следующие.

PhAB - инструментарий визуального программирования для QNX на основе Watcom C/C++ для Photon - очень мощный пакет разработчика, позволяющий создавать все то, чего вам не хватает в этой системе.

Netscape Navigator - комментарии излишни.

Norton Commander - аналогично.

Abi Word - текстовый процессор, почти как Word, но все-таки не стоит от него ожидать восприимчивости ко всем распространенным текстовым форматам, да и русская версия отсутствует как класс.

GIMP - очень известный среди линуксоидов графический редактор, по возможностям вплотную приближающийся к Photoshop.

Apache - портированный с UNIX чрезвычайно популярный HTTP-сервер. Для работы в интернете, вообще говоря, всего хватает - это и ICQ, и IRC-клиент, и FTP, и менеджеры закачек - надо только не полениться и скачать их из Сети.

Real Player - популярный медиа-плейер, имеется на диске QNX. Кстати, там же вы найдете и DVD-проигрыватель.

Всего, конечно, не перечислить: POSIX-совместимость дает себя знать, программ для QNX в исходниках огромное количество, но вот насколько все это доступно рядовому пользователю - большой вопрос. Скорее всего, основная масса юзеров, избалованная простотой общения с Windows, просто поленится что-то там компилировать, а с уже готовыми программами дела обстоят немного хуже, хотя производством софта именно для QNX занимается немало фирм во всем мире, в том числе и в России. Но все относительно, ибо по большому счету для QNX можно найти почти все, что нужно.

Игры

Разумеется, не стоит ожидать от промышленной ОС каких-то изысков в области игрушек. Да и вообще - разве есть здесь достойный конкурент Windows? QNX, да и все остальные альтернативные операционные системы, предназначены все-таки главным образом для работы, игры для них не являются приоритетом. Максимум, что вам обычно предлагается, - немного разгрузить мозги за какими-нибудь пасьянсами или тетрисами. Видимо, чтобы подчеркнуть серьезность QNX, в состав самой ОС не включены даже самые простейшие игрушки.

Если же вы рискнете скачать себе целиком многомегабайтный образ компакт-диска с QNX, то обнаружите на нем лишь несколько классических игр, которые помогут скоротать пару часов либо немного отвлечь от занудной работы. Самая доступная игрушка - Columns, некое подобие тетриса. Для игроков "мужескаго полу" вполне подойдет великий и бессмертный Doom, ну а молодежь, видимо, отдаст предпочтение уже Quake 3 Demo. Это то, что я нашел в полной версии QNX на компакт-диске.

Правда, в моем распоряжении был только первый вариант такого диска, образ которого в 90 Мб я качал несколько вечеров подряд. Сейчас же вам уже предлагается ISO-файл размером в пару сотен "мегов" - на него меня уже не хватило, но храбрецы, не пожалевшие времени на его закачку, наверняка найдут там еще много интересного. Ну и, опять-таки, ищите любимые игры среди программ для Linux и UNIX - многие из них заработают и в QNX. Но на новинки не рассчитывайте - старички Heretic, Hexen и иже с ними - вот то, что вы, скорее всего, подберете.

Недостатки

Честно говоря, эта ОС лично меня больше раздражала в работе, чем радовала. Так, привод компакт-диска не смонтировался автоматически, модем также системой не обнаруживался, универсальные VESA-драйвера видеокарты давали максимум 60 Гц и при этом заметно тормозили. Даже программы с компакт-диска устанавливаться ни за что не хотели - сплошной геморрой, короче говоря. Заработал только звук, хотя, может, мне просто не повезло.

При этом меня никак не привлекала перспектива лазанья по всяческим "конфигам" и "хелпам" - ну какой рядовой пользователь будет тратить первые месяцы работы с новой ОС на ее изучение и настройку? Нам подавай все на блюдечке, работающее и настраивающееся автоматически. Если вы тоже столкнетесь с трудностями, попробуйте на платах расширения отключить режим Plug-n-Play, переставив на них соответствующим образом перемычки. Также рекомендуется в CMOS Setup установить параметр PnP OS Installed = No. Так что если у вас железное терпение, куча свободного времени или уже имеется опыт общения с UNIX-подобными системами, то флаг вам в руки, посмотреть на QNX действительно стоит.

Хотя BeOS в этом плане представляется гораздо более дружелюбной для неискушенных пользователей. Больше всего поразило отсутствие графического интерфейса управления периферией (наподобие закладки "Устройства" в диалоге "Свойства системы" в Windows) - "конфиги", командная строка и еще раз "конфиги"… Для линуксоидов это, конечно, нормально, но сколько таких?

Три процента пользователей? Или два? Да и линуксоиды вряд ли променяют свой Linux на ОС с закрытым в основной своей массе кодом. Короче говоря, над интерфейсом надо работать - сложность в настройке системы отпугнет и самого опытного пользователя Windows. А ведь альтернативные ОС, наоборот, должны демонстрировать как можно больше своих преимуществ, дабы привлечь капризных поклонников Билла Гейтса.

Еще более серьезная проблема - недостаток драйверов. В последних версиях QNX список поддерживаемых устройств несколько расширен и продолжает постоянно пополняться разработчиками, что хорошо, но очень вероятно, что часть вашего оборудования останется неохваченной. Хотя здесь, похоже, дела все-таки получше, чем все в той же BeOS. Широко распространенное "железо" поддерживается более или менее нормально. Извечные проблемы с русификацией в основном решены, но она в любом случае займет у вас определенное время и потребует некоторого опыта в работе с ПК - в Сети можно найти подробнейшие инструкции со всеми нужными для русификации файлами.

Да и вообще - читайте и ищите всевозможные FAQ в интернете, наиподробнейшей документации по QNX не просто много, а очень много; и в ней ответы на большинство вопросов, которые наверняка возникнут - QNX не для слабонервных, без мощной проработки документации ее не освоить. Короче говоря, система интересная, перспективная, идеально соответствующая своему промышленному предназначению, но пока несколько сыроватая в плане совместимости с железом и абсолютно не рассчитанная на неподготовленного пользователя. В быту же вполне пойдет для слабых машин - вдохнет в них вторую жизнь. Но не для "чайников", да-с, не для "чайников"…

August 2nd, 2012

Вопросы : Рассматриваются вопросы создания образа системы на базе QNX6 Neutrino в основном через интегрированную среду разработки IDE QNX Momentics.

Написано много руководств по установке QNX Neutrino с компакт диска на x86-е системы с BIOS, например книга "QNX Momentics. Основы применения " Сергея Зыля.

В этой статье будут рассмотрены вопросы подготовки образа операционной системы QNX6 для установки и загрузки целевой системы, т.е. тиражируемой единицы оборудования. Под загрузочным образом в QNX, в отличии от пользовательских систем, понимается не "слепок" всей системы, а бинарный файл, обеспечивающий старт ОСРВ QNX и "первичных" компонентов, а, при необходимости, и передачу управления другим скриптам и программам дальнейшей загрузки ОС. Понятие "образ системы" для QNX близко к понятию "образ ядра "(kernel image) для UNIX-систем.

При изучении данной статьи предполагается наличие установленной среды разработки IDE Momentics под Linux или Windows(Рис.1.).

Рис.1. Интегрированная среда QNX IDE Momentics

Также желательно установить ОСРВ QNX6 Neutrino, например на виртуальную машину (Рис.2.). Это поможет в вопросах выяснения зависимости компонентов/библиотек.


Рис.2. QNX Neutrino под виртуальной машиной VmWare

Чтобы исследовать такую зависимость на запущенной системе, на которой корректно работает необходимая Вам служба, можно выполнить команду вида "pidin -P <компонент> mem", где под "компонентом" понимается интересующий Вас, запущенный в QNX, процесс. Так для компонента поддержки удаленной отладки qconn вывод может быть такого вида:

# pidin -P qconn mem

204820 1 usr/sbin/qconn 10o SIGWAITINFO 128K 136K 24K(516K)*
204820 2 usr/sbin/qconn 10o CONDVAR 128K 136K 4096(132K)
204820 3 usr/sbin/qconn 10o RECEIVE 128K 136K 4096(132K)
204820 4 usr/sbin/qconn 10o RECEIVE 128K 136K 4096(132K)
libc.so.3 @b0300000 488K 16K
libsocket.so.3 @b8200000 164K 28K

Или без запуска компонента зависимость можно узнать следующим способом:

# ldd `which qconn`
/usr/bin/qconn:
libsocket.so.3 => /lib/libsocket.so.3 (0xb8200000)
libc.so.3 => /usr/lib/ldqnx.so.2 (0xb0300000)

Из него видно, что на выбранной системе для работы qconn требуются библиотеки libc.so.3, libsocket.so.3.

Если Вы планируете создавать адаптированный образ системы под свои задачи, и на такой системе есть возможность запустить установленный с диска QNX Neutrino, то после запуска вы сможете таким же способом определить аппаратно-зависимые компоненты, которые необходимо включить в образ. Так сетевой менеджер io-pkt-v4-hc на системе, например, может зависеть от следующих компонентов:

# pidin -P io-pkt-v4-hc mem
pid tid name prio STATE code data stack
126998 1 sbin/io-pkt-v4-hc 21o SIGWAITINFO 868K 576K 20K(516K)*
...
126998 8 sbin/io-pkt-v4-hc 21r RECEIVE 868K 576K 4096(132K)
libc.so.3 @b0300000 488K 16K
devnp-shim.so @b8235000 32K 4096
devn-rtl.so @b823e000 52K 4096

т.е. от libc.so.3, devnp-shim.so, devn-rtl.so.

Описание образа ОСРВ QNX
Под описанием образа QNX (чаще называется "построением целевой системы") понимается описание функционала образа системы QNX Neutrino через текстовый файл *.build или через проект System Builder Project в среде разработки IDE Momentics.

В качестве основы для Build-файла можно использовать примеры из каталога /boot/build в QNX Neutrino, установленного с диска, или ${QNX_TARGET}/x86/boot/build на инструментальной системе (Windows, Linux, Neutrino). Файлы из данного каталога имеют определенную структуру и функционал, который можно изменить согласно своим требованиям, т.е. адаптировать образ под свои потребности.

Кроме того можно использовать удобный графический инструментарий среды разработки IDE Momentics. Данное описание основное внимание уделяет графическому описанию образа, как наиболее показательному и удобному.

Для создания проекта описания образа в IDE Momentics в нем необходимо выбрать File->New->Project.., а в открывшемся окне "Select a wizard" отметить QNX->QNX System Builder Project (Рис.3)


Рис.3.Создание проекта-описания

Нажав Next, переходим к окну QNX System Builder, в котором задаём название проекта и, по желанию, его расположение(Рис.4)


Рис.4. Задание имени проекта

Следующее окно позволяет создать проект из готового примера, например из bios.build, через Import Existing Buildfile или создать пустой пример под выбранную аппаратную платформу через Create Generic ->Platform to create project for (Рис.5):


Рис.5. Выбор платформы проекта

Нажав на кнопку Finish, произойдет генерация проекта с выбранным именем, при этом созданный проект сразу же открывается для его редактирования(Рис.6).


Рис.6. Окно созданного проекта

Рассмотрим описание образа, созданного из готового build-файла bios.build (пример проекта можно получить по ссылке). Как и любой build-файл, bios.build можно логически разделить на три секции. Каждая секция имеет своё назначение, возможные параметры и порядок их указания. В среде разработки IDE Momentics разделение на секции реализовано через представление информации в различных вкладках.

Первая секция в среде IDE Momentics описывается в окне Properties, доступного через Window->Show View->Properties(Рис.7). Эта секция описывает создаваемый образ "в целом", т.е. для какой системы он предназначен(процессорная архитектура), параметры образа (базовый адрес, наличие компрессии), используемый модуль startup-* с параметрами, модуль микроядра и менеджера процессов procnto* с параметрами.


Рис.7. Параметры образа системы

В примере на Рис.7 указано, что создается образ для x86-й системы (поле CPU Type с выпадающим списком), при этом система с BIOS - т.е. используется модуль bios.boot (поле Boot File в IDE со значением bios из выпадающего списка) и информация, собранная BIOS, передается в startup-bios (поле Startup), образ создается сжатым по стандартному алгоритму (поле Compressed в IDE). Более подробно доступные параметры и их значения указаны в описании утилиты создания бинарного образа mkifs . В IDE Momentics также доступны поля Image Name для задание имени получаемого бинарного файла *.ifs и поле Boot Script для указания скрипта-описания образа системы *.bsh. Это позволяет в рамках одного проекта создавать несколько различных бинарных образов системы.

В качестве startup* модуля (поле Startup с выпадающим списком) в примере используется стандартный для систем с BIOS startup-bios без дополнительных параметров, при необходимости можно добавить необходимые параметры в поле Startup Arguments согласно документации на startup-bios . Через эти параметры можно настроить вывод отладочной информации на консоль монитора или последовательного порта, произвести специфичные настройки оборудования - работа с процессором и прерываниями, поддержка режима и многое другое. Если на оборудовании возможны аппаратные проблемы, то можно настроить систему на перезагрузку при таком сбое, вместо того, чтобы просто выводить информацию о нем на экран. Для этого модулю startup-bios достаточно передать параметр "-A".

После исполнения startup* происходит загрузка модуля procnto* (поле Procnto с выпадающим списком в IDE), состоящего из микроядра QNX и менеджера процессов . Доступно несколько бинарных версий модуля procnto*, которые можно посмотреть и выбрать в выпадающем списке поля Procnto в IDE. Версии, оканчивающиеся на "-instr", называются инструментальными и позволяют производить отладку системы на этапе разработки или даже эксплуатации. Для некоторых архитектур (x86, ARM, PPC) доступны модули с поддержкой симметричной многопроцессорности - procnto-smp*, т.е. работа на многопроцессорных и/или многоядерных системах. Для ARM-архитектур с поддержкой расширенных инструкции ARMv7 доступны модули procnto-v6* .

При запуске модуля procnto* ему можно передать параметры через поле Procnto Arguments , указывающие микроядру или менеджеру процессов режимы их работы. Например такие, как ограничение количества файловых дескрипторов системы, принудительный отказ от использования FPU , управление дефрагментацией ОЗУ, ограничение доступных пользователю уровней приоритетов и много другое.

Ещё одним интересным параметром, передаваемым модулю procnto*, может быть параметр поля Use APS?, который включает в ядре поддержку технологии Адаптивного квотирования :

Модулю procnto* также можно передать базовые значения основных переменных окружения (поля Procnto $PATH и Procnto $LD_LIBRARY_PATH в IDE), которые будут применены для системы по умолчанию:

PATH=/proc/boot:/bin:/usr/bin LD_LIBRARY_PATH=/proc/boot:/lib:/usr/lib procnto-instr

Вторая секция описания образа представляет собой Boot Script с последовательностью команд запуска компонентов QNX Neutrino. Это описание в IDE Momentics представлено в виде файла *.bsh, создаваемого в структуре проекта(Рис.8).



Рис.8. Описание через bsh-файл

Эта последовательность команд выполняется сразу же после загрузки модуля procnto*. Из образа желательно запускать только критические по времени запуска компоненты, а остальные запускать с внешних носителей уже после старта соответствующих драйверов (сетевых, блочных, flash и т.п.). Для IDE есть возможность в рамках одного проекта иметь несколько bsh-описаний, которые можно выбирать в выпадающем списке поля Boot Script, при этом сборка будет производиться под выбранный скрипт и образ будет формироваться с именем из поля Image Name.

При описании второй секции последовательность команд определяется требованиями к скорости запуска компонентов и зависимостями между запускаемыми компонентами. То есть первыми запускаются те компоненты, требования по времени готовности к которым выше. Из примера такими компонентами могут быть консольный драйвер devc-con, системный логер slogger и сервер PCI - pci-bios. При этом сервер PCI является примером и зависимости компонентов, т.к. перед его запуском необходимо вызвать утилиту seedres. Сам pci-bios также необходимо вызвать предварительно при использовании в системе устройств, работающих по шине PCI (для x86-х систем чаще всего это сетевые, графические, аудио контроллеры, USB и PCI/ PCI-express устройства). При этом перед запуском компонента, который зависит от других, необходимо убедиться, что они корректно исполнились, для чего используются возвращаемые значения исполнения компонентов (обычно это значение "0") или проверяется, зарегистрировал ли свой префикс в /dev/ этот компонент. Например:

pci-bios &
waitfor /dev/pci

Информацию о зависимости компонентов можно найти в документации на интересующий вас основной модуль .

В рамках этого же описания можно использовать специфичный скриптовый язык для вывода информации на консоль при загрузке (команда display_msg ), создание символьных ссылок на компоненты (команда procmgr_symlink <источник ссылки> <новое имя ссылки> ).

Для каждой команды запуска модуля в скрипте можно задать параметры работы процесса: дисциплина диспетчеризации и уровень приоритета:

devc-con -n9 &

Можно указать ядро процессора, на котором должен исполняться модуль (для систем с поддержкой многопроцессорности):

my_program

Исполнение стартового скрипта обычно завершается созданием терминальных консолей

reopen /dev/con1
[+session] sh

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

devb-eide blk automount=hd0t77:/
waitfor /etc/sysinit
sh /etc/sysinit

Кроме того, описание в bsh-скрипте позволяет предохранить систему от изменения последовательности запуска компонентов при старте системы. Таким образом стартовая последовательность может быть изменена только записью нового образа системы. Тем самым повышается надежность системы и защищенность на этапе запуска системы..

Третья секция в IDE Momentics представлена в отдельном окне при открытии файла project.bld созданного проекта (Рис.9).



Рис.9. Включение компонентов в образ

Эта секция содержит информацию о библиотеках, утилитах, системных менеджерах, которые включены в образ и необходимых для запуска системы и исполнения возложенного на него функционала на начальном этапе загрузки. В поле Images, по группам добавляются компоненты - утилиты (Binaries), библиотеки (Shared Libraries), ссылки (Symbolic Links). В поле Filesystem сразу же отображается структура полученной файловый системы, генерируемой при выполнении образа. Каждый добавленный компонент можно настроить через окно Properties - куда разместить, с какими правами, кому принадлежит, как работать с сегментами кода и данных и т.п.

Кроме того для каждого компонента через его свойства (Properties) можно указать из какого места на инструментальной системе использовать компонент при сборке (Filename on Host), куда его разместить на целевой системе (Location In Image) и какие права ему назначить (File Permissions).

В свойствах компонента через раздел Memory также можно указать, как должен исполняться сам компонент - код (Code Segment) и данные утилит (Data Segment) должны копироваться из места их размещения при каждом их вызове (значение Copy) или необходимо значения брать из места его размещения (Use In Place). Data Segment = Copy необходимо указывать, если возможен многократный вызов компонента, это актуально для большинства утилит и не применимо для библиотек.

После того, как описание образа закончено необходимо из такого описания получить бинарный образ для загрузки. В IDE Momentics для этого необходимо собрать проект стандартным способом: Build Project (Рис.10.).


Рис.10. Сборка образа системы

При этом выполняется команда, похожая на команду сборки образа из консоли:

mkifs -vvv bios.build bios.ifs

После чего в каталоге Images появится нужный образ bios.ifs. Полученный образ необходимо разместить в месте, из которого произойдет его загрузка и исполнение (например, каталог /.boot в разделе с файловой системой qnx6fs), или вручную перенести образ в память и запустить его на исполнение (пример реализации на ARM):

load -r -b 0x100000 test.raw; go 0x100000

Для большинства систем в проекте построения явно или неявно указано место в памяти, куда производиться загрузка образа. Однако, например для x86-х систем, стандартное значение в 4Mbyte (0x400000) для больших образов системы может приводить к проблеме загрузки . Для её решения необходимо вместо стандартного значения указать (в поле Image Address ввести значение 0x800000) (Рис.11).


Рис.11. Изменение адреса размещения образа системы

В остальном проблем при использовании стандартных методов загрузки через BIOS быть не должно, конечно если Ваша система поддерживается ОС QNX Neutrino.

Вывод: Используя продукт QNX, с помощью достаточно простого и в то же время функционального инструментария, можно создать адаптированный под Ваши требования и оборудование системный образ. Принцип описания образа достаточно простой и переносимый между версиями ОСРВ QNX Neutrino - при таком переносе изменения в образе вносить нет необходимости (или они делаются по-минимуму). При использовании мощного инструментария IDE Momentics создание образа сводится к выбору из выпадающего списка необходимых значений, указанию параметров образа, компонентов и описания последовательности запуска их при старте образа. Сборка самого образа производится на уровне упаковки компонентов в единый файл по принципу, подобному архивации, не используя компиляцию из исходных кодов, как в большинстве других систем, что существенно сокращает скорость сборки и проверки корректности его работы.

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 . После этого лицензия будет выслана на указанный адрес электронной почты.

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

Так сложилось, что моя деятельность связана с операционной системой реального времени (ОСРВ) 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 . После этого лицензия будет выслана на указанный адрес электронной почты.

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







2024 © gtavrl.ru.