DEENESPTFRRUARHIKOZHNL

FlexRay State Manager (FrSM)

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

Guide du moduleGÉNÉRÉ PAR IA

Commande pour chaque cluster FlexRay le réveil, le démarrage et l'arrêt de la communication sur le bus pour le compte de ComM et BswM.
GÉNÉRÉ PAR IA non vérifié Modèle : claude-opus-5-5 · Effort : high · Température : non réglable · Prompt : a3de1ac25c5e Provenance Questions ouvertes (6)
Ancre causale : R20-11 Valable à partir de R20-11 Synthétisé pour cette version de spécification.
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand

Commande pour chaque cluster FlexRay le réveil, le démarrage et l'arrêt de la communication sur le bus pour le compte de ComM et BswM.

Le FlexRay State Manager gère pour chaque cluster FlexRay un automate d'états qui convertit les demandes de communication de ComM en réveil, démarrage et arrêt via le FlexRay Interface. FrSM_RequestComMode ne fait que mémoriser la demande ; celle-ci n'est traitée que dans la fonction principale cyclique du cluster [SWS_FrSM_00020]. Le FrSM signale les modes atteints à ComM et BswM. Le BswM peut mettre fin au fonctionnement Key-Slot-Only ou commuter tous les clusters en mode réception. Seuls FRSM_ONLINE et FRSM_LOW_NUMBER_OF_COLDSTARTERS sont considérés comme FullCom (SWS FrSM p. 38).

Le FlexRay State Manager convertit les demandes de communication de ComM pour chaque cluster FlexRay en appels à l'interface FlexRay Interface. En retour, il signale le mode de bus via ComM_BusSM_ModeIndication et son état détaillé via BswM_FrSM_CurrentState [SWS_FrSM_00096]. De manière optionnelle, il utilise DEM, DET et FrNm ainsi que d'autres services de FrIf [SWS_FrSM_00097]. FrSm_Init fait passer tous les automates de cluster à FRSM_READY (SWS FrSM p. 35).

frsm_kontext ComM ComM FrSM FrSM (un automate par 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

Diagramme de contexte : ComM et BswM commandent, SchM cadence, FrIf exécute ; les erreurs sont transmises à DEM, DET, FrNm et optionnellement à un CDD. Sources : [SWS_FrSM_00096], [SWS_FrSM_00097]

FrSM_RequestComMode ne fait que mémoriser la demande. Seule la fonction principale du cluster la traite (SWS FrSM p. 36, [SWS_FrSM_00118]). Lors d'une demande FullCom, la condition WUReason détermine si le FrSM émet lui-même des motifs de réveil, relaie un réveil unilatéral vers le second canal ou démarre directement. Lors du démarrage, il appelle FrIf_StartCommunication et, pour les ECU à démarrage à froid, également FrIf_AllowColdstart. En cas de POC normal active, il passe à FRSM_ONLINE (SWS FrSM p. 20, SWS FrSM p. 52). Si NoCom est demandé depuis un état FullCom, le FrSM interrompt la communication dès l'appel. Après t_TrcvStdbyDelay, il place les émetteurs-récepteurs en veille (standby) et revient à FRSM_READY [SWS_FrSM_00209].

frsm_zustand cluster_haupt Hauptautomat je FlexRay-Cluster cluster_ecu En parallèle : mode passif de l'ECU (tous les 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, key-slots uniquement 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 écoulé ou FrSMTrcvStdbyDelay = 0 ECUACT FRSM_ECU_ACTIVE ECUPAS FRSM_ECU_PASSIVE ECUACT->ECUPAS FrSm_SetEcuPassive(TRUE) ECUPAS->ECUACT FrSm_SetEcuPassive(FALSE)

Diagramme d'états : huit états principaux par cluster et le mode passif d'ECU parallèle. Les transitions vers FRSM_ONLINE_PASSIVE et FRSM_LOW_NUMBER_OF_COLDSTARTERS font l'objet d'une interprétation. Sources : SWS FrSM p. 18, SWS FrSM p. 27

Pour ComM, FullCom n'est valable que dans FRSM_ONLINE et FRSM_LOW_NUMBER_OF_COLDSTARTERS (SWS FrSM p. 38). Deux modes de fonctionnement spéciaux sont à la disposition du BswM. FrSm_AllSlots met fin au fonctionnement Key-Slot-Only [SWS_FrSM_00172]. FrSm_SetEcuPassive commute tous les clusters en mode réception seule [SWS_FrSM_00174]. FrSM_BswM_StateType signale les deux dimensions combinées [SWS_FrSM_00199]. Dans R20-11, certaines fonctions s'appellent encore FrSm_… et les identifiants de service diffèrent de ceux des versions ultérieures [SWS_FrSM_00020].

En cas d'erreur, le FrSM signale des erreurs de développement telles que FRSM_E_UNINIT ou FRSM_E_INV_HANDLE [SWS_FrSM_91001]. Si la synchronisation échoue, il appelle FrNm_StartupError. Il signale optionnellement une perte de synchronisation via <Cdd>_SyncLossErrorIndication [SWS_FrSM_00190].

Rôle : gestionnaire d'état de bus entre ComM, BswM et FlexRay Interface

Le FlexRay State Manager (FrSM) traduit les demandes de communication de ComM pour chaque cluster FlexRay en appels de commande vers le FlexRay Interface. ComM demande via FrSM_RequestComMode un ComM_ModeType pour un NetworkHandleType [SWS_FrSM_00020]. Le FrSM renvoie le mode de bus atteint via ComM_BusSM_ModeIndication et son état détaillé au BswM via BswM_FrSM_CurrentState [SWS_FrSM_00096]. Il ne commande jamais directement les contrôleurs ni les émetteurs-récepteurs. Il utilise pour cela des fonctions de FrIf, qui sont regroupées dans la spécification en éléments fonctionnels tels que FE_START (FrIf_StartCommunication) ou FE_HALT (FrIf_HaltCommunication) (SWS FrSM p. 22).

De plus, le FrSM utilise des services optionnels : Dem_SetEventStatus, Det_ReportError, FrIf_AllSlots, FrIf_GetNumOfStartupFrames, FrIf_GetWakeupRxStatus, FrIf_SetWakeupChannel et FrNm_StartupError [SWS_FrSM_00097]. Il importe notamment ses types depuis ComM, ComStack_Types, DEM, Fr et FrIf [SWS_FrSM_00095]. Le BswM commande également activement le FrSM. Il peut par exemple, pour des cas d'usage de diagnostic, le faire passer en mode passif via FrSm_SetEcuPassive() (EXP ModeMgmt p. 36).

frsm_kontext ComM ComM FrSM FrSM (un automate par 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

Diagramme de contexte : le FrSM se situe entre les demandeurs ComM/BswM, le générateur de cadence SchM et l'exécutant FrIf, et signale les erreurs à DEM, DET, FrNm ainsi qu'à un CDD optionnel. Sources : [SWS_FrSM_00096], [SWS_FrSM_00097], [SWS_FrSM_00118], [SWS_FrSM_00190]

Automate d'états par cluster et mode passif d'ECU parallèle

Pour chaque cluster, le FrSM gère un automate propre à huit états : FRSM_READY, FRSM_WAKEUP, FRSM_STARTUP, FRSM_HALT_REQ, FRSM_ONLINE, FRSM_ONLINE_PASSIVE, FRSM_KEYSLOT_ONLY et FRSM_LOW_NUMBER_OF_COLDSTARTERS. Chaque état est associé à un état POC du contrôleur :

  • FRSM_ONLINE correspond à POC:normal active avec communication complète.
  • FRSM_ONLINE_PASSIVE correspond à POC:normal passive. En raison d'erreurs de synchronisation d'horloge, aucune donnée n'y est émise ni reçue.
  • Dans FRSM_KEYSLOT_ONLY, l'émission n'est autorisée que dans les key slots.

Cette association est décrite par SWS FrSM p. 18. Les transitions sont définies sous forme de tableau et le FrSM exécute leurs actions dans l'ordre qui y est fixé (SWS FrSM p. 24).

Parallèlement à cela, il existe les états FRSM_ECU_ACTIVE et FRSM_ECU_PASSIVE (SWS FrSM p. 18). FrSm_SetEcuPassive commute conjointement tous les clusters de l'ECU en mode réception seule ou inversement [SWS_FrSM_00174]. Si un cluster ne se trouve pas dans FRSM_READY à ce moment-là, le FrSM exécute FE_TRCV_NORMAL pour lui (SWS FrSM p. 40). FrSM_BswM_StateType représente les deux dimensions : pour chaque état principal, il existe une valeur avec le suffixe _ECU_PASSIVE, de FRSM_BSWM_READY (0x00) à FRSM_LOW_NUMBER_OF_COLDSTARTERS_ECU_PASSIVE (0x0F) [SWS_FrSM_00199]. Les deux notions de passivité ne doivent pas être confondues. ONLINE_PASSIVE est la conséquence d'une perturbation de la synchronisation, tandis que ECU_PASSIVE est un fonctionnement en réception délibéré.

Vis-à-vis de l'extérieur, seul compte le mode fourni par FrSM_GetCurrentComMode. COMM_FULL_COMMUNICATION s'applique exclusivement dans FRSM_ONLINE et FRSM_LOW_NUMBER_OF_COLDSTARTERS ; dans tous les autres états, COMM_NO_COMMUNICATION s'applique (SWS FrSM p. 38, [SWS_FrSM_00024]). SilentCom n'est pas pris en charge sur FlexRay (SWS FrSM p. 18).

frsm_zustand cluster_haupt Hauptautomat je FlexRay-Cluster cluster_ecu En parallèle : mode passif de l'ECU (tous les 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, key-slots uniquement 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 écoulé ou FrSMTrcvStdbyDelay = 0 ECUACT FRSM_ECU_ACTIVE ECUPAS FRSM_ECU_PASSIVE ECUACT->ECUPAS FrSm_SetEcuPassive(TRUE) ECUPAS->ECUACT FrSm_SetEcuPassive(FALSE)

Diagramme d'états : automate principal par cluster avec les chemins Réveil → Démarrage → En ligne ainsi que Arrêt → Prêt, accompagné du mode passif d'ECU commun à tous les clusters. Interprétation : les transitions vers FRSM_ONLINE_PASSIVE et FRSM_LOW_NUMBER_OF_COLDSTARTERS sont déduites de la table d'états et des conditions. Sources : SWS FrSM p. 27, SWS FrSM p. 18, SWS FrSM p. 20, [SWS_FrSM_00209]

De FrSm_Init à la communication complète : réveil et démarrage

FrSm_Init est synchrone et non réentrante. La fonction reçoit un pointeur vers FrSM_ConfigType, la configuration post-build spécifique à l'implémentation ([SWS_FrSM_00013], [SWS_FrSM_00198]). Elle positionne tous les automates de cluster sur FRSM_READY (transition T00) et enregistre l'adresse de configuration. Si FrSMDevErrorDetect est actif, elle mémorise en outre la réussite de l'initialisation (SWS FrSM p. 35).

FrSM_RequestComMode fonctionne de manière asynchrone. La fonction enregistre le mode souhaité sous forme de reqComMode. Il n'est traité que lors de la prochaine exécution de FrSM_MainFunction_<FrSMCluster.ShortName> dans l'automate du cluster concerné (SWS FrSM p. 36). Il existe une fonction principale par cluster, mise à disposition via SchM_FrSm.h [SWS_FrSM_00118]. Sa cadence d'appel devrait suivre le paramètre FrSMMainFunctionCycleTime (SWS FrSM p. 62). Question (ouverte)

Lors d'une demande FullCom dans FRSM_READY, le FrSM évalue la condition WUReason. Si FrSMCheckWakeupReason est défini, il interroge chaque transceiver via FrIf_GetTransceiverWUReason. Le résultat est NO_WU_BY_BUS, PARTIAL_WU_BY_BUS ou ALL_WU_BY_BUS ; sans vérification, NO_WU_BY_BUS s'applique (SWS FrSM p. 20). Si l'ECU a été réveillée par le bus, elle démarre sans son propre réveil (SWS FrSM p. 52). Si, pour un nœud à deux canaux, le réveil n'est parvenu que sur un seul canal, FE_SET_WU_CHANNEL_FORWARD le transmet à l'autre 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 Oui wuecu->startup Non wakeup->startup wakeupFinished forward->startup wakeupFinished

Diagramme d'activité : WUReason permet de déterminer si le FrSM effectue lui-même le réveil, transmet un réveil ou démarre directement. Interprétation : la branche pour les ECU sans réveil est dérivée de FrSMIsWakeupEcu. Sources : SWS FrSM p. 20, SWS FrSM p. 22, SWS FrSM p. 54

Dans FRSM_WAKEUP, le FrSM émet des motifs de réveil via FE_WAKEUP, soit FrIf_SendWUP par contrôleur. Il répète cette opération jusqu'à ce que FrSMNumWakeupPatterns soit atteint ou que du trafic de bus ait été détecté (busTrafficDetected). Si un contrôleur passe en HALT en raison d'une erreur, la transmission est interrompue (SWS FrSM p. 27).

frsm_weckmuster start init Eintritt in FRSM_WAKEUP: wakeupCounter := 1 start->init cond wakeupCounter < FrSMNumWakeupPatterns et busTrafficDetected = false ? init->cond wait Attendre que tous les contrôleurs du cluster soient dans FR_READY cond->wait Oui done wakeupFinished = true cond->done Non halt Contrôleur en HALT en raison d'une erreur ? wait->halt status vPOC!WakeupStatus? halt->status Non 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 sinon again busTrafficDetected = false et wakeupCounter < FrSMNumWakeupPatterns ? bus->again tx->again notx->again fe FE_WAKEUP: FrIf_SendWUP je Controller again->fe Oui inc incrémenter wakeupCounter again->inc Non fe->inc inc->cond

Diagramme d'activité : émission répétée de motifs de réveil avec évaluation de vPOC!WakeupStatus et interruption en cas de HALT du contrôleur. Sources : SWS FrSM p. 27, SWS FrSM p. 18

Le démarrage commence par FrIf_StartCommunication. Le FrSM n'appelle FrIf_AllowColdstart qu'avec FrSMIsColdstartEcu (SWS FrSM p. 22). Il signale ensuite FRSM_STARTUP au BswM. Dès que l'état du POC est normal active, FrIf_SetState(FRIF_GOTO_ONLINE), la notification FRSM_ONLINE et l'indication de mode destinée au ComM suivent (SWS FrSM p. 50, SWS FrSM p. 52).

Réveil monocanal et démarrage jusqu'à FRSM_ONLINEComMBswMSchMFrSMFrIfDemFrSM_RequestComMode(NetworkHandle,COMM_FULL_COMMUNICATION)E_OKreqComMode gespeichert,Évaluation dans la fonction principaleUse Case: Wecken (FRSM_WAKEUP)FrSM_MainFunction_<FrSMCluster.ShortName>looppour tous les contrôleurs du 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>looppour tous les contrôleurs du 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)

Diagramme de séquence : réveil monocanal et démarrage jusqu'à FRSM_ONLINE, répartis sur plusieurs exécutions de la fonction principale. Interprétation : l'ordre au sein des exécutions est reconstruit et simplifié à partir des figures de la spécification. Sources : SWS FrSM p. 50, SWS FrSM p. 52, [SWS_FrSM_00118]

Fonctionnement en key slots seuls, libération de tous les slots et nombre restreint de coldstarters

Si le contrôleur est configuré avec pKeySlotOnlyEnabled, le démarrage s'achève d'abord dans FRSM_KEYSLOT_ONLY. Cet état correspond à POC:normal active avec vPOCSlotMode ≠ AllSlots (SWS FrSM p. 18, SWS FrSM p. 55). Il est quitté via FrSm_AllSlots [SWS_FrSM_00172]. La fonction appelle FrIf_AllSlots pour chaque contrôleur du cluster et ne renvoie E_OK que si tous les appels ont donné E_OK. Elle peut être désactivée au moment de la précompilation via FrSMAllSlotsSupport (SWS FrSM p. 41). Selon la figure de la spécification, le BswM autorise le fonctionnement complet. Ce n'est qu'ensuite que le FrSM signale FRSM_ONLINE et FullCom au ComM (SWS FrSM p. 57).

Démarrage en mode Key-Slot-Only et libération de tous les slotsComMBswMSchMFrSMFrIfUse Case: Anlauf endet in FRSM_KEYSLOT_ONLYFrSM_MainFunction_<FrSMCluster.ShortName>looppour tous les contrôleurs du clusterFrIf_GetPOCStatus(CtrlIdx, POCStatusPtr)FR_POCSTATE_NORMAL_ACTIVE,SlotMode = FR_SLOTMODE_KEYSLOTFrIf_SetState(ClstIdx, FRIF_GOTO_ONLINE)BswM_FrSM_CurrentState(FRSM_BSWM_KEYSLOT_ONLY)Pour ComM, NoCom s'applique toujours(FrSM_GetCurrentComMode)Use Case: Freigabe aller SlotsFrSm_AllSlots(NetworkHandle)looppour tous les contrôleurs du clusterFrIf_AllSlots(CtrlIdx)E_OKE_OK (uniquement si tous les appels retournent 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)

Diagramme de séquence : démarrage en deux étapes : d'abord les key slots seuls, puis libération de tous les slots via FrSm_AllSlots. La figure de la spécification libelle le message BswM FRSM_ONLINE_KEYSLOT_ONLY ; ici figure la valeur R20-11 FRSM_BSWM_KEYSLOT_ONLY. Sources : SWS FrSM p. 57, SWS FrSM p. 55, [SWS_FrSM_00172], [SWS_FrSM_00199]

FRSM_LOW_NUMBER_OF_COLDSTARTERS signifie une communication complète au cours de laquelle le cluster n'est synchronisé que par des sync frames (SWS FrSM p. 18). La condition lowNumberOfColdstarters est remplie lorsque FrIf_GetNumOfStartupFrames() signale moins de startup frames que ce que spécifie le paramètre optionnel FrSMMinNumberOfColdstarter (SWS FrSM p. 20).

Retour à NoCom et temporisateurs du cluster

NoCom peut être demandé pendant que l'automate se trouve dans FRSM_ONLINE, FRSM_KEYSLOT_ONLY, FRSM_LOW_NUMBER_OF_COLDSTARTERS ou FRSM_ONLINE_PASSIVE. Dans ce cas, FrSM_RequestComMode traite la transition dès cet instant, sans attendre la fonction principale (SWS FrSM p. 36). Cela inclut FrIf_SetState(FRIF_GOTO_OFFLINE), FrIf_HaltCommunication et la notification HALT_REQ destinée au BswM. Lors d'exécutions ultérieures, le FrSM signale NoCom au ComM, réinitialise les contrôleurs, place les transceivers en STANDBY et signale READY (SWS FrSM p. 58).

Transition de FullCom à NoComComMBswMSchMFrSMFrIfFrSM_RequestComMode(NetworkHandle,COMM_NO_COMMUNICATION)L'état source est un état FullCom :Transition immédiate lors de l'appelFrIf_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)après écoulement de t_TrcvStdbyDelay ou immédiatement,si FrSMTrcvStdbyDelay est absent ou vaut 0FrIf_ControllerInit(CtrlIdx)FrIf_SetTransceiverMode(CtrlIdx, ChnlIdx,STANDBY)BswM_FrSM_CurrentState(FRSM_BSWM_READY)

Diagramme de séquence : de FullCom à NoCom. L'arrêt intervient de manière synchrone dans l'appel de requête, la réinitialisation et le standby suivant en différé dans la fonction principale. Interprétation : l'ordre est reconstruit à partir de la figure de la spécification. Sources : SWS FrSM p. 58, SWS FrSM p. 36, [SWS_FrSM_00209]

Pour chaque cluster, le FrSM utilise plusieurs temporisateurs (SWS FrSM p. 21) :

  • t1 retarde FrIf_AllowColdstart. Avec FrSMDurationT1 = 0, l'appel suit directement FrIf_StartCommunication.
  • t2 détermine le délai au terme duquel le démarrage est répété.
  • t3 surveille la transition vers FullCom.
  • t4 veille à ce qu'un nœud à deux canaux efface son bit d'interdiction de coldstart.
  • t_TrcvStdbyDelay retarde la réinitialisation et le standby. Si FrSMTrcvStdbyDelay n'est pas configuré ou vaut 0, l'automate passe immédiatement de FRSM_HALT_REQ à FRSM_READY [SWS_FrSM_00209].

Configuration par FrSMCluster et état des interfaces R20-11

Le conteneur FrSMCluster (1..*) décrit un cluster pouvant comprendre plusieurs contrôleurs sur une ECU. Il contient :

  • les temporisateurs FrSMDurationT1 à FrSMDurationT4,
  • les rôles FrSMIsColdstartEcu et FrSMIsWakeupEcu,
  • FrSMNumWakeupPatterns et FrSMStartupRepetitions,
  • les références FrSMComMNetworkHandleRef et FrSMFrIfClusterRef.

SWS FrSM p. 62 décrit ces contenus. Sont par ailleurs configurables de manière globale FrSMVersionInfoApi pour FrSM_GetVersionInfo et FrSMSyncLossErrorIndicationName (SystemTemplate p. 1528, [SWS_FrSM_00029]).

De nombreux détails sont issus de versions ultérieures. Pour R20-11, ce sont les exigences qui s'appliquent, et elles diffèrent sur certains points :

  • Les fonctions sont nommées FrSm_Init, FrSm_AllSlots et FrSm_SetEcuPassive et sont disponibles via FrSm.h.
  • FrSM_RequestComMode a pour ID de service 0x02 et est réentrante pour différents clusters. Les passages ultérieurs mentionnent 0x40 et d'autres noms de paramètres.
  • FrSM_GetCurrentComMode a pour ID de service 0x03 dans R20-11.

Références : [SWS_FrSM_00013], [SWS_FrSM_00020], [SWS_FrSM_00024], SWS FrSM p. 36.

Comportement en cas d'erreur

Les codes suivants sont définis pour les erreurs de développement [SWS_FrSM_91001] :

  • FRSM_E_PARAM_POINTER : pointeur non valide. Le service retourne immédiatement.
  • FRSM_E_INV_HANDLE : handle de réseau non valide.
  • FRSM_E_UNINIT : module non initialisé.
  • FRSM_E_INV_MODE : mode de communication non valide.
  • FRSM_INIT_FAILED : échec de l'initialisation.

Certains cas sont explicitement réglementés. En cas de handle non valide, FrSm_AllSlots signale FRSM_E_INV_HANDLE et renvoie E_NOT_OK (SWS FrSM p. 41). Avant l'initialisation, FrSm_SetEcuPassive signale une erreur de développement (SWS FrSM p. 40). Dans R20-11, sans initialisation préalable, FrSM_GetCurrentComMode renvoie E_NOT_OK [SWS_FrSM_00024].

Au niveau du bus, le FrSM réagit de la manière suivante :

  • En cas d'erreurs de synchronisation d'horloge, le cluster bascule dans FRSM_ONLINE_PASSIVE (SWS FrSM p. 18).
  • Si la synchronisation échoue, le FrSM appelle FrNm_StartupError [SWS_FrSM_00097].
  • Le démarrage est répété après t2 (SWS FrSM p. 21). FrSMStartupRepetitions devrait limiter le nombre de répétitions. Question (ouverte)

Le FrSM signale l'état du démarrage sous forme d'événement DEM FRSM_E_CLUSTER_STARTUP, avec PASSED en cas de succès (SWS FrSM p. 52). Les ID d'événement figurent dans FrSMClusterDemEventParameterRefs (SWS FrSM p. 62). De manière optionnelle, <Cdd>_SyncLossErrorIndication informe d'une perte de synchronisation avec true. Avec false, la fonction indique que la synchronisation est rétablie ou que la demande FullCom a été retirée [SWS_FrSM_00190]. Sans nom de fonction configuré, ce message est omis (SystemTemplate p. 1528).

Preuves détaillées supplémentaires

Guide généré par IA sur la base des exigences de R20-11 et de passages associés de la spécification, issus en partie de versions ultérieures. Les exigences liées font foi ; les interprétations sont identifiées comme telles.

FlexRay State Manager (FrSM)

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

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

fonction FrSm_Init [SWS_FrSM_00013] 📄 PDF

void FrSm_Init (const FrSM_ConfigType* FrSM_ConfigPtr);

Initializes the Flex Ray State Manager.

GÉNÉRÉ PAR IA non vérifié Modèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 4f916985d2dc Provenance Questions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand

La fonction FrSm_Init sert, conformément à la spécification [SWS_FrSM_00013], à initialiser le FlexRay State Manager (FrSM). Elle possède le Service ID 0x01 et est déclarée via le fichier d'en-tête FrSm.h.

Utilisation et paramètres

L'exécution de FrSm_Init s'effectue de manière synchrone [SWS_FrSM_00013]. L'appel attend exactement un paramètre d'entrée :

  • FrSM_ConfigPtr : pointeur vers la structure de configuration sélectionnée de type const FrSM_ConfigType*, via lequel les données d'initialisation du module sont fournies [SWS_FrSM_00013].

La fonction ne possède aucune valeur de retour (void) et ne définit ni paramètre d'entrée/sortie (inout) ni paramètre de sortie pur (out) [SWS_FrSM_00013].

Concurrence et restrictions

En ce qui concerne le contexte d'exécution, l'interface est classifiée comme non réentrante (Non Reentrant) [SWS_FrSM_00013]. Des appels simultanés ou imbriqués de la fonction sont donc inadmissibles. Interprétation : l'appel devrait typiquement avoir lieu pendant l'initialisation du système, avant que les services réguliers de communication ou de contrôle du FrSM ne soient utilisés. Question Q-881936607a7268bd (ouverte)

Gestion des erreurs

Aucun code de retour ni mécanisme spécifique de traitement des erreurs, tel que des notifications DET ou DEM, n'est mentionné dans la spécification de l'élément [SWS_FrSM_00013].

Cette note d'utilisation a été générée automatiquement et repose exclusivement sur les données de spécification d'AUTOSAR R20-11.

Guide de l'implémenteur à venir (complexité I1)

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

GÉNÉRÉ PAR IA non vérifié Modèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 0805fe94c490 Provenance
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand

Utilisation et sémantique

La fonction FrSM_RequestComMode est appelée par le gestionnaire de communication (ComM) pour démarrer ou arrêter la communication sur un cluster FlexRay déterminé [SWS_FrSM_00020]. L'interface est déclarée via l'en-tête FrSm.h et possède l'ID de service 0x02 [SWS_FrSM_00020]. Comme le service est spécifié comme asynchrone, la fonction acquitte uniquement l'acceptation de la demande de commutation, tandis que la transition d'état effective est traitée en aval [SWS_FrSM_00020].

Paramètres et valeurs de retour

La fonction attend deux paramètres d'entrée pour commander le mode de communication [SWS_FrSM_00020] :

  • NetworkHandle (type NetworkHandleType) : détermine le cluster FlexRay pour lequel un mode de communication est demandé [SWS_FrSM_00020].
  • ComM_Mode (type ComM_ModeType) : contient le mode de communication souhaité par le ComM pour le réseau indiqué [SWS_FrSM_00020].

La valeur de retour de type Std_ReturnType indique le résultat de la vérification de la demande [SWS_FrSM_00020] :

  • E_OK : la demande de changement de mode a été acceptée avec succès [SWS_FrSM_00020].
  • E_NOT_OK : la demande a été rejetée et non acceptée [SWS_FrSM_00020].

Concurrence et restrictions

Conformément à la spécification, FrSM_RequestComMode est exécutée de manière réentrante pour différents clusters FlexRay [SWS_FrSM_00020]. Pour le même cluster FlexRay, l'appel n'est probablement pas réentrant, raison pour laquelle les appels concurrents pour la même instance doivent être évités. Aucun code d'erreur spécifique tel que des notifications DET ou DEM n'est défini dans la charge utile [SWS_FrSM_00020].

Cette note d'utilisation a été générée de manière automatisée sur la base de la spécification AUTOSAR Classic R20-11.

Guide de l'implémenteur à venir (complexité I1)

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

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

fonction FrSm_AllSlots [SWS_FrSM_00172] 📄 PDF

Std_ReturnType FrSm_AllSlots (NetworkHandleType NetworkHandle);

Service FrSm_AllSlots.

GÉNÉRÉ PAR IA non vérifié Modèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : f8b54cb7f004 Provenance Questions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand

La fonction de service asynchrone FrSm_AllSlots est mise à disposition via l'en-tête FrSm.h et sert à quitter le « Key Slot Only Mode » pour un cluster FlexRay spécifié [SWS_FrSM_00172].

Appel et paramètres : pour identifier le réseau de communication, le cluster FlexRay respectif pour lequel le mode de commutation doit être demandé est transmis au paramètre NetworkHandle [SWS_FrSM_00172]. Il n'existe aucun autre paramètre de transmission [SWS_FrSM_00172].

Valeur de retour et sémantique : l'appel renvoie E_OK si la demande de commutation a été acceptée avec succès, ou E_NOT_OK si la demande a été rejetée [SWS_FrSM_00172]. Comme il s'agit d'une opération asynchrone, E_OK acquitte uniquement la réception de l'ordre ; la transition proprement dite vers le fonctionnement complet de tous les slots devrait prendre effet de manière différée dans le contexte du gestionnaire d'état. Question Q-d559e4ea5183ff7c (ouverte)

Concurrence et restrictions : la fonction est réentrante pour différents clusters FlexRay [SWS_FrSM_00172]. Pour des clusters identiques, elle n'est pas conçue pour être réentrante, raison pour laquelle les appelants doivent synchroniser les demandes parallèles sur le même cluster. Aucun code d'erreur spécifique pour DET ou DEM n'est mentionné dans la description de la fonction.

Cette note d'utilisation a été générée automatiquement. Elle repose sur AUTOSAR CP R20-11.

fonction 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

GÉNÉRÉ PAR IA non vérifié Modèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : a8440a0185d0 Provenance Questions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand

Utilisation

Le type énuméré FrSM_BswM_StateType définit, conformément à [SWS_FrSM_00199], les états du FlexRay State Manager (FrSM) qui sont signalés au BswM (Basic Software Mode Manager). La déclaration et la mise à disposition du type s'effectuent via le fichier d'en-tête FrSm.h [SWS_FrSM_00199].

Interaction et plage de valeurs

Les valeurs de ce type sont utilisées en interaction avec l'interface BswM_FrSM_CurrentState afin de transmettre l'état actuel de fonctionnement et de communication au module BswM [SWS_FrSM_00199]. La plage de valeurs comprend les valeurs d'énumération suivantes :

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

La structuration par paires des états est remarquable : chaque état de base possède un pendant régulier ainsi qu'une variante dotée du suffixe _ECU_PASSIVE. Cela sert probablement à signaler au BswM l'état de communication du cluster FlexRay combiné au mode passif du calculateur, afin que celui-ci puisse coordonner les changements de mode correspondants. Question Q-f2d9296e40782b5a (ouverte)

Ce texte a été généré par une IA et sert de guide d'orientation. Seules les spécifications AUTOSAR référencées font foi.

Guide de l'implémenteur à venir (complexité 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#debff7e3
Content hash
debff7e3
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_FlexRayStateManager.pdf#nameddest=SWS_FrSM_00013

Carte des thèmes

Vue détaillée

Sélectionnez une entrée dans le plan.

Initialisation et état

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 fonction

Initializes the Flex Ray State Manager.

void FrSm_Init (const FrSM_ConfigType* FrSM_ConfigPtr);

Services

FrSm_AllSlots fonction

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

Types

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.