Среда разработки и набор компиляторов позволяют вести кросс-разработку ПО для VxWorks на языках Си, C++, Ada, Java.
RTEMS
Операционная система RTEMS представляет собой полнофункциональную ОСРВ с открытым исходным кодом. В первоначальном своем варианте система разрабатывалась по заказу министерства обороты США[2] для использования в крылатых ракетах. В настоящий момент разработкой системы руководит компания OAR, а принять участие в разработке может любой желающий, при этом система достаточно стабильна, несмотря на свое постоянно развитие. Система поддерживает ряд стандартов интерфейсов программирования приложений (API) и стандартов интерфейсов операционных систем таких как POSIX и BSD сокеты. Области применения данной ОС достаточно широки – от космической техники до медицинского оборудования. Одним из самых известных примеров применения RTEMS является автоматическая межпланетная станция для исследования Марса на которой RTEMS используется в качестве ОС одной из подсистем. Благодаря использованию компилятора GCC и продуманной архитектуры построения проекта ОС RTEMS может быть собран практически для всех архитектур, которые поддерживает GCC[3]. В их состав входят:
- ARM;
-PowerPC;
-Intel x86;
-Blackfin;
-MIPS;
-Microblaze;
-SPARC;
-Intel i960.
Средства разработки и кросс-компиляции также доступны для широкого круга ОС, включая GNU/Linux, MS-Windows, FreeBSD, Solaris. Основные возможности RTEMS:
-Поддержка POSIX 1003.1b API включая потоки;
-RTEID/ORKID API;
-Поддержка стека протоколов TCP/IP:
-UDP, TCP;
-ICMP, DHCP, RARP;
-Поддержка целого ряда файловых систем:
-Корневая виртуальная ФС размещаемая в ОЗУ In-Memory Filesystem (IMFS);
-FAT;
-NFS;
-RFS (RTEMS file system) родная файловая система RTEMS.
-Поддержка многозадачности;
-Выполнение в гомогенных и гетерогенных мультипроцессорных системах;
-Событийно-управляемая, приоритетная, вытесняющая многозадачность;
-Поддержка rate monotonic scheduling (RMS);
-Наследование приоритетов;
-быстрая обработка прерываний;
-динамическое выделение памяти;
-динамическая загрузка и связывание модулей;
-широкие возможности для конфигурации системы;
-Очереди сообщений;
-Механизм сигналов;
-Возможность встраивания интерпретатора языка Python.
QNX
Одна из самых известных операционных систем основанная на технологии микроядра. Первый релиз системы состоялся в 1982 году. В настоящее время считается хорошо проработанной системой содержащей минимальное количество ошибок. QNX идеально подходит для встраиваемых приложений реального времени. Она может быть масштабирована до самых компактных конфигураций и способна работать в многозадачном режиме, управлять потоками, осуществлять планирование процессов по приоритетам и выполнять быстрое переключение контекста. Более того операционная система предоставляет все эти возможности посредством программного интерфейса, основанного на стандартах POSIX[4]. Таким образом, компактность системы достигается не в ущерб стандартам. Кроме того, QNX обладает достаточной гибкостью в настройке. Разработчик может легко изменять ее конфигурацию в соответствии с требованиями создаваемых приложений. При разработке можно использовать только те ресурсы, которые необходимы для конкретной задачи, изменяя систему в диапазоне от минимальной конфигурации микроядра с несколькими базовыми модулями до полнофункциональной сетевой системы, предназначенной для обслуживания сотен пользователей.
Принцип модульности ОСРВ QNX достигается в основном за счет двух фундаментальных особенностей: микроядерной архитектуры, и глобального межзадачного обмена сообщениями. ОС QNX строится на основе компактного микроядра, способного управлять группой взаимодействующих процессов. Микроядро реализует следующие базовые функции:
-управление потоками посредством POSIX-примитивов для создания потоков;
-управление сигналами;
-обмен сообщениям, с помощью которого микроядро выполняет трассировку вех сообщений, пересылаемых между всеми потоками в системе;
-синхронизацию посредством примитивов синхронизации потоков;
-планирование;
-управление таймерами;
-управление процессами.
В отличие от потоков, микроядро никогда не планируется на выполнение. Процессор выполняет код в микроядре только в случае явного вызова ядра, при возникновении исключения или в результате аппаратного прерывания.
Все службы ОС, за исключением тех, которые выполняются обязательным модулем микроядра, обрабатываются посредством стандартных процессов. К их числу могут относится:
-администраторы файловых систем;
-администраторы устройств символьного ввода-вывода;
-графический сервер;
-сетевой администратор;
-стек протоколов TCP/IP.
Системные процессы по сути ничем не отличаются от пользовательских. Они используют те же самые унифицированные службы программного интерфейса ядра. Которые доступны для любого пользовательского процесса, имеющего соответствующие привилегии. Поскольку большинство служб ОС выполняются стандартными системными процессами, конфигурация ОС может быть легко дополнена новыми компонентами, для чего достаточно написать соответствующие программы, предназначенные для выполнения новых служб[5].
RT-Preempt-Linux
Популярная UNIX-подобная операционная система с открытым исходным кодом. Система построена, в отличие от большинства современных ОСРВ, на основе монолитного ядра с возможностью загрузки и выгрузки отдельных модулей. Стандартное ядро Linux полностью отвечает только требованиям мягкого реального времени: оно предоставляет основные операции POSIX управления временем исполнения для пользовательского уровня, но отнюдь не гарантирует выполнения за жестко фиксированное время. С патчем к ядру RT-Preempt и таймером с поддержкой высокой точности, ядро получило возможность работать в режиме жесткого реального времени. RT-Preempt способен работать на x86, x86_64, ARM, MIPS, и PowerPC архитектурах. Список поддерживаемых платформ постоянно пополняется[24].
Патч RT-Preempt вызвал большой интерес во всей индустрии ОСРВ. Его понятный и простой дизайн и направленность на интеграцию в основную ветку ядра делает его интересным для приложений требующих жесткого реального времени от аудиообработки до задач управления промышленными процессами. Патч RT-Preempt превращает ядро Linux в полностью вытесняемое ядро при помощи[23]:
-Создания внутриядерных блокировок (используя спинлоки) вытесняемых через переопределенные мьютексы реального времени;
-Критические секции защищенные spinlock_t и rwlock_t вытесняемы. Создание невытесняемых секций в ядре также доступно с использованием aw_spinlock_t
-Реализация механизма наследования приоритетов для внутриядерных блокировок и семафоров;
-Преобразование обработчиков прерываний в вытесняемые потоки ядра: патч RT-Preempt выполняет исполнение обработчиков прерываний в контексте потока ядра, и представляет их при помощи task_struct как и большинство процессов пользовательского уровня;
-Преобразования старого API таймера в отдельные подсистемы для таймеров высокой точности которые также используются для POSIX таймеров пользовательского пространства.
Плюсами RT-Preemp является то, что в общем случае нет даже необходимости перекомпилировать приложения для исполнения их в режиме реального времени, также не требуется запуск от имени суперпользователя. Тем не менее, для специфических возможностей по использованию реального времени все же требуется перекомпиляция приложений, и написание специальных приложений для работы в реальном времени.
В целом использование RT_Preempt Linux позволяет существенно ускорить разработку за счет широкого применения уже существующих библиотек, инструментальных и утилитарных средств. Отладка ПО может быть выполнена на IBM PC совместимых компьютерах с последующей перекомпиляцией под целевую платформу.
Минусами использования данной системы является более высокие системные требования для запуска. В основном это относиться к оперативной памяти и дисковому пространству. Поэтому RT-Preempt-Linux применяется в основном на рабочих станциях, в которых необходимо исполнение задач в реальном времени, без перехода на другую ОС.
Инструментальные средства для программирования под ОСРВ.
Современная ОСРВ представляет собой сложную и гибкую в настройке систему. Полнофункциональная разработка для подобной системы возможна только с использованием специализированных инструментальных средств. Большинство разработчиков ОСРВ выпускают специализированные среды разработки и отладки ПО. По такому пути в частности шли WindRiver и National Instruments. В настоящее время ряд компаний отказывается от разработки самостоятельных комплексов, предпочитая расширять возможности IDE общего назначения. Одним из ярких примеров такой среды может служить IDE Eclipse, на основе которого созданы следующие среды разработки:
-среда разработки WindRiver Workbench – используемая для разработки под VxWorks[12];
-QNX Momentics Tool Suite;
-плагин Eclipse для разработки под RTEMS[2].
Также, как и среда для разработки ПО для операционных систем общего пользования IDE для разработки под ОСРВ должна обеспечивать:
-редактирование исходного кода;
-возможность использования системы контроля версий;
-статистический анализ кода;
-гибкая настраиваемость;
-поддержка плагинов ;
-настройка специфических параметров системы.
Использование специализированных сред разработки программного обеспечения для операционных систем реального времени позволяют существенно ускорить процесс разработки ПО, производить анализ и выявлять ошибки в коде, реализовывать механизмы рефакторинга для переноса кода из других проектов или других версий операционных систем. При разработке проектов современного ПО, состоящих из сотен и тысяч файлов исходного кода, работа без средств автоматизации разработки практически неосуществима.
Сравнение выбранных операционных систем
Таблица 1.1 - Сравнение выбранных операционных систем
VxWorks | QNX | RTEMS | RT-LINUX | |
Поддерживаемые платформы | x86, PowerPC, ARM, MIPS, 68K, CPU 32, ColdFire, MCORE, Pentium, i960, SH, SPARC, NEC V8xx, M32 R/D, RAD6000, ST 20, TriCore | X86, ARM, XScale, PowerPC, MIPS | X86,Arm, AVR, i960,MC68,Coldfire, PowerPC, SPARC | X86, ARM, Xscale |
Архитектура системы | Клиент-серверная. Микроядро. | Клиент-серверная. Микроядро. | Иерархическая многослойная с микроядром | Монолитная |
Размер ядра | 16 кб (версия 5.4) 150 кб (версия 6) | От 7 кб | 150 кб | От 300 кб |
Число уровней приоритетов | 256 | 256 | 256 | 40 |
Политики планирования | FIFO с приоритетами, циклическое, адаптивное, спорадическое планирование | FIFO с приоритетами, циклическое, адаптивное, спорадическое планирование | FIFO с приоритетами, циклическое, адаптивное, спорадическое планирование, RMS | FIFO с приоритетами, циклическое, адаптивное, спорадическое планирование |
Максимальное число задач | Неограничено | Неограничено | Неограничено | Неограничено |
Разработка бортового программного обеспечения
Системы обработки данных реального времени в космической отрасли характеризуются большим разнообразием и сложностью взаимосвязей составляющих их элементов, необходимостью обработки потока заявок на вычислительные ресурсы, поступающих в определенные и случайные моменты времени и требующих выполнения жестких ограничений на время обслуживания. Кроме того системы обработки данных данного класса независимо от их функционального назначения характеризуются рядом особенностей, к числу которых относится[1]:
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 |


