DEENESPTFRRUARHIKOZHNL

FlexRay State Manager (FrSM)

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

Modul-GuideKI-GENERIERT

Steuert je FlexRay-Cluster Wecken, Anlauf und Abschaltung der Buskommunikation im Auftrag von ComM und BswM.
KI-GENERIERT ungeprüft Modell: claude-opus-5-5 · Aufwand: high · Temperatur: nicht steuerbar · Prompt: a3de1ac25c5e Herkunft Offene Fragen (6)
Kausaler Anker: R20-11 Gültig ab R20-11 Neu synthetisiert für diesen Spezifikationsstand.
KI-generiertclaude-opus-5-5 · 2026-10-13

Steuert je FlexRay-Cluster Wecken, Anlauf und Abschaltung der Buskommunikation im Auftrag von ComM und BswM.

Der FlexRay State Manager führt je FlexRay-Cluster einen Zustandsautomaten, der die Kommunikationsanforderungen des ComM in Wecken, Anlauf und Abschaltung über das FlexRay Interface umsetzt. FrSM_RequestComMode speichert die Anforderung nur; verarbeitet wird sie erst in der zyklischen Hauptfunktion des Clusters [SWS_FrSM_00020]. Erreichte Modi meldet der FrSM an ComM und BswM. Der BswM kann den Key-Slot-Only-Betrieb beenden oder alle Cluster in den Empfangsbetrieb schalten. Als FullCom gelten nur FRSM_ONLINE und FRSM_LOW_NUMBER_OF_COLDSTARTERS (SWS FrSM S. 38).

Der FlexRay State Manager setzt die Kommunikationsanforderungen des ComM für jeden FlexRay-Cluster in Aufrufe an das FlexRay Interface um. Zurück meldet er den Busmodus über ComM_BusSM_ModeIndication und seinen Detailzustand über BswM_FrSM_CurrentState [SWS_FrSM_00096]. Optional nutzt er DEM, DET und FrNm sowie weitere FrIf-Dienste [SWS_FrSM_00097]. FrSm_Init versetzt alle Cluster-Automaten nach FRSM_READY (SWS FrSM S. 35).

frsm_kontext ComM ComM FrSM FrSM (je FlexRay-Cluster ein Automat) 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

Kontextdiagramm: ComM und BswM steuern, SchM taktet, FrIf führt aus; Fehler gehen an DEM, DET, FrNm und optional an einen CDD. Quellen: [SWS_FrSM_00096], [SWS_FrSM_00097]

FrSM_RequestComMode speichert die Anforderung nur. Erst die Hauptfunktion des Clusters verarbeitet sie (SWS FrSM S. 36, [SWS_FrSM_00118]). Bei einer FullCom-Anforderung entscheidet die Bedingung WUReason, ob der FrSM selbst Weckmuster sendet, ein einseitiges Wecken auf den zweiten Kanal weiterleitet oder direkt anläuft. Im Anlauf ruft er FrIf_StartCommunication auf und bei Kaltstart-ECUs zusätzlich FrIf_AllowColdstart. Bei POC normal active wechselt er nach FRSM_ONLINE (SWS FrSM S. 20, SWS FrSM S. 52). Wird NoCom aus einem FullCom-Zustand angefordert, hält der FrSM die Kommunikation schon im Aufruf an. Nach t_TrcvStdbyDelay setzt er die Transceiver auf Standby und kehrt nach FRSM_READY zurück [SWS_FrSM_00209].

frsm_zustand cluster_haupt Hauptautomat je FlexRay-Cluster cluster_ecu Parallel: ECU-Passivmodus (alle Cluster) 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, nur 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 abgelaufen oder FrSMTrcvStdbyDelay = 0 ECUACT FRSM_ECU_ACTIVE ECUPAS FRSM_ECU_PASSIVE ECUACT->ECUPAS FrSm_SetEcuPassive(TRUE) ECUPAS->ECUACT FrSm_SetEcuPassive(FALSE)

Zustandsdiagramm: Acht Hauptzustände je Cluster und der parallele ECU-Passivmodus. Die Übergänge zu FRSM_ONLINE_PASSIVE und FRSM_LOW_NUMBER_OF_COLDSTARTERS sind interpretiert. Quellen: SWS FrSM S. 18, SWS FrSM S. 27

Für ComM gilt FullCom nur in FRSM_ONLINE und FRSM_LOW_NUMBER_OF_COLDSTARTERS (SWS FrSM S. 38). Zwei Sonderbetriebsarten stehen dem BswM zur Verfügung. FrSm_AllSlots beendet den Key-Slot-Only-Betrieb [SWS_FrSM_00172]. FrSm_SetEcuPassive schaltet alle Cluster in den reinen Empfangsbetrieb [SWS_FrSM_00174]. FrSM_BswM_StateType meldet beide Dimensionen kombiniert [SWS_FrSM_00199]. In R20-11 heißen einige Funktionen noch FrSm_…, und die Service-IDs weichen von späteren Releases ab [SWS_FrSM_00020].

Im Fehlerfall meldet der FrSM Entwicklungsfehler wie FRSM_E_UNINIT oder FRSM_E_INV_HANDLE [SWS_FrSM_91001]. Gelingt die Synchronisation nicht, ruft er FrNm_StartupError auf. Einen Synchronisationsverlust meldet er optional über <Cdd>_SyncLossErrorIndication [SWS_FrSM_00190].

Rolle: Busszustandsmanager zwischen ComM, BswM und FlexRay Interface

Der FlexRay State Manager (FrSM) übersetzt die Kommunikationsanforderungen des ComM für jeden FlexRay-Cluster in Steueraufrufe an das FlexRay Interface. ComM fordert über FrSM_RequestComMode einen ComM_ModeType für ein NetworkHandleType an [SWS_FrSM_00020]. Den erreichten Busmodus meldet der FrSM über ComM_BusSM_ModeIndication zurück, seinen detaillierten Zustand über BswM_FrSM_CurrentState an den BswM [SWS_FrSM_00096]. Controller und Transceiver steuert er nie direkt an. Er nutzt dafür FrIf-Funktionen, die in der Spezifikation zu Funktionselementen wie FE_START (FrIf_StartCommunication) oder FE_HALT (FrIf_HaltCommunication) gebündelt sind (SWS FrSM S. 22).

Zusätzlich nutzt der FrSM optionale Dienste: Dem_SetEventStatus, Det_ReportError, FrIf_AllSlots, FrIf_GetNumOfStartupFrames, FrIf_GetWakeupRxStatus, FrIf_SetWakeupChannel und FrNm_StartupError [SWS_FrSM_00097]. Seine Typen importiert er unter anderem aus ComM, ComStack_Types, DEM, Fr und FrIf [SWS_FrSM_00095]. Der BswM steuert den FrSM auch aktiv. Er kann ihn zum Beispiel für Diagnoseanwendungsfälle über FrSm_SetEcuPassive() in den Passivmodus versetzen (EXP ModeMgmt S. 36).

frsm_kontext ComM ComM FrSM FrSM (je FlexRay-Cluster ein Automat) 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

Kontextdiagramm: Der FrSM steht zwischen den Anforderern ComM/BswM, dem Taktgeber SchM und dem ausführenden FrIf und meldet Fehler an DEM, DET, FrNm und einen optionalen CDD. Quellen: [SWS_FrSM_00096], [SWS_FrSM_00097], [SWS_FrSM_00118], [SWS_FrSM_00190]

Zustandsautomat je Cluster und paralleler ECU-Passivmodus

Für jeden Cluster führt der FrSM einen eigenen Automaten mit acht Zuständen: FRSM_READY, FRSM_WAKEUP, FRSM_STARTUP, FRSM_HALT_REQ, FRSM_ONLINE, FRSM_ONLINE_PASSIVE, FRSM_KEYSLOT_ONLY und FRSM_LOW_NUMBER_OF_COLDSTARTERS. Jeder Zustand ist einem POC-Zustand des Controllers zugeordnet:

  • FRSM_ONLINE entspricht POC:normal active mit voller Kommunikation.
  • FRSM_ONLINE_PASSIVE entspricht POC:normal passive. Wegen Fehlern der Uhrensynchronisation werden dort keine Daten gesendet oder empfangen.
  • In FRSM_KEYSLOT_ONLY darf nur in den Key-Slots gesendet werden.

Diese Zuordnung beschreibt SWS FrSM S. 18. Die Übergänge sind tabellarisch definiert, und der FrSM führt ihre Aktionen in der dort festgelegten Reihenfolge aus (SWS FrSM S. 24).

Parallel dazu gibt es die Zustände FRSM_ECU_ACTIVE und FRSM_ECU_PASSIVE (SWS FrSM S. 18). FrSm_SetEcuPassive schaltet alle Cluster der ECU gemeinsam in den reinen Empfangsbetrieb oder zurück [SWS_FrSM_00174]. Steht ein Cluster dabei nicht in FRSM_READY, führt der FrSM für ihn FE_TRCV_NORMAL aus (SWS FrSM S. 40). FrSM_BswM_StateType bildet beide Dimensionen ab: Zu jedem Hauptzustand gibt es einen Wert mit Suffix _ECU_PASSIVE, von FRSM_BSWM_READY (0x00) bis FRSM_LOW_NUMBER_OF_COLDSTARTERS_ECU_PASSIVE (0x0F) [SWS_FrSM_00199]. Die beiden Passivbegriffe sind nicht zu verwechseln. ONLINE_PASSIVE ist eine Störungsfolge der Synchronisation, ECU_PASSIVE dagegen ein gewollter Empfangsbetrieb.

Nach außen zählt nur der Modus, den FrSM_GetCurrentComMode liefert. COMM_FULL_COMMUNICATION gilt ausschließlich in FRSM_ONLINE und FRSM_LOW_NUMBER_OF_COLDSTARTERS, in allen anderen Zuständen gilt COMM_NO_COMMUNICATION (SWS FrSM S. 38, [SWS_FrSM_00024]). SilentCom wird auf FlexRay nicht unterstützt (SWS FrSM S. 18).

frsm_zustand cluster_haupt Hauptautomat je FlexRay-Cluster cluster_ecu Parallel: ECU-Passivmodus (alle Cluster) 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, nur 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 abgelaufen oder FrSMTrcvStdbyDelay = 0 ECUACT FRSM_ECU_ACTIVE ECUPAS FRSM_ECU_PASSIVE ECUACT->ECUPAS FrSm_SetEcuPassive(TRUE) ECUPAS->ECUACT FrSm_SetEcuPassive(FALSE)

Zustandsdiagramm: Hauptautomat je Cluster mit den Pfaden Wecken → Anlauf → Online sowie Halt → Ready, daneben der für alle Cluster gemeinsame ECU-Passivmodus. Interpretation: Die Übergänge zu FRSM_ONLINE_PASSIVE und FRSM_LOW_NUMBER_OF_COLDSTARTERS sind aus Zustandstabelle und Bedingungen abgeleitet. Quellen: SWS FrSM S. 27, SWS FrSM S. 18, SWS FrSM S. 20, [SWS_FrSM_00209]

Von FrSm_Init bis zur Vollkommunikation: Wecken und Anlauf

FrSm_Init ist synchron und nicht reentrant. Die Funktion erhält einen Zeiger auf FrSM_ConfigType, die implementierungsspezifische Post-Build-Konfiguration ([SWS_FrSM_00013], [SWS_FrSM_00198]). Sie setzt alle Cluster-Automaten nach FRSM_READY (Übergang T00) und speichert die Konfigurationsadresse. Ist FrSMDevErrorDetect aktiv, merkt sie sich außerdem die erfolgreiche Initialisierung (SWS FrSM S. 35).

FrSM_RequestComMode arbeitet asynchron. Die Funktion speichert den gewünschten Modus als reqComMode. Verarbeitet wird er erst beim nächsten Lauf von FrSM_MainFunction_<FrSMCluster.ShortName> im Automaten des betroffenen Clusters (SWS FrSM S. 36). Es gibt eine Hauptfunktion je Cluster, bereitgestellt über SchM_FrSm.h [SWS_FrSM_00118]. Ihr Aufruftakt dürfte dem Parameter FrSMMainFunctionCycleTime folgen (SWS FrSM S. 62). Frage (offen)

Bei einer FullCom-Anforderung in FRSM_READY wertet der FrSM die Bedingung WUReason aus. Ist FrSMCheckWakeupReason gesetzt, fragt er jeden Transceiver über FrIf_GetTransceiverWUReason ab. Das Ergebnis ist NO_WU_BY_BUS, PARTIAL_WU_BY_BUS oder ALL_WU_BY_BUS; ohne Prüfung gilt NO_WU_BY_BUS (SWS FrSM S. 20). Wurde die ECU durch den Bus geweckt, läuft sie ohne eigenes Wecken an (SWS FrSM S. 52). Kam das Wecken bei einem Zweikanalknoten nur auf einem Kanal an, leitet FE_SET_WU_CHANNEL_FORWARD es auf den anderen Kanal weiter (SWS FrSM S. 22, SWS FrSM S. 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 ja wuecu->startup nein wakeup->startup wakeupFinished forward->startup wakeupFinished

Aktivitätsdiagramm: Aus WUReason ergibt sich, ob der FrSM selbst weckt, ein Wecken weiterleitet oder direkt anläuft. Interpretation: Der Zweig für Nicht-Weck-ECUs ist aus FrSMIsWakeupEcu abgeleitet. Quellen: SWS FrSM S. 20, SWS FrSM S. 22, SWS FrSM S. 54

In FRSM_WAKEUP sendet der FrSM Weckmuster über FE_WAKEUP, also FrIf_SendWUP je Controller. Er wiederholt das, bis FrSMNumWakeupPatterns erreicht ist oder Busverkehr erkannt wurde (busTrafficDetected). Geht ein Controller wegen eines Fehlers in HALT, bricht die Übertragung ab (SWS FrSM S. 27).

frsm_weckmuster start init Eintritt in FRSM_WAKEUP: wakeupCounter := 1 start->init cond wakeupCounter < FrSMNumWakeupPatterns und busTrafficDetected = false? init->cond wait Warten, bis alle Controller des Clusters in FR_READY cond->wait ja done wakeupFinished = true cond->done nein halt Controller wegen Fehler im HALT? wait->halt status vPOC!WakeupStatus? halt->status nein halt->done ja: Abbruch bus busTrafficDetected := true status->bus FR_WAKEUP_RECEIVED_HEADER oder FR_WAKEUP_RECEIVED_WUP tx wakeupTransmitted := true status->tx FR_WAKEUP_TRANSMITTED notx wakeupTransmitted := false status->notx sonst again busTrafficDetected = false und wakeupCounter < FrSMNumWakeupPatterns? bus->again tx->again notx->again fe FE_WAKEUP: FrIf_SendWUP je Controller again->fe ja inc wakeupCounter erhöhen again->inc nein fe->inc inc->cond

Aktivitätsdiagramm: Wiederholte Aussendung von Weckmustern mit Auswertung von vPOC!WakeupStatus und Abbruch bei Controller-HALT. Quellen: SWS FrSM S. 27, SWS FrSM S. 18

Der Anlauf beginnt mit FrIf_StartCommunication. FrIf_AllowColdstart ruft der FrSM nur bei FrSMIsColdstartEcu auf (SWS FrSM S. 22). Danach meldet er FRSM_STARTUP an den BswM. Sobald der POC-Status normal active ist, folgen FrIf_SetState(FRIF_GOTO_ONLINE), die Meldung FRSM_ONLINE und die Moduszeige an den ComM (SWS FrSM S. 50, SWS FrSM S. 52).

Einkanaliges Wecken und Anlauf bis FRSM_ONLINEComMBswMSchMFrSMFrIfDEMFrSM_RequestComMode(NetworkHandle,COMM_FULL_COMMUNICATION)E_OKreqComMode gespeichert,Auswertung in der HauptfunktionUse Case: Wecken (FRSM_WAKEUP)FrSM_MainFunction_<FrSMCluster.ShortName>loopfür alle Controller des ClustersFrIf_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>loopfür alle Controller des ClustersFrIf_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)

Sequenzdiagramm: Einkanaliges Wecken und Anlauf bis FRSM_ONLINE, verteilt auf mehrere Läufe der Hauptfunktion. Interpretation: Die Reihenfolge innerhalb der Läufe ist aus den Spezifikationsabbildungen rekonstruiert und vereinfacht. Quellen: SWS FrSM S. 50, SWS FrSM S. 52, [SWS_FrSM_00118]

Key-Slot-Only-Betrieb, Freigabe aller Slots und wenige Kaltstarter

Ist der Controller mit pKeySlotOnlyEnabled konfiguriert, endet der Anlauf zunächst in FRSM_KEYSLOT_ONLY. Dieser Zustand entspricht POC:normal active mit vPOCSlotMode ≠ AllSlots (SWS FrSM S. 18, SWS FrSM S. 55). Verlassen wird er über FrSm_AllSlots [SWS_FrSM_00172]. Die Funktion ruft FrIf_AllSlots für jeden Controller des Clusters auf und liefert nur dann E_OK, wenn alle Aufrufe E_OK ergaben. Sie lässt sich über FrSMAllSlotsSupport zur Vorkompilierzeit abschalten (SWS FrSM S. 41). Laut Spezifikationsabbildung gibt der BswM den vollen Betrieb frei. Erst danach meldet der FrSM FRSM_ONLINE und FullCom an den ComM (SWS FrSM S. 57).

Anlauf im Key-Slot-Only-Modus und Freigabe aller SlotsComMBswMSchMFrSMFrIfUse Case: Anlauf endet in FRSM_KEYSLOT_ONLYFrSM_MainFunction_<FrSMCluster.ShortName>loopfür alle Controller des ClustersFrIf_GetPOCStatus(CtrlIdx, POCStatusPtr)FR_POCSTATE_NORMAL_ACTIVE,SlotMode = FR_SLOTMODE_KEYSLOTFrIf_SetState(ClstIdx, FRIF_GOTO_ONLINE)BswM_FrSM_CurrentState(FRSM_BSWM_KEYSLOT_ONLY)Für ComM gilt weiterhin NoCom(FrSM_GetCurrentComMode)Use Case: Freigabe aller SlotsFrSm_AllSlots(NetworkHandle)loopfür alle Controller des ClustersFrIf_AllSlots(CtrlIdx)E_OKE_OK (nur wenn alle Aufrufe 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)

Sequenzdiagramm: Zweistufiger Hochlauf: zuerst nur Key-Slots, dann Freigabe aller Slots über FrSm_AllSlots. Die Abbildung der Spezifikation beschriftet die BswM-Meldung als FRSM_ONLINE_KEYSLOT_ONLY, hier steht der R20-11-Wert FRSM_BSWM_KEYSLOT_ONLY. Quellen: SWS FrSM S. 57, SWS FrSM S. 55, [SWS_FrSM_00172], [SWS_FrSM_00199]

FRSM_LOW_NUMBER_OF_COLDSTARTERS bedeutet volle Kommunikation, bei der der Cluster nur über Sync-Frames synchronisiert ist (SWS FrSM S. 18). Die Bedingung lowNumberOfColdstarters ist erfüllt, wenn FrIf_GetNumOfStartupFrames() weniger Startup-Frames meldet als der optionale Parameter FrSMMinNumberOfColdstarter vorgibt (SWS FrSM S. 20).

Rückkehr zu NoCom und Zeitgeber des Clusters

NoCom kann angefordert werden, während der Automat in FRSM_ONLINE, FRSM_KEYSLOT_ONLY, FRSM_LOW_NUMBER_OF_COLDSTARTERS oder FRSM_ONLINE_PASSIVE steht. In diesem Fall verarbeitet schon FrSM_RequestComMode den Übergang, ohne auf die Hauptfunktion zu warten (SWS FrSM S. 36). Dazu gehören FrIf_SetState(FRIF_GOTO_OFFLINE), FrIf_HaltCommunication und die Meldung HALT_REQ an den BswM. In späteren Läufen meldet der FrSM NoCom an den ComM, initialisiert die Controller neu, versetzt die Transceiver in STANDBY und meldet READY (SWS FrSM S. 58).

Übergang von FullCom zu NoComComMBswMSchMFrSMFrIfFrSM_RequestComMode(NetworkHandle,COMM_NO_COMMUNICATION)Quellzustand ist ein FullCom-Zustand:Übergang sofort im AufrufFrIf_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)nach Ablauf von t_TrcvStdbyDelay bzw. sofort,wenn FrSMTrcvStdbyDelay fehlt oder 0 istFrIf_ControllerInit(CtrlIdx)FrIf_SetTransceiverMode(CtrlIdx, ChnlIdx,STANDBY)BswM_FrSM_CurrentState(FRSM_BSWM_READY)

Sequenzdiagramm: Von FullCom zu NoCom. Der Halt erfolgt synchron im Anforderungsaufruf, Reinitialisierung und Standby folgen zeitversetzt in der Hauptfunktion. Interpretation: Die Reihenfolge ist aus der Spezifikationsabbildung rekonstruiert. Quellen: SWS FrSM S. 58, SWS FrSM S. 36, [SWS_FrSM_00209]

Je Cluster arbeitet der FrSM mit mehreren Zeitgebern (SWS FrSM S. 21):

  • t1 verzögert FrIf_AllowColdstart. Bei FrSMDurationT1 = 0 folgt der Aufruf direkt auf FrIf_StartCommunication.
  • t2 bestimmt, nach welcher Zeit der Anlauf wiederholt wird.
  • t3 überwacht den Übergang zu FullCom.
  • t4 sorgt dafür, dass ein Zweikanalknoten sein Kaltstart-Sperrbit löscht.
  • t_TrcvStdbyDelay verzögert Reinitialisierung und Standby. Ist FrSMTrcvStdbyDelay nicht konfiguriert oder 0, geht der Automat sofort von FRSM_HALT_REQ nach FRSM_READY [SWS_FrSM_00209].

Konfiguration je FrSMCluster und Schnittstellenstand R20-11

Der Container FrSMCluster (1..*) beschreibt einen Cluster, der auf einer ECU mehrere Controller umfassen kann. Er enthält:

  • die Zeitgeber FrSMDurationT1 bis FrSMDurationT4,
  • die Rollen FrSMIsColdstartEcu und FrSMIsWakeupEcu,
  • FrSMNumWakeupPatterns und FrSMStartupRepetitions,
  • die Referenzen FrSMComMNetworkHandleRef und FrSMFrIfClusterRef.

Diese Inhalte beschreibt SWS FrSM S. 62. Allgemein konfigurierbar sind außerdem FrSMVersionInfoApi für FrSM_GetVersionInfo und FrSMSyncLossErrorIndicationName (SystemTemplate S. 1528, [SWS_FrSM_00029]).

Viele Detailstellen stammen aus späteren Releases. Für R20-11 gelten die Requirements, und sie weichen in einigen Punkten ab:

  • Die Funktionen heißen FrSm_Init, FrSm_AllSlots und FrSm_SetEcuPassive und sind über FrSm.h verfügbar.
  • FrSM_RequestComMode hat die Service-ID 0x02 und ist reentrant für verschiedene Cluster. Die späteren Stellen nennen 0x40 und andere Parameternamen.
  • FrSM_GetCurrentComMode hat in R20-11 die Service-ID 0x03.

Belege: [SWS_FrSM_00013], [SWS_FrSM_00020], [SWS_FrSM_00024], SWS FrSM S. 36.

Verhalten im Fehlerfall

Für Entwicklungsfehler sind folgende Codes definiert [SWS_FrSM_91001]:

  • FRSM_E_PARAM_POINTER: ungültiger Zeiger. Der Dienst kehrt sofort zurück.
  • FRSM_E_INV_HANDLE: ungültiges Netzwerk-Handle.
  • FRSM_E_UNINIT: Modul nicht initialisiert.
  • FRSM_E_INV_MODE: ungültiger Kommunikationsmodus.
  • FRSM_INIT_FAILED: Initialisierung fehlgeschlagen.

Einige Fälle sind ausdrücklich geregelt. FrSm_AllSlots meldet bei ungültigem Handle FRSM_E_INV_HANDLE und liefert E_NOT_OK (SWS FrSM S. 41). FrSm_SetEcuPassive meldet vor der Initialisierung einen Entwicklungsfehler (SWS FrSM S. 40). FrSM_GetCurrentComMode liefert in R20-11 ohne vorherige Initialisierung E_NOT_OK [SWS_FrSM_00024].

Auf Busebene reagiert der FrSM so:

  • Bei Fehlern der Uhrensynchronisation fällt der Cluster in FRSM_ONLINE_PASSIVE (SWS FrSM S. 18).
  • Gelingt die Synchronisation nicht, ruft der FrSM FrNm_StartupError auf [SWS_FrSM_00097].
  • Der Anlauf wird nach t2 wiederholt (SWS FrSM S. 21). FrSMStartupRepetitions dürfte die Zahl der Wiederholungen begrenzen. Frage (offen)

Den Anlaufstatus meldet der FrSM als DEM-Ereignis FRSM_E_CLUSTER_STARTUP, im Erfolgsfall mit PASSED (SWS FrSM S. 52). Die Ereignis-IDs stehen in FrSMClusterDemEventParameterRefs (SWS FrSM S. 62). Optional informiert <Cdd>_SyncLossErrorIndication mit true über einen Synchronisationsverlust. Mit false zeigt die Funktion an, dass wieder synchronisiert ist oder die FullCom-Anforderung zurückgenommen wurde [SWS_FrSM_00190]. Ohne konfigurierten Funktionsnamen entfällt diese Meldung (SystemTemplate S. 1528).

Weiterführende Detailbelege

KI-generierter Leitfaden auf Basis der Requirements von R20-11 und zugeordneter Spezifikationsstellen, teils aus späteren Releases. Maßgeblich sind die verlinkten Requirements; Interpretationen sind als solche gekennzeichnet.

FlexRay State Manager (FrSM)

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

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

function FrSm_Init [SWS_FrSM_00013] 📄 PDF

void FrSm_Init (const FrSM_ConfigType* FrSM_ConfigPtr);

Initializes the Flex Ray State Manager.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 4f916985d2dc Herkunft Offene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Die Funktion FrSm_Init dient gemäß der Spezifikation [SWS_FrSM_00013] der Initialisierung des FlexRay State Managers (FrSM). Sie besitzt die Service-ID 0x01 und ist über die Header-Datei FrSm.h deklariert.

Verwendung und Parameter

Die Ausführung von FrSm_Init erfolgt synchron [SWS_FrSM_00013]. Der Aufruf erwartet genau einen Eingangsparameter:

  • FrSM_ConfigPtr: Zeiger auf die ausgewählte Konfigurationsstruktur vom Typ const FrSM_ConfigType*, über den die Initialisierungsdaten des Moduls bereitgestellt werden [SWS_FrSM_00013].

Die Funktion besitzt keinen Rückgabewert (void) und definiert weder Ein-/Ausgabeparameter (inout) noch reine Ausgabeparameter (out) [SWS_FrSM_00013].

Nebenläufigkeit und Einschränkungen

Hinsichtlich des Ausführungskontexts ist die Schnittstelle als nicht reentrant (Non Reentrant) klassifiziert [SWS_FrSM_00013]. Gleichzeitige oder verschachtelte Aufrufe der Funktion sind daher unzulässig. Interpretation: Der Aufruf dürfte typischerweise während der Systeminitialisierung erfolgen, bevor reguläre Kommunikations- oder Steuerungsdienste des FrSM genutzt werden. Frage Q-881936607a7268bd (offen)

Fehlerbehandlung

In der Elementspezifikation [SWS_FrSM_00013] sind keine Rückgabecodes oder spezifischen Mechanismen zur Fehlerbehandlung wie DET- oder DEM-Meldungen ausgewiesen.

Dieser Nutzungshinweis wurde automatisiert erstellt und basiert ausschließlich auf den Spezifikationsdaten von AUTOSAR R20-11.

Implementer's Guide folgt (Komplexität I1)

function 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.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 0805fe94c490 Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Verwendung und Semantik

Die Funktion FrSM_RequestComMode wird vom Communication Manager (ComM) aufgerufen, um die Kommunikation auf einem bestimmten FlexRay-Cluster zu starten oder herunterzufahren [SWS_FrSM_00020]. Die Schnittstelle ist über den Header FrSm.h deklariert und besitzt die Service-ID 0x02 [SWS_FrSM_00020]. Da der Dienst als asynchron spezifiziert ist, quittiert die Funktion lediglich die Annahme der Umschaltanforderung, während der tatsächliche Zustandsübergang nachgelagert abgewickelt wird [SWS_FrSM_00020].

Parameter und Rückgabewerte

Die Funktion erwartet zwei Eingabeparameter zur Steuerung des Kommunikationsmodus [SWS_FrSM_00020]:

  • NetworkHandle (Typ NetworkHandleType): Bestimmt den FlexRay-Cluster, für den ein Kommunikationsmodus angefordert wird [SWS_FrSM_00020].
  • ComM_Mode (Typ ComM_ModeType): Enthält den vom ComM gewünschten Kommunikationsmodus für das angegebene Netzwerk [SWS_FrSM_00020].

Der Rückgabewert vom Typ Std_ReturnType zeigt das Ergebnis der Anforderungsprüfung an [SWS_FrSM_00020]:

  • E_OK: Die Anforderung zum Moduswechsel wurde erfolgreich angenommen [SWS_FrSM_00020].
  • E_NOT_OK: Die Anforderung wurde abgewiesen und nicht angenommen [SWS_FrSM_00020].

Nebenläufigkeit und Einschränkungen

Gemäß Spezifikation ist FrSM_RequestComMode reentrant für unterschiedliche FlexRay-Cluster ausgeführt [SWS_FrSM_00020]. Für denselben FlexRay-Cluster ist der Aufruf vermutlich nicht reentrant, weshalb konkurrierende Aufrufe für dieselbe Instanz vermieden werden müssen. Spezifische Fehlercodes wie DET- oder DEM-Meldungen sind im Payload nicht definiert [SWS_FrSM_00020].

Dieser Nutzungshinweis wurde automatisiert auf Basis der Spezifikation AUTOSAR Classic R20-11 generiert.

Implementer's Guide folgt (Komplexität I1)

function 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.

function 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.

function FrSm_AllSlots [SWS_FrSM_00172] 📄 PDF

Std_ReturnType FrSm_AllSlots (NetworkHandleType NetworkHandle);

Service FrSm_AllSlots.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: f8b54cb7f004 Herkunft Offene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Die asynchrone Service-Funktion FrSm_AllSlots wird über den Header FrSm.h bereitgestellt und dient dazu, den sogenannten „Key Slot Only Mode“ für einen spezifizierten FlexRay-Cluster zu verlassen [SWS_FrSM_00172].

Aufruf und Parameter: Zur Identifikation des Kommunikationsnetzwerks wird dem Parameter NetworkHandle das jeweilige FlexRay-Cluster übergeben, für das der Umschaltmodus angefordert werden soll [SWS_FrSM_00172]. Weitere Übergabeparameter existieren nicht [SWS_FrSM_00172].

Rückgabewert und Semantik: Der Aufruf liefert E_OK zurück, wenn die Umschaltanforderung erfolgreich angenommen wurde, oder E_NOT_OK, falls die Anforderung abgewiesen wurde [SWS_FrSM_00172]. Da es sich um eine asynchrone Operation handelt, quittiert E_OK lediglich die Entgegennahme des Auftrags; der eigentliche Übergang in den Vollbetrieb aller Slots dürfte zeitverzögert im State-Manager-Kontext wirksam werden. Frage Q-d559e4ea5183ff7c (offen)

Nebenläufigkeit und Einschränkungen: Die Funktion ist reentrant für unterschiedliche FlexRay-Cluster [SWS_FrSM_00172]. Für identische Cluster ist sie nicht reentrant ausgelegt, weshalb Aufrufer parallele Anforderungen auf denselben Cluster synchronisieren müssen. Spezifische Fehlercodes für DET oder DEM werden in der Funktionsbeschreibung nicht genannt.

Dieser Nutzungshinweis wurde automatisiert erstellt. Er basiert auf AUTOSAR CP R20-11.

function 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.

type 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.

type FrSM_BswM_StateType [SWS_FrSM_00199] 📄 PDF

This type defines the states that are reported to the Bsw

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: a8440a0185d0 Herkunft Offene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Verwendung

Der Aufzählungstyp FrSM_BswM_StateType definiert gemäß [SWS_FrSM_00199] die Zustände des FlexRay State Managers (FrSM), die an den BswM (Basic Software Mode Manager) gemeldet werden. Die Deklaration und Bereitstellung des Typs erfolgt über die Header-Datei FrSm.h [SWS_FrSM_00199].

Zusammenspiel und Wertebereich

Die Werte dieses Typs werden im Zusammenspiel mit der Schnittstelle BswM_FrSM_CurrentState verwendet, um den aktuellen Betriebs- und Kommunikationszustand an das BswM-Modul zu übermitteln [SWS_FrSM_00199]. Der Wertebereich umfasst folgende Enumerationswerte:

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

Auffällig ist die paarweise Strukturierung der Zustände: Jeder Basiszustand besitzt ein reguläres Pendant sowie eine Variante mit dem Suffix _ECU_PASSIVE. Dies dient vermutlich dazu, den Kommunikationszustand des FlexRay-Clusters kombiniert mit dem passiven Modus des Steuergeräts an den BswM zu melden, damit dieser entsprechende Moduswechsel koordinieren kann. Frage Q-f2d9296e40782b5a (offen)

Dieser Text wurde von einer KI generiert und dient als Orientierungshilfe. Maßgeblich sind die referenzierten AUTOSAR-Spezifikationen.

Implementer's Guide folgt (Komplexität 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#5014f8b5
Content hash
5014f8b5
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_FlexRayStateManager.pdf#nameddest=SWS_FrSM_00013

Themenkarte

Detailansicht

Wähle in der Gliederung einen Eintrag aus.

Initialisierung und Status

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 function

Initializes the Flex Ray State Manager.

void FrSm_Init (const FrSM_ConfigType* FrSM_ConfigPtr);

Dienste

FrSm_AllSlots function

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);

Typen

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.