Он является частью стандартов ARINC серии 600 для цифровых авиационных и авиасимуляторов.
Обзор
Чтобы отделить платформу операционной системы реального времени от прикладного программного обеспечения, ARINC 653 определяет API , называемый APplication EXecutive (APEX).
Каждое прикладное программное обеспечение называется разделом и имеет собственное пространство памяти. Оно также имеет выделенный временной интервал, выделенный API APEX. Внутри каждого раздела разрешена многозадачность . API APEX предоставляет службы для управления разделами, процессами и синхронизацией, а также для связи разделов/процессов и обработки ошибок. Среда разделения может быть реализована с помощью гипервизора [ 2] для сопоставления разделов с виртуальными машинами, но это не обязательно.
Первоначальная версия ARINC 653 была опубликована 10 октября 1996 года.
АРИНК 653-1
Приложение 1 было опубликовано в январе 1997 года и представило концепции APEX и разбиения времени и пространства.
АРИНК 653-2
Приложение 2 было опубликовано в трех частях в период с марта 2006 года по январь 2007 года: [3]
Часть 1 (обязательные услуги): Управление разделами ARINC 653, Определение холодного и теплого запуска, Обработка ошибок прикладного программного обеспечения, Соответствие ARINC 653, Привязки языков Ada и C ;
Уровень абстракции , управляющий ограничениями таймера и разделения пространства платформы ( память , ЦП , ввод/вывод ).
Реализация сервисов ARINC 653 (APEX API).
Интерфейс для настройки платформы и области ее использования.
Различные контрольно-измерительные инструменты.
Инициализация
Инициализация раздела ARINC 653 создает ресурсы, используемые разделом. Создание ресурсов (PROCESS, EVENT, SEMAPHORE...) выполняется путем вызова API-сервисов с именем CREATE_xxxx .
Обработка ошибок
Обработчик ошибок процесса — это вытесняющий процесс наивысшего приоритета, предназначенный для обработки исключений раздела. Он создается службой CREATE_ERROR_HANDLER во время инициализации раздела.
API позволяет обработчику ошибок останавливать неисправный процесс ( STOP_SELF ). В этом случае планировщик RTOS вызовет следующий процесс с наивысшим приоритетом.
ARINC 653 не определяет, как должен вести себя планировщик, если обработчик ошибок не останавливает неисправный процесс. В некоторых (теоретических) случаях это может привести к бесконечному циклу между неисправным процессом и обработчиком ошибок.
Обработчик ошибок может получить информацию об источнике и контексте исключения.
Управление режимом
Каждый раздел может находиться в нескольких режимах активации:
COLD_START и WARM_START: выполняется только процесс инициализации,
НОРМАЛЬНЫЙ: Процесс инициализации останавливается, а другие процессы раздела вызываются планировщиком RTOS в зависимости от их приоритета.
IDLE: Ни один процесс не выполняется. Однако реализация теоретически может выполнить скрытый процесс с самым низким приоритетом, например, для запуска бесконечного цикла.
Служба SET_PARTITION_MODE позволяет управлять этими состояниями. Она может быть вызвана любым процессом в разделе. Переход в состояние IDLE необратим для раздела. Только внешнее событие (такое как перезапуск платформы) может изменить состояние на другой режим, когда раздел находится в этом состоянии.
Планирование разделов и процессов
Стандарт определяет двухуровневый иерархический график. Первый уровень планирует разделы. Это циклический фиксированный график, который повторяет основной временной интервал. Основной временной интервал планирует каждый раздел в фиксированной длительности второстепенного временного интервала с фиксированным смещением от начала основного временного интервала.
В рамках Minor Time Frame второй уровень использует планирование процессов. Каждый раздел имеет по крайней мере один процесс . Планирование процессов в рамках Minor Time Frame является упреждающим . Планировщик вызывается либо таймером, либо службами API.
Многоядерный
ARINC 653 P1-5 был обновлен для учета многоядерных архитектур процессоров. Раздел 4.2.1 «Соответствие многоядерной реализации ОС» указывает, что ОС, разработанная для многоядерной обработки, должна поддерживать два случая:
Использование нескольких ядер одним разделом (процессы которого охватывают несколько ядер)
Использование нескольких ядер несколькими разделами
Позиционный документ CAST-32A определяет набор требований и рекомендаций, которые должны быть выполнены для сертификации и использования многоядерных процессоров в гражданской авиации FAA, и, как ожидается, будет заменен консультативным циркуляром AC 20-193. Авиационный орган Европейского союза, EASA, опубликовал AMC 20-193 в январе 2022 года. [11]
API-сервисы
Службы ARINC 653 APEX представляют собой вызовы API, относящиеся к шести категориям:
Управление разделами
Управление процессами
Управление временем
Межсекционная связь
Внутрисекционная коммуникация
Обработка ошибок
Для управления памятью разделов не предусмотрены службы ARINC 653. Каждый раздел должен обрабатывать свою собственную память (все еще находясь под ограничениями разбиения памяти, налагаемыми ARINC 653).
Каждая служба возвращает значение RETURN_CODE, которое указывает, был ли вызов успешным:
NO_ERROR: услуга выполнена номинально после действительного запроса
NO_ACTION: состояние системы не изменилось после выполнения сервиса
NOT_AVAILABLE: услуга временно недоступна
INVALID_PARAM: по крайней мере один из параметров службы недействителен
INVALID_CONFIG: по крайней мере один из параметров службы несовместим с текущей конфигурацией системы
INVALID_MODE: служба несовместима с текущим режимом системы
Область, охватываемая ARINC 653, похожа на ASAAC Def Stan 00-74 . Однако между этими двумя стандартами есть различия. [12]
Некоторые вызовы ARINC 653 (APEX) имеют эквивалент POSIX , но отличаются от того, как они определены в POSIX. [12]
Например, следующий вызов, определенный в ASAAC:
ReceiveBuffer
будет переведено в ARINC 653 следующим образом:
ПОЛУЧИТЬ_БУФЕР()
а также в POSIX:
рекв()
Ссылки
^ "ARINC 653 - Стандарт авионики для безопасных, разделенных систем" (PDF) . Wind River Systems / Семинар IEEE . Август 2008 г. Архивировано из оригинала (PDF) 2009-10-07 . Получено 2009-05-30 .
^ VanderLeest, SH (2010-10-01). "Гипервизор ARINC 653". 29-я конференция по цифровым авиационным системам . стр. 5.E.2–1–5.E.2–20. doi :10.1109/DASC.2010.5655298. ISBN978-1-4244-6616-0. S2CID 5784484.
^ "Product Focus: ARINC 653 и RTOS". Aviationtoday.com. 2004-07-01. Архивировано из оригинала 2009-12-03 . Получено 2009-05-30 .
^ "Стандартный интерфейс прикладного программного обеспечения авионики: спецификация ARINC 653 часть 0". Aeronautical Radio, Inc. 2019-12-23. Архивировано из оригинала 2022-02-03.
^ "Стандартный интерфейс прикладного программного обеспечения авионики: спецификация ARINC 653P1-3, требуемые службы". Aeronautical Radio, Inc. 2022-02-04. Архивировано из оригинала 2020-08-12 . Получено 2022-02-04 .
^ "Стандартный интерфейс прикладного программного обеспечения авионики: спецификация ARINC 653P2-2, часть 2, расширенные службы". Aeronautical Radio, Inc. 2019-12-23. Архивировано из оригинала 2020-08-12 . Получено 2022-02-04 .
^ "653P3A-2 Интерфейс стандартного прикладного программного обеспечения авионики, часть 3A, спецификации испытаний на соответствие требуемым службам ARINC 653". SAE ITC . 2021-11-17 . Получено 2022-02-04 .
^ "653P3Bc1 Avionics Application Software Standard Interface, Part 3B, Conformity Test Specifications for ARINC 653 Extended Services". SAE ITC . 2019-07-18 . Получено 2022-02-04 .
^ "Стандартный интерфейс прикладного программного обеспечения авионики: спецификация ARINC 653 часть 4, подмножество служб". Aeronautical Radio, Inc. 2012-06-01. Архивировано из оригинала 2012-08-25 . Получено 2013-10-20 .