SWD Software Ltd. - официальный дистрибьютор QNX на территории России и стран бывшего СССР Операционная система реального времени QNX
Инструменты для создания надёжных встраиваемых систем и
интеллектуальных устройств любой сложности
QNX Software Systems - разработчик встраиваемой операционной системы QNX
  Стандартная версия

QNX: современные технологии для современных встраиваемых систем

Кузнецов Александр Александрович,
руководитель образовательных проектов SWD Software

Технологический прогресс быстро расширяет возможности встраиваемых систем: если ещё 15-20 лет назад в них использовались 8-битные процессоры, кнопки и светодиодная индикация в качестве человеко-машинного интерфейса, то сейчас многоядерные 64-разрядные платформы и трёхмерная анимированная графика уже не являются экзотикой. Рост производительности встраиваемого оборудования позволяет создавать системы с более широкими функциональными возможностями, но с усложнением встраиваемого ПО растут и риски, связанные с его надёжностью, безопасностью, стоимостью и длительностью разработки. Важный фактор борьбы с этими рисками – выбор операционной системы, которая позволяет не только удовлетворить технические требования к проектируемому устройству, но и рационализировать цикл его разработки. Поскольку многие встраиваемые системы должны гарантированно и своевременно реагировать на внешние события, для их создания используются операционные системы реального времени (ОСРВ).

В этом году исполняется 30 лет с момента появления QNX – первой коммерческой ОСРВ. ОСРВ QNX были изначально ориентированы на максимально широкий круг применений и мировые промышленные стандарты. Опыт, полученный в результате разработки и эксплуатации многочисленных систем самого разного назначения, привёл к появлению технологий, рационализирующих цикл разработки ответственного ПО. Благодаря этим технологиям разработчики могут обеспечивать высокую отказоустойчивость и функциональную безопасность целевых систем, интегрировать в неё готовые сторонние разработки и решать множество других задач штатными средствами операционной системы. ОСРВ QNX Neutrino поставляется вместе с комплектом разработчика QNX Momentics, в состав которого входят графические инструменты для создания, отладки, верификации и оптимизации ПО реального времени. ОСРВ QNX Neutrino и комплект разработчика образуют платформу разработки ПО – QNX Software Development Platform (SDP).

В июле 2010 г. вышла в свет новая версия QNX SDP 6.5, созданная экспертами компании QNX Software Systems при участии сообщества разработчиков Foundry27. Основными преимуществами этой версии являются усовершенствованная поддержка оборудования с новыми процессорами ARM, надёжный масштабируемый механизм асинхронного взаимодействия задач, а также успешная сертификация защищённой версии ОСРВ QNX Neutrino по уровню безопасности SIL3 (Safety Integrity Level 3) международного стандарта IEC 61508.

Технология Persistent Publish/Subscrib

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

В традиционных асинхронных механизмах (импульсах, сигналах и очередях POSIX-сообщений) получатель работает с данными, структуры которых определяются на этапе проектирования. Это усложняет расширение и модификацию межпроцессной коммуникации, поскольку при её изменении требуется модифицировать код всех программ, использующих данные. Кроме того, такой подход вынуждает разработчиков определять протокол обмена данными как можно раньше в процессе проектирования, что не всегда удобно. В ОСРВ QNX 6.5 предложен альтернативный механизм асинхронного взаимодействия задач – Persistent Publish/Subscrib (PPS).

Технология PPS основана на объектах, обладающих набором именованных атрибутов. Процесс, создающий объект, называется сервером публикаций (publisher). С объектом можно связать множество процессов-подписчиков (subscriber), которые получают уведомление об изменении атрибутов объекта. Механизм подписки реализован с помощью администратора pps, который хранит объекты как файлы в собственной файловой системе. Эти файлы состоят из строк типа атрибут::значение, а работать с файлами можно как программно при помощи стандартных функций типа read() и write(), так и из командной строки командами echo и cat. Считывая файл, подписчик способен легко получить как текущий список атрибутов соответствующего объекта, так и значение любого из них; запись в файл, будь то модификация существующего атрибута или создание нового, приводит к генерации уведомлений всем подписчикам о модификации объекта. Вносить изменения в объекты могут не только программы, но и оператор: ему достаточно добавить в нужный файл описание нового атрибута при помощи команды echo или отредактировать содержимое файла в текстовом редакторе.

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

Технология PPS успешно применена компанией QNX Software Systems в отладочной платформе Smart Energy для интеллектуального управления системами энергопотребления зданий. Эта платформа включает в себя большое количество программ, работающих с различными внешними устройствами – датчиками, контроллерами, счётчиками и др., а также сервер базы данных QDB. Управление платформой осуществляется через графический интерфейс с flash-графикой. В отсутствие механизма PPS для взаимодействия графического интерфейса с каждым приложением потребовалось бы создать специальное flash-расширение; использование PPS сократило число flash-расширений до двух: одного – для службы PPS и второго – для QDB.

Надёжность ОС и поддержка аппаратных платформ

Усложнение встраиваемого ПО приводит к быстрому увеличению объёма его кода: согласно данным консалтинговой фирмы Willert Software Tools GmbH, объём кода типового встраиваемого приложения каждые 5 лет возрастает на порядок. Исследование компании Coverity показывает, что среднее количество ошибок в 1 млн. строк программного кода равно 434, а в широкораспространённых продуктах (которые, как правило, хорошо отлажены и протестированы) составляет 290. Объём исходного кода ядра ОСРВ QNX Neutrino равен 0,1 млн. строк, в то время как у некоторых распространённых в промышленности ОС этот показатель составляет 3-7 млн., а у ОС общего назначения – до нескольких десятков млн. Такая разница объясняется тем, что во всех версиях ОСРВ QNX Neutrino микроядро несёт лишь базовые системные функции, а в других ОС круг задач ядра гораздо шире. Развитие этих ОС приводит к постоянному расширению их ядер, а в ОСРВ QNX растёт лишь количество внешних программ и библиотек, которые могут быть включены или исключены из целевой системы по усмотрению разработчика. Таким образом, микроядерная архитектура является всё более и более важным преимуществом ОСРВ QNX с точки зрения надёжности системных сервисов. Для обеспечения отказоустойчивости на уровне «пользовательских» процессов и системы в целом в ОСРВ QNX имеется целых ряд технологий – комплект высокой готовности (High Availability Toolkit), адаптивное квотирование ресурсов (Adaptive Partitioning), мгновенная активация устройств (Instant Device Activation) и др. Кроме того, технология прозрачных распределённых вычислений (Transparent Distributed Processing ,TDP) позволяет строить многомодульные системы, где основные и резервные сервисы расположены на разных узлах.

Эффективная поддержка современных промышленных аппаратных платформ – важная задача любой современной ОСРВ. В поставку QNX SDP входят версии микроядра для процессоров семейств x86, MIPS, ARM, PowerPC и SH-4, а штатный компилятор обеспечивает генерацию двоичных файлов для этих архитектур. Одно из усовершенствований платформы разработки ПО QNX SDP 6.5 связано с поддержкой процессоров ARM. В предыдущих версиях QNX SDP компилятор создаёт единый набор двоичных файлов для архитектур ARMv5, ARMv6 и ARMv7, что обеспечивает лёгкую переносимость ПО между процессорами, однако не позволяет использовать все преимущества новейших процессоров с более совершенными системами команд, таких как Cortex A8/A9. Компилятор GCC 4.4, входящий в состав QNX SDP 6.5, поддерживает новый тип целевых систем – ARMv7. При компиляции программ для ARMv7 используется новый двоичный интерфейс процессоров ARM для встраиваемых приложений (англ. Embedded Application Binary Interface, EABI).

Процессоры с архитектурой Cortex A9 имеют многоядерные версии, а ОСРВ QNX обеспечивает на них симметричную мультиобработку ПО (Symmetrical Multiprocessing, SMP) с поддержкой до 32 ядер. Рост процессорной мощности позволяет повысить конкурентоспособность встраиваемых систем за счёт расширения их функциональности, а также сократить стоимость разработки и сопровождения систем, которые при одноядерных процессорах состояли бы из нескольких вычислительных узлов.

Международные стандарты и сертификация

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

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

  • POSIX PSE52 Realtime Controller 1003.13-2003 – сертификат, который подтверждает, что у ОСРВ QNX функциональность API, утилит и командного интерпретатора соответствует требованиям профиля PSE52 (контроллер реального времени) стандарта IEEE 1003.13-2003.
  • EAL4+ - оценка по стандарту безопасности информационных технологий «общие критерии», которая подтверждает, что ОСРВ QNX может использоваться в приложениях, где к операционной системе предъявляются особые требования по защите информации от несанкционированного доступа.
  • OpenGL ES – поддержка стандарта разработки кроссплатформенных пользовательских интерфейсов с двух- и трёхмерной графикой для встраиваемых систем. ОСРВ QNX Neutrino включает в себя технологию Core Graphics, которая позволяет интегрировать компоненты на основе OpenGL ES, Adobe Flash и штатной графической оболочки Photon в единую графическую среду.
  • SIL3 – сертификат, который в соответствии с международным стандартом IEC 61508 подтверждает, что меры, принятые для усиления системы безопасности ОСРВ QNX Neutrino, повышают отказоустойчивость функций безопасности не менее чем в 1000 раз. Для получения этого сертификата была создана специальная версия ОСРВ QNX Neutrino с защищённым ядром, которая изначально формировалась с помощью жёстко регламентированных и контролируемых независимыми аудиторами процедур разработки. Международный стандарт IEC 61508 был утвержден Международной электротехнической комиссией и принят в качестве национального стандарта Российской Федерации.

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

Промежуточное ПО и отладочные платформы

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

  • комплекты разработки драйверов (Driver Development Kit, DDK) – предоставляют программный интерфейс для работы с устройствами определённого типа. Компания QSS предлагает разработчикам DDK для аудиоустройств, сетевых и графических плат, символьных устройств, устройств ввода и интерфейса USB. Эти DDK доступны для загрузки с веб-сайта компании QSS, http://www.qnx.com.
  • промежуточное ПО (англ. middleware) – инфраструктура для реализации и интеграции некоторой функциональности (к примеру, СУБД или удалённого взаимодействия объектов в распределённой среде). Примерами промежуточного ПО для ОСРВ QNX являются технология Real-Time CORBA для построения разнородных распределённых вычислительных систем, встраиваемая СУБД Empress и комплект QNX Aviage, предназначенный для создания сложных графических и мультимедийных пользовательских интерфейсов. Комплект QNX Aviage включает в себя три пакета: QNX Aviage Multimedia Suite (подключение различных носителей информации, кодирование/декодирование мультимедийной информации и организация данных), QNX Aviage Acoustic Processing Suite (библиотека модулей повышения качества речевой коммуникации) и QNX Aviage HMI Suite (ПО для интеграции элементов на основе технологии Adobe Flash в графический интерфейс). Использование промежуточного ПО даёт разработчикам два важных преимущества: во-первых, сокращается объём кода при создании целевых функций, а, во-вторых, появляется возможность интегрировать в систему уже готовые компоненты (как собственные, так и сторонние). Это позволяет ускорить разработку системы и снизить количество ошибок в программном коде.
  • отладочные платформы (англ. reference platform) – программно-аппаратные комплексы, предназначенные для упрощения разработки прикладных решений на основе ОСРВ QNX. Компания QNX Software Systems предлагает отладочную платформу QNX CAR для встраиваемых автомобильных приложений (приборной панели и информационно-развлекательных систем), Building Automation Reference для автоматизации зданий и Smart Energy для рационального управления энергопотреблением. Отладочные платформы поддерживают различные процессорные платы и внешние устройства, а также включают в себя готовую коммуникационную и графическую инфраструктуру. Использование отладочных платформ сокращает цикл разработки встраиваемых систем за счёт решения задачи интеграции оборудования и создания функционального базиса для реализации прикладных возможностей целевой среды.

Современные задачи и актуальные решения

Результат тридцатилетнего развития ОСРВ QNX – это всесторонний комплекс технологий для разработки встраиваемых систем ответственного применения. В основе этого комплекса лежат механизмы, необходимые для удовлетворения жёстких требований к времени реакции компьютерной системы на внешние события. В условиях растущей сложности прикладного ПО и промышленных ОС микроядерная архитектура становится всё более важным преимуществом ОСРВ QNX Neutrino, поскольку она сводит к минимуму риски проявления дефектов на уровне операционной системы, а также упрощает отладку приложений. Поддержка прозрачных распределённых вычислений позволяет разработчикам создавать модульные системы управления без использования специализированных технологий удалённого взаимодействия ПО. Штатные средства отказоустойчивости системных сервисов и приложений, а также наличие сертификатов EAL4+ и SIL3 является важным фактором снижения рисков для надёжности, информационной и функциональной безопасности ответственных систем. Разнообразное промежуточное ПО позволяет разработчикам создавать многофункциональные встраиваемые системы, соответствующие передовым современным требованиям, а специализированные отладочные платформы значительно упрощают создание решений на базе ОСРВ QNX для различных сфер промышленности. Последовательное движение технологий QNX вперёд в фарватере технического прогресса позволяет констатировать, что сегодня, как и тридцать лет назад, их возможности отвечают современным потребностям и позволяют решать широкий спектр самых актуальных проблем.