DEENESPTFRRUARHIKOZHNL

PDU Router (PduR)

ModulPduR (PDU Router)
BSW-Modul-ID51
Standard-Header#include "PduR.h"
SWS-SpezifikationAUTOSAR_SWS_PDURouter.pdf
ClusterCommunication Services

모듈 가이드AI 생성

정적 라우팅 테이블을 통해 상위 통신 모듈과 하위 통신 모듈 간에 I-PDU를 변경 없이 중계합니다.
AI 생성 미검증 모델: claude-opus-5-5 · 노력: high · 온도: 제어 불가 · 프롬프트: 3a20c4ee9a26 출처 열린 질문 (1)
인과 앵커: R20-11 R20-11부터 유효 이 사양 릴리스용으로 새로 합성되었습니다.
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

정적 라우팅 테이블을 통해 상위 통신 모듈과 하위 통신 모듈 간에 I-PDU를 변경 없이 중계합니다.

PDU Router는 Com 및 DCM과 같은 상위 모듈, Communication Interfaces 및 전송 프로토콜 간에 I-PDU를 중계합니다. 이때 구성된 라우팅 경로를 따라 I-PDU ID만 변환하고 내용은 변경하지 않습니다[SWS_PduR_00160]. 주요 작업에는 송신, 수신, TriggerTransmit, 세그먼트화된 TP 전송, 선택적 FIFO 버퍼가 있는 게이트웨이가 포함됩니다. 라우팅은 PduR_Init이 성공한 후 PDUR_ONLINE 상태에서만 독점적으로 수행됩니다[SWS_PduR_00328]. 런타임에는 PduR_EnableRouting 및 PduR_DisableRouting을 통해 라우팅 경로 그룹을 전환할 수 있습니다.

PDU Router는 Com 및 DCM과 같은 상위 모듈, CanIf, FrIf 및 LinIf와 같은 Communication Interfaces, 그리고 전송 프로토콜 간에 I-PDU를 중계합니다. 이때 I-PDU를 변경하지 않으며[SWS_PduR_00160] 구성된 라우팅 경로를 따라서만 라우팅합니다[SWS_PduR_00162]. 주요 기능은 송신 경로는 물론 확인 및 지시 경로에서 I-PDU ID를 변환하는 것입니다[SWS_PduR_00766]. 인터페이스는 일반적(generic)이며, 플레이스홀더 <Up>, <Lo> 및 <LoTp>은(는) 구성에 따라 결정됩니다PduRBswModules [SWS_PduR_00504].

kontext cluster_oben Obere Module (<Up>) cluster_if Communication Interfaces (<Lo>) cluster_tp Transportprotokolle (<LoTp>) Com Com PduR PduR Routing-Tabellen, I-PDU-ID-Umsetzung, Gateway-Puffer Com->PduR PduR_ComTransmit Dcm Dcm Dcm->PduR PduR_<User:Up>Transmit BswM BswM BswM->PduR PduR_EnableRouting, PduR_DisableRouting PduR->Com Com_RxIndication, Com_TxConfirmation, Com_TriggerTransmit PduR->Dcm Dcm_StartOfReception, Dcm_CopyRxData, Dcm_CopyTxData, Dcm_TpRxIndication, Dcm_TpTxConfirmation Det Det PduR->Det 개발 및 런타임 오류 CanIf CanIf PduR->CanIf <Lo>_Transmit FrIf FrIf PduR->FrIf LinIf LinIf PduR->LinIf CanTp CanTp PduR->CanTp <LoTp>_Transmit FrTp FrTp PduR->FrTp LinTp LinTp (in LinIf) PduR->LinTp CanIf->PduR PduR_<User:Lo>RxIndication, TxConfirmation, TriggerTransmit CanTp->PduR PduR_<User:LoTp>StartOfReception, CopyRxData, CopyTxData, RxIndication, TxConfirmation

컨텍스트 다이어그램: PduR은 상위 모듈과 IF 또는 TP 모듈 사이에 위치하며, BswM은 경로 그룹을 전환하고 오류는 DET로 전달됩니다. 출처: [SWS_PduR_00504], SWS PDU Router 16쪽

PduR은 PDUR_UNINIT 및 PDUR_ONLINE 상태만 가집니다[SWS_PduR_00324]. 라우팅은 오직 PDUR_ONLINE에서만 수행됩니다[SWS_PduR_00328]. PduR은 PduR_Init(ConfigPtr)을(를) 통해 이 상태에 도달합니다[SWS_PduR_00334]. 그전에는 오류 감지가 활성화되어 있는 한[SWS_PduR_00119], PduR_Init 및 PduR_GetVersionInfo을(를) 제외한 모든 함수가 PDUR_E_UNINIT 오류를 보고합니다.

zustaende Powerup Powerup UNINIT PDUR_UNINIT 라우팅 없음; PduR_Init 및 PduR_GetVersionInfo 제외 API는 PDUR_E_UNINIT 보고(PduRDevErrorDetect 활성화 시) Powerup->UNINIT immediate ONLINE PDUR_ONLINE 라우팅 테이블에 따른 라우팅 UNINIT->ONLINE 오류 없는 PduR_Init(ConfigPtr): 버퍼 해제, 기본값 설정, 구성된 설정에 따라 라우팅 경로 그룹 활성화 ONLINE->ONLINE erneuter PduR_Init: PDUR_E_UNINIT an DET

상태 다이어그램: 파워업은 PDUR_UNINIT으로 이어지며, 오류 없는 PduR_Init만이 PDUR_ONLINE으로 이어집니다. 출처: [SWS_PduR_00325], [SWS_PduR_00326], SWS PDU Router 그림 7.2 53쪽

동작 중에 PduR은 다음과 같은 프로세스를 처리합니다:

런타임 시 PduR_EnableRouting 및 PduR_DisableRouting은(는) 전체 라우팅 경로 그룹을 전환하며[SWS_PduR_00615] [SWS_PduR_00617], 일반적으로 BswM에 의해 제어됩니다. 비활성화된 경로에서의 호출은 E_NOT_OK(으)로 종료됩니다[SWS_PduR_00717]. PduR은 PDUR_E_PDU_ID_INVALID과(와) 같은 개발 오류를 DET에 보고합니다[SWS_PduR_00100]. FIFO 손실은 PDUR_E_PDU_INSTANCES_LOST(으)로 보고합니다[SWS_PduR_00670]. 인터페이스 경로에는 자체 오류 처리가 없으며, 반환값은 소스로 전달됩니다SWS PDU Router 46쪽.

역할 및 시스템 경계: 상위 모듈, 인터페이스 및 전송 프로토콜 간의 I-PDU 중계

PDU Router(PduR)는 클래식 통신 스택의 중앙 중계 지점입니다. 소스 모듈로부터 I-PDU를 수신하여 하나 이상의 대상 모듈로 변경 없이 일관되게 전송합니다[SWS_PduR_00160]. 라우팅은 오직 구성된 라우팅 경로를 따라서만 수행됩니다[SWS_PduR_00162]. 경로는 PduR 구성의 소스 I-PDU ID와 호출된 대상 모듈 구성의 대상 I-PDU ID라는 두 가지 사양에 의해 고유하게 결정됩니다[SWS_PduR_00161]. 따라서 PduR의 핵심 기능은 I-PDU ID를 변환하는 것입니다. 이는 송신 경로는 물론 확인 및 지시 경로에도 동일하게 적용됩니다[SWS_PduR_00766]. 각 모듈은 자체 핸들 ID를 선택하며, 구성은 이를 \"글로벌\" Pdu를 통해 연결합니다ECU Configuration 그림 3.13 192쪽.

PduR 상위에는 Com 및 DCM과 같은 모듈이 위치합니다. 하위에는 CanIf, FrIf, LinIf와 같은 Communication Interfaces 및 CanTp, FrTp, LinTp와 같은 전송 프로토콜이 위치합니다SWS PDU Router 24쪽. 인터페이스는 일반적(generic)으로 정의됩니다. 플레이스홀더 <Up>, <Lo> 및 <LoTp>은(는) PduRBswModules에서 참조된 모듈 구성을 통해 대체되며, CDD의 경우 해당 apiServicePrefix을(를) 통해 대체됩니다[SWS_PduR_00504] SWS PDU Router 그림 10.2 95쪽. 하위 모듈이 TP와 IF를 모두 지원하는 경우 인픽스 Tp 및 If이(가) 추가됩니다[SWS_PduR_00800].

kontext cluster_oben Obere Module (<Up>) cluster_if Communication Interfaces (<Lo>) cluster_tp Transportprotokolle (<LoTp>) Com Com PduR PduR Routing-Tabellen, I-PDU-ID-Umsetzung, Gateway-Puffer Com->PduR PduR_ComTransmit Dcm Dcm Dcm->PduR PduR_<User:Up>Transmit BswM BswM BswM->PduR PduR_EnableRouting, PduR_DisableRouting PduR->Com Com_RxIndication, Com_TxConfirmation, Com_TriggerTransmit PduR->Dcm Dcm_StartOfReception, Dcm_CopyRxData, Dcm_CopyTxData, Dcm_TpRxIndication, Dcm_TpTxConfirmation Det Det PduR->Det 개발 및 런타임 오류 CanIf CanIf PduR->CanIf <Lo>_Transmit FrIf FrIf PduR->FrIf LinIf LinIf PduR->LinIf CanTp CanTp PduR->CanTp <LoTp>_Transmit FrTp FrTp PduR->FrTp LinTp LinTp (in LinIf) PduR->LinTp CanIf->PduR PduR_<User:Lo>RxIndication, TxConfirmation, TriggerTransmit CanTp->PduR PduR_<User:LoTp>StartOfReception, CopyRxData, CopyTxData, RxIndication, TxConfirmation

컨텍스트 다이어그램: PduR은 상위 모듈과 하위 IF 또는 TP 모듈 사이에 위치합니다. BswM은 라우팅 경로 그룹을 전환하고, 오류는 DET로 전달됩니다. 출처: [SWS_PduR_00504], [SWS_PduR_00615], [SWS_PduR_00119], SWS PDU Router 16쪽

PduRZeroCostOperation이(가) 설정되어 있고 모든 라우팅 경로가 Pre-Compile인 경우, 인접 모듈이 서로 직접 호출할 수 있습니다[SWS_PduR_00287]. 최소 하나의 경로가 Pre-Compile이 아닌 경우 생성기는 오류를 보고해야 합니다[SWS_PduR_00619] SWS PDU Router 56쪽. 생성기는 사용되지 않는 기능, 즉 TP, IF, 게이트웨이 및 FIFO를 최적화를 통해 제거해야 합니다[SWS_PduR_00764].

수명 주기: PDUR_UNINIT에서 PduR_Init을 거쳐 PDUR_ONLINE으로

PduR은 정확히 하나의 상태 머신을 갖습니다[SWS_PduR_00644]. 이는 PduR_StateType [SWS_PduR_00324] [SWS_PduR_00742]의 상태 PDUR_UNINIT 및 PDUR_ONLINE을(를) 갖습니다. 전원을 켠 후 모듈은 PDUR_UNINIT 상태에 있습니다[SWS_PduR_00325]. 성공적인 PduR_Init 후에는 PDUR_ONLINE(으)로 전환됩니다[SWS_PduR_00326]. 라우팅은 오직 PDUR_ONLINE에서만 발생하며[SWS_PduR_00328], PDUR_UNINIT에서는 아무것도 라우팅되지 않습니다[SWS_PduR_00330] SWS PDU Router 그림 7.2 53쪽. 이전 다이어그램에는 잘못된 초기화 후의 추가 상태 PDUR_REDUCED이(가) 표시되어 있습니다SWS PDU Router (alt) 30쪽. R20-11의 경우 두 가지 상태만 존재하므로 이 상태는 적용되지 않습니다.

zustaende Powerup Powerup UNINIT PDUR_UNINIT 라우팅 없음; PduR_Init 및 PduR_GetVersionInfo 제외 API는 PDUR_E_UNINIT 보고(PduRDevErrorDetect 활성화 시) Powerup->UNINIT immediate ONLINE PDUR_ONLINE 라우팅 테이블에 따른 라우팅 UNINIT->ONLINE 오류 없는 PduR_Init(ConfigPtr): 버퍼 해제, 기본값 설정, 구성된 설정에 따라 라우팅 경로 그룹 활성화 ONLINE->ONLINE erneuter PduR_Init: PDUR_E_UNINIT an DET

상태 다이어그램: 파워업 후 PduR은 PDUR_UNINIT 상태에 있으며 라우팅하지 않습니다. 오류 없는 PduR_Init 후에만 PDUR_ONLINE에서 라우팅합니다. 출처: [SWS_PduR_00325], [SWS_PduR_00326], [SWS_PduR_00119], [SWS_PduR_00100], SWS PDU Router 그림 7.2 53쪽

PduR_Init(ConfigPtr)은(는) 동기식이며 재진입이 불가능합니다[SWS_PduR_00334]. 이 함수는 세 가지 작업을 수행합니다:

  • 모든 버퍼를 해제합니다[SWS_PduR_00645].
  • 송신 버퍼의 구성된 기본값을 설정합니다[SWS_PduR_00308].
  • 시작 시 활성화(Enable-at-start) 매개변수에 따라 라우팅 경로 그룹을 활성화합니다[SWS_PduR_00709]. 이후 버전에서는 이 매개변수를 PduRIsEnabledAtInit(으)로 부릅니다SWS PDU Router 131쪽.

초기화 전에는 PduRDevErrorDetect이(가) 활성화되어 있는 한[SWS_PduR_00119], PduR_Init 및 PduR_GetVersionInfo을(를) 제외한 모든 함수가 PDUR_E_UNINIT 오류를 보고합니다. PduR_GetVersionInfo [SWS_PduR_00338]은(는) PduRVersionInfoApi을(를) 통해 활성화됩니다System Template 656쪽.

Post-Build 데이터는 PduR_PBConfigType에 있으며 PduR_PBcfg.c에 구현되어 있습니다[SWS_PduR_00241] [SWS_PduR_00743]. 이는 PduRConfigurationId을(를) 통해 고유하게 식별됩니다[SWS_PduR_00281]. 이 식별자는 PduR_GetConfigurationId [SWS_PduR_00341] [SWS_PduR_00280]을(를) uint16 기반의 PduR_PBConfigIdType(으)로 제공하며, ECU는 선택 가능한 여러 구성을 포함할 수 있습니다[SWS_PduR_00771]. 라우팅 테이블은 Post-Build 시점에 업데이트할 수 있지만[SWS_PduR_00295], 초기화되지 않은 상태에서만 가능합니다[SWS_PduR_00296]. 메모리 요구 사항은 새 구성에 따라 증가할 수 있으므로 설계 시점에 계획해야 합니다SWS PDU Router 160쪽.

Communication Interface 경로: Transmit, TriggerTransmit 및 확인

상위 모듈이 PduR_<User:Up>Transmit을(를) 호출하면[SWS_PduR_00406], PduR은 각 대상에 대해 <Lo>_Transmit을(를) 호출합니다[SWS_PduR_00625]. 이때 버퍼링은 수행하지 않습니다[SWS_PduR_00629]. 반환값에는 다음이 적용됩니다:

멀티캐스트의 대상은 모두 인터페이스이거나 모두 전송 프로토콜이어야 하며, 혼합될 수 없습니다[SWS_PduR_00633].

CanIf는 Transmit 시 데이터를 직접 복사합니다SWS PDU Router 그림 9.5 100쪽. 반면 FrIf 및 LinIf는 나중에 PduR_<User:Lo>TriggerTransmit을(를) 통해 데이터를 가져옵니다[SWS_PduR_00369]. PduR은 이 호출을 <Up>_TriggerTransmit(으)로 전달하고[SWS_PduR_00430] 해당 반환값을 반환합니다[SWS_PduR_00661] SWS PDU Router 그림 9.6 101쪽. PduR_<User:Lo>TxConfirmation [SWS_PduR_00365]은(는) 결과와 함께 <Up>_TxConfirmation(으)로 전달됩니다[SWS_PduR_00627]. 멀티캐스트의 경우 이는 마지막 확인 후에만 발생합니다[SWS_PduR_00589].

Communication Interfaces를 통한 I-PDU 전송ComPduRCanIfFrIfPduR_ComTransmit(TxPduId, PduInfoPtr)Quell-I-PDU-ID in Ziel-I-PDU-ID umsetzenalt직접 데이터 제공 대상 목적지 (CanIf)CanIf_Transmit(PduId, PduInfoPtr)copy data()Std_ReturnTypeTriggerTransmit 대상 목적지 (FrIf, LinIf)FrIf_Transmit(PduId, PduInfoPtr)set flag()Std_ReturnType반환값 (단일 전송은 변경 없음)Use Case: 이후: FlexRay 주기 내 전송 시점PduR_<User:Lo>TriggerTransmit(TxPduId, PduInfoPtr)Com_TriggerTransmit(TxPduId, PduInfoPtr)copy buffer()E_OK, SduLength반환값 변경 없음Use Case: 전송 후PduR_<User:Lo>TxConfirmation(TxPduId, result)Com_TxConfirmation(TxPduId, result)CanIf를 통한 확인도 동일하게 진행됨;멀티캐스트의 경우 마지막 확인 후에만 진행

시퀀스 다이어그램: 직접 데이터 제공(CanIf) 또는 TriggerTransmit을 통한 지연된 데이터 검색(FrIf)을 사용하는 Com으로부터의 송신(각각 후속 확인 포함). 출처: [SWS_PduR_00625], [SWS_PduR_00430], [SWS_PduR_00627], SWS PDU Router 그림 9.5 100쪽, SWS PDU Router 그림 9.6 101쪽

수신 시 PduR_<User:Lo>RxIndication [SWS_PduR_00362]은(는) 각 상위 대상에 대한 <Up>_RxIndication 호출로 이어지며[SWS_PduR_00621], 1:n이 지원됩니다[SWS_PduR_00164] SWS PDU Router 그림 9.1 97쪽. PduR은 로컬 수신 시[SWS_PduR_00744]에도 로컬 송신 시[SWS_PduR_00745]에도 길이를 검사하지 않습니다.

전송 프로토콜 경로: DCM과 TP 모듈 간의 세그먼트화된 I-PDU

TP 송신 시 PduR은 각 대상에 대해 <LoTp>_Transmit을(를) 호출합니다[SWS_PduR_00634]. TP 모듈은 PduR_<User:LoTp>CopyTxData [SWS_PduR_00518]을(를) 통해 데이터를 세그먼트 단위로 가져옵니다. PduR은 각 요청을 <Up>_CopyTxData(으)로 전달하고[SWS_PduR_00299] 반환값을 그대로 전달합니다[SWS_PduR_00676] SWS PDU Router 그림 9.9 104쪽.

멀티캐스트의 경우 상위 계층은 동일한 데이터를 여러 번 제공해야 합니다. 첫 번째 대상의 요청은 TP_CONFPENDING과(와) 함께 상위 계층으로 전달되고[SWS_PduR_00631], 다른 모든 요청은 TP_DATARETRY과(와) 함께 전달됩니다[SWS_PduR_00632]. 상위 계층은 마지막 확인 후에 단 하나의 <Up>_TpTxConfirmation을(를) 받습니다. 이는 최소 하나의 대상이 E_OK을(를) 보고한 경우 E_OK을(를) 보고합니다[SWS_PduR_00765] SWS PDU Router 그림 9.10 83쪽.

Dcm으로부터의 TP 멀티캐스트 전송DcmPduRCanTpFrTpPduR_<User:Up>Transmit(TxPduId, PduInfoPtr)CanTp_Transmit(PduId, PduInfoPtr)Std_ReturnTypeFrTp_Transmit(PduId, PduInfoPtr)Std_ReturnTypeStd_ReturnTypeloop전송의 각 위치 대상PduR_<User:LoTp>CopyTxData(id, info, retry, availableDataPtr)Dcm_CopyTxData(…)TpDataState = TP_CONFPENDINGBufReq_ReturnTypeBufReq_ReturnTypePduR_<User:LoTp>CopyTxData(id, info, retry, availableDataPtr)Dcm_CopyTxData(…)TpDataState = TP_DATARETRYBufReq_ReturnTypeBufReq_ReturnTypePduR_<User:LoTp>TxConfirmation(id, result)PduR_<User:LoTp>TxConfirmation(id, result)마지막 확인 후:최소 하나의 목적지가 E_OK를 보고한 경우 E_OKDcm_TpTxConfirmation(id, result)

시퀀스 다이어그램: DCM의 TP 멀티캐스트 시, PduR은 대상별로 TP_CONFPENDING 또는 TP_DATARETRY를 사용하여 동일한 데이터를 쿼리하고 확인을 통합합니다. 출처: [SWS_PduR_00634], [SWS_PduR_00631], [SWS_PduR_00632], [SWS_PduR_00765], SWS PDU Router 그림 9.10 83쪽

TP 수신은 PduR_<User:LoTp>StartOfReception [SWS_PduR_00507](으)로 시작됩니다. PduR은 이를 <Up>_StartOfReception(으)로 전달하고[SWS_PduR_00549] 해당 반환값을 변경 없이 반환합니다[SWS_PduR_00623]. 그 후 두 가지 전달이 이어집니다:

SduLength 0을 사용한 호출은 사용 가능한 버퍼 또는 사용 가능한 데이터를 쿼리합니다[SWS_PduR_00740] SWS PDU Router 그림 9.4 99쪽. PduR은 중단을 각 대상에 전달합니다. PduR_<User:Up>CancelTransmit은(는) <Lo>_CancelTransmit 또는 <LoTp>_CancelTransmit(으)로 이어집니다[SWS_PduR_00769] [SWS_PduR_00723] [SWS_PduR_00724]. PduR_<User:Up>CancelReceive은(는) <LoTp>_CancelReceive(으)로 이어집니다[SWS_PduR_00727].

TP-Empfang von CanTp an DcmCanTpPduRDcmPduR_<User:LoTp>StartOfReception(id, info, TpSduLength, bufferSizePtr)Dcm_StartOfReception(…)BUFREQ_OK, bufferSizePtr반환값 변경 없음loop각 추가 세그먼트 대상PduR_<User:LoTp>CopyRxData(id, info, bufferSizePtr)Dcm_CopyRxData(…)copy data()BufReq_ReturnTypeBufReq_ReturnTypePduR_<User:LoTp>RxIndication(id, result)Dcm_TpRxIndication(id, result)

시퀀스 다이어그램: CanTp에서 DCM으로의 TP 수신 시 PduR은 StartOfReception, CopyRxData 루프 및 RxIndication을 1:1로 직접 전달합니다. 출처: [SWS_PduR_00549], [SWS_PduR_00428], [SWS_PduR_00429], SWS PDU Router 그림 9.4 99쪽

게이트웨이 동작: 즉시 전달, FIFO 버퍼 및 온더플라이 TP

Communication Interfaces 간에 PduR은 1:n으로[SWS_PduR_00436], 자체 속도 형성(rate adaptation) 없이 즉시 전달 방식으로 라우팅합니다[SWS_PduR_00437]. 게이트웨이는 IF↔IF 또는 TP↔TP로만 수행됩니다[SWS_PduR_00638]. 전달되는 길이에는 다음이 적용됩니다:

  • 버퍼링이 없는 경우 PduR은 수신된 길이와 구성된 대상 길이 중 최소값을 전달합니다[SWS_PduR_00783].
  • 버퍼링이 있는 경우 최대 PduRPduMaxLength을(를) 복사하고 나머지는 폐기합니다[SWS_PduR_00746].

하나의 I-PDU는 로컬로 Com에 전달되는 동시에 두 번째 CAN으로 전달될 수 있습니다SWS PDU Router 그림 9.14 114쪽.

대상이 데이터를 얻는 방식은 PduRDestPduDataProvision에서 정의합니다:

대상 I-PDU당 하나의 FIFO를 구성할 수 있습니다[SWS_PduR_00307]. FIFO 동작은 PduRQueueDepth이(가) 1보다 큰 경우부터 적용됩니다[SWS_PduR_00785]. 액티비티 다이어그램은 입력 및 출력 규칙을 요약합니다[SWS_PduR_00665] [SWS_PduR_00666].

gateway_fifo rx 버퍼링된 게이트웨이 경로에서의 PduR_<SrcLo>RxIndication prov PduRDestPduDataProvision? rx->prov dleer FIFO가 비어 있고 대기 중인 TxConfirmation이 없는가? prov->dleer PDUR_DIRECT tleer FIFO leer? prov->tleer PDUR_TRIGGERTRANSMIT ddirekt <DstLo>_Transmit direkt aufrufen; FIFO bleibt leer dleer->ddirekt 예 voll FIFO voll? dleer->voll 아니요 tkopie I-PDU in FIFO kopieren, <DstLo>_Transmit aufrufen tleer->tkopie 예 tleer->voll 아니요 flush FIFO를 비우고, DET에 PDUR_E_PDU_INSTANCES_LOST 보고; 새 I-PDU를 빈 FIFO의 경우와 동일하게 처리 voll->flush 예 einreihen I-PDU를 가장 최근 항목으로 대기열에 추가 voll->einreihen 아니요 tt PduR_<DstLo>TriggerTransmit ttleer FIFO leer? tt->ttleer ttnok E_NOT_OK 반환 ttleer->ttnok 예 ttok 가장 오래된 항목 복사 및 제거; FIFO가 비어 있지 않음: 가장 오래된 I-PDU로 <DstLo>_Transmit 호출 ttleer->ttok 아니요 conf PduR_<DstLo>TxConfirmation (direkte Datenbereitstellung) confnext FIFO가 비어 있지 않음: 가장 오래된 I-PDU로 <DstLo>_Transmit 호출 후 제거 conf->confnext

액티비티 다이어그램: 데이터 제공 및 FIFO 채움 수준에 따라 게이트웨이된 I-PDU가 즉시 전송되거나, 큐에 대기하거나, 오버플로 후 새로 시작됩니다. TriggerTransmit 및 TxConfirmation은 FIFO를 비웁니다. 출처: [SWS_PduR_00665], [SWS_PduR_00793], [SWS_PduR_00786], [SWS_PduR_00787], [SWS_PduR_00255], [SWS_PduR_00669], [SWS_PduR_00666], [SWS_PduR_00667], [SWS_PduR_00662]

TP 게이트웨이에는 두 가지 방식이 있습니다. Direct Gatewaying에서는 <DstLoTp>_Transmit이(가) RxIndication에서 E_OK(으)로 시작됩니다[SWS_PduR_00551]. On-the-fly-Gatewaying에서는 PduRTpThreshold에 도달하자마자 재전송이 이미 시작됩니다[SWS_PduR_00317]. 이 경우 하나의 대상만 허용되며[SWS_PduR_00708], 이미 전송된 데이터는 반복되지 않습니다[SWS_PduR_00707] SWS PDU Router 58쪽. PduR은 크기에 따라 버퍼를 선택합니다:

  • 메시지가 PduRPduMaxLength에 들어맞는 경우 전용 버퍼를 사용합니다[SWS_PduR_00797].
  • 그렇지 않은 경우 PduRTxBuffer에서 동적으로 버퍼를 가져옵니다[SWS_PduR_00798].

TxConfirmation과 함께 버퍼를 해제합니다[SWS_PduR_00637]. I-PDU를 추가로 로컬에서 수신해야 하는 경우 PduR은 <UpTp>_StartOfReception, <UpTp>_CopyRxData, <UpTp>_RxIndication을(를) 이 순서대로 호출합니다[SWS_PduR_00789]. DCM은 게이트웨이에 대해 알지 못하므로 이를 위해 버퍼링해야 합니다SWS PDU Router 112쪽.

CAN1에서 CAN2로의 TP-I-PDU 온더플라이 게이트웨이CanTp (CAN1, Quelle)PduRCanTp (CAN2, Ziel)PduR_<User:LoTp>StartOfReception(id, info, TpSduLength, bufferSizePtr)버퍼 선택: TpSduLength ≤ PduRPduMaxLength인 경우 전용 버퍼,그 외의 경우 PduRTxBuffer에서 동적 할당BUFREQ_OK (버퍼 없는 경우: BUFREQ_E_OVFL)loopbis PduRTpThreshold erreichtPduR_<User:LoTp>CopyRxData(id, info, bufferSizePtr)copy data()BUFREQ_OKCanTp_Transmit(PduId, PduInfoPtr)Std_ReturnTypeloop남은 세그먼트, 인터리브됨PduR_<User:LoTp>CopyRxData(…)BUFREQ_OKPduR_<User:LoTp>CopyTxData(id, info, retry, availableDataPtr)BUFREQ_OKPduR_<User:LoTp>RxIndication(id, result)PduR_<User:LoTp>TxConfirmation(id, result)해당 목적지에 대한 버퍼 해제단 하나의 대상 TP 모듈만 허용됨;이미 전송된 데이터의 재전송 없음

시퀀스 다이어그램: 두 CAN 네트워크 간의 온더플라이 게이트웨이에서는 임계값에 도달하자마자 재전송이 시작되며, 수신과 송신이 인터리빙되어 실행됩니다. 출처: [SWS_PduR_00317], [SWS_PduR_00708], [SWS_PduR_00797], [SWS_PduR_00799], [SWS_PduR_00637], SWS PDU Router 그림 9.15 110쪽

라우팅 경로 그룹: 런타임에 라우팅 전환

라우팅 경로 그룹은 네트워크 또는 PDU 유형별로 경로를 묶습니다. 이는 일반적으로 BswM에 의해 전환됩니다SWS PDU Router 69쪽. 이를 위해 PduR_EnableRouting(id) [SWS_PduR_00615] 및 PduR_DisableRouting(id, initialize) [SWS_PduR_00617]이(가) 사용되며, 식별자는 uint16 [SWS_PduR_00654] 유형입니다. 활성화는 즉시 적용됩니다[SWS_PduR_00715]. 비활성화 시 다음 규칙이 적용됩니다:

이후 버전에서는 영향을 받는 함수를 명시적으로 열거합니다SWS PDU Router 69쪽.

routinggruppen aufruf PduR_EnableRouting(id) 또는 PduR_DisableRouting(id, initialize) exist Routing-Pfadgruppe id existiert? aufruf->exist det PduRDevErrorDetect aktiv? exist->det 아니요 art Aufruf? exist->art 예 meld PDUR_E_ROUTING_PATH_GROUP_ID_INVALID melden det->meld 예 keine 동작 없이 복귀 det->keine 아니요 meld->keine ein 그룹 즉시 활성화: 후속 Transmit이 즉시 처리됨 art->ein EnableRouting aus Gruppe deaktivieren art->aus DisableRouting fifo FIFO가 있는 경로 (PduRQueueDepth > 1): FIFO 비우기, PDUR_E_PDU_INSTANCES_LOST aus->fifo init initialize = TRUE: 단일 버퍼를 기본값으로 설정 initialize = FALSE: 현재 값 유지 fifo->init gesperrt 비활성화된 경로의 I-PDU-ID를 가진 API: 추가 동작 없이 E_NOT_OK 반환 init->gesperrt

액티비티 다이어그램: 그룹 ID를 알 수 없는 경우 호출은 아무런 동작 없이 반환됩니다(필요 시 DET 보고 포함). 그렇지 않은 경우 그룹이 FIFO 비우기 및 버퍼 처리와 함께 즉시 활성화 또는 비활성화됩니다. 출처: [SWS_PduR_00647], [SWS_PduR_00648], [SWS_PduR_00716], [SWS_PduR_00649], [SWS_PduR_00715], [SWS_PduR_00663], [SWS_PduR_00717]

Mode Management Guide는 LdCom과 같이 Com-I-PDU 그룹이 없는 I-PDU에 경로 그룹을 사용할 것을 권장합니다. 전환은 예를 들어 부분 네트워크(Partial Network) 상태에 따라 BswM 규칙을 통해 수행됩니다Mode Management Guide 50쪽. BswM 액션 BswMPduRouterControl은(는) 이를 위해 PduR_EnableRouting 또는 PduR_DisableRouting을(를) 호출합니다SWS BSW Mode Manager 145쪽. 로컬 모듈로의 n:1 라우팅의 경우 런타임에 최대 하나의 경로만 활성화될 수 있습니다System Template 736쪽 [SWS_PduR_00615].

오류가 발생한 경우의 동작

개발 오류는 [SWS_PduR_00100]에서 정의합니다. 이는 PduRDevErrorDetect이(가) 활성화된 경우에만 보고됩니다[SWS_PduR_00119] [SWS_PduR_00221]. PduR은 프로덕션 오류를 보고하지 않습니다SWS PDU Router 60쪽.

오류 코드값트리거
PDUR_E_INIT_FAILED0x00유효하지 않은 구성 포인터
PDUR_E_UNINIT0x01초기화 전의 API 또는 PDUR_UNINIT 외부에서의 PduR_Init
PDUR_E_PDU_ID_INVALID0x02유효하지 않은 PDU 식별자
PDUR_E_ROUTING_PATH_GROUP_ID_INVALID0x08Enable/Disable 시 알 수 없는 그룹 [SWS_PduR_00648] [SWS_PduR_00649]
PDUR_E_PARAM_POINTER0x09인수로 전달된 널 포인터

런타임 오류 PDUR_E_PDU_INSTANCES_LOST은(는) 세 가지 경우에 발생합니다:

이를 위한 필수 인터페이스로 PduR은 Det_ReportRuntimeError을(를) 사용합니다 [SWS_PduR_91001].

IF 경로에서 PduR은 오류를 직접 처리하지 않습니다. 반환값을 소스로 그대로 전달하고 [SWS_PduR_00626] SWS PDU Router 46쪽 전송을 재시도하지 않습니다 [SWS_PduR_00256]. TP 경로에서도 오류는 반환값을 통해 상위 계층으로 전달됩니다 [SWS_PduR_00700] SWS PDU Router 49쪽. 대상이 여러 개인 경우 E_OK은(는) 모든 대상이 E_OK을(를) 반환할 때만 적용됩니다 [SWS_PduR_00701]. 이 규칙은 TP 멀티캐스트에 적용되는 것으로 보이며, IF 멀티캐스트에는 [SWS_PduR_00218]이(가) 적용됩니다. 오류가 있는 TP-RxIndication의 경우 PduR은 단순히 이를 전달하기만 합니다 [SWS_PduR_00207]. 질문 Q-4bd42fd8dc77ccf2 (열림)

TP 게이트웨이에는 고유한 규칙이 적용됩니다:

  • RxIndication이 E_OK을(를) 보고하지 않으면 PduR은 처리를 중지합니다 [SWS_PduR_00689].
  • On-the-fly 게이트웨이에서 버퍼 공간이 부족하면 BUFREQ_E_NOT_OK을(를) 반환하고 중단합니다 [SWS_PduR_00687].
  • 사용 가능한 버퍼가 전혀 없으면 BUFREQ_E_OVFL을(를) 반환합니다 [SWS_PduR_00799].
  • 하나의 대상에 장애가 발생해도 나머지 대상은 계속 실행됩니다 [SWS_PduR_00803]. 모든 대상에 장애가 발생하면 수신 측을 중지합니다 [SWS_PduR_00804].
  • 로컬 수신에 실패하면 상위 계층과의 세션을 종료하거나 [SWS_PduR_00790] RxIndication을 통해 E_NOT_OK을(를) 보고합니다 [SWS_PduR_00791] [SWS_PduR_00792].

더 자세한 증거

다음 섹션들은 이 가이드의 내용을 뒷받침합니다. 사양의 9장에 나오는 시퀀스는 예를 들어 SWS PDU Router 그림 9.5 100쪽과(와) 같이 이를 시각화합니다.

SWS PDU Router(R20-11)의 요구사항 및 관련 문서 섹션을 기반으로 AI가 생성한 가이드이며, 링크된 요구사항만 규범적입니다. 해석으로 표시된 진술은 사양을 참조하여 확인하십시오.

PDU Router (PduR)

The PDU Router routes I-PDUs between communication interfaces, transport protocols, and upper layers without payload inspection.

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

함수 PduR_Init [SWS_PduR_00334] 📄 PDF

void PduR_Init (const PduR_PBConfigType* ConfigPtr);

Initializes the PDU Router

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

사용

동기 및 비재진입 함수 PduR_Init은(는) PDU 라우터를 초기화합니다 [SWS_PduR_00334]. 매개변수로서 ConfigPtr을(를) 통해 모듈의 포스트 빌드 구성(PduR_PBConfigType)에 대한 포인터를 수신하며 반환값을 제공하지 않습니다 [SWS_PduR_00334]. 초기화의 일환으로 PduR_Init은(는) 모든 PDU 전송 버퍼를 구성된 기본값으로 사전 할당합니다 [SWS_PduR_00308].

상호작용 및 순서 조건

전원을 켠 후 모듈은 처음에 PDUR_UNINIT 상태에 있습니다 [SWS_PduR_00325]. PduRDevErrorDetect이(가) 활성화되어 있는 경우, 다른 인터페이스들은(PduR_GetVersionInfo 제외) 초기화되지 않은 상태에서 DET를 통해 오류 PDUR_E_UNINIT을(를) 보고하므로 PduR_Init은(는) 모듈의 다른 모든 함수보다 먼저 호출되어야 합니다 [SWS_PduR_00119].

오류 처리 및 동시성

PduR_Init이(가) PDUR_UNINIT 이외의 상태에서 호출되면 이는 PDUR_E_UNINIT(으)로 간주됩니다 [SWS_PduR_00100]. 유효하지 않은 구성 포인터가 전달되거나 널 포인터가 전달되는 경우 오류 코드 PDUR_E_INIT_FAILED 또는 PDUR_E_PARAM_POINTER이(가) 적용됩니다 [SWS_PduR_00100]. 재진입성이 없으므로 초기화 루틴의 병렬 호출은 허용되지 않습니다 [SWS_PduR_00334].

이 텍스트는 AUTOSAR 명세 R20-11을 기반으로 AI에 의해 생성되었습니다.

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

함수 PduR_EnableRouting [SWS_PduR_00615] 📄 PDF

void PduR_EnableRouting (PduR_RoutingPathGroupIdType id);

Enables a routing path group.

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

동기식 함수 PduR_EnableRouting(서비스 ID 0xf3)은 PDU 라우터에서 정의된 라우팅 경로 그룹을 활성화하는 데 사용됩니다([SWS_PduR_00615]). 유일한 매개변수로 PDU 라우터 구성의 해당 라우팅 경로 그룹을 지정하는 PduR_RoutingPathGroupIdType 유형의 그룹 식별자 id을(를) 사용합니다([SWS_PduR_00615]). 이 호출은 반환값이 없으며 헤더 파일 PduR.h을(를) 통해 사용할 수 있습니다([SWS_PduR_00615]).

오류 없는 사용을 위해서는 시스템 상태와 매개변수 한계가 결정적입니다. 초기화되지 않은 상태에서 실행하면 오류 PDUR_E_UNINIT이(가) 발생하므로([SWS_PduR_00100]) 호출 전에 PduR 모듈이 완전히 초기화되어 있어야 합니다. 함수 PduR_EnableRouting에 유효하지 않은 라우팅 테이블 또는 경로 그룹 식별자가 전달되는 경우 오류 값 0x08과(와) 함께 오류 PDUR_E_ROUTING_PATH_GROUP_ID_INVALID이(가) 발생합니다([SWS_PduR_00100]).

동시성과 관련하여 이 인터페이스는 재진입 가능(reentrant)으로 선언되어 있으므로([SWS_PduR_00615]), 경로 그룹 제어를 위한 병렬 호출이 기본적으로 허용됩니다. 전체 시스템에서 이 함수는 통신 관계의 동적 활성화 역할을 합니다. 아마도 런타임에 시스템 또는 네트워크 상태에 따라 라우팅 경로를 활성화하기 위해 모드 매니저와 같은 상위 인스턴스에 의해 이 서비스가 전형적으로 트리거될 것으로 보입니다. 질문 Q-365f4b81f59f3511 (열림)

AUTOSAR Classic 명세(Release R20-11)를 기반으로 자동 생성된 사용 지침.

함수 PduR_DisableRouting [SWS_PduR_00617] 📄 PDF

void PduR_DisableRouting (PduR_RoutingPathGroupIdType id, boolean initialize);

Disables a routing path group.

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

동기 함수 PduR_DisableRouting은(는) 구성된 라우팅 경로 그룹([SWS_PduR_00617])을 비활성화하는 데 사용됩니다. 재진입 가능하도록 설계되었으며 반환값이 없습니다([SWS_PduR_00617]).

매개변수 및 동작

  • id (PduR_RoutingPathGroupIdType): PDU 라우터의 구성에 정의된 비활성화할 라우팅 경로 그룹의 식별자([SWS_PduR_00617]).
  • initialize (boolean): 비활성화 시 버퍼 동작을 제어합니다. true 전달 시 싱글 버퍼는 기본값으로 초기화되며, false 전달 시 싱글 버퍼는 현재 값을 유지합니다([SWS_PduR_00617]).

오류 처리 및 제약 조건

오류 발생 시 오류 테이블에 따라 특정 오류 코드가 정의되어 있습니다([SWS_PduR_00100]):

  • 모듈이 초기화되지 않은 상태에서 함수가 호출되면 오류 코드 PDUR_E_UNINIT(0x01)이(가) 제공되도록 되어 있습니다([SWS_PduR_00100]).
  • PduR_DisableRouting에 유효하지 않은 라우팅 테이블 또는 그룹 ID가 전달되면 오류 PDUR_E_ROUTING_PATH_GROUP_ID_INVALID(0x08)이(가) 명시되어 있습니다([SWS_PduR_00100]).

이 함수는 헤더 PduR.h을(를) 통해 사용할 수 있습니다([SWS_PduR_00617]).

이 사용 지침은 명세 요구사항을 기반으로 자동 생성되었습니다.

타입 PduR_PBConfigType [SWS_PduR_00743] 📄 PDF

Data structure containing post-build-time configuration data of the PDU Router.

타입 PduR_PBConfigIdType [SWS_PduR_00771] 📄 PDF

Identification of the post-build configuration currently used for routing I-PDUs. An ECU may contain several configurations (post-build selectable), each have unique Id.

타입 PduR_StateType [SWS_PduR_00742] 📄 PDF

States of the PDU Router

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

열거형 타입 PduR_StateType은(는) [SWS_PduR_00742]에 따라 PDU 라우터의 상태를 지정합니다. 이 데이터 타입은 헤더 파일 PduR.h을(를) 통해 제공되며 호출 컴포넌트뿐만 아니라 모듈 내부에서 각각의 초기화 상태를 표현하기 위한 정형화된 타입 기반의 기반 요소로 PDU 라우터에서 사용됩니다.

요구사항 [SWS_PduR_00324]에 따라 PDU 라우터 모듈은 정확히 두 가지 동작 상태로 구성되며, 이는 PduR_StateType의 열거형 값에 의해 결정됩니다. [SWS_PduR_00742]에 따라 정의된 값 범위에는 다음 값이 포함됩니다:

  • PDUR_UNINIT: PDU 라우터가 초기화되지 않은 상태를 나타냅니다([SWS_PduR_00742]).
  • PDUR_ONLINE: PDU 라우터가 성공적으로 초기화되어 작동 준비가 완료되었음을 알립니다([SWS_PduR_00742]).

사양 요구사항의 상호작용 프레임워크 내에서 PduR_StateType은(는) PDU 라우터의 내부 및 외부 상태 모델([SWS_PduR_00324])에 대한 구속력 있는 규정으로 작동합니다. [SWS_PduR_00742]에 따른 값 범위가 PDUR_UNINIT 및 PDUR_ONLINE(으)로만 엄격히 제한되므로, 사양은 여기서 초기화되지 않은 초기 상태와 성공적인 초기화 후의 상태를 엄격하게 구분합니다. PduR_StateType의 값 범위에는 추가적인 중간 단계, 부분 동작 모드 또는 특정 오류 상태가 제공되지 않습니다.

AUTOSAR 명세서를 기반으로 자동 생성된 사용 지침입니다.

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

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

Record
AUTOSAR/AP/record/CP_MOD_PduR
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_PduR@rel:R20-11#2c44437c
Content hash
2c44437c
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_PDURouter.pdf#nameddest=SWS_PduR_00334

초기화 및 상태

Returns the version information of this module.

void PduR_GetVersionInfo (Std_VersionInfoType* versionInfo);
PduR_Init 함수

Initializes the PDU Router

void PduR_Init (const PduR_PBConfigType* ConfigPtr);

서비스

Disables a routing path group.

void PduR_DisableRouting (PduR_RoutingPathGroupIdType id, boolean initialize);

Enables a routing path group.

void PduR_EnableRouting (PduR_RoutingPathGroupIdType id);

Returns the unique identifier of the post-build time configuration of the PDU Router

PduR_PBConfigIdType PduR_GetConfigurationId (void);

타입

Identification of the post-build configuration currently used for routing I-PDUs. An ECU may contain several configurations (post-build selectable), each have unique Id.

Data structure containing post-build-time configuration data of the PDU Router.

Identification of a Routing Table

States of the PDU Router