AUTOSAR Classic Runtime Environment (RTE)
Руководство по кластеруСОЗДАНО ИИ
Обеспечивает типизированную коммуникацию программных компонентов и управляет планированием модулей Basic Software.
Обеспечивает типизированную коммуникацию программных компонентов и управляет планированием модулей Basic Software.
Модульный кластер Runtime Environment (RTE) реализует виртуальную функциональную шину AUTOSAR (Virtual Functional Bus) на электронном блоке управления и предоставляет стандартизированные API для типизированной коммуникации программных компонентов типа «отправитель-получатель» (Sender-Receiver) и «клиент-сервер» (Client-Server) [SWS_Rte_01091], [SWS_Rte_01102]. Он интегрирует Basic Software Scheduler (SchM) для циклического планирования модулей Basic Software и подключается к OS/IOC, а также к стеку коммуникации (COM, LdCom) [SWS_Rte_01376], [SWS_Rte_04546]. При этом RTE гарантирует согласованность данных и детерминированные переходы между режимами благодаря настраиваемым защищенным областям, буферизации и определенным 10-этапным последовательностям переходов [SWS_Rte_02665], [SWS_Rte_03504].
Модульный кластер Runtime Environment (RTE) образует реализацию виртуальной функциональной шины (Virtual Functional Bus, VFB) на уровне ECU. Он полностью отвязывает программные компоненты AUTOSAR (SWC) от нижележащего Basic Software и координирует планирование модулей BSW через Basic Software Scheduler (SchM) [SWS_Rte_04546], [SWS_Rte_05165]. Кластер обрабатывает как внутрираздельные доступы, так и межраздельные потоки данных через OS-IOC, а также шину электронного блока управления через модули COM и LdCom [SWS_Rte_01376], [SWS_Rte_02736], SWS_RTE с. 106.
Контекстная диаграмма: интеграция кластера RTE и SchM между прикладным уровнем (SWC), OS/IOC и службами Basic Software. Источники: [SWS_Rte_05165], [SWS_Rte_02736], [SWS_Rte_01376], SWS_RTE с. 106.
Коммуникация опирается на паттерны «отправитель-получатель» и «клиент-сервер»: данные S/R передаются неявно согласованно через копии в буфере (`Rte_IRead`/`Rte_IWrite`) либо явно напрямую и с буферизацией (`Rte_Read`/`Rte_Write`/`Rte_Receive`) [SWS_Rte_01091], [SWS_Rte_02521], [SWS_Rte_06000]. При сбое или наличии недействительных сигналов применяются такие механизмы, как подстановка `initValue` или стратегии `handleInvalid` [SWS_Rte_05030], [SWS_Rte_06009]. Вызовы «клиент-сервер» (`Rte_Call`, `Rte_Result`) при асинхронном выполнении синхронизируются через очереди FIFO на стороне сервера и клиента и однозначно соотносятся с помощью дескрипторов транзакций [SWS_Rte_01102], [SWS_Rte_02527], [SWS_Rte_02649].
В рамках управления задачами и жизненным циклом RTE обеспечивает реентерабельность за счет совместного использования кода (Code-Sharing) и защищает критические секции с помощью настраиваемых механизмов блокировки, таких как блокировки прерываний, ресурсы OS или спинлоки OS [SWS_Rte_03015], [SWS_Rte_03504]. Смены режимов проходят строгую 10-этапную последовательность активаций от OnExit, OnTransition до OnEntry и упорядоченно завершаются событиями подтверждения [SWS_Rte_02665], [SWS_Rte_02679].
Системная архитектура & роль кластера модулей
Кластер модулей Runtime Environment (RTE) образует функциональную и коммуникационную основу AUTOSAR Classic Platform. Он представляет собой конкретную реализацию Virtual Functional Bus (VFB) на электронном блоке управления (ECU) и полностью изолирует программные компоненты (SWC) от нижележащего Basic Software (BSW) и аппаратного обеспечения микроконтроллера SWS_RTE с. 106. Внутри кластера собственно RTE берет на себя посредничество в прикладной межблочной (Inter-ECU) и внутриблочной (Intra-ECU) коммуникации, тогда как встроенный Basic Software Scheduler (SchM) управляет выполнением, обеспечением согласованности и циклическим планированием модулей BSW [SWS_Rte_04546], [SWS_Rte_05165].
Архитектура разворачивает стандартизированные интерфейсы между прикладными SWC, сенсорными/актуаторными компонентами и уровнями BSW. Для общесетевого взаимодействия в автомобиле кластер RTE опирается непосредственно на коммуникационный стек: сигнально-ориентированные сообщения передаются модулю COM, тогда как большие объемы данных обрабатываются через модуль LdCom (Large Data COM) [SWS_Rte_01376], [SWS_Rte_04527]. Изоляция процессов и памяти через границы разделов и ядер обеспечивается операционной системой (OS) AUTOSAR и ее механизмом Inter-OS-Application-Communication (IOC) [SWS_Rte_02736]. Калибровочные данные и блоки памяти подключаются к NVRAM Manager (NvM) и средствам калибровки через стандартизированные дескрипторы [SWS_Rte_03961], [SWS_Rte_05118].
Контекстная диаграмма: интеграция кластера RTE и SchM между прикладным уровнем (SWC), OS/IOC и службами Basic Software. Источники: [SWS_Rte_05165], [SWS_Rte_02736], [SWS_Rte_01376], SWS_RTE с. 106.
Взаимодействие и пути взаимодействия между модулями
Взаимодействие в кластере RTE строго разделяет коммуникацию «отправитель — получатель» (S/R) и «клиент — сервер» (C/S). При коммуникации S/R среда RTE поддерживает как неявную, так и явную семантику чтения и записи: при неявном доступе (`Rte_IRead`, `Rte_IWrite`) RTE в начале выполнения Runnable создает локальную копию, которая сохраняется согласованной на протяжении всего времени работы [SWS_Rte_06000], [SWS_Rte_03744]. При явном доступе (`Rte_Read`, `Rte_Write`, `Rte_Send`, `Rte_Receive`) обмен данными происходит напрямую синхронно или через очереди [SWS_Rte_01091], [SWS_Rte_01092]. Для событий с очередями (`swImplPolicy = queued`) RTE создает очереди FIFO на стороне получателя; при переполнении такого буфера элемент отбрасывается и выставляется состояние ошибки [SWS_Rte_02521], [SWS_Rte_02523].
Если путь данных проходит через границы блоков управления (Inter-ECU), RTE преобразует и сериализует составные структуры данных и вызывает `Com_SendSignal` или `Com_SendSignalGroup` для обеспечения атомарной передачи PDU в модуле COM [SWS_Rte_04527]. Для больших массивов данных RTE альтернативно использует `LdCom_Transmit` и блокирует соответствующий буфер при использовании транспортных протоколов (TP) до получения подтверждения через функции обратного вызова [SWS_Rte_01377], [SWS_Rte_01379]. На стороне получателя RTE принимает данные асинхронно через функции обратного вызова COM и формирует на их основе события активации для прикладных Runnable [SWS_Rte_03530], [SWS_Rte_03531]. Если данные из шины еще не поступили, RTE выдает сконфигурированные начальные значения [SWS_Rte_06009], [SWS_Rte_06010].
Диаграмма последовательности: явный поток данных «отправитель — получатель» через границы блоков управления с буферизацией и выдачей начальных значений. Источники: [SWS_Rte_06010], [SWS_Rte_04527], [SWS_Rte_03530], AUTOSAR_SWS_RTE с. 148.
При коммуникации «клиент — сервер» RTE генерирует `Rte_Call` для синхронных вызовов и раздельные API для вызова и опроса результатов (`Rte_Call`, `Rte_Result`) для асинхронных вызовов [SWS_Rte_01102], [SWS_Rte_01111]. Если вызовы невозможно разрешить напрямую как C-функцию в том же контексте, RTE буферизует запросы на уровне сервера в очередях FIFO, а ответы на уровне клиента — в очереди глубиной 1 [SWS_Rte_02527], [SWS_Rte_02528]. Для вызовов C/S между разделами или блоками управления RTE использует дескрипторы транзакций, состоящие из Client-ID и счетчика последовательности, чтобы точно сопоставлять ответы с исходным вызывающим объектом [SWS_Rte_02649], [SWS_Rte_03885].
Синхронизация, реентерабельность и контексты задач
Выполнение программного кода в кластере RTE осуществляется в контекстах задач OS или ISR. RTE различает простые Runnable (категория 1 без блокирующих вызовов OS) и расширенные Runnable (категория 2 с точками ожидания), которые пробуждаются из состояния `WaitPoint` такими событиями, как `DataReceivedEvent` или функции обратного вызова COM [SWS_Rte_03532], SWS_RTE с. 304. Параллельная активация одного и того же экземпляра Runnable Entity строго запрещена, за исключением случаев, когда атрибут `canBeInvokedConcurrently` явно установлен в `TRUE` [SWS_Rte_03523]. Для многоэкземплярных SWC стандарт AUTOSAR последовательно применяет совместное использование кода (Code-Sharing): несколько экземпляров совместно используют один и тот же исполняемый код, но обращаются к отдельным данным и Per-Instance-Memory (PIM) через дескрипторы конкретных экземпляров [SWS_Rte_02002], [SWS_Rte_03015], [SWS_Rte_02301].
Для защиты критических секций RTE генерирует так называемые Exclusive Areas (`Rte_Enter`, `Rte_Exit`). Лежащий в их основе механизм синхронизации настраивается с помощью параметра `RteExclusiveAreaImplMechanism` [SWS_Rte_03504]. При этом доступны пять определенных стратегий:
ALL_INTERRUPT_BLOCKING: глобальная блокировка всех аппаратных прерываний [SWS_Rte_03504].OS_INTERRUPT_BLOCKING: выборочная блокировка специфичных для OS прерываний (категория 2) [SWS_Rte_03504].OS_RESOURCE: использование ресурсов операционной системы OSEK/AUTOSAR с протоколом границы приоритетов (Priority Ceiling Protocol) [SWS_Rte_03504].OS_SPINLOCK: многоядерная синхронизация через спинлоки OS для координации между задачами и ISR разных ядер [SWS_Rte_03504].NONE: отказ от внутренних блокировок, если целостность данных уже гарантируется строгой приоритизацией задач или планированием [SWS_Rte_03504].
Типичные жизненные циклы и режимы работы
Жизненный цикл системы подчиняется строгому разделению на фазы инициализации, штатной работы и контролируемого останова. При запуске системы сначала инициализируется часть SchM: EcuM вызывает `SchM_Start` на каждом ядре процессора до запуска таких модулей BSW, как BswM [SWS_Rte_04546], [SWS_Rte_04548]. Затем `SchM_StartTiming` активирует периодические события BSW и MainFunctions [SWS_Rte_04549], [SWS_Rte_04551]. В соответствии с проектным ограничением (Design-Constraint) вызовы `SchM_Start` и `SchM_StartTiming` разрешены строго по одному разу для каждого ядра SWS_RTE с. 928. После этого `Rte_Start` разрешает работу прикладной RTE; при сбое внутреннего выделения ресурсов инициализация прерывается с ошибкой `RTE_E_LIMIT` [SWS_Rte_01261], [SWS_Rte_01262].
Режимы работы отображаются через Mode-Declaration-Groups. Когда Mode Manager инициирует смену режима через `Rte_Switch`, она помещается в очередь FIFO [SWS_Rte_02631], [SWS_Rte_02718], [SWS_Rte_02719]. Каждый автомат режимов во время переключения проходит обязательную 10-ступенчатую последовательность [SWS_Rte_02665]: сначала активируются деактивации режимов для целевого режима и ожидается завершение выполняющихся сущностей (шаги 1–2). Далее следуют последовательное выполнение и завершение исполняемых сущностей OnExit (шаги 3–4), OnTransition (шаги 5–6) и OnEntry (шаги 7–8). В заключение отменяется деактивация предыдущего режима и активируется новый режим (шаг 9), после чего переключение режима подтверждается через `ModeSwitchedAckEvent` или `Rte_SwitchAck` (шаг 10) [SWS_Rte_02665], [SWS_Rte_02679], [SWS_Rte_02725]. С помощью `RteModeToScheduleTableMapping` режимы работы можно также напрямую связывать с таблицами расписания OS (OS-Schedule-Tables) [SWS_Rte_05146].
Диаграмма последовательности: стандартизированная 10-ступенчатая последовательность смены режима AUTOSAR с подтверждением. Источники: [SWS_Rte_02665], [SWS_Rte_02679], EXP_ModeManagementGuide с. 16.
Деинициализация выполняется в начале фазы останова (Shutdown) с помощью `Rte_Stop`. После этого вызова RTE блокирует активацию, запуск или разблокирование дальнейших Runnable на соответствующем ядре [SWS_Rte_02538]. Поступающие данные S/R, а также запросы C/S в остановленном состоянии RTE отбрасываются и игнорируются [SWS_Rte_02535], [SWS_Rte_02536].
Обработка ошибок, мониторинг состояния и валидация данных
Состояния ошибок и статусы интерфейсов передаются вызывающей стороне в RTE единообразно через скалярный тип `Std_ReturnType` [SWS_Rte_01034], SWS_RTE с. 586. RTE различает прикладные ошибки (значения ошибок 1–63), прямые инфраструктурные ошибки (значения 128–255), а также наложенные биты состояния, такие как потеря данных (`RTE_E_LOST_DATA = 64`) или устаревание данных (`RTE_E_MAX_AGE_EXCEEDED = 64`) SWS_RTE с. 586. Типичные инфраструктурные возвращаемые значения включают остановленную коммуникацию (`RTE_E_COM_STOPPED = 128`), тайм-ауты коммуникации и ответа (`RTE_E_TIMEOUT = 129`), отсутствие данных (`RTE_E_NO_DATA = 131`) и переполнение ресурсов (`RTE_E_LIMIT = 130`) [SWS_Rte_01060], [SWS_Rte_01061], [SWS_Rte_01064]. При активной проверке диапазона значений RTE подтверждает выход за пределы диапазона ошибкой `RTE_E_OUT_OF_RANGE` [SWS_Rte_03845], [SWS_Rte_03846].
Для обработки недостоверных или ошибочных сигналов RTE предоставляет механизмы инвалидации данных. На стороне передачи `Rte_Invalidate` помечает сигнал определенным замещающим значением [SWS_Rte_01206], [SWS_Rte_05024]. На стороне приема атрибут `handleInvalid` управляет стратегией замещения: при `keep` сохраняется предыдущее значение и генерируется `DataReceiveErrorEvent`, тогда как при `replace` происходит автоматическая замена на `initValue` [SWS_Rte_05030], [SWS_Rte_05049]. Сбои коммуникации на сетевом уровне отслеживаются с помощью `aliveTimeout`; по истечении времени контроля модуль COM сообщает о тайм-ауте приема в RTE через `Rte_COMCbkRxTOut`, после чего информируются зависимые компоненты или активируются резервные значения [SWS_Rte_08061].
Контекст и подтверждающие документы: данное руководство основано исключительно на спецификации AUTOSAR модуля RTE (R20-11/R25-11), а также на документе AUTOSAR Mode Management Guide.
Die Runtime Environment (RTE) realisiert den Virtual Functional Bus (VFB) auf einer konkreten ECU und vermittelt alle Inter- und Intra-ECU-Kommunikationsverbindungen zwischen Software-Components (SW-Cs) und Basis-Software.
Module im Cluster
Инициализация и состояние
Rte_Rips_SchM_DeinitSchM_DeinitSchM_GetVersionInfoSchM_InitСервисы
Rte_StartRte_StartTimingRte_StopSchM_StartSchM_StartTimingCallout-функции и ожидаемые интерфейсы
<name of the Invocation Handler>Типы
Rte_DsmqStatusTypeRte_Rips_SwitchNotificationStatusTypeRteCalibrationSwAddrMethodRefParentContainerRteComponentTypeКарта тем
Для этого релиза нет данных об элементах
Rte
Performs invocation of server runnables, hard error runnables, ASCR runnables and triggered runnables via a transformer".
void <name of the Invocation Handler> (void);Rte_Rips_SchM_Deinit deinitializes those RTE Implementation Plug-In parts which are relevant for the SchM related operations.
void Rte_Rips_SchM_Deinit (void);Rte_Start is intended to allocate and initialize system resources and communication resources used by the RTE.
Std_ReturnType Rte_Start (void);Rte_StartTiming API is intended to release the activation of RunnableEntitys triggered by TimingEvents and BackgroundEvents after the last call of a Rte_Init function.
void Rte_StartTiming (void);Rte_Stop is used to finalize the RTE on the core it is called. This service releases all system and communication resources allocated by the RTE on that core.
Std_ReturnType Rte_Stop (void);SchM_Deinit is used to finalize Basic Software Scheduler part of the RTE of the core on which it is called. This service releases all system resources allocated by the Basic Software Scheduler part on that core.
void SchM_Deinit (void);Returns the version information of the Basic Software Scheduler.
void SchM_GetVersionInfo (Std_VersionInfoType* versioninfo);SchM_Init is intended to allocate and initialize system resources used by the Basic Software Scheduler part of the RTE for the core on which it is called.
void SchM_Init (const SchM_ConfigType* ConfigPtr);Basic Software Scheduler initialized. Shall be called before BswM_Init().
void SchM_Start (void);Start periodical events for BSW/SWCs. SchM_Init() has to be called before.
void SchM_StartTiming (void);Status of the enqueue operation on a distributed shared mode queue
Status of the en- and dequeue operation on a mode queue Tags: atp.Status=draft
Reference to the SwAddrMethod for which software calibration support shall be enabled. Multiplicity 0..* Type Foreign reference to SW-ADDR-METHOD Post-Build Variant Multiplicity false Post-Build Variant Value false Multiplicity Configuration Class Pre-compile time X All Variants Link time Post-build time Value Configuration Class Pre-compile time X All Variants Link time Post-build time Scope / Dependency scope: local No Included Containers 8.7 Implicit communication configuration Figure 8.22: Configuration of the implicit communication SWS Item [ECUC_Rte_09034] Container Name
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал