пространство имён ara::sm::s2r
Руководство пользователяСОЗДАНО ИИ
Координирует вход в состояние Suspend-to-RAM и выход из него для адаптивных приложений.
Координирует вход в состояние Suspend-to-RAM и выход из него для адаптивных приложений.
Пространство имен ara::sm::s2r координирует механизм Suspend-to-RAM для оптимизации времени отключения и запуска в AUTOSAR Adaptive Platform (SWS StateManagement §7.5 «Interaction with Suspend-to-RAM Functionality»). Через центральный компонент S2RHub и зарегистрированные экземпляры S2RSatellite процессы с поддержкой S2R уведомляются перед переходом операционной системы в состояние покоя и при пробуждении снова переводятся в штатный режим работы. В качестве существенного граничного условия использование через внутренний подход StateMachine строго исключает доступ через C++-API, тогда как проверки IAM защищают все задействованные контексты процессов ([SWS_SM_00684]).
Контекст
Пространство имен ara::sm::s2r предоставляет функциональные возможности для координации Suspend-to-RAM (S2R) внутри модуля State Management. Целью этого механизма является оптимизация времени отключения и разгона машины за счет использования состояния покоя операционной системы на базе RAM вместо полного выключения и холодного старта (SWS StateManagement §7.5 «Interaction with Suspend-to-RAM Functionality»). Перед переходом в состояние Suspend операционной системы функциональные исполнители без поддержки S2R должны быть деактивированы, а процессы, чей Executable обозначен как suspendToRamAware, должны быть своевременно уведомлены (SWS StateManagement §7.5 «Interaction with Suspend-to-RAM Functionality»).
Центральным узлом является класс S2RHub, который управляет связью с экземплярами абстрактного класса S2RSatellite (SWS StateManagement §7.5.1 «S2R Hub»). Оркестрация S2RHub может осуществляться либо внутренне через подход StateMachine модуля State Management, либо внешне через C++-API (например, в SMControlApplication); оба подхода строго взаимно исключают друг друга ([SWS_SM_00684], SWS StateManagement с. 96). Обращения к концентратору и регистрация сателлитов защищены с помощью Identity and Access Management (IAM) ([SWS_SM_00706], [SWS_SM_00714], [SWS_SM_00715]).
Контекстная диаграмма: взаимодействие между State Management, S2RHub, S2RSatellite и IAM. Источники: SWS StateManagement §7.5.1 «S2R Hub», [SWS_SM_00684], [SWS_SM_00715].
Жизненный цикл
Создание экземпляра ara::sm::s2r::S2RHub осуществляется в зависимости от архитектурного подхода: в режиме StateMachine экземпляр создается автоматически модулем State Management, как только завершаются элементы списка действий EnterSuspendToRam, EnterSuspendToRamOS или LeaveSuspendToRam ([SWS_SM_00690]). При вызове конструктора ara::sm::s2r::S2RHub::S2RHub через IAM проверяется, соответствует ли текущий контекст процесса конфигурации SuspendToRamHubMapping.process ([SWS_SM_00706]). Выполнять создание экземпляра разрешено только авторизованным процессам ([SWS_SM_00714]).
Сателлиты инициализируются через фабричный метод ara::sm::s2r::S2RSatellite::Create ([SWS_SM_00716]). Поскольку S2RSatellite является абстрактным классом, вероятно, реализуется специфическое для приложения производное определение для предоставления конкретных реакций (интерпретация). Вопрос Q-e4747345883235e0 (открытый) Регистрация в концентраторе выполняется активно путем вызова ara::sm::s2r::S2RSatellite::Offer ([SWS_SM_00710]). Концентратор валидирует контекст процесса сателлита на основе SuspendToRamSatelliteMapping.process ([SWS_SM_00715]). Сателлит остается в состоянии активной регистрации до тех пор, пока снова не отменит регистрацию через ara::sm::s2r::S2RSatellite::StopOffer ([SWS_SM_00710], [SWS_SM_00713]).
Что касается жизненного цикла конечных автоматов, действует граничное условие, согласно которому состояния, отвечающие за состояние ожидания (suspend), не должны конфигурироваться с элементом списка действий LeaveSuspendToRam ([SWS_SM_CONSTR_00035]). Этот элемент зарезервирован исключительно для фазы возврата при пробуждении (SWS StateManagement с. 98).
Путь использования
Типичное использование пространства имен подразделяется на регистрацию, подготовку состояния покоя, приостановку операционной системы (OS suspend), а также последующее пробуждение:
- Регистрация: S2R-совместимое приложение создает свой сателлит и вызывает
ara::sm::s2r::S2RSatellite::Offerдля регистрации на концентраторе (hub) ([SWS_SM_00710]). Предположительно, оповещение между концентратором и сателлитами осуществляется через внутриплатформенное межпроцессное взаимодействие (интерпретация). Вопрос (открытый) - Запрос приостановки: Уровень управления вызывает
ara::sm::s2r::S2RHub::RequestToEnterSuspendMode([SWS_SM_00701]). В подходеStateMachineэто инициируется элементомEnterSuspendToRam, причем его конфигурационное значениеmaxActionItemDurationпередается в качестве параметра тайм-аута ([SWS_SM_00689]). - Оповещение сателлитов: Концентратор адресует все зарегистрированные сателлиты и инициирует выполнение функции обратного вызова
ara::sm::s2r::S2RSatellite::EnterSuspendMode([SWS_SM_00701], [SWS_SM_00711]).RequestToEnterSuspendModeвозвращает управление, как только все сателлиты отреагировали, были разрегистрированы или истек тайм-аут ([SWS_SM_00702]). - Останов операционной системы: Путем вызова
ara::sm::s2r::S2RHub::EnterSuspendToRamOs(или через элемент списка действийEnterSuspendToRamOs) инициируется фактический переход операционной системы в состояние покоя ([SWS_SM_00692]). - Координация пробуждения: После повторного запуска вызывается
ara::sm::s2r::S2RHub::RequestToLeaveSuspendMode([SWS_SM_00703], [SWS_SM_00691]). Концентратор дает сателлитам команду выполнить функцию обратного вызоваara::sm::s2r::S2RSatellite::LeaveSuspendMode([SWS_SM_00703], [SWS_SM_00711]). - Отмена регистрации: Если процесс больше не желает участвовать, он отменяет регистрацию через
ara::sm::s2r::S2RSatellite::StopOffer([SWS_SM_00710], [SWS_SM_00713]).
Диаграмма последовательности: порядок вызовов для подготовки и завершения Suspend-to-RAM. Источники: [SWS_SM_00701], [SWS_SM_00702], [SWS_SM_00703], [SWS_SM_00707], [SWS_SM_00710], [SWS_SM_00711].
Сценарии ошибок
При взаимодействии классов возникают специфические условия ошибок:
- Нарушение IAM при создании концентратора: Если контекст процесса при вызове конструктора не совпадает с
SuspendToRamHubMapping.process, генерируется нарушениеInsufficientPermissionsViolationи сообщается о событии безопасностиSEV_ACCESS_CONTROL_SM_IAM_ACCESS_DENIED</a>([SWS_SM_00706]). - Отклонение неаутентифицированных сателлитов: Если контекст
S2RSatelliteотличается от процесса, указанного вSuspendToRamSatelliteMapping, концентратор отклоняет регистрацию ([SWS_SM_00715]). - Требование аутентификации на сателлите: Если установлена конфигурация Force IAM switch, вызов
ara::sm::s2r::S2RSatellite::Createзавершается с кодом ошибкиkAuthenticationRequired([SWS_SM_00716]). - Тайм-аут связи: Если адресуемый сателлит во время фазы приостановки или пробуждения не отвечает в пределах периода
timeout, операция возвращает код ошибкиkCommunicationTimeout([SWS_SM_00707]). - Проблемы при выходе из режима приостановки: Если хотя бы один сателлит на запрос выхода из режима приостановки отвечает отрицательно с
kRejected,RequestToLeaveSuspendModeподтверждает общий результат сkAtLeastOneHadIssuesToLeave([SWS_SM_00707]). - Конкурентное использование API: Одновременное использование C++-API
S2RHubнаряду с внутренним подходомStateMachineзапрещено и приводит к несогласованности ([SWS_SM_00684]).
Данное руководство основано на спецификации AUTOSAR_AP_SWS_StateManagement (релиз R25-11).
Для этого релиза нет данных об элементах
Классы
S2RHub class.
S2RSatellite abstract class.
Диаграмма классов
Abgerundete Rahmen = Namespace- bzw. Klassen-Scopes; hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); graue Boxen = namespace-fremde bzw. externe Basisklassen. Klicken öffnet die jeweilige Klassen- bzw. cppreference-Seite.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал