DEENESPTFRRUARHIKOZHNL

FlexRay State Manager (FrSM)

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

Guía del móduloGENERADO POR IA

Controla el despertar, arranque y desconexión de la comunicación de bus para cada clúster FlexRay por encargo de ComM y BswM.
GENERADO POR IA no revisado Modelo: claude-opus-5-5 · Esfuerzo: high · Temperatura: no controlable · Prompt: a3de1ac25c5e Procedencia Preguntas abiertas (6)
Ancla causal: R20-11 Válido desde R20-11 Sintetizado para esta versión de especificación.
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

Controla el despertar, arranque y desconexión de la comunicación de bus para cada clúster FlexRay por encargo de ComM y BswM.

El FlexRay State Manager ejecuta una máquina de estados para cada clúster FlexRay que transforma las peticiones de comunicación de ComM en despertar, arranque y desconexión a través de la FlexRay Interface. FrSM_RequestComMode solo almacena la petición; esta no se procesa hasta la función principal cíclica del clúster [SWS_FrSM_00020]. El FrSM notifica los modos alcanzados a ComM y BswM. El BswM puede finalizar el funcionamiento en modo key slot only o conmutar todos los clústeres al modo de recepción. Solo FRSM_ONLINE y FRSM_LOW_NUMBER_OF_COLDSTARTERS se consideran FullCom (SWS FrSM p. 38).

El FlexRay State Manager transforma las peticiones de comunicación de ComM para cada clúster FlexRay en llamadas a la FlexRay Interface. Notifica el modo de bus a través de ComM_BusSM_ModeIndication y su estado detallado mediante BswM_FrSM_CurrentState [SWS_FrSM_00096]. Opcionalmente utiliza DEM, DET y FrNm, así como otros servicios de FrIf [SWS_FrSM_00097]. FrSm_Init pasa todas las máquinas de estados de los clústeres a FRSM_READY (SWS FrSM p. 35).

frsm_kontext ComM ComM FrSM FrSM (un autómata por cada clúster 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 y BswM controlan, SchM temporiza, FrIf ejecuta; los errores se envían a DEM, DET, FrNm y, opcionalmente, a un CDD. Fuentes: [SWS_FrSM_00096], [SWS_FrSM_00097]

FrSM_RequestComMode solo almacena la petición. No se procesa hasta la función principal del clúster (SWS FrSM p. 36, [SWS_FrSM_00118]). Ante una petición de FullCom, la condición WUReason decide si el FrSM envía patrones de despertar por sí mismo, reenvía un despertar unilateral al segundo canal o arranca directamente. En el arranque llama a FrIf_StartCommunication y, en el caso de ECU de arranque en frío, adicionalmente a FrIf_AllowColdstart. Con POC normal active cambia a FRSM_ONLINE (SWS FrSM p. 20, SWS FrSM p. 52). Si se solicita NoCom desde un estado de FullCom, el FrSM detiene la comunicación ya durante la llamada. Tras t_TrcvStdbyDelay, pone los transceptores en espera y regresa a FRSM_READY [SWS_FrSM_00209].

frsm_zustand cluster_haupt Hauptautomat je FlexRay-Cluster cluster_ecu Paralelo: modo pasivo de ECU (todos los clústeres) 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, solo slots clave 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 o FrSMTrcvStdbyDelay = 0 ECUACT FRSM_ECU_ACTIVE ECUPAS FRSM_ECU_PASSIVE ECUACT->ECUPAS FrSm_SetEcuPassive(TRUE) ECUPAS->ECUACT FrSm_SetEcuPassive(FALSE)

Diagrama de estados: ocho estados principales por clúster y el modo pasivo paralelo de la ECU. Las transiciones a FRSM_ONLINE_PASSIVE y FRSM_LOW_NUMBER_OF_COLDSTARTERS son interpretadas. Fuentes: SWS FrSM p. 18, SWS FrSM p. 27

Para ComM, FullCom solo se aplica en FRSM_ONLINE y FRSM_LOW_NUMBER_OF_COLDSTARTERS (SWS FrSM p. 38). Dos modos de funcionamiento especiales están disponibles para BswM. FrSm_AllSlots finaliza el funcionamiento en modo key slot only [SWS_FrSM_00172]. FrSm_SetEcuPassive conmuta todos los clústeres al modo de solo recepción [SWS_FrSM_00174]. FrSM_BswM_StateType notifica ambas dimensiones de forma combinada [SWS_FrSM_00199]. En R20-11, algunas funciones todavía se denominan FrSm_… y los Service ID difieren de los releases posteriores [SWS_FrSM_00020].

En caso de error, el FrSM notifica errores de desarrollo como FRSM_E_UNINIT o FRSM_E_INV_HANDLE [SWS_FrSM_91001]. Si la sincronización no tiene éxito, llama a FrNm_StartupError. Opcionalmente notifica una pérdida de sincronización mediante <Cdd>_SyncLossErrorIndication [SWS_FrSM_00190].

Rol: gestor de estados de bus entre ComM, BswM y la FlexRay Interface

El FlexRay State Manager (FrSM) traduce las peticiones de comunicación de ComM para cada clúster FlexRay en llamadas de control a la FlexRay Interface. ComM solicita a través de FrSM_RequestComMode un ComM_ModeType para un NetworkHandleType [SWS_FrSM_00020]. El FrSM notifica el modo de bus alcanzado a través de ComM_BusSM_ModeIndication y su estado detallado mediante BswM_FrSM_CurrentState al BswM [SWS_FrSM_00096]. Nunca controla directamente los controladores ni los transceptores. Para ello utiliza funciones de FrIf que en la especificación están agrupadas en elementos funcionales como FE_START (FrIf_StartCommunication) o FE_HALT (FrIf_HaltCommunication) (SWS FrSM p. 22).

Adicionalmente, el FrSM utiliza servicios opcionales: Dem_SetEventStatus, Det_ReportError, FrIf_AllSlots, FrIf_GetNumOfStartupFrames, FrIf_GetWakeupRxStatus, FrIf_SetWakeupChannel y FrNm_StartupError [SWS_FrSM_00097]. Importa sus tipos, entre otros, de ComM, ComStack_Types, DEM, Fr y FrIf [SWS_FrSM_00095]. El BswM también controla el FrSM de forma activa. Puede pasarlo, por ejemplo para casos de uso de diagnóstico, al modo pasivo a través de FrSm_SetEcuPassive() (EXP ModeMgmt p. 36).

frsm_kontext ComM ComM FrSM FrSM (un autómata por cada clúster 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: el FrSM se sitúa entre los solicitantes ComM/BswM, el generador de ciclos SchM y el ejecutor FrIf, y notifica errores a DEM, DET, FrNm y a un CDD opcional. Fuentes: [SWS_FrSM_00096], [SWS_FrSM_00097], [SWS_FrSM_00118], [SWS_FrSM_00190]

Máquina de estados por clúster y modo pasivo paralelo de la ECU

Para cada clúster, el FrSM gestiona su propia máquina de estados con ocho estados: FRSM_READY, FRSM_WAKEUP, FRSM_STARTUP, FRSM_HALT_REQ, FRSM_ONLINE, FRSM_ONLINE_PASSIVE, FRSM_KEYSLOT_ONLY y FRSM_LOW_NUMBER_OF_COLDSTARTERS. Cada estado está asignado a un estado POC del controlador:

  • FRSM_ONLINE corresponde a POC:normal active con comunicación completa.
  • FRSM_ONLINE_PASSIVE corresponde a POC:normal passive. Debido a fallos en la sincronización de reloj, allí no se transmiten ni se reciben datos.
  • En FRSM_KEYSLOT_ONLY solo está permitido transmitir en los key slots.

Esta asignación la describe SWS FrSM p. 18. Las transiciones se definen de forma tabular y el FrSM ejecuta sus acciones en el orden allí establecido (SWS FrSM p. 24).

En paralelo existen los estados FRSM_ECU_ACTIVE y FRSM_ECU_PASSIVE (SWS FrSM p. 18). FrSm_SetEcuPassive conmuta todos los clústeres de la ECU conjuntamente al modo de solo recepción o de vuelta [SWS_FrSM_00174]. Si un clúster no se encuentra en FRSM_READY en ese momento, el FrSM ejecuta FE_TRCV_NORMAL para él (SWS FrSM p. 40). FrSM_BswM_StateType representa ambas dimensiones: para cada estado principal existe un valor con el sufijo _ECU_PASSIVE, desde FRSM_BSWM_READY (0x00) hasta FRSM_LOW_NUMBER_OF_COLDSTARTERS_ECU_PASSIVE (0x0F) [SWS_FrSM_00199]. Los dos conceptos de pasivo no deben confundirse: ONLINE_PASSIVE es una consecuencia de fallo en la sincronización, mientras que ECU_PASSIVE es un modo de recepción intencionado.

Hacia el exterior solo cuenta el modo que proporciona FrSM_GetCurrentComMode. COMM_FULL_COMMUNICATION se aplica exclusivamente en FRSM_ONLINE y FRSM_LOW_NUMBER_OF_COLDSTARTERS; en todos los demás estados se aplica COMM_NO_COMMUNICATION (SWS FrSM p. 38, [SWS_FrSM_00024]). SilentCom no es compatible con FlexRay (SWS FrSM p. 18).

frsm_zustand cluster_haupt Hauptautomat je FlexRay-Cluster cluster_ecu Paralelo: modo pasivo de ECU (todos los clústeres) 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, solo slots clave 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 o 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 principal por clúster con las rutas Despertar → Arranque → Online, así como Halt → Ready, junto al modo pasivo de la ECU común a todos los clústeres. Interpretación: las transiciones a FRSM_ONLINE_PASSIVE y FRSM_LOW_NUMBER_OF_COLDSTARTERS se derivan de la tabla de estados y de las condiciones. Fuentes: SWS FrSM p. 27, SWS FrSM p. 18, SWS FrSM p. 20, [SWS_FrSM_00209]

De FrSm_Init a la comunicación completa: despertar y arranque

FrSm_Init es síncrona y no reentrante. La función recibe un puntero a FrSM_ConfigType, la configuración post-build específica de la implementación ([SWS_FrSM_00013], [SWS_FrSM_00198]). Establece todas las máquinas de estados de los clústeres en FRSM_READY (transición T00) y almacena la dirección de configuración. Si FrSMDevErrorDetect está activo, además registra la inicialización exitosa (SWS FrSM p. 35).

FrSM_RequestComMode funciona de forma asíncrona. La función almacena el modo deseado como reqComMode. Solo se procesa en la siguiente ejecución de FrSM_MainFunction_<FrSMCluster.ShortName> en la máquina de estados del clúster afectado (SWS FrSM p. 36). Hay una función principal por clúster, proporcionada a través de SchM_FrSm.h [SWS_FrSM_00118]. Su ciclo de llamada probablemente siga el parámetro FrSMMainFunctionCycleTime (SWS FrSM p. 62). Pregunta (abierta)

Ante una petición de FullCom en FRSM_READY, el FrSM evalúa la condición WUReason. Si FrSMCheckWakeupReason está establecido, consulta a cada transceptor mediante FrIf_GetTransceiverWUReason. El resultado es NO_WU_BY_BUS, PARTIAL_WU_BY_BUS o ALL_WU_BY_BUS; sin comprobación, se aplica NO_WU_BY_BUS (SWS FrSM p. 20). Si la ECU fue despertada por el bus, arranca sin despertar propio (SWS FrSM p. 52). Si el despertar llegó solo a un canal en un nodo de dos canales, FE_SET_WU_CHANNEL_FORWARD lo reenvía al otro 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 Sí wuecu->startup No wakeup->startup wakeupFinished forward->startup wakeupFinished

Diagrama de actividades: a partir de WUReason se determina si el FrSM despierta por sí mismo, reenvía un despertar o arranca directamente. Interpretación: la rama para ECU que no despiertan se deriva de FrSMIsWakeupEcu. Fuentes: SWS FrSM p. 20, SWS FrSM p. 22, SWS FrSM p. 54

En FRSM_WAKEUP, el FrSM envía patrones de despertar a través de FE_WAKEUP, es decir, FrIf_SendWUP por controlador. Repite esto hasta alcanzar FrSMNumWakeupPatterns o hasta que se detecte tráfico en el bus (busTrafficDetected). Si un controlador pasa a HALT debido a un error, la transmisión se cancela (SWS FrSM p. 27).

frsm_weckmuster start init Eintritt in FRSM_WAKEUP: wakeupCounter := 1 start->init cond ¿wakeupCounter < FrSMNumWakeupPatterns y busTrafficDetected = false? init->cond wait Esperar hasta que todos los controladores del clúster estén en FR_READY cond->wait Sí done wakeupFinished = true cond->done No halt ¿Controlador en HALT debido a un error? wait->halt status vPOC!WakeupStatus? halt->status No halt->done ja: Abbruch bus busTrafficDetected := true status->bus FR_WAKEUP_RECEIVED_HEADER o FR_WAKEUP_RECEIVED_WUP tx wakeupTransmitted := true status->tx FR_WAKEUP_TRANSMITTED notx wakeupTransmitted := false status->notx En caso contrario again ¿busTrafficDetected = false y wakeupCounter < FrSMNumWakeupPatterns? bus->again tx->again notx->again fe FE_WAKEUP: FrIf_SendWUP je Controller again->fe Sí inc Incrementar wakeupCounter again->inc No fe->inc inc->cond

Diagrama de actividades: emisión repetida de patrones de despertar con evaluación de vPOC!WakeupStatus y cancelación en caso de HALT del controlador. Fuentes: SWS FrSM p. 27, SWS FrSM p. 18

El arranque comienza con FrIf_StartCommunication. El FrSM llama a FrIf_AllowColdstart solo en FrSMIsColdstartEcu (SWS FrSM p. 22). A continuación, notifica FRSM_STARTUP al BswM. Tan pronto como el estado POC es normal active, siguen FrIf_SetState(FRIF_GOTO_ONLINE), la notificación FRSM_ONLINE y la indicación de modo a ComM (SWS FrSM p. 50, SWS FrSM p. 52).

Wakeup monocanal y arranque hasta FRSM_ONLINEComMBswMSchMFrSMFrIfDemFrSM_RequestComMode(NetworkHandle,COMM_FULL_COMMUNICATION)E_OKreqComMode gespeichert,Evaluación en la función principalUse Case: Wecken (FRSM_WAKEUP)FrSM_MainFunction_<FrSMCluster.ShortName>loopPara todos los controladores del clústerFrIf_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 los controladores del clústerFrIf_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 secuencia: despertar de un solo canal y arranque hasta FRSM_ONLINE, distribuidos en varias ejecuciones de la función principal. Interpretación: el orden dentro de las ejecuciones se ha reconstruido a partir de las figuras de la especificación y se ha simplificado. Fuentes: SWS FrSM p. 50, SWS FrSM p. 52, [SWS_FrSM_00118]

Funcionamiento en modo key slot only, habilitación de todos los slots y pocos coldstarters

Si el controlador está configurado con pKeySlotOnlyEnabled, el arranque finaliza inicialmente en FRSM_KEYSLOT_ONLY. Este estado corresponde a POC:normal active con vPOCSlotMode ≠ AllSlots (SWS FrSM p. 18, SWS FrSM p. 55). Se abandona a través de FrSm_AllSlots [SWS_FrSM_00172]. La función llama a FrIf_AllSlots para cada controlador del clúster y solo devuelve E_OK si todas las llamadas dieron como resultado E_OK. Puede desactivarse en tiempo de precompilación mediante FrSMAllSlotsSupport (SWS FrSM p. 41). Según la figura de la especificación, el BswM habilita el funcionamiento completo. Solo después el FrSM notifica FRSM_ONLINE y FullCom a ComM (SWS FrSM p. 57).

Arranque en modo Key-Slot-Only y habilitación de todos los slotsComMBswMSchMFrSMFrIfUse Case: Anlauf endet in FRSM_KEYSLOT_ONLYFrSM_MainFunction_<FrSMCluster.ShortName>loopPara todos los controladores del clústerFrIf_GetPOCStatus(CtrlIdx, POCStatusPtr)FR_POCSTATE_NORMAL_ACTIVE,SlotMode = FR_SLOTMODE_KEYSLOTFrIf_SetState(ClstIdx, FRIF_GOTO_ONLINE)BswM_FrSM_CurrentState(FRSM_BSWM_KEYSLOT_ONLY)Para ComM sigue aplicando NoCom(FrSM_GetCurrentComMode)Use Case: Freigabe aller SlotsFrSm_AllSlots(NetworkHandle)loopPara todos los controladores del clústerFrIf_AllSlots(CtrlIdx)E_OKE_OK (solo si todas las llamadas devuelven 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 secuencia: puesta en marcha en dos etapas: primero solo key slots, luego habilitación de todos los slots a través de FrSm_AllSlots. La figura de la especificación etiqueta la notificación de BswM como FRSM_ONLINE_KEYSLOT_ONLY; aquí figura el valor de R20-11 FRSM_BSWM_KEYSLOT_ONLY. Fuentes: SWS FrSM p. 57, SWS FrSM p. 55, [SWS_FrSM_00172], [SWS_FrSM_00199]

FRSM_LOW_NUMBER_OF_COLDSTARTERS significa comunicación completa en la que el clúster solo está sincronizado mediante sync frames (SWS FrSM p. 18). La condición lowNumberOfColdstarters se cumple si FrIf_GetNumOfStartupFrames() notifica menos startup frames de los que prescribe el parámetro opcional FrSMMinNumberOfColdstarter (SWS FrSM p. 20).

Retorno a NoCom y temporizadores del clúster

Se puede solicitar NoCom mientras la máquina de estados se encuentra en FRSM_ONLINE, FRSM_KEYSLOT_ONLY, FRSM_LOW_NUMBER_OF_COLDSTARTERS o FRSM_ONLINE_PASSIVE. En este caso, ya FrSM_RequestComMode procesa la transición sin esperar a la función principal (SWS FrSM p. 36). Esto incluye FrIf_SetState(FRIF_GOTO_OFFLINE), FrIf_HaltCommunication y la notificación HALT_REQ al BswM. En ejecuciones posteriores, el FrSM notifica NoCom a ComM, reinicializa los controladores, pasa los transceptores a STANDBY y notifica READY (SWS FrSM p. 58).

Transición de FullCom a NoComComMBswMSchMFrSMFrIfFrSM_RequestComMode(NetworkHandle,COMM_NO_COMMUNICATION)El estado de origen es un estado FullCom:Transición inmediata en la llamadaFrIf_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)Tras expirar t_TrcvStdbyDelay o bien inmediatamente,si FrSMTrcvStdbyDelay no está presente o es 0FrIf_ControllerInit(CtrlIdx)FrIf_SetTransceiverMode(CtrlIdx, ChnlIdx,STANDBY)BswM_FrSM_CurrentState(FRSM_BSWM_READY)

Diagrama de secuencia: de FullCom a NoCom. La parada tiene lugar de forma síncrona en la llamada de solicitud; la reinicialización y el estado de espera (Standby) siguen desfasados en el tiempo en la función principal. Interpretación: el orden se ha reconstruido a partir de la figura de la especificación. Fuentes: SWS FrSM p. 58, SWS FrSM p. 36, [SWS_FrSM_00209]

Para cada clúster, el FrSM opera con varios temporizadores (SWS FrSM p. 21):

  • t1 retrasa FrIf_AllowColdstart. Con FrSMDurationT1 = 0, la llamada sigue directamente a FrIf_StartCommunication.
  • t2 determina tras cuánto tiempo se repite el arranque.
  • t3 supervisa la transición a FullCom.
  • t4 garantiza que un nodo de dos canales borre su bit de bloqueo de arranque en frío.
  • t_TrcvStdbyDelay retrasa la reinicialización y el paso a Standby. Si FrSMTrcvStdbyDelay no está configurado o es 0, la máquina de estados pasa inmediatamente de FRSM_HALT_REQ a FRSM_READY [SWS_FrSM_00209].

Configuración por FrSMCluster y estado de interfaces en R20-11

El contenedor FrSMCluster (1..*) describe un clúster que puede comprender varios controladores en una ECU. Contiene:

  • los temporizadores FrSMDurationT1 a FrSMDurationT4,
  • los roles FrSMIsColdstartEcu y FrSMIsWakeupEcu,
  • FrSMNumWakeupPatterns y FrSMStartupRepetitions,
  • las referencias FrSMComMNetworkHandleRef y FrSMFrIfClusterRef.

Estos contenidos los describe SWS FrSM p. 62. Además, FrSMVersionInfoApi para FrSM_GetVersionInfo y FrSMSyncLossErrorIndicationName son configurables de forma general (SystemTemplate p. 1528, [SWS_FrSM_00029]).

Muchos pasajes detallados proceden de releases posteriores. Para R20-11 son válidos los requisitos, y estos difieren en algunos puntos:

  • Las funciones se denominan FrSm_Init, FrSm_AllSlots y FrSm_SetEcuPassive y están disponibles a través de FrSm.h.
  • FrSM_RequestComMode tiene el Service ID 0x02 y es reentrante para diferentes clústeres. Los pasajes posteriores citan 0x40 y otros nombres de parámetros.
  • FrSM_GetCurrentComMode tiene el Service ID 0x03 en R20-11.

Referencias: [SWS_FrSM_00013], [SWS_FrSM_00020], [SWS_FrSM_00024], SWS FrSM p. 36.

Comportamiento en caso de error

Para los errores de desarrollo se definen los siguientes códigos [SWS_FrSM_91001]:

  • FRSM_E_PARAM_POINTER: puntero no válido. El servicio retorna inmediatamente.
  • FRSM_E_INV_HANDLE: identificador de red (handle) no válido.
  • FRSM_E_UNINIT: módulo no inicializado.
  • FRSM_E_INV_MODE: modo de comunicación no válido.
  • FRSM_INIT_FAILED: error de inicialización.

Algunos casos están regulados expresamente. Con un handle no válido, FrSm_AllSlots notifica FRSM_E_INV_HANDLE y devuelve E_NOT_OK (SWS FrSM p. 41). Antes de la inicialización, FrSm_SetEcuPassive notifica un error de desarrollo (SWS FrSM p. 40). En R20-11, sin inicialización previa, FrSM_GetCurrentComMode devuelve E_NOT_OK [SWS_FrSM_00024].

A nivel de bus, el FrSM reacciona de la siguiente manera:

  • En caso de fallos en la sincronización de reloj, el clúster cae a FRSM_ONLINE_PASSIVE (SWS FrSM p. 18).
  • Si la sincronización no tiene éxito, el FrSM llama a FrNm_StartupError [SWS_FrSM_00097].
  • El arranque se repite tras t2 (SWS FrSM p. 21). FrSMStartupRepetitions probablemente limite el número de repeticiones. Pregunta (abierta)

El FrSM notifica el estado de arranque como evento de DEM FRSM_E_CLUSTER_STARTUP, en caso de éxito con PASSED (SWS FrSM p. 52). Los event ID figuran en FrSMClusterDemEventParameterRefs (SWS FrSM p. 62). Opcionalmente, <Cdd>_SyncLossErrorIndication informa de una pérdida de sincronización mediante true. Con false, la función indica que se ha vuelto a sincronizar o que se ha retirado la petición de FullCom [SWS_FrSM_00190]. Sin un nombre de función configurado, esta notificación se omite (SystemTemplate p. 1528).

Más evidencia detallada

Guía generada por IA sobre la base de los requisitos de R20-11 y pasajes de especificación asociados, en parte procedentes de releases posteriores. Los requisitos vinculados son normativos; las interpretaciones se identifican como tales.

FlexRay State Manager (FrSM)

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

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

función FrSm_Init [SWS_FrSM_00013] 📄 PDF

void FrSm_Init (const FrSM_ConfigType* FrSM_ConfigPtr);

Initializes the Flex Ray State Manager.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 4f916985d2dc Procedencia Preguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

La función FrSm_Init sirve, según la especificación [SWS_FrSM_00013], para la inicialización del FlexRay State Manager (FrSM). Posee el ID de servicio 0x01 y está declarada a través del archivo de cabecera FrSm.h.

Uso y parámetros

La ejecución de FrSm_Init se realiza de forma síncrona [SWS_FrSM_00013]. La llamada espera exactamente un parámetro de entrada:

  • FrSM_ConfigPtr: puntero a la estructura de configuración seleccionada de tipo const FrSM_ConfigType*, a través del cual se proporcionan los datos de inicialización del módulo [SWS_FrSM_00013].

La función no posee valor de retorno (void) y no define ni parámetros de entrada/salida (inout) ni parámetros de salida puros (out) [SWS_FrSM_00013].

Concurrencia y restricciones

En cuanto al contexto de ejecución, la interfaz está clasificada como no reentrante (Non Reentrant) [SWS_FrSM_00013]. Por consiguiente, no se permiten llamadas simultáneas o anidadas a la función. Interpretación: es de prever que la llamada se realice típicamente durante la inicialización del sistema, antes de que se utilicen los servicios regulares de comunicación o control del FrSM. Pregunta Q-881936607a7268bd (abierta)

Manejo de errores

En la especificación del elemento [SWS_FrSM_00013] no se indican códigos de retorno ni mecanismos específicos para el tratamiento de errores, como notificaciones DET o DEM.

Esta nota de uso se ha generado automáticamente y se basa exclusivamente en los datos de especificación de AUTOSAR R20-11.

Guía del implementador pendiente (complejidad I1)

función 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.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 0805fe94c490 Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

Uso y semántica

La función FrSM_RequestComMode es llamada por el Communication Manager (ComM) para iniciar o detener la comunicación en un determinado clúster FlexRay [SWS_FrSM_00020]. La interfaz se declara a través del encabezado FrSm.h y posee el Service-ID 0x02 [SWS_FrSM_00020]. Puesto que el servicio está especificado como asíncrono, la función únicamente confirma la aceptación de la solicitud de conmutación, mientras que la transición de estado real se procesa de forma posterior [SWS_FrSM_00020].

Parámetros y valores de retorno

La función espera dos parámetros de entrada para controlar el modo de comunicación [SWS_FrSM_00020]:

  • NetworkHandle (tipo NetworkHandleType): Determina el clúster FlexRay para el cual se solicita un modo de comunicación [SWS_FrSM_00020].
  • ComM_Mode (tipo ComM_ModeType): Contiene el modo de comunicación deseado por ComM para la red especificada [SWS_FrSM_00020].

El valor de retorno de tipo Std_ReturnType indica el resultado de la comprobación de la solicitud [SWS_FrSM_00020]:

Concurrencia y restricciones

Según la especificación, FrSM_RequestComMode está implementada como reentrante para diferentes clústeres FlexRay [SWS_FrSM_00020]. Para el mismo clúster FlexRay, la llamada probablemente no sea reentrante, por lo que deben evitarse llamadas concurrentes para la misma instancia. En el payload no se definen códigos de error específicos como mensajes DET o DEM [SWS_FrSM_00020].

Esta nota de uso ha sido generada de forma automatizada sobre la base de la especificación AUTOSAR Classic R20-11.

Guía del implementador pendiente (complejidad I1)

función 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.

función 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.

función FrSm_AllSlots [SWS_FrSM_00172] 📄 PDF

Std_ReturnType FrSm_AllSlots (NetworkHandleType NetworkHandle);

Service FrSm_AllSlots.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: f8b54cb7f004 Procedencia Preguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

La función de servicio asíncrona FrSm_AllSlots se proporciona a través del encabezado FrSm.h y sirve para salir del denominado «Key Slot Only Mode» para un clúster FlexRay especificado [SWS_FrSM_00172].

Llamada y parámetros: Para identificar la red de comunicación, al parámetro NetworkHandle se le transfiere el respectivo clúster FlexRay para el cual se debe solicitar el modo de conmutación [SWS_FrSM_00172]. No existen otros parámetros de entrada [SWS_FrSM_00172].

Valor de retorno y semántica: La llamada devuelve E_OK si la solicitud de conmutación fue aceptada con éxito, o E_NOT_OK si la solicitud fue rechazada [SWS_FrSM_00172]. Puesto que se trata de una operación asíncrona, E_OK solo confirma la recepción del encargo; es probable que la transición propiamente dicha al funcionamiento completo de todos los slots surta efecto de forma retardada en el contexto del State Manager. Pregunta Q-d559e4ea5183ff7c (abierta)

Concurrencia y restricciones: La función es reentrante para diferentes clústeres FlexRay [SWS_FrSM_00172]. No está diseñada como reentrante para clústeres idénticos, por lo que los llamantes deben sincronizar las solicitudes paralelas sobre el mismo clúster. En la descripción de la función no se mencionan códigos de error específicos para DET o DEM.

Esta nota de uso se generó de forma automatizada. Se basa en AUTOSAR CP R20-11.

función 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

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: a8440a0185d0 Procedencia Preguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

usar

El tipo enumerado FrSM_BswM_StateType define según [SWS_FrSM_00199] los estados del FlexRay State Manager (FrSM) que se notifican al BswM (Basic Software Mode Manager). La declaración y provisión del tipo se realiza a través del archivo de cabecera FrSm.h [SWS_FrSM_00199].

Interacción y rango de valores

Los valores de este tipo se utilizan en interacción con la interfaz BswM_FrSM_CurrentState para transmitir el estado actual de funcionamiento y de comunicación al módulo BswM [SWS_FrSM_00199]. El rango de valores comprende los siguientes valores de enumeración:

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

Llama la atención la estructuración por pares de los estados: cada estado base posee un homólogo regular, así como una variante con el sufijo _ECU_PASSIVE. Presumiblemente, esto sirve para notificar al BswM el estado de comunicación del clúster FlexRay combinado con el modo pasivo de la unidad de control, con el fin de que este pueda coordinar los cambios de modo correspondientes. Pregunta Q-f2d9296e40782b5a (abierta)

Este texto ha sido generado por una IA y sirve como guía orientativa. Las especificaciones de AUTOSAR referenciadas son determinantes.

Guía del implementador pendiente (complejidad 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#0717587e
Content hash
0717587e
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_FlexRayStateManager.pdf#nameddest=SWS_FrSM_00013

Mapa de temas

Vista de detalle

Selecciona una entrada en el índice.

Inicialización y 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 función

Initializes the Flex Ray State Manager.

void FrSm_Init (const FrSM_ConfigType* FrSM_ConfigPtr);

Servicios

FrSm_AllSlots función

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.