DEENESPTFRRUARHIKOZHNL

PDU Router (PduR)

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

Guide du moduleGÉNÉRÉ PAR IA

Transmet les I-PDU de manière inchangée entre les modules de communication supérieurs et inférieurs au moyen d'une table de routage statique.
GÉNÉRÉ PAR IA non vérifié Modèle : claude-opus-5-5 · Effort : high · Température : non réglable · Prompt : 3a20c4ee9a26 Provenance Questions ouvertes (1)
Ancre causale : R20-11 Valable à partir de R20-11 Synthétisé pour cette version de spécification.
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand

Transmet les I-PDU de manière inchangée entre les modules de communication supérieurs et inférieurs au moyen d'une table de routage statique.

Le PDU Router transmet les I-PDU entre des modules supérieurs tels que Com et DCM, des interfaces de communication et des protocoles de transport. Pour cela, il convertit uniquement les ID d'I-PDU le long des chemins de routage configurés et ne modifie pas le contenu [SWS_PduR_00160]. Ses tâches comprennent l'émission, la réception, TriggerTransmit, les transmissions TP segmentées et les passerelles avec tampon FIFO optionnel. Le routage s'effectue exclusivement dans l'état PDUR_ONLINE après un PduR_Init réussi [SWS_PduR_00328]. Lors de l'exécution, les groupes de chemins de routage peuvent être activés ou désactivés via PduR_EnableRouting et PduR_DisableRouting.

Le PDU Router transmet les I-PDU entre des modules supérieurs tels que Com et DCM, des interfaces de communication telles que CanIf, FrIf et LinIf ainsi que des protocoles de transport. Ce faisant, il ne modifie pas les I-PDU [SWS_PduR_00160] et route uniquement le long des chemins de routage configurés [SWS_PduR_00162]. Sa prestation clé est la conversion des ID d'I-PDU sur le chemin d'émission ainsi que sur le chemin de confirmation et d'indication [SWS_PduR_00766]. Les interfaces sont génériques ; les espaces réservés <Up>, <Lo> et <LoTp> découlent de la configuration 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 erreurs de développement et d'exécution 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

Diagramme de contexte : le PduR se situe entre les modules supérieurs et les modules IF ou TP ; BswM commute les groupes de chemins, les erreurs vont au DET. Sources : [SWS_PduR_00504], SWS PDU Router p. 16

Le PduR ne connaît que les états PDUR_UNINIT et PDUR_ONLINE [SWS_PduR_00324]. Le routage s'effectue exclusivement dans PDUR_ONLINE [SWS_PduR_00328]. Il y parvient par PduR_Init(ConfigPtr) [SWS_PduR_00334]. Auparavant, toutes les fonctions sauf PduR_Init et PduR_GetVersionInfo signalent l'erreur PDUR_E_UNINIT, pour autant que la détection d'erreurs soit active [SWS_PduR_00119].

zustaende Powerup Powerup UNINIT PDUR_UNINIT pas de routage ; les API hormis PduR_Init et PduR_GetVersionInfo signalent PDUR_E_UNINIT (si PduRDevErrorDetect) Powerup->UNINIT immediate ONLINE PDUR_ONLINE routage selon les tables de routage UNINIT->ONLINE PduR_Init(ConfigPtr) sans erreur : libérer les tampons, définir les valeurs par défaut, activer les groupes de chemins de routage selon la configuration ONLINE->ONLINE erneuter PduR_Init: PDUR_E_UNINIT an DET

Diagramme d'états : la mise sous tension mène à PDUR_UNINIT ; seul un PduR_Init sans erreur mène à PDUR_ONLINE. Sources : [SWS_PduR_00325], [SWS_PduR_00326], SWS PDU Router Fig. 7.2 p. 53

En fonctionnement, le PduR prend en charge les flux suivants :

Lors de l'exécution, PduR_EnableRouting et PduR_DisableRouting commutent des groupes entiers de chemins de routage [SWS_PduR_00615] [SWS_PduR_00617], typiquement pilotés par BswM. Les appels sur un chemin désactivé se terminent par E_NOT_OK [SWS_PduR_00717]. Le PduR signale les erreurs de développement telles que PDUR_E_PDU_ID_INVALID au DET [SWS_PduR_00100]. Il signale les pertes FIFO comme PDUR_E_PDU_INSTANCES_LOST [SWS_PduR_00670]. Il n'existe pas de traitement d'erreur propre sur les chemins d'interface ; les valeurs de retour vont à la source SWS PDU Router p. 46.

Rôle et frontière du système : transmission d'I-PDU entre modules supérieurs, interfaces et protocoles de transport

Le PDU Router (PduR) est le point central de transmission de la pile de communication classique. Il reçoit des I-PDU d'un module source et les transmet de façon inchangée et cohérente à un ou plusieurs modules de destination [SWS_PduR_00160]. Le routage s'effectue exclusivement le long des chemins de routage configurés [SWS_PduR_00162]. Un chemin est déterminé de manière unique par deux indications : l'ID d'I-PDU source issue de la configuration du PduR et les ID d'I-PDU cibles issues des configurations des modules cibles appelés [SWS_PduR_00161]. La fonction essentielle du PduR est donc la conversion des ID d'I-PDU. Elle s'applique au chemin d'émission ainsi qu'au chemin de confirmation et d'indication [SWS_PduR_00766]. Chaque module choisit lui-même ses identifiants de gestion (Handle IDs) ; la configuration les relie via la Pdu « globale » ECU Configuration Fig. 3.13 p. 192.

Au-dessus du PduR se trouvent des modules tels que Com et DCM. En dessous se trouvent des interfaces de communication telles que CanIf, FrIf et LinIf ainsi que des protocoles de transport tels que CanTp, FrTp et LinTp SWS PDU Router p. 24. Les interfaces sont définies de manière générique. Les espaces réservés <Up>, <Lo> et <LoTp> sont remplacés via la configuration de module référencée dans PduRBswModules, pour les CDD via leur apiServicePrefix [SWS_PduR_00504] SWS PDU Router Fig. 10.2 p. 95. Si un module inférieur prend en charge à la fois TP et IF, les infixes Tp et If s'ajoutent [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 erreurs de développement et d'exécution 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

Diagramme de contexte : le PduR se situe entre les modules supérieurs et les modules inférieurs IF ou TP ; BswM commute les groupes de chemins de routage, les erreurs vont au DET. Sources : [SWS_PduR_00504], [SWS_PduR_00615], [SWS_PduR_00119], SWS PDU Router p. 16

Si PduRZeroCostOperation est activé et que tous les chemins de routage sont précompilés (Pre-Compile), les modules voisins peuvent s'appeler directement [SWS_PduR_00287]. Si au moins un chemin n'est pas Pre-Compile, le générateur doit signaler une erreur [SWS_PduR_00619] SWS PDU Router p. 56. Le générateur doit éliminer par optimisation les fonctionnalités inutilisées, c'est-à-dire TP, IF, passerelle et FIFO [SWS_PduR_00764].

Cycle de vie : de PDUR_UNINIT à PDUR_ONLINE via PduR_Init

Le PduR possède exactement une machine à états [SWS_PduR_00644]. Elle comporte les états PDUR_UNINIT et PDUR_ONLINE issus de PduR_StateType [SWS_PduR_00324] [SWS_PduR_00742]. Après la mise sous tension, le module est dans PDUR_UNINIT [SWS_PduR_00325]. Après un PduR_Init réussi, il passe à PDUR_ONLINE [SWS_PduR_00326]. Le routage n'a lieu que dans PDUR_ONLINE [SWS_PduR_00328] ; rien n'est routé dans PDUR_UNINIT [SWS_PduR_00330] SWS PDU Router Fig. 7.2 p. 53. Un schéma plus ancien montre en plus un état PDUR_REDUCED après une initialisation défaillante SWS PDU Router (alt) p. 30. Pour R20-11, cet état ne s'applique pas car il n'existe que deux états.

zustaende Powerup Powerup UNINIT PDUR_UNINIT pas de routage ; les API hormis PduR_Init et PduR_GetVersionInfo signalent PDUR_E_UNINIT (si PduRDevErrorDetect) Powerup->UNINIT immediate ONLINE PDUR_ONLINE routage selon les tables de routage UNINIT->ONLINE PduR_Init(ConfigPtr) sans erreur : libérer les tampons, définir les valeurs par défaut, activer les groupes de chemins de routage selon la configuration ONLINE->ONLINE erneuter PduR_Init: PDUR_E_UNINIT an DET

Diagramme d'états : après la mise sous tension, le PduR est dans PDUR_UNINIT et ne route pas ; ce n'est qu'après un PduR_Init sans erreur qu'il route dans PDUR_ONLINE. Sources : [SWS_PduR_00325], [SWS_PduR_00326], [SWS_PduR_00119], [SWS_PduR_00100], SWS PDU Router Fig. 7.2 p. 53

PduR_Init(ConfigPtr) est synchrone et non réentrant [SWS_PduR_00334]. La fonction accomplit trois choses :

Avant l'initialisation, toutes les fonctions sauf PduR_Init et PduR_GetVersionInfo signalent l'erreur PDUR_E_UNINIT, pour autant que PduRDevErrorDetect soit actif [SWS_PduR_00119]. PduR_GetVersionInfo [SWS_PduR_00338] est débloqué via PduRVersionInfoApi System Template p. 656.

Les données post-build se trouvent dans PduR_PBConfigType et sont implémentées dans PduR_PBcfg.c [SWS_PduR_00241] [SWS_PduR_00743]. Elles sont identifiées de manière unique via PduRConfigurationId [SWS_PduR_00281]. PduR_GetConfigurationId [SWS_PduR_00341] [SWS_PduR_00280] fournit cet identifiant sous forme d'un PduR_PBConfigIdType basé sur uint16 ; un calculateur peut contenir plusieurs configurations sélectionnables [SWS_PduR_00771]. Les tables de routage peuvent être mises à jour au moment post-build [SWS_PduR_00295], toutefois uniquement à l'état non initialisé [SWS_PduR_00296]. Le besoin en mémoire peut augmenter avec une nouvelle configuration et doit donc être planifié lors de la conception SWS PDU Router p. 160.

Chemins d'interface de communication : Transmit, TriggerTransmit et confirmations

Si un module supérieur appelle PduR_<User:Up>Transmit [SWS_PduR_00406], le PduR appelle <Lo>_Transmit pour chaque destination [SWS_PduR_00625]. Ce faisant, il n'effectue pas de mise en tampon [SWS_PduR_00629]. Pour la valeur de retour :

Les destinations d'un multicast sont soit toutes des interfaces, soit toutes des protocoles de transport, jamais un mélange [SWS_PduR_00633].

CanIf copie les données directement lors de Transmit SWS PDU Router Fig. 9.5 p. 100. En revanche, FrIf et LinIf les récupèrent plus tard via PduR_<User:Lo>TriggerTransmit [SWS_PduR_00369]. Le PduR achemine cet appel vers <Up>_TriggerTransmit [SWS_PduR_00430] et renvoie sa valeur de retour [SWS_PduR_00661] SWS PDU Router Fig. 9.6 p. 101. PduR_<User:Lo>TxConfirmation [SWS_PduR_00365] est transmis à <Up>_TxConfirmation avec le résultat [SWS_PduR_00627]. En cas de multicast, cela ne se produit qu'après la dernière confirmation [SWS_PduR_00589].

Émission d'une I-PDU via les interfaces de communicationComPduRCanIfFrIfPduR_ComTransmit(TxPduId, PduInfoPtr)Quell-I-PDU-ID in Ziel-I-PDU-ID umsetzenaltDestination avec mise à disposition directe des données (CanIf)CanIf_Transmit(PduId, PduInfoPtr)copy data()Std_ReturnTypeDestination avec TriggerTransmit (FrIf, LinIf)FrIf_Transmit(PduId, PduInfoPtr)set flag()Std_ReturnTypeValeur de retour (singlecast inchangée)Use Case: Plus tard : instant d'émission dans le cycle FlexRayPduR_<User:Lo>TriggerTransmit(TxPduId, PduInfoPtr)Com_TriggerTransmit(TxPduId, PduInfoPtr)copy buffer()E_OK, SduLengthValeur de retour inchangéeUse Case: Après la transmissionPduR_<User:Lo>TxConfirmation(TxPduId, result)Com_TxConfirmation(TxPduId, result)La confirmation via CanIf se déroule de la même manière ;en multicast, seulement après la dernière confirmation

Diagramme de séquence : émission depuis Com avec fourniture directe des données (CanIf) ou avec récupération différée des données par TriggerTransmit (FrIf), chacune suivie d'une confirmation. Sources : [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

Lors de la réception, PduR_<User:Lo>RxIndication [SWS_PduR_00362] entraîne un appel de <Up>_RxIndication pour chaque destination supérieure [SWS_PduR_00621] ; le 1:n est pris en charge [SWS_PduR_00164] SWS PDU Router Fig. 9.1 p. 97. Le PduR ne vérifie la longueur ni lors de la réception locale [SWS_PduR_00744] ni lors de l'émission locale [SWS_PduR_00745].

Chemins de protocole de transport : I-PDU segmentées entre DCM et modules TP

Lors de l'émission TP, le PduR appelle <LoTp>_Transmit pour chaque destination [SWS_PduR_00634]. Le module TP récupère les données par tronçons via PduR_<User:LoTp>CopyTxData [SWS_PduR_00518]. Le PduR achemine chaque demande vers <Up>_CopyTxData [SWS_PduR_00299] et relaie la valeur de retour [SWS_PduR_00676] SWS PDU Router Fig. 9.9 p. 104.

En cas de multicast, la couche supérieure doit fournir les mêmes données plusieurs fois. La demande de la première destination va à la couche supérieure avec TP_CONFPENDING [SWS_PduR_00631], toutes les autres avec TP_DATARETRY [SWS_PduR_00632]. Après la dernière confirmation, la couche supérieure reçoit une unique <Up>_TpTxConfirmation. Celle-ci signale E_OK si au moins une destination a signalé E_OK [SWS_PduR_00765] SWS PDU Router Fig. 9.10 p. 83.

Émission TP multicast depuis le DcmDcmPduRCanTpFrTpPduR_<User:Up>Transmit(TxPduId, PduInfoPtr)CanTp_Transmit(PduId, PduInfoPtr)Std_ReturnTypeFrTp_Transmit(PduId, PduInfoPtr)Std_ReturnTypeStd_ReturnTypelooppour chaque position de la transmissionPduR_<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)après la dernière confirmation :E_OK si au moins une destination a signalé E_OKDcm_TpTxConfirmation(id, result)

Diagramme de séquence : lors d'un multicast TP issu du DCM, le PduR interroge les mêmes données pour chaque destination avec TP_CONFPENDING ou TP_DATARETRY et consolide les confirmations. Sources : [SWS_PduR_00634], [SWS_PduR_00631], [SWS_PduR_00632], [SWS_PduR_00765], SWS PDU Router Fig. 9.10 p. 83

La réception TP commence par PduR_<User:LoTp>StartOfReception [SWS_PduR_00507]. Le PduR l'achemine vers <Up>_StartOfReception [SWS_PduR_00549] et renvoie son retour de façon inchangée [SWS_PduR_00623]. Deux réacheminements suivent ensuite :

Un appel avec SduLength 0 interroge le tampon disponible ou les données disponibles [SWS_PduR_00740] SWS PDU Router Fig. 9.4 p. 99. Le PduR transmet les annulations à chaque destination. PduR_<User:Up>CancelTransmit mène à <Lo>_CancelTransmit ou <LoTp>_CancelTransmit [SWS_PduR_00769] [SWS_PduR_00723] [SWS_PduR_00724]. PduR_<User:Up>CancelReceive mène à <LoTp>_CancelReceive [SWS_PduR_00727].

TP-Empfang von CanTp an DcmCanTpPduRDcmPduR_<User:LoTp>StartOfReception(id, info, TpSduLength, bufferSizePtr)Dcm_StartOfReception(…)BUFREQ_OK, bufferSizePtrValeur de retour inchangéelooppour chaque segment supplémentairePduR_<User:LoTp>CopyRxData(id, info, bufferSizePtr)Dcm_CopyRxData(…)copy data()BufReq_ReturnTypeBufReq_ReturnTypePduR_<User:LoTp>RxIndication(id, result)Dcm_TpRxIndication(id, result)

Diagramme de séquence : lors de la réception TP de CanTp vers DCM, le PduR relaie 1:1 StartOfReception, la boucle CopyRxData et RxIndication. Sources : [SWS_PduR_00549], [SWS_PduR_00428], [SWS_PduR_00429], SWS PDU Router Fig. 9.4 p. 99

Fonctionnement en passerelle : transfert immédiat, tampon FIFO et TP à la volée (on-the-fly)

Entre interfaces de communication, le PduR effectue le routage en 1:n [SWS_PduR_00436] et avec un transfert immédiat, c'est-à-dire sans cadence propre [SWS_PduR_00437]. La fonction passerelle ne s'applique qu'en IF↔IF ou TP↔TP [SWS_PduR_00638]. Pour la longueur transmise :

  • Sans mise en tampon, le PduR transmet le minimum entre la longueur reçue et la longueur de destination configurée [SWS_PduR_00783].
  • Avec mise en tampon, il copie au maximum PduRPduMaxLength et ignore le reste [SWS_PduR_00746].

Une I-PDU peut simultanément aller localement vers Com et être réacheminée vers un deuxième CAN SWS PDU Router Fig. 9.14 p. 114.

PduRDestPduDataProvision définit la manière dont la destination obtient les données :

Une FIFO est configurable pour chaque I-PDU cible [SWS_PduR_00307]. Le comportement FIFO s'applique dès que PduRQueueDepth est supérieur à 1 [SWS_PduR_00785]. Le diagramme d'activité récapitule les règles d'entrée et de sortie [SWS_PduR_00665] [SWS_PduR_00666].

gateway_fifo rx PduR_<SrcLo>RxIndication sur le chemin de passerelle mis en tampon prov PduRDestPduDataProvision? rx->prov dleer FIFO vide et aucune TxConfirmation en attente ? prov->dleer PDUR_DIRECT tleer FIFO leer? prov->tleer PDUR_TRIGGERTRANSMIT ddirekt <DstLo>_Transmit direkt aufrufen; FIFO bleibt leer dleer->ddirekt Oui voll FIFO voll? dleer->voll Non tkopie I-PDU in FIFO kopieren, <DstLo>_Transmit aufrufen tleer->tkopie Oui tleer->voll Non flush Vider la FIFO, PDUR_E_PDU_INSTANCES_LOST au DET ; traiter la nouvelle I-PDU comme pour une FIFO vide voll->flush Oui einreihen Enfiler l'I-PDU comme entrée la plus récente voll->einreihen Non tt PduR_<DstLo>TriggerTransmit ttleer FIFO leer? tt->ttleer ttnok Renvoyer E_NOT_OK ttleer->ttnok Oui ttok copier et supprimer l'entrée la plus ancienne ; FIFO non vide : <DstLo>_Transmit avec l'I-PDU la plus ancienne ttleer->ttok Non conf PduR_<DstLo>TxConfirmation (direkte Datenbereitstellung) confnext FIFO non vide : <DstLo>_Transmit avec l'I-PDU la plus ancienne, puis la supprimer conf->confnext

Diagramme d'activité : selon la fourniture des données et le niveau de remplissage de la FIFO, une I-PDU passée en passerelle est immédiatement émise, mise en file d'attente ou recommencée après un dépassement ; TriggerTransmit et TxConfirmation vident la FIFO. Sources : [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]

Il existe deux méthodes pour les passerelles TP. En routage de passerelle direct (Direct Gatewaying), <DstLoTp>_Transmit démarre dans la RxIndication avec E_OK [SWS_PduR_00551]. Dans le cas du routage de passerelle à la volée (On-the-fly-Gatewaying), la retransmission démarre dès que PduRTpThreshold est atteint [SWS_PduR_00317]. Dans ce cas, une seule destination est autorisée [SWS_PduR_00708], et les données déjà émises ne sont pas répétées [SWS_PduR_00707] SWS PDU Router p. 58. Le PduR choisit le tampon en fonction de la taille :

  • Si le message tient dans PduRPduMaxLength, il utilise le tampon dédié [SWS_PduR_00797].
  • Sinon, il récupère dynamiquement un tampon dans PduRTxBuffer [SWS_PduR_00798].

Il libère le tampon avec la TxConfirmation [SWS_PduR_00637]. Si l'I-PDU doit en plus être reçue localement, le PduR appelle <UpTp>_StartOfReception, <UpTp>_CopyRxData et <UpTp>_RxIndication dans cet ordre [SWS_PduR_00789]. Pour cela, il doit mettre en mémoire tampon car le DCM n'a pas connaissance de la passerelle SWS PDU Router p. 112.

Passerelle à la volée d'une I-PDU TP de CAN1 vers CAN2CanTp (CAN1, Quelle)PduRCanTp (CAN2, Ziel)PduR_<User:LoTp>StartOfReception(id, info, TpSduLength, bufferSizePtr)Sélectionner le tampon : dédié si TpSduLength ≤ PduRPduMaxLength,sinon dynamique depuis PduRTxBufferBUFREQ_OK (sans tampon : BUFREQ_E_OVFL)loopbis PduRTpThreshold erreichtPduR_<User:LoTp>CopyRxData(id, info, bufferSizePtr)copy data()BUFREQ_OKCanTp_Transmit(PduId, PduInfoPtr)Std_ReturnTypeloopsegments restants, entrelacésPduR_<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)Libérer le tampon pour cette destinationUn seul module TP de destination autorisé ;pas de retransmission des données déjà transmises

Diagramme de séquence : dans le cas d'une passerelle à la volée entre deux réseaux CAN, la retransmission commence dès que le seuil est atteint ; réception et émission s'exécutent de façon imbriquée. Sources : [SWS_PduR_00317], [SWS_PduR_00708], [SWS_PduR_00797], [SWS_PduR_00799], [SWS_PduR_00637], SWS PDU Router Fig. 9.15 p. 110

Groupes de chemins de routage : commuter le routage lors de l'exécution

Les groupes de chemins de routage regroupent des chemins par réseau ou par type de PDU. Ils sont généralement commutés par le BswM SWS PDU Router p. 69. PduR_EnableRouting(id) [SWS_PduR_00615] et PduR_DisableRouting(id, initialize) [SWS_PduR_00617] servent à cet effet ; l'identifiant est du type uint16 [SWS_PduR_00654]. L'activation prend effet immédiatement [SWS_PduR_00715]. Lors de la désactivation, les règles suivantes s'appliquent :

Des versions ultérieures énumèrent explicitement les fonctions concernées SWS PDU Router p. 69.

routinggruppen aufruf PduR_EnableRouting(id) ou PduR_DisableRouting(id, initialize) exist Routing-Pfadgruppe id existiert? aufruf->exist det PduRDevErrorDetect aktiv? exist->det Non art Aufruf? exist->art Oui meld PDUR_E_ROUTING_PATH_GROUP_ID_INVALID melden det->meld Oui keine Retour sans action det->keine Non meld->keine ein Activer immédiatement le groupe : le Transmit suivant est directement traité art->ein EnableRouting aus Gruppe deaktivieren art->aus DisableRouting fifo Chemins avec FIFO (PduRQueueDepth > 1) : vider la FIFO, PDUR_E_PDU_INSTANCES_LOST aus->fifo init initialize = TRUE : tampon unique à la valeur par défaut initialize = FALSE : conserver la valeur actuelle fifo->init gesperrt API avec ID d'I-PDU d'un chemin désactivé : E_NOT_OK sans autre action init->gesperrt

Diagramme d'activité : si l'ID de groupe est inconnue, l'appel revient sans action (le cas échéant avec message DET) ; sinon, le groupe est immédiatement activé ou désactivé, avec vidage de la FIFO et gestion des tampons. Sources : [SWS_PduR_00647], [SWS_PduR_00648], [SWS_PduR_00716], [SWS_PduR_00649], [SWS_PduR_00715], [SWS_PduR_00663], [SWS_PduR_00717]

Le Mode Management Guide recommande les groupes de chemins de routage pour les I-PDU sans groupe d'I-PDU Com, par exemple pour LdCom. La commutation s'effectue via des règles BswM, par exemple en fonction de l'état du Partial Network Mode Management Guide p. 50. L'action BswM BswMPduRouterControl appelle à cet effet PduR_EnableRouting ou PduR_DisableRouting SWS BSW Mode Manager p. 145. En cas de routage n:1 vers un module local, au plus un chemin peut être actif à l'exécution System Template p. 736 [SWS_PduR_00615].

Comportement en cas d'erreur

Les erreurs de développement sont définies par [SWS_PduR_00100]. Elles ne sont signalées que lorsque PduRDevErrorDetect est actif [SWS_PduR_00119] [SWS_PduR_00221]. Le PduR ne signale pas d'erreurs de production SWS PDU Router p. 60.

Code d'erreurValeurDéclencheur
PDUR_E_INIT_FAILED0x00pointeur de configuration non valide
PDUR_E_UNINIT0x01API avant l'initialisation ou PduR_Init en dehors de PDUR_UNINIT
PDUR_E_PDU_ID_INVALID0x02identifiant de PDU non valide
PDUR_E_ROUTING_PATH_GROUP_ID_INVALID0x08groupe inconnu lors de Enable/Disable [SWS_PduR_00648] [SWS_PduR_00649]
PDUR_E_PARAM_POINTER0x09pointeur nul en argument

L'erreur d'exécution PDUR_E_PDU_INSTANCES_LOST survient dans trois cas :

Comme interface obligatoire à cet effet, le PduR utilise Det_ReportRuntimeError [SWS_PduR_91001].

Sur les chemins IF, le PduR ne traite pas lui-même les erreurs. Il transmet les valeurs de retour à la source [SWS_PduR_00626] SWS PDU Router p. 46 et ne réitère aucune transmission [SWS_PduR_00256]. Sur les chemins TP également, les erreurs sont transmises à la couche supérieure via la valeur de retour [SWS_PduR_00700] SWS PDU Router p. 49. En présence de plusieurs destinations, E_OK ne s'applique que si toutes les destinations renvoient E_OK [SWS_PduR_00701]. Cette règle devrait se rapporter au multicast TP, tandis que pour le multicast IF, [SWS_PduR_00218] s'applique. Question Q-4bd42fd8dc77ccf2 (ouverte) Le PduR ne fait que relayer les TP-RxIndications erronées [SWS_PduR_00207].

Des règles propres s'appliquent aux passerelles TP :

  • Si RxIndication ne signale pas E_OK, le PduR interrompt le traitement [SWS_PduR_00689].
  • Si l'espace tampon fait défaut pour la passerelle à la volée (on-the-fly), celle-ci renvoie BUFREQ_E_NOT_OK et s'interrompt [SWS_PduR_00687].
  • Si aucun tampon n'est disponible du tout, elle renvoie BUFREQ_E_OVFL [SWS_PduR_00799].
  • Si une destination tombe en panne, les autres continuent de fonctionner [SWS_PduR_00803]. Si toutes tombent en panne, elle arrête le côté réception [SWS_PduR_00804].
  • Si la réception locale échoue, elle met fin à la session avec la couche supérieure [SWS_PduR_00790] ou signale E_NOT_OK via RxIndication [SWS_PduR_00791] [SWS_PduR_00792].

Preuves détaillées supplémentaires

Les passages suivants étayent les déclarations de ce guide. Les séquences du chapitre 9 de la spécification les illustrent, comme SWS PDU Router Fig. 9.5 p. 100.

Guide généré par IA sur la base des Requirements du SWS PDU Router (R20-11) et des passages de documents associés ; seules les Requirements liées font foi. Veuillez vérifier auprès de la spécification les affirmations qualifiées d'interprétation.

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

fonction PduR_Init [SWS_PduR_00334] 📄 PDF

void PduR_Init (const PduR_PBConfigType* ConfigPtr);

Initializes the PDU Router

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

Utilisation

La fonction synchrone et non réentrante PduR_Init initialise le routeur de PDU [SWS_PduR_00334]. Elle prend comme paramètre avec ConfigPtr un pointeur vers la configuration post-build du module (PduR_PBConfigType) et ne renvoie aucune valeur de retour [SWS_PduR_00334]. Dans le cadre de l'initialisation, PduR_Init préremplit tous les tampons d'émission de PDU avec les valeurs par défaut configurées [SWS_PduR_00308].

Interaction et conditions d'ordonnancement

Après la mise sous tension, le module se trouve d'abord à l'état PDUR_UNINIT [SWS_PduR_00325]. PduR_Init doit être appelée avant toutes les autres fonctions du module, car les autres interfaces – à l'exception de PduR_GetVersionInfo – signalent l'erreur PDUR_E_UNINIT via le DET à l'état non initialisé, pour autant que PduRDevErrorDetect soit activé [SWS_PduR_00119].

Gestion des erreurs et concurrence

Si PduR_Init est appelée dans un autre état que PDUR_UNINIT, cela est considéré comme PDUR_E_UNINIT [SWS_PduR_00100]. En cas de pointeur de configuration invalide ou de transmission d'un pointeur nul, les codes d'erreur PDUR_E_INIT_FAILED ou PDUR_E_PARAM_POINTER s'appliquent [SWS_PduR_00100]. En raison de l'absence de réentrance, aucun appel parallèle de la routine d'initialisation ne doit avoir lieu [SWS_PduR_00334].

Ce texte a été généré par une IA sur la base de la spécification AUTOSAR R20-11.

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

fonction PduR_EnableRouting [SWS_PduR_00615] 📄 PDF

void PduR_EnableRouting (PduR_RoutingPathGroupIdType id);

Enables a routing path group.

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

La fonction synchrone PduR_EnableRouting (ID de service 0xf3) sert à l'activation ciblée d'un groupe de chemins de routage défini dans le routeur de PDU ([SWS_PduR_00615]). Comme unique paramètre, elle prend l'identifiant de groupe id de type PduR_RoutingPathGroupIdType, qui adresse le groupe de chemins de routage correspondant dans la configuration du routeur de PDU ([SWS_PduR_00615]). L'appel ne possède pas de valeur de retour et est disponible via le fichier d'en-tête PduR.h ([SWS_PduR_00615]).

Pour une utilisation sans erreur, les états du système et les limites des paramètres sont déterminants : avant l'appel, le module PduR doit être entièrement initialisé, car l'exécution dans un état non initialisé déclenche l'erreur PDUR_E_UNINIT ([SWS_PduR_00100]). Si un identificateur de table de routage ou de groupe de chemins invalide est transmis à la fonction PduR_EnableRouting, cela entraîne l'erreur PDUR_E_ROUTING_PATH_GROUP_ID_INVALID avec la valeur d'erreur 0x08 ([SWS_PduR_00100]).

Concernant la concurrence, l'interface est déclarée réentrante ([SWS_PduR_00615]), de sorte que les appels parallèles pour commander des groupes de chemins sont en principe autorisés. Dans le système global, la fonction sert à l'activation dynamique de relations de communication ; le service est vraisemblablement déclenché de façon typique par des instances de niveau supérieur telles que le gestionnaire de mode afin d'activer des chemins de routage à l'exécution en fonction des états du système ou du réseau. Question Q-365f4b81f59f3511 (ouverte)

Note d'utilisation générée automatiquement sur la base de la spécification AUTOSAR Classic (version R20-11).

fonction PduR_DisableRouting [SWS_PduR_00617] 📄 PDF

void PduR_DisableRouting (PduR_RoutingPathGroupIdType id, boolean initialize);

Disables a routing path group.

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

La fonction synchrone PduR_DisableRouting sert à désactiver un groupe de chemins de routage configuré ([SWS_PduR_00617]). Elle est conçue pour être réentrante et ne possède pas de valeur de retour ([SWS_PduR_00617]).

Paramètres et comportement

  • id (PduR_RoutingPathGroupIdType) : identification du groupe de chemins de routage à désactiver, tel qu'il est défini dans la configuration du routeur de PDU ([SWS_PduR_00617]).
  • initialize (boolean) : contrôle le comportement des tampons lors de la désactivation. Lors de la transmission de true, les tampons simples sont initialisés à leur valeur par défaut ; avec false, les tampons simples conservent leur valeur actuelle ([SWS_PduR_00617]).

Gestion des erreurs et conditions limites

En cas d'erreur, des codes d'erreur spécifiques sont définis selon la table des erreurs ([SWS_PduR_00100]) :

  • Si la fonction est appelée sans que le module soit initialisé, le code d'erreur PDUR_E_UNINIT (0x01) est prévu ([SWS_PduR_00100]).
  • Si une table de routage ou un ID de groupe invalide est transmis à PduR_DisableRouting, l'erreur PDUR_E_ROUTING_PATH_GROUP_ID_INVALID (0x08) est spécifiée ([SWS_PduR_00100]).

La fonction est disponible via le fichier d'en-tête PduR.h ([SWS_PduR_00617]).

Cette note d’utilisation a été générée de manière automatisée sur la base des exigences de la spécification.

type PduR_PBConfigType [SWS_PduR_00743] 📄 PDF

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

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

type PduR_StateType [SWS_PduR_00742] 📄 PDF

States of the PDU Router

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

Le type énuméré PduR_StateType spécifie, conformément à [SWS_PduR_00742], les états du routeur de PDU. Le type de données est mis à disposition via le fichier d'en-tête PduR.h et sert, au sein du routeur de PDU, de base formelle typée pour représenter l'état d'initialisation respectif à l'intérieur du module ainsi que pour les composants appelants.

Conformément à l'exigence [SWS_PduR_00324], le module routeur de PDU comprend exactement deux états de fonctionnement, qui sont définis par les valeurs d'énumération de PduR_StateType. La plage de valeurs définie selon [SWS_PduR_00742] comprend les valeurs suivantes :

  • PDUR_UNINIT : Indique l'état dans lequel le routeur de PDU n'est pas initialisé ([SWS_PduR_00742]).
  • PDUR_ONLINE : Signale que le routeur de PDU a été initialisé avec succès et est prêt à fonctionner ([SWS_PduR_00742]).

Dans le cadre de l'interaction des exigences de spécification, PduR_StateType sert de définition contraignante pour le modèle d'état interne et externe du routeur de PDU ([SWS_PduR_00324]). Comme la plage de valeurs est, selon [SWS_PduR_00742], exclusivement limitée à PDUR_UNINIT et PDUR_ONLINE, la spécification distingue ici strictement l'état initial non initialisé de l'état consécutif à une initialisation réussie. Des étapes intermédiaires supplémentaires, des modes de fonctionnement partiels ou des états d'erreur spécifiques ne sont pas prévus dans la plage de valeurs de PduR_StateType.

Note d'utilisation générée automatiquement sur la base de la spécification AUTOSAR.

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

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

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

Carte des thèmes

Vue détaillée

Sélectionnez une entrée dans le plan.

Initialisation et état

Returns the version information of this module.

void PduR_GetVersionInfo (Std_VersionInfoType* versionInfo);
PduR_Init fonction

Initializes the PDU Router

void PduR_Init (const PduR_PBConfigType* ConfigPtr);

Services

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

Types

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