DEENESPTFRRUARHIKOZHNL

AUTOSAR Classic Runtime Environment (RTE)

Guia do clusterGERADO POR IA

Intermedeia a comunicação tipada de componentes de software e controla o escalonamento dos módulos de software básico.
GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 72e8e2f22679 Procedência
Âncora causal: R20-11 Válido a partir de R20-11 Sintetizado para esta versão de especificação.
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

Intermedeia a comunicação tipada de componentes de software e controla o escalonamento dos módulos de software básico.

O cluster de módulos Runtime Environment (RTE) realiza o Virtual Functional Bus da AUTOSAR na unidade de controle e disponibiliza APIs padronizadas para a comunicação tipada remetente-destinatário e cliente-servidor de componentes de software [SWS_Rte_01091], [SWS_Rte_01102]. Ele integra o Basic Software Scheduler (SchM) para o escalonamento cíclico dos módulos de software básico e se conecta ao OS/IOC, bem como à pilha de comunicação (COM, LdCom) [SWS_Rte_01376], [SWS_Rte_04546]. Ao mesmo tempo, a RTE garante a consistência de dados e transições de modo determinísticas por meio de áreas protegidas configuráveis, bufferização e fluxos definidos de transição em 10 etapas [SWS_Rte_02665], [SWS_Rte_03504].

O cluster de módulos Runtime Environment (RTE) constitui a realização do Virtual Functional Bus (VFB) no nível da unidade de controle. Ele desacopla completamente os componentes de software (SWCs) AUTOSAR do software básico subjacente e coordena o escalonamento de módulos BSW por meio do Basic Software Scheduler (SchM) [SWS_Rte_04546], [SWS_Rte_05165]. O cluster processa tanto acessos internos à partição quanto fluxos de dados entre partições através do OS-IOC, além do barramento da unidade de controle através dos módulos COM e LdCom [SWS_Rte_01376], [SWS_Rte_02736], SWS_RTE p. 106.

RteArchitecture cluster_app Applikationsschicht (Application Layer) cluster_rte_cluster Runtime Environment Cluster (RTE / SchM) cluster_bsw Basissoftware (BSW) SWC_A Software Component A (Runnable Entities) RTE_Core RTE Engine (S/R, C/S, Invalidation, PIM) SWC_A->RTE_Core Rte_Read / Rte_Write Rte_Call / Rte_Switch SWC_B Software Component B (Runnable Entities) SWC_B->RTE_Core Rte_IRead / Rte_IWrite Rte_Result COM COM Module (Com_SendSignal, Callbacks) RTE_Core->COM Com_SendSignal Com_SendSignalGroup LdCom LdCom Module (Large Data Path) RTE_Core->LdCom LdCom_Transmit OS AUTOSAR OS / IOC (Tasks, ISRs, Spinlocks, IOC Buffer) RTE_Core->OS IOC Transfer Exclusive Areas NvM NVRAM Manager (NvM) (RAM Block Dirty Flags) RTE_Core->NvM Dirty Flags (DF_*) SchM_Core Basic Software Scheduler (SchM) (BswMainFunctions, Mode Control) SchM_Core->COM Com_MainFunctionTx Com_MainFunctionRx SchM_Core->OS Task Activation OS Resources COM->RTE_Core Rte_COMCbk... (Rx Notifications)

Diagrama de contexto: Integração do cluster RTE e SchM entre a camada de aplicação (SWCs), OS/IOC e serviços de software básico. Fontes: [SWS_Rte_05165], [SWS_Rte_02736], [SWS_Rte_01376], SWS_RTE p. 106.

A comunicação baseia-se em padrões remetente-destinatário e cliente-servidor: dados S/R são transmitidos implicitamente consistentes por meio de cópias de buffer (`Rte_IRead`/`Rte_IWrite`) ou explicitamente diretos e bufferizados (`Rte_Read`/`Rte_Write`/`Rte_Receive`) [SWS_Rte_01091], [SWS_Rte_02521], [SWS_Rte_06000]. Em caso de falha ou presença de sinais inválidos, entram em ação mecanismos como substituição por `initValue` ou estratégias `handleInvalid` [SWS_Rte_05030], [SWS_Rte_06009]. Chamadas cliente-servidor (`Rte_Call`, `Rte_Result`) em execução assíncrona são sincronizadas através de filas FIFO no lado do servidor e do cliente e associadas de forma inequívoca por meio de identificadores de transação (transaction handles) [SWS_Rte_01102], [SWS_Rte_02527], [SWS_Rte_02649].

No gerenciamento de tarefas e ciclo de vida, a RTE assegura a reentrância por meio de compartilhamento de código e protege seções críticas por mecanismos de bloqueio configuráveis, como bloqueios de interrupção, recursos de OS ou spinlocks de OS [SWS_Rte_03015], [SWS_Rte_03504]. Mudanças de modo passam por uma sequência estrita de 10 etapas, desde ativações OnExit, OnTransition até OnEntry, e são concluídas de maneira ordenada por meio de eventos de confirmação [SWS_Rte_02665], [SWS_Rte_02679].

Arquitetura do sistema & papel do cluster de módulos

O cluster de módulos da Runtime Environment (RTE) constitui a espinha dorsal funcional e de comunicação da AUTOSAR Classic Platform. Ele representa a realização concreta do Virtual Functional Bus (VFB) em uma unidade de controle e desacopla completamente os componentes de software (SWCs) do Basic Software (BSW) subjacente, bem como do hardware do microcontrolador SWS_RTE p. 106. Dentro do cluster, a RTE propriamente dita assume a intermediação da comunicação inter e intra-ECU relacionada à aplicação, enquanto o Basic Software Scheduler (SchM) integrado controla o controle de fluxo, a garantia de consistência e o escalonamento cíclico dos módulos BSW [SWS_Rte_04546], [SWS_Rte_05165].

A arquitetura estabelece interfaces padronizadas entre SWCs de aplicação, componentes de sensor/atuador e as camadas de BSW. Para a interconexão em nível de veículo, o cluster RTE baseia-se diretamente na pilha de comunicação: mensagens orientadas a sinais são transferidas para o módulo COM, enquanto grandes volumes de dados são processados através do módulo LdCom (Large Data COM) [SWS_Rte_01376], [SWS_Rte_04527]. O isolamento de processos e memória além dos limites de partições e núcleos é fornecido pelo sistema operacional (OS) AUTOSAR e pelo seu mecanismo de Inter-OS-Application-Communication (IOC) [SWS_Rte_02736]. Dados de calibração e blocos de memória conectam-se por meio de descritores padronizados ao NVRAM Manager (NvM) e a ferramentas de calibração [SWS_Rte_03961], [SWS_Rte_05118].

RteArchitecture cluster_app Applikationsschicht (Application Layer) cluster_rte_cluster Runtime Environment Cluster (RTE / SchM) cluster_bsw Basissoftware (BSW) SWC_A Software Component A (Runnable Entities) RTE_Core RTE Engine (S/R, C/S, Invalidation, PIM) SWC_A->RTE_Core Rte_Read / Rte_Write Rte_Call / Rte_Switch SWC_B Software Component B (Runnable Entities) SWC_B->RTE_Core Rte_IRead / Rte_IWrite Rte_Result COM COM Module (Com_SendSignal, Callbacks) RTE_Core->COM Com_SendSignal Com_SendSignalGroup LdCom LdCom Module (Large Data Path) RTE_Core->LdCom LdCom_Transmit OS AUTOSAR OS / IOC (Tasks, ISRs, Spinlocks, IOC Buffer) RTE_Core->OS IOC Transfer Exclusive Areas NvM NVRAM Manager (NvM) (RAM Block Dirty Flags) RTE_Core->NvM Dirty Flags (DF_*) SchM_Core Basic Software Scheduler (SchM) (BswMainFunctions, Mode Control) SchM_Core->COM Com_MainFunctionTx Com_MainFunctionRx SchM_Core->OS Task Activation OS Resources COM->RTE_Core Rte_COMCbk... (Rx Notifications)

Diagrama de contexto: Integração do cluster RTE e SchM entre a camada de aplicação (SWCs), OS/IOC e serviços de software básico. Fontes: [SWS_Rte_05165], [SWS_Rte_02736], [SWS_Rte_01376], SWS_RTE p. 106.

Interação e caminhos de interação entre os módulos

A interação no cluster RTE diferencia rigorosamente entre comunicação remetente-destinatário (S/R) e cliente-servidor (C/S). Na comunicação S/R, a RTE suporta tanto semânticas de leitura e escrita implícitas quanto explícitas: no acesso implícito (`Rte_IRead`, `Rte_IWrite`), a RTE cria uma cópia local no início da execução da runnable, a qual é mantida consistente durante todo o tempo de execução [SWS_Rte_06000], [SWS_Rte_03744]. No acesso explícito (`Rte_Read`, `Rte_Write`, `Rte_Send`, `Rte_Receive`), a troca de dados ocorre de forma diretamente síncrona ou por meio de filas [SWS_Rte_01091], [SWS_Rte_01092]. Para eventos com filas (`swImplPolicy = queued`), a RTE configura filas FIFO no lado receptor; se tal buffer estourar, o elemento é descartado e um estado de erro é definido [SWS_Rte_02521], [SWS_Rte_02523].

Caso o caminho de dados atravesse limites de unidades de controle (inter-ECU), a RTE transforma e serializa estruturas de dados compostas e chama `Com_SendSignal` ou `Com_SendSignalGroup` para garantir a transmissão atômica de PDU no módulo COM [SWS_Rte_04527]. Para grandes arrays de dados, a RTE recorre alternativamente ao `LdCom_Transmit` e, no caso de protocolos de transporte (TP), bloqueia o buffer correspondente até a confirmação por meio de callbacks [SWS_Rte_01377], [SWS_Rte_01379]. No lado receptor, a RTE recebe dados de forma assíncrona através de callbacks de COM e deriva deles eventos de ativação para runnables de aplicação [SWS_Rte_03530], [SWS_Rte_03531]. Caso nenhum dado de barramento tenha chegado ainda, a RTE fornece valores iniciais configurados [SWS_Rte_06009], [SWS_Rte_06010].

Expliziter Sender-Receiver Kommunikationsablauf (Inter-ECU)Sender SWCSender RTECOM ModulReceiver RTEReceiver SWCUse Case: InitialisierungsphaseRte_Read(data)Ainda nenhum dado recebido: retorno de initValueRTE_E_OK (initValue)Use Case: Transmissão e sinalização explícitasRte_Write_p_o(data)Com_SendSignal(SignalId, data)RTE_E_OKUse Case: Recepção de rede e encaminhamentoRte_COMCbkRxIndication(SignalId)Bufferização do novo valor de sinalVerificação de validade / teste de faixaRte_Read_p_o(data)RTE_E_OK (neuer Datenwert)

Diagrama de sequência: Fluxo explícito de dados remetente-destinatário através de limites de unidades de controle com bufferização e emissão de valores iniciais. Fontes: [SWS_Rte_06010], [SWS_Rte_04527], [SWS_Rte_03530], AUTOSAR_SWS_RTE p. 148.

Na comunicação cliente-servidor, a RTE gera `Rte_Call` para chamadas síncronas e APIs de chamada e consulta separadas (`Rte_Call`, `Rte_Result`) para chamadas assíncronas [SWS_Rte_01102], [SWS_Rte_01111]. Caso as chamadas não possam ser resolvidas diretamente como função C no mesmo contexto, a RTE armazena em buffer as requisições no nível do servidor em filas FIFO e as respostas no nível do cliente em uma fila de profundidade 1 [SWS_Rte_02527], [SWS_Rte_02528]. Para chamadas C/S entre partições ou entre unidades de controle, a RTE utiliza identificadores de transação (transaction handles) compostos por ID de cliente e contador de sequência para atribuir precisamente as respostas ao chamador original [SWS_Rte_02649], [SWS_Rte_03885].

Sincronização, reentrância e contextos de tarefas

A execução de código de programa no cluster RTE ocorre dentro de tarefas de OS ou contextos de ISR. A RTE diferencia entre runnables simples (categoria 1 sem chamadas de OS bloqueantes) e runnables estendidas (categoria 2 com pontos de espera), que são despertadas do estado `WaitPoint` por eventos como `DataReceivedEvent` ou callbacks de COM [SWS_Rte_03532], SWS_RTE p. 304. A ativação concorrente da mesma instância de uma Runnable Entity é estritamente proibida, a menos que o atributo `canBeInvokedConcurrently` esteja explicitamente definido como `TRUE` [SWS_Rte_03523]. No caso de SWCs multi-instanciados, a AUTOSAR adota consistentemente o compartilhamento de código: múltiplas instâncias compartilham o mesmo código executável, mas acessam dados separados e Per-Instance-Memory (PIM) por meio de descritores específicos da instância [SWS_Rte_02002], [SWS_Rte_03015], [SWS_Rte_02301].

Para a proteção de seções críticas, a RTE gera as chamadas Exclusive Areas (`Rte_Enter`, `Rte_Exit`). O mecanismo de sincronização subjacente é configurado por meio do parâmetro `RteExclusiveAreaImplMechanism` [SWS_Rte_03504]. Para isso, estão disponíveis cinco estratégias definidas:

  • ALL_INTERRUPT_BLOCKING: Bloqueio global de todas as interrupções de hardware [SWS_Rte_03504].
  • OS_INTERRUPT_BLOCKING: Bloqueio seletivo de interrupções específicas de OS (categoria 2) [SWS_Rte_03504].
  • OS_RESOURCE: Utilização de recursos do sistema operacional OSEK/AUTOSAR com Priority Ceiling Protocol [SWS_Rte_03504].
  • OS_SPINLOCK: Sincronização compatível com multinúcleo via spinlocks de OS para a coordenação entre tarefas e ISRs de diferentes núcleos [SWS_Rte_03504].
  • NONE: Dispensa de bloqueios internos, desde que a consistência dos dados já esteja assegurada por priorização estrita de tarefas ou escalonamento [SWS_Rte_03504].
Se dados forem transferidos entre diferentes partições de proteção de memória, a RTE verifica parâmetros de ponteiro para impedir acessos não autorizados à memória a partir de partições não confiáveis [SWS_Rte_02752], [SWS_Rte_02753].

Ciclos de vida típicos e modos de operação

O ciclo de vida do sistema está sujeito a uma estrita divisão de fases entre inicialização, operação regular e desligamento controlado. Na inicialização do sistema, a parte do SchM é inicializada primeiro: o EcuM chama `SchM_Start` em cada núcleo de processador antes que módulos BSW como o BswM sejam iniciados [SWS_Rte_04546], [SWS_Rte_04548]. Em seguida, `SchM_StartTiming` ativa os eventos periódicos de BSW e as MainFunctions [SWS_Rte_04549], [SWS_Rte_04551]. De acordo com a restrição de design, `SchM_Start` e `SchM_StartTiming` devem ser chamados exatamente uma vez por núcleo SWS_RTE p. 928. Depois disso, `Rte_Start` habilita a RTE de aplicação; se a alocação de recursos internos falhar, a inicialização é abortada com `RTE_E_LIMIT` [SWS_Rte_01261], [SWS_Rte_01262].

Modos de operação são mapeados por meio de Mode-Declaration-Groups. Quando um Mode Manager dispara uma mudança de modo através de `Rte_Switch`, ela é enfileirada em uma fila FIFO [SWS_Rte_02631], [SWS_Rte_02718], [SWS_Rte_02719]. Cada máquina de modo passa por uma sequência obrigatória de 10 etapas durante a comutação [SWS_Rte_02665]: primeiro, as desativações de modo para o modo de destino tornam-se efetivas e aguarda-se o término de entidades em execução (etapas 1–2). Segue-se a execução sequencial e o término de Executable Entities OnExit (etapas 3–4), OnTransition (etapas 5–6) e OnEntry (etapas 7–8). Por fim, a desativação do modo anterior é revogada e o novo modo é ativado (etapa 9), antes que a mudança de modo seja confirmada via `ModeSwitchedAckEvent` ou `Rte_SwitchAck` (etapa 10) [SWS_Rte_02665], [SWS_Rte_02679], [SWS_Rte_02725]. Por meio de `RteModeToScheduleTableMapping`, os modos de operação também podem ser vinculados diretamente a tabelas de escalonamento (Schedule Tables) do OS [SWS_Rte_05146].

Fluxo de 10 etapas de uma mudança de modo (SWS_Rte_02665)Mode ManagerRTE / Mode MachineMode User (SWC/BSW)Use Case: Solicitação da mudança de modoRte_Switch(Mode)Eintragen in Mode FIFO QueueRTE_E_OKUse Case: 10-Stufen-Transitionssequenz1. Ativação das desativações de modo do próximo modo2. Aguardar o encerramento das entidades afetadas3. Execução das OnExit Executable Entities4. Aguardar o encerramento de todas as entidades OnExit5. Execução das OnTransition Executable Entities6. Aguardar o encerramento de todas as entidades OnTransition7. Execução das OnEntry Executable Entities8. Aguardar o encerramento de todas as entidades OnEntry9. Deaktivierung bisheriger Modus & Aktivierung neuer ModusUse Case: Quittierung10. Disparo de ModeSwitchedAckEvent / Rte_SwitchAck

Diagrama de sequência: Fluxo padronizado de 10 etapas de uma mudança de modo AUTOSAR com confirmação. Fontes: [SWS_Rte_02665], [SWS_Rte_02679], EXP_ModeManagementGuide p. 16.

A desinicialização ocorre no início da fase de shutdown por meio de `Rte_Stop`. Após essa chamada, a RTE bloqueia a ativação, inicialização ou liberação de outras runnables no respectivo núcleo [SWS_Rte_02538]. Dados S/R e requisições C/S recebidos no estado parado da RTE são descartados e ignorados [SWS_Rte_02535], [SWS_Rte_02536].

Tratamento de erros, monitoramento de status e validação de dados

Estados de erro e status de interface são transmitidos uniformemente ao chamador na RTE por meio do tipo escalar `Std_ReturnType` [SWS_Rte_01034], SWS_RTE p. 586. A RTE diferencia entre erros de aplicação (valores de erro 1–63), erros imediatos de infraestrutura (valores 128–255), bem como bits de status sobrepostos, como perda de dados (`RTE_E_LOST_DATA = 64`) ou expiração/desatualização (`RTE_E_MAX_AGE_EXCEEDED = 64`) SWS_RTE p. 586. Valores de retorno típicos de infraestrutura incluem comunicação parada (`RTE_E_COM_STOPPED = 128`), timeouts de comunicação e resposta (`RTE_E_TIMEOUT = 129`), ausência de dados (`RTE_E_NO_DATA = 131`) e estouro de recursos (`RTE_E_LIMIT = 130`) [SWS_Rte_01060], [SWS_Rte_01061], [SWS_Rte_01064]. Com a verificação de intervalo de valores ativa, a RTE sinaliza violações de intervalo com `RTE_E_OUT_OF_RANGE` [SWS_Rte_03845], [SWS_Rte_03846].

Para o tratamento de sinais não plausíveis ou com erro, a RTE fornece mecanismos para invalidação de dados. No lado emissor, `Rte_Invalidate` marca o sinal com um valor de substituição definido [SWS_Rte_01206], [SWS_Rte_05024]. No lado receptor, o atributo `handleInvalid` controla a estratégia de substituição: em `keep`, o valor anterior é mantido e um `DataReceiveErrorEvent` é disparado, enquanto em `replace` ocorre uma substituição automática pelo `initValue` [SWS_Rte_05030], [SWS_Rte_05049]. Falhas de comunicação no nível da rede são monitoradas via `aliveTimeout`; se o tempo de monitoramento expirar, o módulo COM relata à RTE um timeout de recepção via `Rte_COMCbkRxTOut`, após o que os componentes dependentes são informados ou valores de fallback são ativados [SWS_Rte_08061].

Contexto e referências: Este guia baseia-se exclusivamente na especificação AUTOSAR do módulo RTE (R20-11/R25-11), bem como no 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

AUTOSAR RTE

The RTE realizes the Virtual Functional Bus (VFB) on a specific ECU, providing communication between Software Components and basic software.

BSW ID 2 13 APIs (10 Funktionen, 3 Typen) #include "Rte.h"

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 função

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 função

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 função

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 função

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);
SchM_Start função

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