DEENESPTFRRUARHIKOZHNL

FlexRay State Manager (FrSM)

ModulFrSM (FlexRay State Manager)
BSW-Modul-ID142
Standard-Header#include "FrSM.h"
SWS-SpezifikationAUTOSAR_SWS_FlexRayStateManager.pdf
ClusterFlexRay

Guia do móduloGERADO POR IA

Controla o despertar, o arranque e a desativação da comunicação por barramento por cluster FlexRay a pedido de ComM e BswM.
GERADO POR IA não revisado Modelo: claude-opus-5-5 · Esforço: high · Temperatura: não controlável · Prompt: a3de1ac25c5e Procedência Perguntas em aberto (6)
Â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

Controla o despertar, o arranque e a desativação da comunicação por barramento por cluster FlexRay a pedido de ComM e BswM.

O FlexRay State Manager mantém uma máquina de estados por cluster FlexRay, que converte os pedidos de comunicação do ComM em despertar, arranque e desativação através do FlexRay Interface. FrSM_RequestComMode apenas armazena o pedido; este só é processado na função principal cíclica do cluster [SWS_FrSM_00020]. O FrSM reporta os modos atingidos ao ComM e ao BswM. O BswM pode terminar a operação apenas com key slots ou colocar todos os clusters em modo de receção. Apenas FRSM_ONLINE e FRSM_LOW_NUMBER_OF_COLDSTARTERS são considerados FullCom (SWS FrSM p. 38).

O FlexRay State Manager converte os pedidos de comunicação do ComM para cada cluster FlexRay em chamadas ao FlexRay Interface. Como retorno, reporta o modo do barramento através de ComM_BusSM_ModeIndication e o seu estado detalhado através de BswM_FrSM_CurrentState [SWS_FrSM_00096]. Opcionalmente, utiliza DEM, DET e FrNm, bem como outros serviços de FrIf [SWS_FrSM_00097]. FrSm_Init coloca todas as máquinas de estados dos clusters em FRSM_READY (SWS FrSM p. 35).

frsm_kontext ComM ComM FrSM FrSM (uma máquina de estados por cluster FlexRay) ComM->FrSM FrSM_RequestComMode FrSM_GetCurrentComMode BswM BswM BswM->FrSM FrSm_SetEcuPassive FrSm_AllSlots SchM SchM SchM->FrSM FrSM_MainFunction_<FrSMCluster.ShortName> FrSM->ComM ComM_BusSM_ModeIndication FrSM->BswM BswM_FrSM_CurrentState FrIf FrIf FrSM->FrIf FrIf_StartCommunication, FrIf_AllowColdstart, FrIf_HaltCommunication, FrIf_SetTransceiverMode, FrIf_SendWUP, FrIf_AllSlots, … Dem Dem FrSM->Dem Dem_SetEventStatus Det Det FrSM->Det Det_ReportError FrNm FrNm FrSM->FrNm FrNm_StartupError CDD <Cdd> (optional) FrSM->CDD <Cdd>_SyncLossErrorIndication

Diagrama de contexto: ComM e BswM controlam, SchM temporiza, FrIf executa; os erros vão para DEM, DET, FrNm e opcionalmente para um CDD. Fontes: [SWS_FrSM_00096], [SWS_FrSM_00097]

FrSM_RequestComMode apenas armazena o pedido. Apenas a função principal do cluster o processa (SWS FrSM p. 36, [SWS_FrSM_00118]). No caso de um pedido de FullCom, a condição WUReason decide se o próprio FrSM envia padrões de despertar, reencaminha um despertar unilateral para o segundo canal ou arranca diretamente. No arranque, chama FrIf_StartCommunication e, em ECUs de arranque a frio (coldstart), adicionalmente FrIf_AllowColdstart. Com POC normal active, muda para FRSM_ONLINE (SWS FrSM p. 20, SWS FrSM p. 52). Se for solicitado NoCom a partir de um estado FullCom, o FrSM interrompe a comunicação logo na chamada. Após t_TrcvStdbyDelay, coloca os transceivers em standby e regressa a FRSM_READY [SWS_FrSM_00209].

frsm_zustand cluster_haupt Hauptautomat je FlexRay-Cluster cluster_ecu Em paralelo: modo passivo da ECU (todos os clusters) start READY FRSM_READY start->READY FrSm_Init (T00) WAKEUP FRSM_WAKEUP READY->WAKEUP FullCom angefordert, eigenes Wecken STARTUP FRSM_STARTUP READY->STARTUP FullCom angefordert, kein eigenes Wecken WAKEUP->STARTUP wakeupFinished KEYSLOT FRSM_KEYSLOT_ONLY STARTUP->KEYSLOT POC normal active, apenas key-slots ONLINE FRSM_ONLINE (FullCom) STARTUP->ONLINE POC normal active KEYSLOT->ONLINE FrSm_AllSlots HALT FRSM_HALT_REQ KEYSLOT->HALT NoCom LOWNUM FRSM_LOW_NUMBER_OF_COLDSTARTERS (FullCom) ONLINE->LOWNUM Interpretation: lowNumberOfColdstarters OPASSIVE FRSM_ONLINE_PASSIVE ONLINE->OPASSIVE Interpretation: POC normal passive ONLINE->HALT NoCom LOWNUM->ONLINE Interpretation: genug Kaltstarter LOWNUM->HALT NoCom OPASSIVE->ONLINE Interpretation: wieder normal active OPASSIVE->HALT NoCom HALT->READY t_TrcvStdbyDelay expirado ou FrSMTrcvStdbyDelay = 0 ECUACT FRSM_ECU_ACTIVE ECUPAS FRSM_ECU_PASSIVE ECUACT->ECUPAS FrSm_SetEcuPassive(TRUE) ECUPAS->ECUACT FrSm_SetEcuPassive(FALSE)

Diagrama de estados: oito estados principais por cluster e o modo passivo paralelo da ECU. As transições para FRSM_ONLINE_PASSIVE e FRSM_LOW_NUMBER_OF_COLDSTARTERS são interpretadas. Fontes: SWS FrSM p. 18, SWS FrSM p. 27

Para o ComM, FullCom só é válido em FRSM_ONLINE e FRSM_LOW_NUMBER_OF_COLDSTARTERS (SWS FrSM p. 38). Estão disponíveis dois modos de operação especiais para o BswM. FrSm_AllSlots termina a operação apenas com key slots [SWS_FrSM_00172]. FrSm_SetEcuPassive comuta todos os clusters para o modo de receção pura [SWS_FrSM_00174]. FrSM_BswM_StateType reporta ambas as dimensões combinadas [SWS_FrSM_00199]. No R20-11, algumas funções ainda se chamam FrSm_…, e os IDs de serviço diferem de versões posteriores [SWS_FrSM_00020].

Em caso de erro, o FrSM reporta erros de desenvolvimento como FRSM_E_UNINIT ou FRSM_E_INV_HANDLE [SWS_FrSM_91001]. Se a sincronização não for bem-sucedida, chama FrNm_StartupError. Uma perda de sincronização é reportada opcionalmente através de <Cdd>_SyncLossErrorIndication [SWS_FrSM_00190].

Função: gestor de estado de barramento entre ComM, BswM e FlexRay Interface

O FlexRay State Manager (FrSM) traduz os pedidos de comunicação do ComM para cada cluster FlexRay em chamadas de controlo ao FlexRay Interface. O ComM solicita através de FrSM_RequestComMode um ComM_ModeType para um NetworkHandleType [SWS_FrSM_00020]. O FrSM reporta o modo de barramento atingido através de ComM_BusSM_ModeIndication e o seu estado detalhado através de BswM_FrSM_CurrentState ao BswM [SWS_FrSM_00096]. Nunca controla diretamente os controladores e transceivers. Para o efeito, utiliza funções do FrIf, que na especificação estão agrupadas em elementos de função como FE_START (FrIf_StartCommunication) ou FE_HALT (FrIf_HaltCommunication) (SWS FrSM p. 22).

Adicionalmente, o FrSM utiliza serviços opcionais: Dem_SetEventStatus, Det_ReportError, FrIf_AllSlots, FrIf_GetNumOfStartupFrames, FrIf_GetWakeupRxStatus, FrIf_SetWakeupChannel e FrNm_StartupError [SWS_FrSM_00097]. Importa os seus tipos, entre outros, de ComM, ComStack_Types, DEM, Fr e FrIf [SWS_FrSM_00095]. O BswM também controla o FrSM ativamente. Pode, por exemplo, colocá-lo em modo passivo através de FrSm_SetEcuPassive() para casos de uso de diagnóstico (EXP ModeMgmt p. 36).

frsm_kontext ComM ComM FrSM FrSM (uma máquina de estados por cluster FlexRay) ComM->FrSM FrSM_RequestComMode FrSM_GetCurrentComMode BswM BswM BswM->FrSM FrSm_SetEcuPassive FrSm_AllSlots SchM SchM SchM->FrSM FrSM_MainFunction_<FrSMCluster.ShortName> FrSM->ComM ComM_BusSM_ModeIndication FrSM->BswM BswM_FrSM_CurrentState FrIf FrIf FrSM->FrIf FrIf_StartCommunication, FrIf_AllowColdstart, FrIf_HaltCommunication, FrIf_SetTransceiverMode, FrIf_SendWUP, FrIf_AllSlots, … Dem Dem FrSM->Dem Dem_SetEventStatus Det Det FrSM->Det Det_ReportError FrNm FrNm FrSM->FrNm FrNm_StartupError CDD <Cdd> (optional) FrSM->CDD <Cdd>_SyncLossErrorIndication

Diagrama de contexto: o FrSM situa-se entre os solicitadores ComM/BswM, o gerador de temporização SchM e o FrIf executor, e reporta erros a DEM, DET, FrNm e a um CDD opcional. Fontes: [SWS_FrSM_00096], [SWS_FrSM_00097], [SWS_FrSM_00118], [SWS_FrSM_00190]

Máquina de estados por cluster e modo passivo paralelo da ECU

Para cada cluster, o FrSM mantém uma máquina de estados própria com oito estados: FRSM_READY, FRSM_WAKEUP, FRSM_STARTUP, FRSM_HALT_REQ, FRSM_ONLINE, FRSM_ONLINE_PASSIVE, FRSM_KEYSLOT_ONLY e FRSM_LOW_NUMBER_OF_COLDSTARTERS. Cada estado está associado a um estado POC do controlador:

  • FRSM_ONLINE corresponde a POC:normal active com comunicação total.
  • FRSM_ONLINE_PASSIVE corresponde a POC:normal passive. Devido a erros de sincronização de relógio, nenhuns dados são enviados ou recebidos nesse estado.
  • Em FRSM_KEYSLOT_ONLY só é permitido enviar nos key slots.

Esta atribuição é descrita por SWS FrSM p. 18. As transições são definidas em tabelas, e o FrSM executa as suas ações na ordem aí estabelecida (SWS FrSM p. 24).

Paralelamente, existem os estados FRSM_ECU_ACTIVE e FRSM_ECU_PASSIVE (SWS FrSM p. 18). FrSm_SetEcuPassive comuta todos os clusters da ECU conjuntamente para o modo de receção pura ou vice-versa [SWS_FrSM_00174]. Se, durante esse processo, um cluster não se encontrar em FRSM_READY, o FrSM executa FE_TRCV_NORMAL para esse cluster (SWS FrSM p. 40). FrSM_BswM_StateType mapeia ambas as dimensões: para cada estado principal existe um valor com o sufixo _ECU_PASSIVE, de FRSM_BSWM_READY (0x00) até FRSM_LOW_NUMBER_OF_COLDSTARTERS_ECU_PASSIVE (0x0F) [SWS_FrSM_00199]. Os dois conceitos de passivo não devem ser confundidos. ONLINE_PASSIVE é uma consequência de avaria da sincronização, ao passo que ECU_PASSIVE é uma operação de receção intencional.

Externamente, apenas conta o modo fornecido por FrSM_GetCurrentComMode. COMM_FULL_COMMUNICATION aplica-se exclusivamente em FRSM_ONLINE e FRSM_LOW_NUMBER_OF_COLDSTARTERS; em todos os outros estados aplica-se COMM_NO_COMMUNICATION (SWS FrSM p. 38, [SWS_FrSM_00024]). SilentCom não é suportado no FlexRay (SWS FrSM p. 18).

frsm_zustand cluster_haupt Hauptautomat je FlexRay-Cluster cluster_ecu Em paralelo: modo passivo da ECU (todos os clusters) start READY FRSM_READY start->READY FrSm_Init (T00) WAKEUP FRSM_WAKEUP READY->WAKEUP FullCom angefordert, eigenes Wecken STARTUP FRSM_STARTUP READY->STARTUP FullCom angefordert, kein eigenes Wecken WAKEUP->STARTUP wakeupFinished KEYSLOT FRSM_KEYSLOT_ONLY STARTUP->KEYSLOT POC normal active, apenas key-slots ONLINE FRSM_ONLINE (FullCom) STARTUP->ONLINE POC normal active KEYSLOT->ONLINE FrSm_AllSlots HALT FRSM_HALT_REQ KEYSLOT->HALT NoCom LOWNUM FRSM_LOW_NUMBER_OF_COLDSTARTERS (FullCom) ONLINE->LOWNUM Interpretation: lowNumberOfColdstarters OPASSIVE FRSM_ONLINE_PASSIVE ONLINE->OPASSIVE Interpretation: POC normal passive ONLINE->HALT NoCom LOWNUM->ONLINE Interpretation: genug Kaltstarter LOWNUM->HALT NoCom OPASSIVE->ONLINE Interpretation: wieder normal active OPASSIVE->HALT NoCom HALT->READY t_TrcvStdbyDelay expirado ou FrSMTrcvStdbyDelay = 0 ECUACT FRSM_ECU_ACTIVE ECUPAS FRSM_ECU_PASSIVE ECUACT->ECUPAS FrSm_SetEcuPassive(TRUE) ECUPAS->ECUACT FrSm_SetEcuPassive(FALSE)

Diagrama de estados: máquina de estados principal por cluster com os caminhos Despertar → Arranque → Online bem como Paragem → Ready, além do modo passivo da ECU comum a todos os clusters. Interpretação: as transições para FRSM_ONLINE_PASSIVE e FRSM_LOW_NUMBER_OF_COLDSTARTERS são derivadas da tabela de estados e das condições. Fontes: SWS FrSM p. 27, SWS FrSM p. 18, SWS FrSM p. 20, [SWS_FrSM_00209]

De FrSm_Init à comunicação total: despertar e arranque

FrSm_Init é síncrona e não reentrante. A função recebe um ponteiro para FrSM_ConfigType, a configuração post-build específica da implementação ([SWS_FrSM_00013], [SWS_FrSM_00198]). Coloca todas as máquinas de estados dos clusters em FRSM_READY (transição T00) e armazena o endereço de configuração. Se FrSMDevErrorDetect estiver ativo, memoriza também a inicialização bem-sucedida (SWS FrSM p. 35).

FrSM_RequestComMode opera de forma assíncrona. A função armazena o modo pretendido como reqComMode. Este só é processado na execução seguinte de FrSM_MainFunction_<FrSMCluster.ShortName> na máquina de estados do cluster afetado (SWS FrSM p. 36). Existe uma função principal por cluster, disponibilizada através de SchM_FrSm.h [SWS_FrSM_00118]. O seu ciclo de chamada deverá seguir o parâmetro FrSMMainFunctionCycleTime (SWS FrSM p. 62). Pergunta (aberta)

Num pedido de FullCom em FRSM_READY, o FrSM avalia a condição WUReason. Se FrSMCheckWakeupReason estiver definido, consulta cada transceiver através de FrIf_GetTransceiverWUReason. O resultado é NO_WU_BY_BUS, PARTIAL_WU_BY_BUS ou ALL_WU_BY_BUS; sem verificação aplica-se NO_WU_BY_BUS (SWS FrSM p. 20). Se a ECU tiver sido despertada pelo barramento, arranca sem despertar próprio (SWS FrSM p. 52). Se o despertar num nó de dois canais tiver chegado apenas num canal, FE_SET_WU_CHANNEL_FORWARD reencaminha-o para o outro canal (SWS FrSM p. 22, SWS FrSM p. 56).

frsm_weckentscheidung start req reqComMode = FullCom in FRSM_READY start->req chk FrSMCheckWakeupReason? req->chk nobus WUReason := NO_WU_BY_BUS chk->nobus false query FrIf_GetTransceiverWUReason je Transceiver chk->query true wuecu Interpretation: FrSMIsWakeupEcu? nobus->wuecu wu WUReason? query->wu wu->wuecu NO_WU_BY_BUS forward FRSM_WAKEUP: FE_SET_WU_CHANNEL_FORWARD, FE_WAKEUP (anderer Kanal) wu->forward PARTIAL_WU_BY_BUS (Zweikanalknoten) startup FRSM_STARTUP: FE_START, ggf. FE_ALLOW_COLDSTART wu->startup ALL_WU_BY_BUS wakeup FRSM_WAKEUP: FE_SET_WU_CHANNEL_INITIAL, FE_WAKEUP wuecu->wakeup sim wuecu->startup não wakeup->startup wakeupFinished forward->startup wakeupFinished

Diagrama de atividades: de WUReason resulta se o próprio FrSM efetua o despertar, reencaminha um despertar ou arranca diretamente. Interpretação: o ramo para ECUs sem função de despertar é derivado de FrSMIsWakeupEcu. Fontes: SWS FrSM p. 20, SWS FrSM p. 22, SWS FrSM p. 54

Em FRSM_WAKEUP, o FrSM envia padrões de despertar através de FE_WAKEUP, ou seja, FrIf_SendWUP por controlador. Repete o processo até FrSMNumWakeupPatterns ser atingido ou ter sido detetado tráfego no barramento (busTrafficDetected). Se um controlador entrar em HALT devido a um erro, a transmissão é interrompida (SWS FrSM p. 27).

frsm_weckmuster start init Eintritt in FRSM_WAKEUP: wakeupCounter := 1 start->init cond wakeupCounter < FrSMNumWakeupPatterns e busTrafficDetected = false? init->cond wait Aguardar até que todos os controladores do cluster estejam em FR_READY cond->wait sim done wakeupFinished = true cond->done não halt Controlador em HALT devido a erro? wait->halt status vPOC!WakeupStatus? halt->status não halt->done ja: Abbruch bus busTrafficDetected := true status->bus FR_WAKEUP_RECEIVED_HEADER ou FR_WAKEUP_RECEIVED_WUP tx wakeupTransmitted := true status->tx FR_WAKEUP_TRANSMITTED notx wakeupTransmitted := false status->notx caso contrário again busTrafficDetected = false e wakeupCounter < FrSMNumWakeupPatterns? bus->again tx->again notx->again fe FE_WAKEUP: FrIf_SendWUP je Controller again->fe sim inc Incrementar wakeupCounter again->inc não fe->inc inc->cond

Diagrama de atividades: envio repetido de padrões de despertar com avaliação de vPOC!WakeupStatus e interrupção em caso de HALT do controlador. Fontes: SWS FrSM p. 27, SWS FrSM p. 18

O arranque começa com FrIf_StartCommunication. O FrSM chama FrIf_AllowColdstart apenas em FrSMIsColdstartEcu (SWS FrSM p. 22). Depois, reporta FRSM_STARTUP ao BswM. Assim que o estado POC for normal active, seguem-se FrIf_SetState(FRIF_GOTO_ONLINE), a notificação FRSM_ONLINE e a indicação de modo ao ComM (SWS FrSM p. 50, SWS FrSM p. 52).

Wake-up de canal único e inicialização até FRSM_ONLINEComMBswMSchMFrSMFrIfDemFrSM_RequestComMode(NetworkHandle,COMM_FULL_COMMUNICATION)E_OKreqComMode gespeichert,Avaliação na função principalUse Case: Wecken (FRSM_WAKEUP)FrSM_MainFunction_<FrSMCluster.ShortName>looppara todos os controladores do clusterFrIf_GetTransceiverWUReason(CtrlIdx, ChnlIdx,TrcvWUReasonPtr)FRTRCV_WU_POWER_ONFrIf_SetTransceiverMode(CtrlIdx, ChnlIdx,FRTRCV_TRCVMODE_NORMAL)FrIf_SendWUP(CtrlIdx)BswM_FrSM_CurrentState(FRSM_BSWM_WAKEUP)FrSM_MainFunction_<FrSMCluster.ShortName>FrIf_GetPOCStatus(CtrlIdx, POCStatusPtr)FrIf_GetWakeupRxStatus(CtrlIdx)FR_POCSTATE_WAKEUPUse Case: Anlauf (FRSM_STARTUP)FrSM_MainFunction_<FrSMCluster.ShortName>looppara todos os controladores do clusterFrIf_StartCommunication(CtrlIdx)optFrSMIsColdstartEcuFrIf_AllowColdstart(CtrlIdx)BswM_FrSM_CurrentState(FRSM_BSWM_STARTUP)Use Case: Vollkommunikation (FRSM_ONLINE)FrSM_MainFunction_<FrSMCluster.ShortName>FrIf_GetPOCStatus(CtrlIdx, POCStatusPtr)FR_POCSTATE_NORMAL_ACTIVEDem_SetEventStatus(FRSM_E_CLUSTER_STARTUP,PASSED)FrIf_SetState(ClstIdx, FRIF_GOTO_ONLINE)BswM_FrSM_CurrentState(FRSM_BSWM_ONLINE)ComM_BusSM_ModeIndication(NetworkHandle,COMM_FULL_COMMUNICATION)

Diagrama de sequências: Despertar monocanal e inicialização até FRSM_ONLINE, distribuídos por várias execuções da função principal. Interpretação: A ordem dentro das execuções foi reconstruída a partir das ilustrações da especificação e simplificada. Fontes: SWS FrSM p. 50, SWS FrSM p. 52, [SWS_FrSM_00118]

Operação Key-Slot-Only, liberação de todos os slots e poucos nós de partida a frio

Se o controlador estiver configurado com pKeySlotOnlyEnabled, a inicialização termina inicialmente em FRSM_KEYSLOT_ONLY. Esse estado corresponde a POC:normal active com vPOCSlotMode ≠ AllSlots (SWS FrSM p. 18, SWS FrSM p. 55). Ele é abandonado através de FrSm_AllSlots [SWS_FrSM_00172]. A função chama FrIf_AllSlots para cada controlador do cluster e só retorna E_OK se todas as chamadas resultarem em E_OK. Ela pode ser desativada em tempo de pré-compilação através de FrSMAllSlotsSupport (SWS FrSM p. 41). De acordo com a ilustração da especificação, o BswM libera a operação completa. Só depois disso o FrSM reporta FRSM_ONLINE e FullCom ao ComM (SWS FrSM p. 57).

Inicialização no modo key-slot-only e liberação de todos os slotsComMBswMSchMFrSMFrIfUse Case: Anlauf endet in FRSM_KEYSLOT_ONLYFrSM_MainFunction_<FrSMCluster.ShortName>looppara todos os controladores do clusterFrIf_GetPOCStatus(CtrlIdx, POCStatusPtr)FR_POCSTATE_NORMAL_ACTIVE,SlotMode = FR_SLOTMODE_KEYSLOTFrIf_SetState(ClstIdx, FRIF_GOTO_ONLINE)BswM_FrSM_CurrentState(FRSM_BSWM_KEYSLOT_ONLY)Para o ComM, continua a aplicar-se NoCom(FrSM_GetCurrentComMode)Use Case: Freigabe aller SlotsFrSm_AllSlots(NetworkHandle)looppara todos os controladores do clusterFrIf_AllSlots(CtrlIdx)E_OKE_OK (apenas se todas as chamadas forem E_OK)FrSM_MainFunction_<FrSMCluster.ShortName>FrIf_GetPOCStatus(CtrlIdx, POCStatusPtr)FR_POCSTATE_NORMAL_ACTIVE,SlotMode = FR_SLOTMODE_ALLBswM_FrSM_CurrentState(FRSM_BSWM_ONLINE)ComM_BusSM_ModeIndication(NetworkHandle,COMM_FULL_COMMUNICATION)

Diagrama de sequências: Inicialização em duas etapas: primeiro apenas key slots, depois liberação de todos os slots via FrSm_AllSlots. A ilustração da especificação rotula a mensagem do BswM como FRSM_ONLINE_KEYSLOT_ONLY; aqui consta o valor R20-11 FRSM_BSWM_KEYSLOT_ONLY. Fontes: SWS FrSM p. 57, SWS FrSM p. 55, [SWS_FrSM_00172], [SWS_FrSM_00199]

FRSM_LOW_NUMBER_OF_COLDSTARTERS significa comunicação plena, na qual o cluster está sincronizado apenas através de quadros de sincronização (SWS FrSM p. 18). A condição lowNumberOfColdstarters é atendida quando FrIf_GetNumOfStartupFrames() reporta menos quadros de inicialização do que o parâmetro opcional FrSMMinNumberOfColdstarter especifica (SWS FrSM p. 20).

Retorno a NoCom e temporizadores do cluster

NoCom pode ser solicitado enquanto o autômato estiver em FRSM_ONLINE, FRSM_KEYSLOT_ONLY, FRSM_LOW_NUMBER_OF_COLDSTARTERS ou FRSM_ONLINE_PASSIVE. Nesse caso, FrSM_RequestComMode já processa a transição sem aguardar pela função principal (SWS FrSM p. 36). Isso inclui FrIf_SetState(FRIF_GOTO_OFFLINE), FrIf_HaltCommunication e a mensagem HALT_REQ para o BswM. Em execuções posteriores, o FrSM reporta NoCom ao ComM, reinicializa os controladores, coloca os transceptores em STANDBY e reporta READY (SWS FrSM p. 58).

Transição de FullCom para NoComComMBswMSchMFrSMFrIfFrSM_RequestComMode(NetworkHandle,COMM_NO_COMMUNICATION)O estado de origem é um estado FullCom:Transição imediata na chamadaFrIf_SetState(CtrlIdx, FRIF_GOTO_OFFLINE)FrIf_HaltCommunication(CtrlIdx)BswM_FrSM_CurrentState(FRSM_BSWM_HALT_REQ)E_OKFrSM_MainFunction_<FrSMCluster.ShortName>FrIf_GetPOCStatus(CtrlIdx, POCStatusPtr)ComM_BusSM_ModeIndication(NetworkHandle,COMM_NO_COMMUNICATION)após o término de t_TrcvStdbyDelay ou imediatamente,se FrSMTrcvStdbyDelay estiver ausente ou for 0FrIf_ControllerInit(CtrlIdx)FrIf_SetTransceiverMode(CtrlIdx, ChnlIdx,STANDBY)BswM_FrSM_CurrentState(FRSM_BSWM_READY)

Diagrama de sequências: De FullCom para NoCom. A parada ocorre de forma síncrona na chamada de solicitação; a reinicialização e o standby ocorrem defasados no tempo na função principal. Interpretação: A ordem foi reconstruída a partir da ilustração da especificação. Fontes: SWS FrSM p. 58, SWS FrSM p. 36, [SWS_FrSM_00209]

Por cluster, o FrSM opera com vários temporizadores (SWS FrSM p. 21):

  • t1 atrasa FrIf_AllowColdstart. Com FrSMDurationT1 = 0, a chamada segue diretamente após FrIf_StartCommunication.
  • t2 determina após quanto tempo a inicialização é repetida.
  • t3 monitora a transição para FullCom.
  • t4 garante que um nó bicanal limpe seu bit de inibição de partida a frio.
  • t_TrcvStdbyDelay atrasa a reinicialização e o standby. Se FrSMTrcvStdbyDelay não estiver configurado ou for 0, o autômato passa imediatamente de FRSM_HALT_REQ para FRSM_READY [SWS_FrSM_00209].

Configuração por FrSMCluster e versão de interface R20-11

O contêiner FrSMCluster (1..*) descreve um cluster que pode abranger vários controladores em uma ECU. Ele contém:

  • os temporizadores FrSMDurationT1 a FrSMDurationT4,
  • os papéis FrSMIsColdstartEcu e FrSMIsWakeupEcu,
  • FrSMNumWakeupPatterns e FrSMStartupRepetitions,
  • as referências FrSMComMNetworkHandleRef e FrSMFrIfClusterRef.

Esses conteúdos são descritos por SWS FrSM p. 62. De forma geral, também são configuráveis FrSMVersionInfoApi para FrSM_GetVersionInfo e FrSMSyncLossErrorIndicationName (SystemTemplate p. 1528, [SWS_FrSM_00029]).

Muitos pontos detalhados são provenientes de releases posteriores. Para o R20-11, aplicam-se os requisitos, e eles divergem em alguns pontos:

  • As funções chamam-se FrSm_Init, FrSm_AllSlots e FrSm_SetEcuPassive e estão disponíveis através de FrSm.h.
  • FrSM_RequestComMode possui o Service-ID 0x02 e é reentrante para diferentes clusters. Os trechos posteriores mencionam 0x40 e outros nomes de parâmetros.
  • FrSM_GetCurrentComMode possui no R20-11 o Service-ID 0x03.

Evidências: [SWS_FrSM_00013], [SWS_FrSM_00020], [SWS_FrSM_00024], SWS FrSM p. 36.

Comportamento em caso de erro

Para erros de desenvolvimento, são definidos os seguintes códigos [SWS_FrSM_91001]:

  • FRSM_E_PARAM_POINTER: ponteiro inválido. O serviço retorna imediatamente.
  • FRSM_E_INV_HANDLE: identificador de rede inválido.
  • FRSM_E_UNINIT: módulo não inicializado.
  • FRSM_E_INV_MODE: modo de comunicação inválido.
  • FRSM_INIT_FAILED: falha na inicialização.

Alguns casos são expressamente regulamentados. FrSm_AllSlots reporta FRSM_E_INV_HANDLE em caso de identificador inválido e retorna E_NOT_OK (SWS FrSM p. 41). FrSm_SetEcuPassive reporta um erro de desenvolvimento antes da inicialização (SWS FrSM p. 40). No R20-11, sem inicialização prévia, FrSM_GetCurrentComMode retorna E_NOT_OK [SWS_FrSM_00024].

No nível do barramento, o FrSM reage da seguinte forma:

  • Em caso de erros na sincronização de relógio, o cluster cai para FRSM_ONLINE_PASSIVE (SWS FrSM p. 18).
  • Se a sincronização não for bem-sucedida, o FrSM chama FrNm_StartupError em [SWS_FrSM_00097].
  • A inicialização é repetida após t2 (SWS FrSM p. 21). FrSMStartupRepetitions provavelmente limita o número de repetições. Pergunta (aberta)

O FrSM reporta o status de inicialização como o evento DEM FRSM_E_CLUSTER_STARTUP, em caso de sucesso com PASSED (SWS FrSM p. 52). Os IDs de evento encontram-se em FrSMClusterDemEventParameterRefs (SWS FrSM p. 62). Opcionalmente, <Cdd>_SyncLossErrorIndication informa com true sobre uma perda de sincronização. Com false, a função indica que a sincronização foi restabelecida ou que a solicitação de FullCom foi cancelada [SWS_FrSM_00190]. Sem um nome de função configurado, essa notificação não ocorre (SystemTemplate p. 1528).

Evidências mais detalhadas

Guia gerado por IA com base nos requisitos da R20-11 e trechos associados da especificação, em parte provenientes de releases posteriores. São determinantes os requisitos vinculados; interpretações estão identificadas como tais.

FlexRay State Manager (FrSM)

Controls the operational states and startup/wakeup of FlexRay clusters.

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

função FrSm_Init [SWS_FrSM_00013] 📄 PDF

void FrSm_Init (const FrSM_ConfigType* FrSM_ConfigPtr);

Initializes the Flex Ray State Manager.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 4f916985d2dc Procedência Perguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A função FrSm_Init serve, de acordo com a especificação [SWS_FrSM_00013], para a inicialização do FlexRay State Manager (FrSM). Ela possui o service ID 0x01 e é declarada através do arquivo de cabeçalho FrSm.h.

Utilização e parâmetros

A execução de FrSm_Init ocorre de forma síncrona [SWS_FrSM_00013]. A chamada espera exatamente um parâmetro de entrada:

  • FrSM_ConfigPtr: ponteiro para a estrutura de configuração selecionada do tipo const FrSM_ConfigType*, através do qual os dados de inicialização do módulo são fornecidos [SWS_FrSM_00013].

A função não possui valor de retorno (void) e não define parâmetros de entrada/saída (inout) nem parâmetros exclusivos de saída (out) [SWS_FrSM_00013].

Simultaneidade e restrições

Em relação ao contexto de execução, a interface é classificada como não reentrante (Non Reentrant) [SWS_FrSM_00013]. Chamadas simultâneas ou aninhadas da função são, portanto, inadmissíveis. Interpretação: a chamada normalmente deve ocorrer durante a inicialização do sistema, antes que os serviços regulares de comunicação ou controle do FrSM sejam utilizados. Pergunta Q-881936607a7268bd (aberta)

Tratamento de erros

Na especificação do elemento [SWS_FrSM_00013], não são indicados códigos de retorno ou mecanismos específicos para tratamento de erros, como notificações DET ou DEM.

Esta nota de uso foi gerada automaticamente e baseia-se exclusivamente nos dados de especificação do AUTOSAR R20-11.

Guia do implementador em breve (complexidade I1)

função FrSM_RequestComMode [SWS_FrSM_00020] 📄 PDF

Std_ReturnType FrSM_RequestComMode (NetworkHandleType NetworkHandle, ComM_ModeType ComM_Mode);

This API function is used by the Com M to startup or shutdown the communication on a Flex Ray cluster.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 0805fe94c490 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

Utilização e semântica

A função FrSM_RequestComMode é chamada pelo Communication Manager (ComM) para iniciar ou encerrar a comunicação em um cluster FlexRay específico [SWS_FrSM_00020]. A interface é declarada por meio do cabeçalho FrSm.h e possui o ID de serviço 0x02 [SWS_FrSM_00020]. Como o serviço é especificado como assíncrono, a função apenas confirma o aceite da solicitação de comutação, enquanto a transição de estado real é processada posteriormente [SWS_FrSM_00020].

Parâmetros e valores de retorno

A função espera dois parâmetros de entrada para controlar o modo de comunicação [SWS_FrSM_00020]:

  • NetworkHandle (tipo NetworkHandleType): Determina o cluster FlexRay para o qual um modo de comunicação é solicitado [SWS_FrSM_00020].
  • ComM_Mode (tipo ComM_ModeType): Contém o modo de comunicação desejado pelo ComM para a rede especificada [SWS_FrSM_00020].

O valor de retorno do tipo Std_ReturnType indica o resultado da verificação da solicitação [SWS_FrSM_00020]:

  • E_OK: A solicitação de alteração de modo foi aceita com sucesso [SWS_FrSM_00020].
  • E_NOT_OK: A solicitação foi rejeitada e não foi aceita [SWS_FrSM_00020].

Simultaneidade e restrições

De acordo com a especificação, FrSM_RequestComMode é implementado como reentrante para diferentes clusters FlexRay [SWS_FrSM_00020]. Para o mesmo cluster FlexRay, a chamada provavelmente não é reentrante, razão pela qual chamadas concorrentes para a mesma instância devem ser evitadas. Códigos de erro específicos, como mensagens de DET ou DEM, não estão definidos no payload [SWS_FrSM_00020].

Esta nota de uso foi gerada automaticamente com base na especificação AUTOSAR Classic R20-11.

Guia do implementador em breve (complexidade I1)

função FrSM_GetCurrentComMode [SWS_FrSM_00024] 📄 PDF

Std_ReturnType FrSM_GetCurrentComMode (NetworkHandleType NetworkHandle, ComM_ModeType* ComM_ModePtr);

This API function can be used to determine the current communication mode of a Flex Ray cluster.

função FrSM_GetVersionInfo [SWS_FrSM_00029] 📄 PDF

void FrSM_GetVersionInfo (Std_VersionInfoType* versioninfo);

This service returns the version information of this module. The version information includes:  Module Id  Vendor Id  Vendor specific version numbers (BSW00407 ). This function shall be pre compile time configurable On/ Off by the configuration parameter: FRSM_ VERSION_ INFO_ API Hint: If source code for caller and callee of this function is available this function should be realized as a macro. The macro should be defined in the modules header file.

função FrSm_AllSlots [SWS_FrSM_00172] 📄 PDF

Std_ReturnType FrSm_AllSlots (NetworkHandleType NetworkHandle);

Service FrSm_AllSlots.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: f8b54cb7f004 Procedência Perguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A função de serviço assíncrona FrSm_AllSlots é disponibilizada por meio do cabeçalho FrSm.h e serve para sair do chamado "Key Slot Only Mode" para um cluster FlexRay especificado [SWS_FrSM_00172].

Chamada e parâmetros: Para identificar a rede de comunicação, é passado ao parâmetro NetworkHandle o respectivo cluster FlexRay para o qual o modo de comutação deve ser solicitado [SWS_FrSM_00172]. Não existem outros parâmetros de passagem [SWS_FrSM_00172].

Valor de retorno e semântica: A chamada retorna E_OK se a solicitação de comutação foi aceita com sucesso, ou E_NOT_OK caso a solicitação tenha sido rejeitada [SWS_FrSM_00172]. Por se tratar de uma operação assíncrona, E_OK apenas confirma o recebimento da solicitação; a transição efetiva para a operação plena de todos os slots provavelmente surtirá efeito de forma retardada no contexto do State Manager. Pergunta Q-d559e4ea5183ff7c (aberta)

Concorrência e restrições: A função é reentrante para diferentes clusters FlexRay [SWS_FrSM_00172]. Para clusters idênticos, ela não foi projetada para ser reentrante, razão pela qual os chamadores devem sincronizar solicitações paralelas para o mesmo cluster. Códigos de erro específicos para DET ou DEM não são mencionados na descrição da função.

Esta nota de uso foi gerada automaticamente. Ela baseia-se no AUTOSAR CP R20-11.

função FrSm_SetEcuPassive [SWS_FrSM_00174] 📄 PDF

Std_ReturnType FrSm_SetEcuPassive (boolean FrSM_Passive);

This API function can be used to set all Flex Ray clusters of the ECU to a receive AUTOSAR CP R20 - of Document ID : AUTOSAR_S WS_FlexRayStateManager only mode.

tipo FrSM_ConfigType [SWS_FrSM_00198] 📄 PDF

This type contains the implementation - specific post build time configuration structure AUTOSAR CP R20 - of Document ID : AUTOSAR_S WS_FlexRayStateManager that is for Fr SM_ Init.

tipo FrSM_BswM_StateType [SWS_FrSM_00199] 📄 PDF

This type defines the states that are reported to the Bsw

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: a8440a0185d0 Procedência Perguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

usar

O tipo de enumeração FrSM_BswM_StateType define, de acordo com [SWS_FrSM_00199], os estados do FlexRay State Manager (FrSM) que são reportados ao BswM (Basic Software Mode Manager). A declaração e disponibilização do tipo ocorrem através do arquivo de cabeçalho FrSm.h [SWS_FrSM_00199].

Interação e gama de valores

Os valores deste tipo são utilizados em conjunto com a interface BswM_FrSM_CurrentState para transmitir o estado atual de operação e de comunicação ao módulo BswM [SWS_FrSM_00199]. O intervalo de valores abrange os seguintes valores de enumeração:

  • FRSM_BSWM_READY (0x00) e FRSM_BSWM_READY_ECU_PASSIVE (0x01)
  • FRSM_BSWM_STARTUP (0x02) e FRSM_BSWM_STARTUP_ECU_PASSIVE (0x03)
  • FRSM_BSWM_WAKEUP (0x04) e FRSM_BSWM_WAKEUP_ECU_PASSIVE (0x05)
  • FRSM_BSWM_HALT_REQ (0x06) e FRSM_BSWM_HALT_REQ_ECU_PASSIVE (0x07)
  • FRSM_BSWM_KEYSLOT_ONLY (0x08) e FRSM_BSWM_KEYSLOT_ONLY_ECU_PASSIVE (0x09)
  • FRSM_BSWM_ONLINE (0x0A) e FRSM_BSWM_ONLINE_ECU_PASSIVE (0x0B)
  • FRSM_BSWM_ONLINE_PASSIVE (0x0C) e FRSM_BSWM_ONLINE_PASSIVE_ECU_PASSIVE (0x0D)
  • FRSM_LOW_NUMBER_OF_COLDSTARTERS (0x0E) e FRSM_LOW_NUMBER_OF_COLDSTARTERS_ECU_PASSIVE (0x0F)

Chama a atenção a estruturação dos estados em pares: cada estado básico possui uma contraparte regular, bem como uma variante com o sufixo _ECU_PASSIVE. Presumivelmente, isso serve para reportar ao BswM o estado de comunicação do cluster FlexRay combinado com o modo passivo da unidade de controle, para que este possa coordenar as respectivas mudanças de modo. Pergunta Q-f2d9296e40782b5a (aberta)

Este texto foi gerado por uma IA e serve como orientação. São determinantes as especificações AUTOSAR referenciadas.

Guia do implementador em breve (complexidade I1)

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/CP_MOD_FrSM
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_FrSM@rel:R20-11#ee347548
Content hash
ee347548
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_FlexRayStateManager.pdf#nameddest=SWS_FrSM_00013

Mapa de temas

Vista de detalhes

Selecione uma entrada no índice.

Inicialização e estado

This service returns the version information of this module. The version information includes:  Module Id  Vendor Id  Vendor specific version numbers (BSW00407 ). This function shall be pre compile time configurable On/ Off by the configuration parameter: FRSM_ VERSION_ INFO_ API Hint: If source code for caller and callee of this function is available this function should be realized as a macro. The macro should be defined in the modules header file.

void FrSM_GetVersionInfo (Std_VersionInfoType* versioninfo);
FrSm_Init função

Initializes the Flex Ray State Manager.

void FrSm_Init (const FrSM_ConfigType* FrSM_ConfigPtr);

Serviços

FrSm_AllSlots função

Service FrSm_AllSlots.

Std_ReturnType FrSm_AllSlots (NetworkHandleType NetworkHandle);

This API function can be used to determine the current communication mode of a Flex Ray cluster.

Std_ReturnType FrSM_GetCurrentComMode (NetworkHandleType NetworkHandle, ComM_ModeType* ComM_ModePtr);

This API function is used by the Com M to startup or shutdown the communication on a Flex Ray cluster.

Std_ReturnType FrSM_RequestComMode (NetworkHandleType NetworkHandle, ComM_ModeType ComM_Mode);

This API function can be used to set all Flex Ray clusters of the ECU to a receive AUTOSAR CP R20 - of Document ID : AUTOSAR_S WS_FlexRayStateManager only mode.

Std_ReturnType FrSm_SetEcuPassive (boolean FrSM_Passive);

Tipos

This type defines the states that are reported to the Bsw

This type contains the implementation - specific post build time configuration structure AUTOSAR CP R20 - of Document ID : AUTOSAR_S WS_FlexRayStateManager that is for Fr SM_ Init.