42
ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ ПЛАТФОРМА QNX6 А. Астапкович Лекция 9 ВСТРОЕННЫЕ СИСТЕМЫ УПРАВЛЕНИЯ Государственный университет аэрокосмического приборостроения, СПб, 2012

ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ ПЛАТФОРМА QNX6

  • Upload
    baba

  • View
    106

  • Download
    4

Embed Size (px)

DESCRIPTION

ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ ПЛАТФОРМА QNX6. А. Астапкович. ВСТРОЕННЫЕ СИСТЕМЫ УПРАВЛЕНИЯ. Лекция 9. Государственный университет аэрокосмического приборостроения, СПб, 201 2. Встроенные системы управления. ПЛАТФОРМА QNX. История QNX. - PowerPoint PPT Presentation

Citation preview

Page 1: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ

ПЛАТФОРМА QNX6

А. Астапкович

Лекция 9

ВСТРОЕННЫЕ СИСТЕМЫ УПРАВЛЕНИЯ

Государственный университет аэрокосмического приборостроения, СПб, 2012

Page 2: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Встроенные системы управления

ПЛАТФОРМА QNX

Page 3: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Операционная система QNX имеет многолетнюю историю .

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

В настоящее время на практике используются две версии программно-инструментальных платформ: QNX4 для систем управления с централизованной структурой (ОСРВ QNX4.X)

QNX6 для систем управления с распределенной структурой (ОСРВ Neutrino) .

История QNX

Page 4: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Концепция NEUTRINO

Глобальной целью проекта Neutrino было создание универсальной, развиваемой, масштабируемой и ОСРВ.

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

Платформа QNX6 включает в себя:

• операционную систему реального времени QNX Neutrino; • программно-инструментальную среду QNX Momentics, реализованную на базе IDE Eclipse;• пакеты программного обеспечения промежуточного слоя

QNX Aviage.

Page 5: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Базовые стандарты Реализация базовых компонент микроядра Neutrino соответствует

стандартам :

POSIX 1003.1, 1003.1a 1003.1b Realtime 1003.1c Threads 1003.1d Realtime Extensions 1003.13 Realtime Profile Support

Стандарты семейства POSIX 1003.1 используют модель операционной системы

с возможностью выполнения многих процессов в квазипараллельном режиме.

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

недоступную для компонентов другого потока (стандарт ARINC-653).

Page 6: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Thread (нить)

Нить (thread) является синонимом потока

В литературе ( переводной) используют оба термина

Определение “ Нить это компонент в процессе исполнения”

наиболее адекватно смыслу, но слово процесс уже занято !

OC

Компонент (подпрограмма, функция)

A –адресное пространство

T – временные слоты

Page 7: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Алгоритм функционирования многоканальной системы реального времени представляет собой некоторое множество взаимодействующих нитей (потоков) и процессов.

Реализация компонентов осуществляется под управлением базовой сущности называемой нитью (thread). Понятие нить введено в стандарте POSIX, и оно представляет собой компонент в стадии реализации.

.

Потоки (нити)

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

При диспетчеризации FIFO потоку предоставляется процессор на столько, сколько ему необходимо

A-адресное пространство

T-время

OC

Tc

Нити(прикладные задачи)

Page 8: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Совокупность нитей образует процесс, который должен иметь хотя бы одну нить. Количество нитей в процессе может варьироваться.

Процесс обладает собственным защищенным адресным пространством

Процессы

OC

Процесс 1

Процесс 2

A-адресное пространство

T-время

Процессы могут реализовываться, как на одном аппаратном модуле, так и на системе модулей, объединенных в сеть

Нити

Нити

Page 9: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Концепция декомпозиции

Наличие механизма процессов с технологической точки зрения разработки ПО обеспечивает :

Возможность единообразного способа декомпозиции задачи на модули Параллельную разработку (отладку ) модулей с минимизацией проблем при интеграции системы

Увеличение качества конечного продукта за счет увеличения количества ошибок и облегчения организации сопровождения

Page 10: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Состав платформы QNX6

Встроенные системы управления

Page 11: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Описание алгоритма

cредствами IDE :

объекты ОСРВ,

компоненты Корректировка

описания алгоритма,

модификация алгоритма

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

образец

Отладка с использованием внутрисхемного эмулятора

Трансляция или

компиляция кода,

сборка кода

Отладка с использованием

симулятора

Интегрированные программно-инструментальные среды (IDE)

Integrated Development Environment (IDE) – специализированный аппаратно-программный комплекс для разработки систем

управления встраиваемого класса.

Совокупность возможных реализаций IDE образует платформу поддержки разработки.

Page 12: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Структура платформы QNX6

РАБОЧЕЕ

ПРОСТРАНСТВO IDE

(на базе ECLIPSE)

Инструментарий для разработки кода приложения на языках C/C++,

JAVA

Профайлер

приложений

Системный

профайлер

Монитор

целевых

системСимвольный

отладчик

Построитель

приложений

PHOTON

ИНСТРУМЕНТАЛЬНЫЙ КОМПЬЮТЕР С OC: WINDOWS, SOLARIS, QNX NEUTRINO

АППАРАТНАЯ СОСТАВЛЯЮЩАЯ РАЗРАБАТЫВАЕМОЙ СИСТЕМЫ

Последовательный

коммуникационный

канал ETHERNET

Page 13: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Аппаратная компонента

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

•Intel x8, AMD - CISC архитектура фирмы INTEL;•MIPS - RISC архитектура фирмы MIPS Technologies;•ARM, StrongARM- RISC архитектура фирмы Advance Risc Machine;•SH-4 - RISC архитектура фирмы Renesas;•PowerPC - RISC архитектура фирмы IBM.

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

ISA, PCI, VME,STD, STD 32 и PC/104.

Page 14: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Концепция ОСРВ Neutrino

Встроенные системы управления

Рекомендуемая литература: Роберт Кртен. Введение в QNX Neutrino 2-е изд., 2011

Page 15: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Концепция построения ОСРВ Neutrino :• использование микроядерной архитектуры; • модульная организация системы; • информационный обмен между процессами посредством сообщений;• поддержка платформенного подхода.

Микроядерная архитектура

Page 16: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Менеджер процессов Выделяет и поддерживает адресные пространства

процессов. При запуске процесса осуществляет выделение ему памяти и активирует его потоки (нити).

При необходимости использовать другой поток в другом процессе менеджер процессов переключает адресное пространство.

Запуск процессов осуществляется разными способами, которые реализуются системными компонентами Neutrino.

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

Page 17: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Для защиты памяти Neutrino имеет в своем составе опционально подключаемый

компонент управления памятью (Memory Management Unit – MMU).

Этот компонент обеспечивает работу с таблицами описания распределения памяти между процессами.

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

Обычно MMU делит память на страницы по 4 кБайта.

Защита памяти

Page 18: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

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

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

Программный сторожевой таймер

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

Page 19: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

МИКРОЯДРО NEUTRINO

Встроенные системы управления

Page 20: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Описание алгоритма управления представляет собой программу на языке высокого уровня (C,JAVA) написанную в соответствии с набором правил QNX6.

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

Системные

вызовыМикроядро

Объекты

микроядра

Объекты микроядра Neutrino.

Объекты микроядра

Page 21: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Идентификация потоков

Как правило нити (потоки) конкретного приложения требуют информационного обмена между собой

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

Соответственно, помимо нитей в набор объектов микроядра входят компоненты, обеспечивающих информационное взаимодействие нитей между собой в процессе выполнения: connection, channel, pulse. С одной стороны потоки используют общее адресное пространство своего процесса, а с другой, имеют собственные данные, которые обеспечивают идентификацию потоков при информационных обменах. Эти данные называются атрибутами потока.

Page 22: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Атрибуты потока

Атрибуты потока Neutrinotid порядковый номер внутри своего процессаregister set собственный указатель на команду (IP) и

указатель на стэк (SP)

stack стэк потока, сохраняемый внутри адресного пространства процесса

signal mask маска сигналовthreadlocal storage

память для хранения локальных данных нити (Thread Local Storage -TLS) , таких как: tid,pid, stack, stack base, errno.

cancellation handlers

Функции формирования данных при уничтожении нити

После успешного завершения этих операций производится постановка потока в очередь на выполнение.

Количество потоков внутри процесса может динамически меняться в процессе исполнения.

Создание потока осуществляется посредством вызова функции pthread create() , которая выделяет и инициализирует все необходимые потоку ресурсы внутри адресного пространства процесса.

Page 23: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Состояния потока

READY – поток ожидает ресурса для выполнения пока процессор исполняет другу нить с большим или равным приоритетом

RUNNING- компонент выполняется процессором

SIGSUSPEND – выполнение приостановлено до получения сигнала

DEAD – выполнение завершено и поток ожидает присоединения к другому потоку

INTERRUPT– поток блокирован и ожидает сигнала прерывания

Page 24: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Диспетчеризация потоков осуществляется автономно, без учета

состояния своего и других процессов.

Потоки, готовые к исполнению образуют очереди, упорядоченные в

соответствии с приоритетами.

Список дисциплин традиционен для QNX : FIFO, RR и адаптивная.

С этой точки зрения, поток может находится в трех состояниях :

выполнения, быть вытесненным другим потоком с большим приоритетом

или быть заблокированным.

Диспетчеризация потоков

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

Page 25: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Информационное взаимодействие процесов в

Neutrino

Page 26: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Поддержка модели потоков подразумевает возможность использования общих данных для реализации своих компонент.

Иерархия способов обмена двухуровневая. Она включает в себя обмены внутри процесса и обмены информацией нитями из разных процессов.

Информационное взаимодействие

Ключевая особенность Neutrino - обмен посредством сообщениями между процессами (Inter Process Communication, IPC).

Обмен сообщениями по сути дела является тем клеем, который связывает модули Neutrino и прикладные компоненты в единое целое и призван обеспечить универсальность этой операционной системы.

Page 27: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

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

На структуру и содержание сообщения не накладывается никаких ограничений.

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

Разновидности типов коммуникаций NeutrinoТип Уровень реализации

Передача сообщений(message-passing)

Микроядро

Сигналы (signals) Микроядро

POSIX очереди(POSIX message queues)

Внешний процесс

Разделяемая память(shared memory)

Менеджер процессов

Трубы (pipes) Внешний процесс

FIFO Внешний процесс

Типы коммуникаций

Page 28: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Механизм реализации IPC

ПРОЦЕСС CLIENT

ПОТОК_ 1

ПОТОК_ 2

ПОТОК_ K

ПРОЦЕСС SERVER_1

ПОТОК_ 1

ПОТОК_ 2

ПОТОК_ M

Канал

(Channel)

ChannelCreate()

Cоединение

(Connection)

ConnectAttach()

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

Поток, который ожидает сообщения, должна создать канал для его передачи. Поток, которому требуется послать сообщение должна сначала установить соединение путем подключения к каналу. Эти операции выполняются путем вызова соответствующих системных функций ChannelCreate() и ConnectAttach(). У этих функций есть антиподы ChannelDestroy() и ConnectDetach(). После установления соединения процесс клиент может посылать сообщения, пользуясь системной функцией MsgSend().

Page 29: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Синхронизация обменов

В общих чертах это осуществляется следующим образом:

текущее состояние процесса описывается соответствующей переменной;

посылка сообщения, ожидание и прием сообщения соответствующим образом меняют текущее состояние процесса;

поток, вызвавший вызов системной функции

MsgSend()для отправки сообщения другому потоку, который может находится внутри другого процесса, будет блокирован до тех пор, пока поток адресант сообщения не выполнит вызова системной функции MsgReceive(), обработает полученное сообщение и не выполнит вызова системной функции MsgReply().

Page 30: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

ОБРАБОТКА ПРЕРЫВАНИЙ

Page 31: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

В Neutrino при появлении сигнала прерывания от аппаратного модуля,

управление передается на уровень микроядра, которое осуществляет

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

В одноканальном приближении ключевым параметром является время реакции на событие (interrupt latency) представляющее временной

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

Это время относительно невелико. Однако, оно может существенно возрасти, если система прерываний будет заблокирована, например, каким-либо системным процессом.

Механизм обработки прерываний

Page 32: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Задержка диспетчеризации

Обработка прерываний осуществляется запуском диспетчером потока (нити) обработчика соответствующего прерываний, обладающим высоким приоритетом.

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

Для определения задержки при таком варианте обработки прерываний введена характеристика, называемая задержка диспетчеризации (scheduling latency). Задержка диспетчеризации определяется, как временной интервал между

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

Page 33: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Системные функции clock(), timer(), synch() используются для отслеживания времени суток и измерения длительности временных интервалов.

С помощью этих функций Neutrino обеспечивает возможность синхронизации часов между несколькими системами.

Приложение, запрашивающее сервис, нуждающийся в тайм-ауте, запрашивает у микроядра автоматический запуск таймера в случае перехода приложения в определенное состояние.

Запуск таймера и запрос сервиса в этом случае реализуются как атомарная операция, исключающая неоднозначность.

Системный таймер

Page 34: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Инструментальная среда QNX Momentics

Page 35: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Neutrino разрабатывалась с учетом необходимости обеспечить ее удобную интеграцию в программно-инструментальные платформы.

Пара базовых элементов Neutrino микроядро и менеджер процессов (Process Manager) называется procnto.

Блок procnto поставляется в двух модификациях, одна из которых предназначена для использования в процессе отладки.

Эта инструментальная версия называется proconto-instr и обладает широким

наборов средств для трассировки и мониторинга состояния разрабатываемой

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

Философия подхода

Page 36: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

QNX6 имеет в своем составе компонент Photon, предназначенный для обеспечения графического интерфейса (Graphic User Interface – GUI).

Его реализация базируется на механизме обмена сообщениями. Этот интерфейс ориентирован на использование оконных интерфейсов Windows и Unix, с

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

интерфейса (Remote User Interface – RUI).

Разработка этой оболочки велась одновременно с разработкой Neutrino.

История развития

В настоящее время для разработки c Neutrino начинает широко использоваться IDE QNX Momentics.

Page 37: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Программно-инструментальная среда QNX Momentics представляет собой унифицированную среду для разработки многокомпонентных и разнородных систем управления.

QNX Momentics состоит из ядра Eclipse, к которому подключены специализированные QNX расширения.

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

сред поддержки разработки, путем объединении компонент IDE.

Архитектура и способ реализации Eclipse ( язык JAVA ) обеспечивают его Переносимость и расширяемость.

ПРИНЦИПЫ РЕАЛИЗАЦИИ

Page 38: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Символьный отладчик Momentics обеспечивает возможность:

• одновременно отлаживать несколько приложений, написанных на C, C++ и/или Java;

• отлаживать многопоточные приложения, контролируя каждый поток по отдельности и отслеживая передачу управления между ними;

• отлаживать несколько процессов, выполняющихся одновременно на микропроцессорах с различными архитектурами ;

• динамически подключаться отладчиком к любому выполняющемуся процессу;

• проводить анализ дамп-файлов при аварийном завершении отладочного теста.

Символьный отладчик Momentics

Page 39: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

ОКОННЫЙ ИНТЕРФЕЙС

Page 40: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Монитор и навигатор

Связь с аппаратной компонентой разрабатываемой системы обеспечивают

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

Монитор целевых систем предоставляет информацию о системах и процессах

и используется совместно с навигатором целевых систем.

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

Page 41: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Монитор целевых систем позволяет в режиме исполнения программного кода отследить использование ресурсов, конкретными процессами и потоками.

Можно проконтролировать расход памяти и ресурсов процессора, как для всей

системы в целом, так и для каждого процесса в отдельности.

Монитор позволяет отслеживать ряд атрибутов потока, таких как его текущее

состояние, дисциплина планирования, использование процессора, размер стека,

состояния сигналов, карты памяти программы, файловые дескрипторы и т.д .

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

блокирования.

Возможности монитора

Page 42: ПРОГРАММНО- ИНСТРУМЕНТАЛЬНАЯ  ПЛАТФОРМА QNX6

Разработка программного обеспечения для систем управления обладает рядом существенных отличий по сравнению с разработкой программного обеспечения для чисто информационных систем.

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

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

Инструментальные версии