DEENESPTFRRUARHIKOZHNL

PDU Router (PduR)

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

Guía del móduloGENERADO POR IA

Intermedia I-PDU sin modificaciones entre módulos de comunicación superiores e inferiores mediante una tabla de enrutamiento estática.
GENERADO POR IA no revisado Modelo: claude-opus-5-5 · Esfuerzo: high · Temperatura: no controlable · Prompt: 3a20c4ee9a26 Procedencia Preguntas abiertas (1)
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

Intermedia I-PDU sin modificaciones entre módulos de comunicación superiores e inferiores mediante una tabla de enrutamiento estática.

El PDU Router transmite I-PDUs entre módulos superiores como Com y DCM, Communication Interfaces y protocolos de transporte. Al hacerlo, solo traduce los ID de I-PDU a lo largo de rutas de enrutamiento configuradas y no modifica el contenido [SWS_PduR_00160]. Entre sus funciones se encuentran la transmisión, la recepción, TriggerTransmit, transmisiones TP segmentadas y pasarelas con búfer FIFO opcional. El enrutamiento se realiza exclusivamente en el estado PDUR_ONLINE tras un PduR_Init exitoso [SWS_PduR_00328]. En tiempo de ejecución, los grupos de rutas de enrutamiento pueden conmutarse mediante PduR_EnableRouting y PduR_DisableRouting.

El PDU Router transmite I-PDUs entre módulos superiores como Com y DCM, Communication Interfaces como CanIf, FrIf y LinIf, así como protocolos de transporte. Para ello, no modifica las I-PDUs [SWS_PduR_00160] y solo enruta a lo largo de rutas de enrutamiento configuradas [SWS_PduR_00162]. Su función principal es la traducción de los ID de I-PDU tanto en la ruta de transmisión como en las rutas de confirmación e indicación [SWS_PduR_00766]. Las interfaces son genéricas; los marcadores de posición <Up>, <Lo> y <LoTp> se derivan de la configuración 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 Errores de desarrollo y de tiempo de ejecución 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

Diagrama de contexto: El PduR se sitúa entre los módulos superiores y los módulos IF o TP; BswM conmuta grupos de rutas, los errores se envían al DET. Fuentes: [SWS_PduR_00504], SWS PDU Router p. 16

El PduR solo conoce los estados PDUR_UNINIT y PDUR_ONLINE [SWS_PduR_00324]. El enrutamiento se realiza exclusivamente en PDUR_ONLINE [SWS_PduR_00328]. Llega allí mediante PduR_Init(ConfigPtr) [SWS_PduR_00334]. Antes de esto, todas las funciones excepto PduR_Init y PduR_GetVersionInfo notifican el error PDUR_E_UNINIT, siempre que la detección de errores esté activa [SWS_PduR_00119].

zustaende Powerup Powerup UNINIT PDUR_UNINIT sin enrutamiento; APIs excepto PduR_Init y PduR_GetVersionInfo notifican PDUR_E_UNINIT (con PduRDevErrorDetect) Powerup->UNINIT immediate ONLINE PDUR_ONLINE enrutamiento según tablas de enrutamiento UNINIT->ONLINE PduR_Init(ConfigPtr) sin errores: liberar búferes, establecer valores por defecto, activar grupos de rutas de enrutamiento según configuración ONLINE->ONLINE erneuter PduR_Init: PDUR_E_UNINIT an DET

Diagrama de estados: El encendido conduce a PDUR_UNINIT; solo un PduR_Init sin errores conduce a PDUR_ONLINE. Fuentes: [SWS_PduR_00325], [SWS_PduR_00326], SWS PDU Router Fig. 7.2 p. 53

Durante el funcionamiento, el PduR asume los siguientes procesos:

En tiempo de ejecución, PduR_EnableRouting y PduR_DisableRouting conmutan grupos completos de rutas de enrutamiento [SWS_PduR_00615] [SWS_PduR_00617], controlados habitualmente por el BswM. Las llamadas en una ruta desactivada terminan con E_NOT_OK [SWS_PduR_00717]. El PduR notifica los errores de desarrollo como PDUR_E_PDU_ID_INVALID al DET [SWS_PduR_00100]. Notifica las pérdidas de FIFO como PDUR_E_PDU_INSTANCES_LOST [SWS_PduR_00670]. No existe un tratamiento de errores propio en las rutas de interfaz; los valores de retorno van a la fuente SWS PDU Router p. 46.

Rol y límite del sistema: Transmisión de I-PDUs entre módulos superiores, interfaces y protocolos de transporte

El PDU Router (PduR) es el intermediario central de la pila de comunicación clásica. Recibe I-PDUs de un módulo de origen y las transmite sin cambios y de forma coherente a uno o más módulos de destino [SWS_PduR_00160]. El enrutamiento se realiza exclusivamente a lo largo de las rutas de enrutamiento configuradas [SWS_PduR_00162]. Una ruta se determina inequívocamente mediante dos datos: el ID de I-PDU de origen de la configuración del PduR y los ID de I-PDU de destino de las configuraciones de los módulos de destino invocados [SWS_PduR_00161]. Por lo tanto, la función principal del PduR es la traducción de los ID de I-PDU. Esta aplica tanto a la ruta de transmisión como a las rutas de confirmación e indicación [SWS_PduR_00766]. Cada módulo selecciona sus propios identificadores de manejador; la configuración los vincula mediante la Pdu «global» ECU Configuration Fig. 3.13 p. 192.

Por encima del PduR se encuentran módulos como Com y DCM. Por debajo se sitúan Communication Interfaces como CanIf, FrIf y LinIf, así como protocolos de transporte como CanTp, FrTp y LinTp SWS PDU Router p. 24. Las interfaces están definidas de forma genérica. Los marcadores de posición <Up>, <Lo> y <LoTp> se sustituyen mediante la configuración de módulo referenciada en PduRBswModules, y en el caso de los CDD mediante su apiServicePrefix [SWS_PduR_00504] SWS PDU Router Fig. 10.2 p. 95. Si un módulo inferior admite tanto TP como IF, se añaden los infijos Tp y 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 Errores de desarrollo y de tiempo de ejecución 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

Diagrama de contexto: El PduR se sitúa entre los módulos superiores y los módulos inferiores IF o TP; BswM conmuta grupos de rutas de enrutamiento, los errores van al DET. Fuentes: [SWS_PduR_00504], [SWS_PduR_00615], [SWS_PduR_00119], SWS PDU Router p. 16

Si PduRZeroCostOperation está configurado y todas las rutas de enrutamiento son de precompilación, los módulos adyacentes pueden llamarse directamente entre sí [SWS_PduR_00287]. Si al menos una ruta no es de precompilación, el generador debe notificar un error [SWS_PduR_00619] SWS PDU Router p. 56. El generador debe optimizar eliminando las características no utilizadas, es decir, TP, IF, pasarela y FIFO [SWS_PduR_00764].

Ciclo de vida: de PDUR_UNINIT a PDUR_ONLINE a través de PduR_Init

El PduR dispone exactamente de una máquina de estados [SWS_PduR_00644]. Esta cuenta con los estados PDUR_UNINIT y PDUR_ONLINE de PduR_StateType [SWS_PduR_00324] [SWS_PduR_00742]. Tras el encendido, el módulo se encuentra en PDUR_UNINIT [SWS_PduR_00325]. Tras un PduR_Init exitoso, cambia a PDUR_ONLINE [SWS_PduR_00326]. El enrutamiento solo tiene lugar en PDUR_ONLINE [SWS_PduR_00328]; en PDUR_UNINIT no se enruta nada [SWS_PduR_00330] SWS PDU Router Fig. 7.2 p. 53. Un diagrama más antiguo muestra adicionalmente un estado PDUR_REDUCED tras una inicialización fallida SWS PDU Router (alt) p. 30. Para R20-11 este estado no aplica, ya que aquí solo existen dos estados.

zustaende Powerup Powerup UNINIT PDUR_UNINIT sin enrutamiento; APIs excepto PduR_Init y PduR_GetVersionInfo notifican PDUR_E_UNINIT (con PduRDevErrorDetect) Powerup->UNINIT immediate ONLINE PDUR_ONLINE enrutamiento según tablas de enrutamiento UNINIT->ONLINE PduR_Init(ConfigPtr) sin errores: liberar búferes, establecer valores por defecto, activar grupos de rutas de enrutamiento según configuración ONLINE->ONLINE erneuter PduR_Init: PDUR_E_UNINIT an DET

Diagrama de estados: Tras el encendido, el PduR se encuentra en PDUR_UNINIT y no enruta; solo tras un PduR_Init sin errores enruta en PDUR_ONLINE. Fuentes: [SWS_PduR_00325], [SWS_PduR_00326], [SWS_PduR_00119], [SWS_PduR_00100], SWS PDU Router Fig. 7.2 p. 53

PduR_Init(ConfigPtr) es sincrónico y no reentrante [SWS_PduR_00334]. La función realiza tres tareas:

Antes de la inicialización, todas las funciones excepto PduR_Init y PduR_GetVersionInfo notifican el error PDUR_E_UNINIT, siempre que PduRDevErrorDetect esté activo [SWS_PduR_00119]. PduR_GetVersionInfo [SWS_PduR_00338] se habilita mediante PduRVersionInfoApi System Template p. 656.

Los datos post-build se encuentran en PduR_PBConfigType y están implementados en PduR_PBcfg.c [SWS_PduR_00241] [SWS_PduR_00743]. Se identifican unívocamente mediante PduRConfigurationId [SWS_PduR_00281]. Esta identificación la proporciona PduR_GetConfigurationId [SWS_PduR_00341] [SWS_PduR_00280] como PduR_PBConfigIdType basado en uint16; una unidad de control puede contener varias configuraciones seleccionables [SWS_PduR_00771]. Las tablas de enrutamiento pueden actualizarse en tiempo de post-build [SWS_PduR_00295], aunque solo en estado no inicializado [SWS_PduR_00296]. El consumo de memoria puede aumentar con una nueva configuración y, por tanto, debe planificarse en el momento del diseño SWS PDU Router p. 160.

Rutas de Communication Interface: Transmit, TriggerTransmit y confirmaciones

Si un módulo superior llama a PduR_<User:Up>Transmit [SWS_PduR_00406], el PduR llama a <Lo>_Transmit para cada destino [SWS_PduR_00625]. Para ello, no almacena en búfer [SWS_PduR_00629]. Para el valor de retorno aplica:

Los destinos de una multidifusión son o bien todas interfaces o bien todos protocolos de transporte, nunca mezclados [SWS_PduR_00633].

CanIf copia los datos directamente durante la transmisión SWS PDU Router Fig. 9.5 p. 100. FrIf y LinIf, en cambio, los recuperan más tarde mediante PduR_<User:Lo>TriggerTransmit [SWS_PduR_00369]. El PduR reenvía esta llamada a <Up>_TriggerTransmit [SWS_PduR_00430] y devuelve su valor de retorno [SWS_PduR_00661] SWS PDU Router Fig. 9.6 p. 101. PduR_<User:Lo>TxConfirmation [SWS_PduR_00365] se reenvía junto con el resultado a <Up>_TxConfirmation [SWS_PduR_00627]. En caso de multidifusión, esto solo sucede tras la última confirmación [SWS_PduR_00589].

transmisión de una I-PDU a través de Communication InterfacesComPduRCanIfFrIfPduR_ComTransmit(TxPduId, PduInfoPtr)Quell-I-PDU-ID in Ziel-I-PDU-ID umsetzenaltdestino con provisión directa de datos (CanIf)CanIf_Transmit(PduId, PduInfoPtr)copy data()Std_ReturnTypedestino con TriggerTransmit (FrIf, LinIf)FrIf_Transmit(PduId, PduInfoPtr)set flag()Std_ReturnTypevalor de retorno (singlecast sin cambios)Use Case: más tarde: instante de transmisión en el ciclo FlexRayPduR_<User:Lo>TriggerTransmit(TxPduId, PduInfoPtr)Com_TriggerTransmit(TxPduId, PduInfoPtr)copy buffer()E_OK, SduLengthvalor de retorno sin cambiosUse Case: tras la transmisiónPduR_<User:Lo>TxConfirmation(TxPduId, result)Com_TxConfirmation(TxPduId, result)la confirmación a través de CanIf se ejecuta igual;en multicast, solo tras la última confirmación

Diagrama de secuencias: Transmisión desde Com con suministro directo de datos (CanIf) o con recuperación diferida de datos mediante TriggerTransmit (FrIf), en cada caso con la confirmación posterior. Fuentes: [SWS_PduR_00625], [SWS_PduR_00430], [SWS_PduR_00627], SWS PDU Router Fig. 9.5 p. 100, SWS PDU Router Fig. 9.6 p. 101

Durante la recepción, PduR_<User:Lo>RxIndication [SWS_PduR_00362] da lugar a una llamada a <Up>_RxIndication para cada destino superior [SWS_PduR_00621]; se admite 1:n [SWS_PduR_00164] SWS PDU Router Fig. 9.1 p. 97. El PduR no comprueba la longitud ni en la recepción local [SWS_PduR_00744] ni en la transmisión local [SWS_PduR_00745].

Rutas de protocolos de transporte: I-PDUs segmentadas entre DCM y módulos TP

Durante la transmisión TP, el PduR llama a <LoTp>_Transmit para cada destino [SWS_PduR_00634]. El módulo TP recupera los datos por secciones mediante PduR_<User:LoTp>CopyTxData [SWS_PduR_00518]. El PduR reenvía cada solicitud a <Up>_CopyTxData [SWS_PduR_00299] y transmite el valor de retorno [SWS_PduR_00676] SWS PDU Router Fig. 9.9 p. 104.

En multidifusión, la capa superior debe suministrar los mismos datos varias veces. La solicitud del primer destino va con TP_CONFPENDING a la capa superior [SWS_PduR_00631], y todas las posteriores con TP_DATARETRY [SWS_PduR_00632]. La capa superior recibe una única <Up>_TpTxConfirmation tras la última confirmación. Esta notifica E_OK si al menos un destino ha notificado E_OK [SWS_PduR_00765] SWS PDU Router Fig. 9.10 p. 83.

Envío multicast TP desde el DcmDcmPduRCanTpFrTpPduR_<User:Up>Transmit(TxPduId, PduInfoPtr)CanTp_Transmit(PduId, PduInfoPtr)Std_ReturnTypeFrTp_Transmit(PduId, PduInfoPtr)Std_ReturnTypeStd_ReturnTypelooppara cada posición de la transmisiónPduR_<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)tras la última confirmación:E_OK si al menos un destino notificó E_OKDcm_TpTxConfirmation(id, result)

Diagrama de secuencias: En multidifusión TP desde el DCM, el PduR consulta los mismos datos para cada destino con TP_CONFPENDING o TP_DATARETRY y agrega las confirmaciones. Fuentes: [SWS_PduR_00634], [SWS_PduR_00631], [SWS_PduR_00632], [SWS_PduR_00765], SWS PDU Router Fig. 9.10 p. 83

La recepción TP comienza con PduR_<User:LoTp>StartOfReception [SWS_PduR_00507]. El PduR la reenvía a <Up>_StartOfReception [SWS_PduR_00549] y devuelve su valor de retorno sin cambios [SWS_PduR_00623]. A continuación siguen dos reenvíos:

Una llamada con SduLength 0 consulta el búfer disponible o los datos disponibles [SWS_PduR_00740] SWS PDU Router Fig. 9.4 p. 99. El PduR transmite las cancelaciones a cada destino. PduR_<User:Up>CancelTransmit da lugar a <Lo>_CancelTransmit o <LoTp>_CancelTransmit [SWS_PduR_00769] [SWS_PduR_00723] [SWS_PduR_00724]. PduR_<User:Up>CancelReceive da lugar a <LoTp>_CancelReceive [SWS_PduR_00727].

TP-Empfang von CanTp an DcmCanTpPduRDcmPduR_<User:LoTp>StartOfReception(id, info, TpSduLength, bufferSizePtr)Dcm_StartOfReception(…)BUFREQ_OK, bufferSizePtrvalor de retorno sin cambioslooppara cada segmento adicionalPduR_<User:LoTp>CopyRxData(id, info, bufferSizePtr)Dcm_CopyRxData(…)copy data()BufReq_ReturnTypeBufReq_ReturnTypePduR_<User:LoTp>RxIndication(id, result)Dcm_TpRxIndication(id, result)

Diagrama de secuencias: En la recepción TP de CanTp a DCM, el PduR transmite directamente 1:1 StartOfReception, el bucle CopyRxData y RxIndication. Fuentes: [SWS_PduR_00549], [SWS_PduR_00428], [SWS_PduR_00429], SWS PDU Router Fig. 9.4 p. 99

Modo pasarela: reenvío inmediato, búfer FIFO y TP sobre la marcha

Entre Communication Interfaces, el PduR enruta 1:n [SWS_PduR_00436] y con reenvío inmediato, es decir, sin generación propia de tasas [SWS_PduR_00437]. La función de pasarela solo se realiza IF↔IF o TP↔TP [SWS_PduR_00638]. Para la longitud transmitida aplica:

  • Sin almacenamiento en búfer, el PduR transmite el mínimo entre la longitud recibida y la longitud de destino configurada [SWS_PduR_00783].
  • Con almacenamiento en búfer, copia como máximo PduRPduMaxLength y descarta el resto [SWS_PduR_00746].

Una I-PDU puede enviarse simultáneamente de forma local a Com y reenviarse a un segundo CAN SWS PDU Router Fig. 9.14 p. 114.

El modo en que el destino obtiene los datos lo determina PduRDestPduDataProvision:

Se puede configurar una FIFO por cada I-PDU de destino [SWS_PduR_00307]. El comportamiento FIFO se aplica a partir de PduRQueueDepth mayor que 1 [SWS_PduR_00785]. El diagrama de actividades resume las reglas de entrada y salida [SWS_PduR_00665] [SWS_PduR_00666].

gateway_fifo rx PduR_<SrcLo>RxIndication en ruta de gateway con búfer prov PduRDestPduDataProvision? rx->prov dleer ¿FIFO vacía y ninguna TxConfirmation pendiente? prov->dleer PDUR_DIRECT tleer FIFO leer? prov->tleer PDUR_TRIGGERTRANSMIT ddirekt <DstLo>_Transmit direkt aufrufen; FIFO bleibt leer dleer->ddirekt Sí voll FIFO voll? dleer->voll No tkopie I-PDU in FIFO kopieren, <DstLo>_Transmit aufrufen tleer->tkopie Sí tleer->voll No flush vaciar FIFO, PDUR_E_PDU_INSTANCES_LOST a DET; tratar la nueva I-PDU como en una FIFO vacía voll->flush Sí einreihen encolar la I-PDU como entrada más reciente voll->einreihen No tt PduR_<DstLo>TriggerTransmit ttleer FIFO leer? tt->ttleer ttnok devolver E_NOT_OK ttleer->ttnok Sí ttok copiar y eliminar la entrada más antigua; FIFO no vacía: <DstLo>_Transmit con la I-PDU más antigua ttleer->ttok No conf PduR_<DstLo>TxConfirmation (direkte Datenbereitstellung) confnext FIFO no vacía: <DstLo>_Transmit con la I-PDU más antigua, eliminar después conf->confnext

Diagrama de actividades: En función del suministro de datos y del nivel de llenado de la FIFO, una I-PDU transmitida mediante pasarela se envía de inmediato, se pone en cola o se reinicia tras un desbordamiento; TriggerTransmit y TxConfirmation vacían la FIFO. Fuentes: [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]

Para las pasarelas TP existen dos procedimientos. En la pasarela directa, <DstLoTp>_Transmit se inicia en la RxIndication con E_OK [SWS_PduR_00551]. En la pasarela sobre la marcha, la retransmisión ya se inicia en cuanto se alcanza PduRTpThreshold [SWS_PduR_00317]. En ese caso solo se permite un destino [SWS_PduR_00708], y los datos ya enviados no se repiten [SWS_PduR_00707] SWS PDU Router p. 58. El PduR selecciona el búfer según el tamaño:

  • Si el mensaje cabe en PduRPduMaxLength, utiliza el búfer dedicado [SWS_PduR_00797].
  • En caso contrario, obtiene dinámicamente un búfer de PduRTxBuffer [SWS_PduR_00798].

Con la TxConfirmation libera el búfer [SWS_PduR_00637]. Si la I-PDU debe recibirse adicionalmente de forma local, el PduR llama a <UpTp>_StartOfReception, <UpTp>_CopyRxData y <UpTp>_RxIndication en este orden [SWS_PduR_00789]. Para ello debe almacenar en búfer, ya que el DCM no tiene conocimiento de la pasarela SWS PDU Router p. 112.

Pasarela on-the-fly de una TP-I-PDU de CAN1 a CAN2CanTp (CAN1, Quelle)PduRCanTp (CAN2, Ziel)PduR_<User:LoTp>StartOfReception(id, info, TpSduLength, bufferSizePtr)Seleccionar búfer: dedicado si TpSduLength ≤ PduRPduMaxLength,en caso contrario dinámico desde PduRTxBufferBUFREQ_OK (sin búfer: BUFREQ_E_OVFL)loopbis PduRTpThreshold erreichtPduR_<User:LoTp>CopyRxData(id, info, bufferSizePtr)copy data()BUFREQ_OKCanTp_Transmit(PduId, PduInfoPtr)Std_ReturnTypeloopsegmentos restantes, entrelazadosPduR_<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)liberar búfer para este destinoSolo se permite un módulo TP de destino;sin retransmisión de datos ya enviados

Diagrama de secuencias: En la pasarela sobre la marcha entre dos redes CAN, la retransmisión comienza ya al alcanzar el umbral; la recepción y el envío se ejecutan de manera intercalada. Fuentes: [SWS_PduR_00317], [SWS_PduR_00708], [SWS_PduR_00797], [SWS_PduR_00799], [SWS_PduR_00637], SWS PDU Router Fig. 9.15 p. 110

Grupos de rutas de enrutamiento: conmutar el enrutamiento en tiempo de ejecución

Los grupos de rutas de enrutamiento agrupan rutas por red o por tipo de PDU. Habitualmente los conmuta el BswM SWS PDU Router p. 69. Para ello sirven PduR_EnableRouting(id) [SWS_PduR_00615] y PduR_DisableRouting(id, initialize) [SWS_PduR_00617]; el identificador es de tipo uint16 [SWS_PduR_00654]. La activación tiene efecto inmediato [SWS_PduR_00715]. Al desactivar se aplican las siguientes reglas:

Versiones posteriores enumeran explícitamente las funciones afectadas SWS PDU Router p. 69.

routinggruppen aufruf PduR_EnableRouting(id) o PduR_DisableRouting(id, initialize) exist Routing-Pfadgruppe id existiert? aufruf->exist det PduRDevErrorDetect aktiv? exist->det No art Aufruf? exist->art Sí meld PDUR_E_ROUTING_PATH_GROUP_ID_INVALID melden det->meld Sí keine retorno sin acción det->keine No meld->keine ein activar grupo inmediatamente: el transmit subsiguiente se atiende directamente art->ein EnableRouting aus Gruppe deaktivieren art->aus DisableRouting fifo rutas con FIFO (PduRQueueDepth > 1): vaciar FIFO, PDUR_E_PDU_INSTANCES_LOST aus->fifo init initialize = TRUE: búfer individual al valor por defecto initialize = FALSE: mantener valor actual fifo->init gesperrt APIs con I-PDU-ID de una ruta desactivada: E_NOT_OK sin acción adicional init->gesperrt

Diagrama de actividades: En caso de un ID de grupo desconocido, la llamada regresa sin acción (dado el caso con notificación al DET); de lo contrario, el grupo se activa o desactiva de inmediato, con vaciado de FIFO y tratamiento de búfer. Fuentes: [SWS_PduR_00647], [SWS_PduR_00648], [SWS_PduR_00716], [SWS_PduR_00649], [SWS_PduR_00715], [SWS_PduR_00663], [SWS_PduR_00717]

La Mode Management Guide recomienda los grupos de rutas para I-PDUs sin grupo de I-PDU de Com, por ejemplo para LdCom. La conmutación se realiza mediante reglas de BswM, por ejemplo en función del estado de red parcial Mode Management Guide p. 50. La acción de BswM BswMPduRouterControl llama para ello a PduR_EnableRouting o PduR_DisableRouting SWS BSW Mode Manager p. 145. En el enrutamiento n:1 a un módulo local, solo puede estar activa como máximo una ruta en tiempo de ejecución System Template p. 736 [SWS_PduR_00615].

Comportamiento en caso de error

[SWS_PduR_00100] define los errores de desarrollo. Solo se notifican si PduRDevErrorDetect está activo [SWS_PduR_00119] [SWS_PduR_00221]. El PduR no notifica errores de producción SWS PDU Router p. 60.

código de errorValorDesencadenante
PDUR_E_INIT_FAILED0x00puntero de configuración no válido
PDUR_E_UNINIT0x01API antes de la inicialización o PduR_Init fuera de PDUR_UNINIT
PDUR_E_PDU_ID_INVALID0x02identificador de PDU no válido
PDUR_E_ROUTING_PATH_GROUP_ID_INVALID0x08grupo desconocido en Enable/Disable [SWS_PduR_00648] [SWS_PduR_00649]
PDUR_E_PARAM_POINTER0x09puntero nulo como argumento

El error de tiempo de ejecución PDUR_E_PDU_INSTANCES_LOST se produce en tres casos:

Como interfaz obligatoria para ello, el PduR utiliza Det_ReportRuntimeError [SWS_PduR_91001].

En rutas IF, el PduR no procesa los errores por sí mismo. Transmite los valores de retorno a la fuente [SWS_PduR_00626] SWS PDU Router p. 46 y no reintenta ninguna transmisión [SWS_PduR_00256]. También en rutas TP los errores se envían a la capa superior mediante el valor de retorno [SWS_PduR_00700] SWS PDU Router p. 49. Con múltiples destinos, E_OK solo aplica si todos los destinos devuelven E_OK [SWS_PduR_00701]. Es probable que esta regla se refiera a multidifusión TP, mientras que para multidifusión IF aplica [SWS_PduR_00218]. Pregunta Q-4bd42fd8dc77ccf2 (abierta) El PduR simplemente reenvía las RxIndications erróneas de TP [SWS_PduR_00207].

En las pasarelas TP aplican reglas propias:

Más evidencia detallada

Los siguientes pasajes sustentan las afirmaciones de esta guía. Las secuencias del capítulo 9 de la especificación las ilustran, por ejemplo SWS PDU Router Fig. 9.5 p. 100.

Guía generada por IA sobre la base de los requisitos del SWS PDU Router (R20-11) y pasajes de documentos asociados; solo los requisitos enlazados son normativos. Por favor, compruebe en la especificación las afirmaciones marcadas como interpretación.

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

función PduR_Init [SWS_PduR_00334] 📄 PDF

void PduR_Init (const PduR_PBConfigType* ConfigPtr);

Initializes the PDU Router

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

usar

La función síncrona y no reentrante PduR_Init inicializa el router de PDU [SWS_PduR_00334]. Como parámetro asume con ConfigPtr un puntero a la configuración post-build del módulo (PduR_PBConfigType) y no devuelve ningún valor [SWS_PduR_00334]. En el marco de la inicialización, PduR_Init inicializa previamente todos los búferes de transmisión de PDU con los valores predeterminados configurados [SWS_PduR_00308].

Interacción y condiciones de orden

Tras el encendido, el módulo se encuentra inicialmente en el estado PDUR_UNINIT [SWS_PduR_00325]. PduR_Init debe llamarse antes que todas las demás funciones del módulo, ya que otras interfaces —a excepción de PduR_GetVersionInfo— notifican el error PDUR_E_UNINIT a través del DET en estado no inicializado, siempre que PduRDevErrorDetect esté activado [SWS_PduR_00119].

Tratamiento de errores y concurrencia

Si se llama a PduR_Init en un estado distinto de PDUR_UNINIT, esto se considera como PDUR_E_UNINIT [SWS_PduR_00100]. En caso de un puntero de configuración no válido o de que se pase un puntero nulo, se aplican los códigos de error PDUR_E_INIT_FAILED y PDUR_E_PARAM_POINTER respectivamente [SWS_PduR_00100]. Debido a la falta de reentrancia, no debe producirse ninguna llamada paralela a la rutina de inicialización [SWS_PduR_00334].

Este texto fue generado por una IA basándose en la especificación AUTOSAR R20-11.

Guía del implementador pendiente (complejidad I1)

función PduR_EnableRouting [SWS_PduR_00615] 📄 PDF

void PduR_EnableRouting (PduR_RoutingPathGroupIdType id);

Enables a routing path group.

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

La función síncrona PduR_EnableRouting (Service-ID 0xf3) sirve para la activación selectiva de un grupo de rutas de enrutamiento definido en el PDU Router ([SWS_PduR_00615]). Como único parámetro toma el identificador de grupo id de tipo PduR_RoutingPathGroupIdType, que direcciona el grupo de rutas de enrutamiento correspondiente en la configuración del PDU Router ([SWS_PduR_00615]). La invocación no tiene valor de retorno y está disponible a través del archivo de cabecera PduR.h ([SWS_PduR_00615]).

Para un uso sin errores, los estados del sistema y los límites de los parámetros son determinantes: antes de la invocación, el módulo PduR debe estar completamente inicializado, ya que la ejecución en estado no inicializado desencadena el error PDUR_E_UNINIT ([SWS_PduR_00100]). Si se transfiere a la función PduR_EnableRouting un identificador de tabla de enrutamiento o de grupo de rutas no válido, esto provoca el error PDUR_E_ROUTING_PATH_GROUP_ID_INVALID con el valor de error 0x08 ([SWS_PduR_00100]).

En cuanto a la concurrencia, la interfaz está declarada como reentrante ([SWS_PduR_00615]), por lo que las invocaciones paralelas para el control de grupos de rutas son admisibles por principio. En el sistema global, la función sirve para la habilitación dinámica de relaciones de comunicación; presumiblemente, el servicio es activado típicamente por instancias superiores como el gestor de modos para activar rutas de enrutamiento en tiempo de ejecución en función de los estados del sistema o de la red. Pregunta Q-365f4b81f59f3511 (abierta)

Nota de uso generada automáticamente a partir de la especificación AUTOSAR Classic (Release R20-11).

función PduR_DisableRouting [SWS_PduR_00617] 📄 PDF

void PduR_DisableRouting (PduR_RoutingPathGroupIdType id, boolean initialize);

Disables a routing path group.

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

La función síncrona PduR_DisableRouting sirve para desactivar un grupo de rutas de enrutamiento configurado ([SWS_PduR_00617]). Está diseñada como reentrante y no posee valor de retorno ([SWS_PduR_00617]).

Parámetros y comportamiento

  • id (PduR_RoutingPathGroupIdType): Identificación del grupo de rutas de enrutamiento que se va a desactivar, tal como está definido en la configuración del PDU Router ([SWS_PduR_00617]).
  • initialize (boolean): Controla el comportamiento del búfer al desactivar. Si se transfiere true, los búferes individuales (single-buffers) se inicializan a su valor predeterminado; con false, los búferes individuales mantienen su valor actual ([SWS_PduR_00617]).

Tratamiento de errores y condiciones límite

En caso de error, según la tabla de errores se definen códigos de error específicos ([SWS_PduR_00100]):

  • Si se invoca la función sin que el módulo esté inicializado, está previsto el código de error PDUR_E_UNINIT (0x01) ([SWS_PduR_00100]).
  • Si se transfiere a PduR_DisableRouting una tabla de enrutamiento o una ID de grupo no válida, se especifica el error PDUR_E_ROUTING_PATH_GROUP_ID_INVALID (0x08) ([SWS_PduR_00100]).

La función está disponible a través del encabezado PduR.h ([SWS_PduR_00617]).

Esta nota de uso ha sido generada automáticamente sobre la base de los requisitos de la especificación.

tipo PduR_PBConfigType [SWS_PduR_00743] 📄 PDF

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

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

tipo PduR_StateType [SWS_PduR_00742] 📄 PDF

States of the PDU Router

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

El tipo de enumeración PduR_StateType especifica según [SWS_PduR_00742] los estados del router de PDU. El tipo de datos se pone a disposición a través del archivo de cabecera PduR.h y sirve en el router de PDU como base formal tipada para representar el estado de inicialización correspondiente dentro del módulo, así como para los componentes llamadores.

Según el requisito [SWS_PduR_00324], el módulo del router de PDU consta exactamente de dos estados de funcionamiento, que quedan determinados por los valores de enumeración de PduR_StateType. El rango de valores definido según [SWS_PduR_00742] comprende los siguientes valores:

  • PDUR_UNINIT: Identifica el estado en el que el router de PDU no está inicializado ([SWS_PduR_00742]).
  • PDUR_ONLINE: Señaliza que el router de PDU se ha inicializado con éxito y está listo para el servicio ([SWS_PduR_00742]).

En el marco de la interacción de los requisitos de especificación, PduR_StateType actúa como definición vinculante para el modelo de estados interno y externo del router de PDU ([SWS_PduR_00324]). Dado que el rango de valores según [SWS_PduR_00742] está limitado exclusivamente a PDUR_UNINIT y PDUR_ONLINE, la especificación distingue aquí estrictamente entre el estado inicial no inicializado y el estado tras una inicialización correcta. No se prevén fases intermedias adicionales, modos de funcionamiento parciales ni estados de error específicos en el rango de valores de PduR_StateType.

Nota de uso generada automáticamente a partir de la especificación AUTOSAR.

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_PduR
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_PduR@rel:R20-11#3520ffad
Content hash
3520ffad
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_PDURouter.pdf#nameddest=SWS_PduR_00334

Inicialización y estado

Returns the version information of this module.

void PduR_GetVersionInfo (Std_VersionInfoType* versionInfo);
PduR_Init función

Initializes the PDU Router

void PduR_Init (const PduR_PBConfigType* ConfigPtr);

Servicios

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

Tipos

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