DEENESPTFRRUARHIKOZHNL

FlexRay State Manager (FrSM)

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

모듈 가이드AI 생성

ComM 및 BswM의 요청에 따라 FlexRay 클러스터별로 버스 통신의 웨이크업, 시작 및 정지를 제어합니다.
AI 생성 미검증 모델: claude-opus-5-5 · 노력: high · 온도: 제어 불가 · 프롬프트: a3de1ac25c5e 출처 열린 질문 (6)
인과 앵커: R20-11 R20-11부터 유효 이 사양 릴리스용으로 새로 합성되었습니다.
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

ComM 및 BswM의 요청에 따라 FlexRay 클러스터별로 버스 통신의 웨이크업, 시작 및 정지를 제어합니다.

FlexRay State Manager는 FlexRay 클러스터별로 상태 머신을 유지 관리하며, 이는 ComM의 통신 요청을 FlexRay Interface를 통한 웨이크업, 시작 및 정지로 변환합니다. FrSM_RequestComMode은 요청을 저장하기만 하며, 실제 처리는 클러스터의 주기적 메인 함수에서 이루어집니다 [SWS_FrSM_00020]. 달성된 모드는 FrSM이 ComM 및 BswM에 보고합니다. BswM은 Key-Slot-Only 동작을 종료하거나 모든 클러스터를 수신 동작으로 전환할 수 있습니다. FRSM_ONLINE 및 FRSM_LOW_NUMBER_OF_COLDSTARTERS만 FullCom으로 간주됩니다 (SWS FrSM 38쪽).

FlexRay State Manager는 각 FlexRay 클러스터에 대한 ComM의 통신 요청을 FlexRay Interface에 대한 호출로 변환합니다. 버스 모드는 ComM_BusSM_ModeIndication을 통해, 세부 상태는 BswM_FrSM_CurrentState을 통해 다시 보고합니다 [SWS_FrSM_00096]. 선택적으로 DEM, DET, FrNm 및 기타 FrIf 서비스를 사용합니다 [SWS_FrSM_00097]. FrSm_Init는 모든 클러스터 상태 머신을 FRSM_READY로 전환합니다 (SWS FrSM 35쪽).

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

컨텍스트 다이어그램: ComM과 BswM이 제어하고, SchM이 클록을 공급하며, FrIf가 실행합니다. 오류는 DEM, DET, FrNm 및 선택적으로 CDD로 전달됩니다. 출처: [SWS_FrSM_00096], [SWS_FrSM_00097]

FrSM_RequestComMode은 요청을 저장하기만 합니다. 클러스터의 메인 함수가 비로소 이를 처리합니다 (SWS FrSM 36쪽, [SWS_FrSM_00118]). FullCom 요청 시 조건 WUReason에 따라 FrSM이 자체적으로 웨이크업 패턴을 전송할지, 단방향 웨이크업을 두 번째 채널로 포워딩할지, 아니면 직접 시작할지 결정합니다. 시작 시 FrIf_StartCommunication를 호출하고, 콜드스타트 ECU의 경우 추가로 FrIf_AllowColdstart를 호출합니다. POC normal active 시 FRSM_ONLINE으로 전환됩니다 (SWS FrSM 20쪽, SWS FrSM 52쪽). FullCom 상태에서 NoCom이 요청되면 FrSM은 이미 호출 단계에서 통신을 중지합니다. t_TrcvStdbyDelay 이후 트랜시버를 대기 상태(Standby)로 설정하고 FRSM_READY으로 복귀합니다 [SWS_FrSM_00209].

frsm_zustand cluster_haupt Hauptautomat je FlexRay-Cluster cluster_ecu 병렬: ECU 패시브 모드 (모든 클러스터) 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, 키 슬롯 전용 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 만료됨 또는 FrSMTrcvStdbyDelay = 0 ECUACT FRSM_ECU_ACTIVE ECUPAS FRSM_ECU_PASSIVE ECUACT->ECUPAS FrSm_SetEcuPassive(TRUE) ECUPAS->ECUACT FrSm_SetEcuPassive(FALSE)

상태 다이어그램: 클러스터별 8개의 주요 상태 및 병렬 ECU 패시브 모드. FRSM_ONLINE_PASSIVE 및 FRSM_LOW_NUMBER_OF_COLDSTARTERS로의 전이는 해석된 내용입니다. 출처: SWS FrSM 18쪽, SWS FrSM 27쪽

ComM의 경우 FullCom은 FRSM_ONLINE 및 FRSM_LOW_NUMBER_OF_COLDSTARTERS에서만 유효합니다 (SWS FrSM 38쪽). BswM은 두 가지 특수 동작 모드를 사용할 수 있습니다. FrSm_AllSlots은 Key-Slot-Only 동작을 종료합니다 [SWS_FrSM_00172]. FrSm_SetEcuPassive는 모든 클러스터를 순수 수신 동작으로 전환합니다 [SWS_FrSM_00174]. FrSM_BswM_StateType은 두 차원을 결합하여 보고합니다 [SWS_FrSM_00199]. R20-11에서는 일부 함수가 여전히 FrSm_…로 명명되어 있으며, 서비스 ID가 이후 릴리스와 다릅니다 [SWS_FrSM_00020].

오류 발생 시 FrSM은 FRSM_E_UNINIT 또는 FRSM_E_INV_HANDLE과 같은 개발 오류를 보고합니다 [SWS_FrSM_91001]. 동기화에 실패하면 FrNm_StartupError을 호출합니다. 동기화 손실은 선택적으로 <Cdd>_SyncLossErrorIndication를 통해 보고합니다 [SWS_FrSM_00190].

역할: ComM, BswM 및 FlexRay Interface 간의 버스 상태 관리자

FlexRay State Manager (FrSM)는 각 FlexRay 클러스터에 대한 ComM의 통신 요청을 FlexRay Interface에 대한 제어 호출로 변환합니다. ComM은 FrSM_RequestComMode을 통해 NetworkHandleType에 대한 ComM_ModeType을 요청합니다 [SWS_FrSM_00020]. FrSM은 달성된 버스 모드를 ComM_BusSM_ModeIndication를 통해 반환하고, 상세 상태를 BswM_FrSM_CurrentState를 통해 BswM에 보고합니다 [SWS_FrSM_00096]. 컨트롤러와 트랜시버를 직접 제어하지는 않습니다. 대신 사양에서 FE_START (FrIf_StartCommunication) 또는 FE_HALT (FrIf_HaltCommunication)와 같은 기능 요소로 묶인 FrIf 함수를 사용합니다 (SWS FrSM 22쪽).

또한 FrSM은 선택적 서비스를 사용합니다: Dem_SetEventStatus, Det_ReportError, FrIf_AllSlots, FrIf_GetNumOfStartupFrames, FrIf_GetWakeupRxStatus, FrIf_SetWakeupChannel 및 FrNm_StartupError [SWS_FrSM_00097]. 해당 유형은 ComM, ComStack_Types, DEM, Fr, FrIf 등에서 가져옵니다 [SWS_FrSM_00095]. BswM은 FrSM을 능동적으로 제어하기도 합니다. 예를 들어 진단 사용 사례를 위해 FrSm_SetEcuPassive()를 통해 FrSM을 패시브 모드로 전환할 수 있습니다 (EXP ModeMgmt 36쪽).

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

컨텍스트 다이어그램: FrSM은 요청자인 ComM/BswM, 클록 공급자인 SchM, 실행자인 FrIf 사이에 위치하며, DEM, DET, FrNm 및 선택적인 CDD에 오류를 보고합니다. 출처: [SWS_FrSM_00096], [SWS_FrSM_00097], [SWS_FrSM_00118], [SWS_FrSM_00190]

클러스터별 상태 머신 및 병렬 ECU 패시브 모드

각 클러스터에 대해 FrSM은 8개의 상태를 갖는 자체 머신을 유지 관리합니다: FRSM_READY, FRSM_WAKEUP, FRSM_STARTUP, FRSM_HALT_REQ, FRSM_ONLINE, FRSM_ONLINE_PASSIVE, FRSM_KEYSLOT_ONLY 및 FRSM_LOW_NUMBER_OF_COLDSTARTERS. 각 상태는 컨트롤러의 POC 상태에 매핑됩니다:

  • FRSM_ONLINE은 전체 통신이 가능한 POC:normal active에 해당합니다.
  • FRSM_ONLINE_PASSIVE은 POC:normal passive에 해당합니다. 클록 동기화 오류로 인해 그곳에서는 데이터를 송신하거나 수신하지 않습니다.
  • FRSM_KEYSLOT_ONLY에서는 키 슬롯(Key-Slot)에서만 송신할 수 있습니다.

이러한 매핑은 SWS FrSM 18쪽에 설명되어 있습니다. 전이는 표 형식으로 정의되어 있으며, FrSM은 그곳에 명시된 순서대로 동작을 실행합니다 (SWS FrSM 24쪽).

이와 병렬로 FRSM_ECU_ACTIVE 및 FRSM_ECU_PASSIVE 상태가 존재합니다 (SWS FrSM 18쪽). FrSm_SetEcuPassive은 ECU의 모든 클러스터를 함께 순수 수신 동작으로 또는 그 반대로 전환합니다 [SWS_FrSM_00174]. 이때 클러스터가 FRSM_READY 상태에 있지 않으면 FrSM은 해당 클러스터에 대해 FE_TRCV_NORMAL을 실행합니다 (SWS FrSM 40쪽). FrSM_BswM_StateType은 두 차원을 모두 나타냅니다. 각 주요 상태에 대해 접미사 _ECU_PASSIVE가 붙은 값이 존재하며, FRSM_BSWM_READY (0x00)부터 FRSM_LOW_NUMBER_OF_COLDSTARTERS_ECU_PASSIVE (0x0F)까지입니다 [SWS_FrSM_00199]. 두 패시브 개념을 혼동해서는 안 됩니다. ONLINE_PASSIVE은 동기화 장애의 결과인 반면, ECU_PASSIVE는 의도된 수신 동작입니다.

외부적으로는 FrSM_GetCurrentComMode이 제공하는 모드만 유효합니다. COMM_FULL_COMMUNICATION은 오직 FRSM_ONLINE 및 FRSM_LOW_NUMBER_OF_COLDSTARTERS에서만 적용되며, 다른 모든 상태에서는 COMM_NO_COMMUNICATION가 적용됩니다 (SWS FrSM 38쪽, [SWS_FrSM_00024]). FlexRay에서는 SilentCom이 지원되지 않습니다 (SWS FrSM 18쪽).

frsm_zustand cluster_haupt Hauptautomat je FlexRay-Cluster cluster_ecu 병렬: ECU 패시브 모드 (모든 클러스터) 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, 키 슬롯 전용 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 만료됨 또는 FrSMTrcvStdbyDelay = 0 ECUACT FRSM_ECU_ACTIVE ECUPAS FRSM_ECU_PASSIVE ECUACT->ECUPAS FrSm_SetEcuPassive(TRUE) ECUPAS->ECUACT FrSm_SetEcuPassive(FALSE)

상태 다이어그램: 웨이크업 → 시작 → 온라인 및 정지 → 준비 경로를 포함하는 클러스터별 메인 머신과 모든 클러스터에 공통인 ECU 패시브 모드. 해석: FRSM_ONLINE_PASSIVE 및 FRSM_LOW_NUMBER_OF_COLDSTARTERS로의 전이는 상태 테이블과 조건에서 도출되었습니다. 출처: SWS FrSM 27쪽, SWS FrSM 18쪽, SWS FrSM 20쪽, [SWS_FrSM_00209]

FrSm_Init부터 전체 통신까지: 웨이크업 및 시작

FrSm_Init은 동기식이며 재진입이 불가능합니다. 이 함수는 구현별 포스트 빌드(post-build) 구성인 FrSM_ConfigType에 대한 포인터를 받습니다 ([SWS_FrSM_00013], [SWS_FrSM_00198]). 모든 클러스터 상태 머신을 FRSM_READY로 설정하고(전이 T00) 구성 주소를 저장합니다. FrSMDevErrorDetect가 활성화된 경우 성공적인 초기화도 기록합니다 (SWS FrSM 35쪽).

FrSM_RequestComMode은 비동기식으로 동작합니다. 이 함수는 원하는 모드를 reqComMode로 저장합니다. 이는 해당 클러스터의 머신에서 FrSM_MainFunction_<FrSMCluster.ShortName>가 다음 번에 실행될 때 비로소 처리됩니다 (SWS FrSM 36쪽). 클러스터마다 하나의 메인 함수가 존재하며, SchM_FrSm.h [SWS_FrSM_00118]를 통해 제공됩니다. 호출 주기는 매개변수 FrSMMainFunctionCycleTime을 따를 것으로 추정됩니다 (SWS FrSM 62쪽). 질문 (열림)

FRSM_READY에서 FullCom 요청 시 FrSM은 조건 WUReason을 평가합니다. FrSMCheckWakeupReason가 설정되어 있으면 FrIf_GetTransceiverWUReason을 통해 각 트랜시버를 조회합니다. 결과는 NO_WU_BY_BUS, PARTIAL_WU_BY_BUS 또는 ALL_WU_BY_BUS이며, 검사하지 않는 경우 NO_WU_BY_BUS이 적용됩니다 (SWS FrSM 20쪽). ECU가 버스에 의해 웨이크업된 경우 자체 웨이크업 없이 시작됩니다 (SWS FrSM 52쪽). 2채널 노드에서 웨이크업이 한 채널로만 수신된 경우 FE_SET_WU_CHANNEL_FORWARD이 이를 다른 채널로 전달합니다 (SWS FrSM 22쪽, SWS FrSM 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 예 wuecu->startup 아니요 wakeup->startup wakeupFinished forward->startup wakeupFinished

액티비티 다이어그램: WUReason에 따라 FrSM이 자체적으로 웨이크업할지, 웨이크업을 전달할지, 아니면 직접 시작할지가 결정됩니다. 해석: 비웨이크업 ECU에 대한 분기는 FrSMIsWakeupEcu에서 도출되었습니다. 출처: SWS FrSM 20쪽, SWS FrSM 22쪽, SWS FrSM 54쪽

FRSM_WAKEUP에서 FrSM은 FE_WAKEUP, 즉 컨트롤러당 FrIf_SendWUP를 통해 웨이크업 패턴을 전송합니다. 이는 FrSMNumWakeupPatterns에 도달하거나 버스 트래픽이 감지될 때까지 반복됩니다(busTrafficDetected). 오류로 인해 컨트롤러가 HALT로 전환되면 전송이 중단됩니다(SWS FrSM 27쪽).

frsm_weckmuster start init Eintritt in FRSM_WAKEUP: wakeupCounter := 1 start->init cond wakeupCounter < FrSMNumWakeupPatterns 및 busTrafficDetected = false인가? init->cond wait 클러스터의 모든 컨트롤러가 FR_READY가 될 때까지 대기 cond->wait 예 done wakeupFinished = true cond->done 아니요 halt 오류로 인해 컨트롤러가 HALT 상태인가? wait->halt status vPOC!WakeupStatus? halt->status 아니요 halt->done ja: Abbruch bus busTrafficDetected := true status->bus FR_WAKEUP_RECEIVED_HEADER 또는 FR_WAKEUP_RECEIVED_WUP tx wakeupTransmitted := true status->tx FR_WAKEUP_TRANSMITTED notx wakeupTransmitted := false status->notx 기타 again busTrafficDetected = false 및 wakeupCounter < FrSMNumWakeupPatterns인가? bus->again tx->again notx->again fe FE_WAKEUP: FrIf_SendWUP je Controller again->fe 예 inc wakeupCounter 증가 again->inc 아니요 fe->inc inc->cond

액티비티 다이어그램: vPOC!WakeupStatus의 평가 및 컨트롤러 HALT 시 중단을 동반한 웨이크업 패턴의 반복 송신. 출처: SWS FrSM 27쪽, SWS FrSM 18쪽

시작은 FrIf_StartCommunication으로 시작됩니다. FrSM은 FrSMIsColdstartEcu인 경우에만 FrIf_AllowColdstart을 호출합니다(SWS FrSM 22쪽). 그 후 BswM에 FRSM_STARTUP를 보고합니다. POC 상태가 normal active가 되는 즉시 FrIf_SetState(FRIF_GOTO_ONLINE), 보고 FRSM_ONLINE 및 ComM에 대한 모드 표시가 뒤따릅니다(SWS FrSM 50쪽, SWS FrSM 52쪽).

FRSM_ONLINE까지 단일 채널 웨이크업 및 시작ComMBswMSchMFrSMFrIfDemFrSM_RequestComMode(NetworkHandle,COMM_FULL_COMMUNICATION)E_OKreqComMode gespeichert,메인 함수에서의 평가Use Case: Wecken (FRSM_WAKEUP)FrSM_MainFunction_<FrSMCluster.ShortName>loop클러스터의 모든 컨트롤러 대상FrIf_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>loop클러스터의 모든 컨트롤러 대상FrIf_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)

시퀀스 다이어그램: 메인 함수의 여러 실행에 분산된, FRSM_ONLINE까지의 단일 채널 웨이크업 및 시작. 해석: 실행 내의 순서는 사양 다이어그램에서 재구성되고 단순화되었습니다. 출처: SWS FrSM 50쪽, SWS FrSM 52쪽, [SWS_FrSM_00118]

키 슬롯 전용 동작, 모든 슬롯 릴리스 및 소수의 콜드스타터

컨트롤러가 pKeySlotOnlyEnabled으로 구성된 경우, 시작은 처음에 FRSM_KEYSLOT_ONLY에서 종료됩니다. 이 상태는 vPOCSlotMode ≠ AllSlots인 POC:normal active에 해당합니다(SWS FrSM 18쪽, SWS FrSM 55쪽). 이 상태는 FrSm_AllSlots [SWS_FrSM_00172]을 통해 종료됩니다. 이 함수는 클러스터의 각 컨트롤러에 대해 FrIf_AllSlots을 호출하고 모든 호출에서 E_OK가 발생한 경우에만 E_OK을 반환합니다. 이는 프리컴파일 시점에 FrSMAllSlotsSupport을 통해 비활성화할 수 있습니다(SWS FrSM 41쪽). 사양 다이어그램에 따르면 BswM이 전체 동작을 릴리스합니다. 그 후에만 FrSM이 ComM에 FRSM_ONLINE 및 FullCom을 보고합니다(SWS FrSM 57쪽).

키 슬롯 전용 모드에서의 시작 및 모든 슬롯 해제ComMBswMSchMFrSMFrIfUse Case: Anlauf endet in FRSM_KEYSLOT_ONLYFrSM_MainFunction_<FrSMCluster.ShortName>loop클러스터의 모든 컨트롤러 대상FrIf_GetPOCStatus(CtrlIdx, POCStatusPtr)FR_POCSTATE_NORMAL_ACTIVE,SlotMode = FR_SLOTMODE_KEYSLOTFrIf_SetState(ClstIdx, FRIF_GOTO_ONLINE)BswM_FrSM_CurrentState(FRSM_BSWM_KEYSLOT_ONLY)ComM에 대해서는 NoCom이 계속 유지됨(FrSM_GetCurrentComMode)Use Case: Freigabe aller SlotsFrSm_AllSlots(NetworkHandle)loop클러스터의 모든 컨트롤러 대상FrIf_AllSlots(CtrlIdx)E_OKE_OK (모든 호출이 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)

시퀀스 다이어그램: 2단계 스타트업: 먼저 키 슬롯 전용, 그 후 FrSm_AllSlots을 통한 모든 슬롯 릴리스. 사양 다이어그램은 BswM 보고를 FRSM_ONLINE_KEYSLOT_ONLY로 라벨링하지만, 여기에는 R20-11 값 FRSM_BSWM_KEYSLOT_ONLY이 표시됩니다. 출처: SWS FrSM 57쪽, SWS FrSM 55쪽, [SWS_FrSM_00172], [SWS_FrSM_00199]

FRSM_LOW_NUMBER_OF_COLDSTARTERS은 클러스터가 싱크 프레임을 통해서만 동기화되는 완전한 통신을 의미합니다(SWS FrSM 18쪽). FrIf_GetNumOfStartupFrames()이 선택적 매개변수 FrSMMinNumberOfColdstarter가 지정하는 것보다 적은 수의 스타트업 프레임을 보고하는 경우 조건 lowNumberOfColdstarters가 충족됩니다(SWS FrSM 20쪽).

NoCom으로 복귀 및 클러스터의 타이머

상태 머신이 FRSM_ONLINE, FRSM_KEYSLOT_ONLY, FRSM_LOW_NUMBER_OF_COLDSTARTERS 또는 FRSM_ONLINE_PASSIVE 상태에 있는 동안 NoCom이 요청될 수 있습니다. 이 경우 메인 함수를 기다리지 않고 FrSM_RequestComMode가 이미 전이를 처리합니다(SWS FrSM 36쪽). 여기에는 FrIf_SetState(FRIF_GOTO_OFFLINE), FrIf_HaltCommunication 및 BswM에 대한 HALT_REQ 보고가 포함됩니다. 이후 실행에서 FrSM은 ComM에 NoCom을 보고하고, 컨트롤러를 재초기화하고, 트랜시버를 STANDBY로 전환하고, READY를 보고합니다(SWS FrSM 58쪽).

FullCom에서 NoCom으로의 전이ComMBswMSchMFrSMFrIfFrSM_RequestComMode(NetworkHandle,COMM_NO_COMMUNICATION)소스 상태는 FullCom 상태임:호출 즉시 전이FrIf_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)t_TrcvStdbyDelay 만료 후 또는FrSMTrcvStdbyDelay가 없거나 0인 경우 즉시FrIf_ControllerInit(CtrlIdx)FrIf_SetTransceiverMode(CtrlIdx, ChnlIdx,STANDBY)BswM_FrSM_CurrentState(FRSM_BSWM_READY)

시퀀스 다이어그램: FullCom에서 NoCom으로. 정지는 요청 호출에서 동기적으로 발생하며, 재초기화 및 대기 모드는 메인 함수에서 시간차를 두고 뒤따릅니다. 해석: 순서는 사양 다이어그램에서 재구성되었습니다. 출처: SWS FrSM 58쪽, SWS FrSM 36쪽, [SWS_FrSM_00209]

클러스터당 FrSM은 여러 타이머를 사용하여 작동합니다(SWS FrSM 21쪽):

  • t1은 FrIf_AllowColdstart을 지연시킵니다. FrSMDurationT1 = 0인 경우 호출은 FrIf_StartCommunication 직후에 이어집니다.
  • t2은 시작이 재시도되는 시간을 결정합니다.
  • t3은 FullCom으로의 전이를 모니터링합니다.
  • t4은 듀얼 채널 노드가 콜드스타트 금지 비트를 지우도록 보장합니다.
  • t_TrcvStdbyDelay은 재초기화 및 대기 모드를 지연시킵니다. FrSMTrcvStdbyDelay이 구성되지 않았거나 0인 경우, 상태 머신은 즉시 FRSM_HALT_REQ에서 FRSM_READY [SWS_FrSM_00209]로 전이합니다.

FrSMCluster별 구성 및 인터페이스 상태 R20-11

컨테이너 FrSMCluster(1..*)은 하나의 ECU에서 여러 컨트롤러를 포함할 수 있는 클러스터를 설명합니다. 다음 항목이 포함됩니다:

  • 타이머 FrSMDurationT1부터 FrSMDurationT4까지,
  • 역할 FrSMIsColdstartEcu 및 FrSMIsWakeupEcu,
  • FrSMNumWakeupPatterns 및 FrSMStartupRepetitions,
  • 참조 FrSMComMNetworkHandleRef 및 FrSMFrIfClusterRef.

이러한 내용은 SWS FrSM 62쪽에서 설명합니다. 또한 FrSM_GetVersionInfo 및 FrSMSyncLossErrorIndicationName에 대해 FrSMVersionInfoApi을 일반적으로 구성할 수 있습니다(SystemTemplate 1528쪽, [SWS_FrSM_00029]).

많은 세부 사항은 이후 릴리스에서 가져온 것입니다. R20-11의 경우 요구사항이 적용되며 몇 가지 점에서 차이가 있습니다:

  • 함수 이름은 FrSm_Init, FrSm_AllSlots 및 FrSm_SetEcuPassive이며 FrSm.h을 통해 사용할 수 있습니다.
  • FrSM_RequestComMode의 서비스 ID는 0x02이며 서로 다른 클러스터에 대해 재진입 가능합니다. 이후의 내용은 0x40 및 다른 매개변수 이름을 명시합니다.
  • FrSM_GetCurrentComMode의 서비스 ID는 R20-11에서 0x03입니다.

근거: [SWS_FrSM_00013], [SWS_FrSM_00020], [SWS_FrSM_00024], SWS FrSM 36쪽.

오류가 발생한 경우의 동작

개발 오류에 대해 다음 코드가 정의되어 있습니다 [SWS_FrSM_91001]:

  • FRSM_E_PARAM_POINTER: 잘못된 포인터. 서비스가 즉시 반환됩니다.
  • FRSM_E_INV_HANDLE: 유효하지 않은 네트워크 핸들.
  • FRSM_E_UNINIT: 모듈이 초기화되지 않음.
  • FRSM_E_INV_MODE: 유효하지 않은 통신 모드.
  • FRSM_INIT_FAILED: 초기화 실패.

일부 케이스는 명시적으로 규정되어 있습니다. FrSm_AllSlots은 유효하지 않은 핸들에 대해 FRSM_E_INV_HANDLE을 보고하고 E_NOT_OK를 반환합니다(SWS FrSM 41쪽). FrSm_SetEcuPassive는 초기화 전에 개발 오류를 보고합니다(SWS FrSM 40쪽). FrSM_GetCurrentComMode은 R20-11에서 사전 초기화 없이 E_NOT_OK [SWS_FrSM_00024]을 반환합니다.

버스 레벨에서 FrSM은 다음과 같이 반응합니다:

  • 클록 동기화 오류 시 클러스터는 FRSM_ONLINE_PASSIVE으로 폴백합니다(SWS FrSM 18쪽).
  • 동기화가 성공하지 못하면 FrSM은 FrNm_StartupError을 호출합니다 [SWS_FrSM_00097].
  • 시작은 t2 이후에 반복됩니다(SWS FrSM 21쪽). FrSMStartupRepetitions는 반복 횟수를 제한할 것으로 추정됩니다. 질문 (열림)

FrSM은 시작 상태를 DEM 이벤트 FRSM_E_CLUSTER_STARTUP으로 보고하며, 성공 시에는 PASSED과 함께 보고합니다(SWS FrSM 52쪽). 이벤트 ID는 FrSMClusterDemEventParameterRefs에 있습니다(SWS FrSM 62쪽). 선택적으로 <Cdd>_SyncLossErrorIndication는 true을 통해 동기화 손실에 대해 알립니다. false을 사용하여 이 함수는 다시 동기화되었거나 FullCom 요청이 철회되었음을 나타냅니다 [SWS_FrSM_00190]. 구성된 함수 이름이 없으면 이 보고는 생략됩니다(SystemTemplate 1528쪽).

더 자세한 증거

R20-11의 요구사항 및 일부 이후 릴리스의 관련 사양 구절을 기반으로 AI가 생성한 가이드입니다. 링크된 요구사항이 우선하며, 해석은 그와 같이 표시되어 있습니다.

FlexRay State Manager (FrSM)

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

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

함수 FrSm_Init [SWS_FrSM_00013] 📄 PDF

void FrSm_Init (const FrSM_ConfigType* FrSM_ConfigPtr);

Initializes the Flex Ray State Manager.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 4f916985d2dc 출처 열린 질문 (1)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

함수 FrSm_Init은 명세서 [SWS_FrSM_00013]에 따라 FlexRay State Manager(FrSM)를 초기화하는 역할을 합니다. 서비스 ID 0x01를 가지며 헤더 파일 FrSm.h을 통해 선언됩니다.

사용법 및 매개변수

FrSm_Init의 실행은 동기식으로 수행됩니다 [SWS_FrSM_00013]. 이 호출은 정확히 하나의 입력 매개변수를 받습니다:

  • FrSM_ConfigPtr: 모듈의 초기화 데이터를 제공하는 데 사용되는 const FrSM_ConfigType* 타입의 선택된 구성 구조체에 대한 포인터 [SWS_FrSM_00013].

이 함수는 반환값(void)이 없으며, 입출력 매개변수(inout)나 순수 출력 매개변수(out)도 정의하지 않습니다 [SWS_FrSM_00013].

동시성 및 제약사항

실행 컨텍스트와 관련하여 이 인터페이스는 재진입 불가능(Non Reentrant)으로 분류됩니다 [SWS_FrSM_00013]. 따라서 이 함수의 동시 호출이나 중첩 호출은 허용되지 않습니다. 해석: 이 호출은 일반적으로 FrSM의 정규 통신 또는 제어 서비스가 사용되기 전 시스템 초기화 중에 수행될 것으로 보입니다. 질문 Q-881936607a7268bd (열림)

오류 처리

요소 명세 [SWS_FrSM_00013]에는 반환 코드나 DET 또는 DEM 메시지와 같은 특정 오류 처리 메커니즘이 명시되어 있지 않습니다.

이 사용 지침은 자동으로 생성되었으며 전적으로 AUTOSAR R20-11의 명세 데이터만을 기반으로 합니다.

구현자 가이드 준비 중 (복잡도 I1)

함수 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.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 0805fe94c490 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

사용법 및 의미론

함수 FrSM_RequestComMode은 특정 FlexRay 클러스터에서 통신을 시작하거나 종료하기 위해 Communication Manager (ComM)에 의해 호출됩니다 [SWS_FrSM_00020]. 이 인터페이스는 헤더 FrSm.h을(를) 통해 선언되며 서비스 ID 0x02을(를) 갖습니다 [SWS_FrSM_00020]. 이 서비스는 비동기식으로 명시되어 있으므로 함수는 전환 요청의 수락만을 승인하며, 실제 상태 전이는 후속으로 처리됩니다 [SWS_FrSM_00020].

매개변수 및 반환값

이 함수는 통신 모드를 제어하기 위해 두 개의 입력 매개변수를 기대합니다 [SWS_FrSM_00020]:

  • NetworkHandle (타입 NetworkHandleType): 통신 모드가 요청되는 FlexRay 클러스터를 결정합니다 [SWS_FrSM_00020].
  • ComM_Mode (타입 ComM_ModeType): 지정된 네트워크에 대해 ComM이 원하는 통신 모드를 포함합니다 [SWS_FrSM_00020].

Std_ReturnType 타입의 반환값은 요청 검사 결과를 나타냅니다 [SWS_FrSM_00020]:

  • E_OK: 모드 변경 요청이 성공적으로 수락되었습니다 [SWS_FrSM_00020].
  • E_NOT_OK: 요청이 거부되었으며 수락되지 않았습니다 [SWS_FrSM_00020].

동시성 및 제약사항

규격에 따르면 FrSM_RequestComMode은 서로 다른 FlexRay 클러스터에 대해 재진입 가능하도록 구현되어 있습니다 [SWS_FrSM_00020]. 동일한 FlexRay 클러스터에 대해서는 호출이 재진입 불가능할 것으로 추정되므로, 동일한 인스턴스에 대한 경쟁적 호출은 피해야 합니다. DET 또는 DEM 메시지와 같은 특정 오류 코드는 페이로드에 정의되어 있지 않습니다 [SWS_FrSM_00020].

이 사용 지침은 AUTOSAR Classic R20-11 사양을 기반으로 자동으로 생성되었습니다.

구현자 가이드 준비 중 (복잡도 I1)

함수 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.

함수 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.

함수 FrSm_AllSlots [SWS_FrSM_00172] 📄 PDF

Std_ReturnType FrSm_AllSlots (NetworkHandleType NetworkHandle);

Service FrSm_AllSlots.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: f8b54cb7f004 출처 열린 질문 (1)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

비동기 서비스 함수 FrSm_AllSlots은 헤더 FrSm.h을(를) 통해 제공되며 지정된 FlexRay 클러스터에 대해 이른바 "Key Slot Only Mode"를 종료하는 역할을 합니다 [SWS_FrSM_00172].

호출 및 매개변수: 통신 네트워크를 식별하기 위해 매개변수 NetworkHandle에 전환 모드를 요청할 해당 FlexRay 클러스터가 전달됩니다 [SWS_FrSM_00172]. 추가 전달 매개변수는 존재하지 않습니다 [SWS_FrSM_00172].

반환값 및 시맨틱: 호출은 전환 요청이 성공적으로 수락된 경우 E_OK을(를) 반환하고, 요청이 거부된 경우 E_NOT_OK을(를) 반환합니다 [SWS_FrSM_00172]. 비동기 작업이므로 E_OK은(는) 요청의 접수만을 확인하며, 모든 슬롯의 전체 작동으로의 실제 전이는 상태 관리자 컨텍스트에서 시간 지연을 두고 적용될 것으로 추정됩니다. 질문 Q-d559e4ea5183ff7c (열림)

동시성 및 제약 사항: 이 함수는 서로 다른 FlexRay 클러스터에 대해 재진입이 가능합니다 [SWS_FrSM_00172]. 동일한 클러스터에 대해서는 재진입이 불가능하도록 설계되었으므로, 호출자는 동일한 클러스터에 대한 병렬 요청을 동기화해야 합니다. DET 또는 DEM에 대한 특정 오류 코드는 함수 설명에 언급되어 있지 않습니다.

이 사용 지침은 자동으로 작성되었습니다. 이는 AUTOSAR CP R20-11을 기반으로 합니다.

함수 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.

타입 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.

타입 FrSM_BswM_StateType [SWS_FrSM_00199] 📄 PDF

This type defines the states that are reported to the Bsw

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: a8440a0185d0 출처 열린 질문 (1)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

사용

열거형 타입 FrSM_BswM_StateType은 [SWS_FrSM_00199]에 따라 BswM(Basic Software Mode Manager)에 보고되는 FlexRay State Manager(FrSM)의 상태를 정의합니다. 해당 타입의 선언 및 제공은 헤더 파일 FrSm.h를 통해 이루어집니다 [SWS_FrSM_00199].

상호작용 및 값 범위

이 타입의 값은 인터페이스 BswM_FrSM_CurrentState과 함께 사용되어 현재 작동 및 통신 상태를 BswM 모듈로 전달합니다 [SWS_FrSM_00199]. 값 범위는 다음 열거형 값들을 포함합니다:

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

상태들이 쌍을 이루는 구조가 눈에 띕니다: 각 기본 상태는 정규 상태와 접미사 _ECU_PASSIVE이 붙은 변형을 가집니다. 이는 아마도 FlexRay 클러스터의 통신 상태를 전자제어장치(ECU)의 수동 모드와 결합하여 BswM에 보고함으로써, BswM이 해당 모드 변경을 조정할 수 있도록 하기 위한 것으로 추정됩니다. 질문 Q-f2d9296e40782b5a (열림)

이 텍스트는 AI에 의해 생성되었으며 가이드 역할을 합니다. 참조된 AUTOSAR 사양이 표준입니다.

구현자 가이드 준비 중 (복잡도 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#de01ed77
Content hash
de01ed77
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_FlexRayStateManager.pdf#nameddest=SWS_FrSM_00013

주제 맵

상세 보기

개요에서 항목을 선택하세요.

초기화 및 상태

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 함수

Initializes the Flex Ray State Manager.

void FrSm_Init (const FrSM_ConfigType* FrSM_ConfigPtr);

서비스

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

타입

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.