AUTOSAR_SWS_PDURouter
FIG-72f5c6e886349da9
899 × 741 px
1 Release(s)
Figure 22: PduRBswModules
SHA-256 Inhalts-Fingerabdruck:
72f5c6e886349da9213e00c8d12ad53c65d16b181b211ad4b2285c6fdfbcf862
✦
KI-generierte Bildanalyse & technische Beschreibung
Modell: gemini-3.8-flash (via agy) · Rezept figure-series@1 · erstellt am 2026-10-08
1. Diagrammtyp & Architektur-Kontext
- Klassifikation: UML-Klassendiagramm / Metamodell-Ausschnitt der AUTOSAR ECU Configuration Parameter Definition (
EcucParameterDefinition) gemäß ECU Configuration Description Template. - Technischer Zweck: Formale Definition des Konfigurationscontainers
PduRBswModulesim PDU Router (PduR). - Funktionale Einordnung: Der PDU Router agiert im AUTOSAR Communication Stack als zentraler Switch auf PDU-Ebene zwischen oberen Schichten (z. B.
Com,Dcm,J1939Dcm), unteren Schichten (z. B.CanIf,LinIf,FrIf) und Transportprotokollen (z. B.CanTp,FrTp,LinTp,SoAd). ÜberPduRBswModuleswerden die Eigenschaften, Schnittstellenverträge und Fähigkeiten (Capabilities) jedes angebundenen BSW-Moduls deklariert. Dies steuert direkt die Codegenerierung der Routing-Tabellen, Wrapper-Funktionen und Pre-Compile-Optimierungen.
2. Komponenten, Entitäten & Schnittstellen
PduR(:EcucModuleDef):- Wurzelknoten der PduR-Moduldefinition.
- Kardinalität:
lowerMultiplicity = 0,upperMultiplicity = 1. - Hält per Komposition (
+container) die BSW-Modul-Konfigurationen.
PduRBswModules(:EcucParamConfContainerDef):- Konfigurationscontainer für jeweils genau ein angebundenes BSW-Modul.
- Kardinalität:
lowerMultiplicity = 0,upperMultiplicity = *(beliebig viele BSW-Module registrierbar). - Post-Build-Variabilität:
postBuildChangeable = false(Konfiguration der BSW-Module ist zur Post-Build-Zeit nicht veränderbar).
PduRBswModuleRef(:EcucForeignReferenceDef):- Komposition (
+reference), Kardinalität:1..1. - Typ:
ECUC-FOREIGN-REFERENCE-DEFmitdestinationType = ECUC-MODULE-CONFIGURATION-VALUES. - Referenziert extern ein
ARElementaus dem PaketECUCDescriptionTemplate::EcucModuleConfigurationValues(die konkrete EcuC-Instanz des angebundenen BSW-Moduls, z. B./Com/Comoder/CanIf/CanIf).
- Komposition (
- Parameterliste (
+parameter, alle vom Typ:EcucBooleanParamDef):- Rollen-Klassifikation:
PduRUpperModule: Modul agiert als obere Schicht (Nutzer von Transmit-APIs; Ziel von Rx-Indication und Tx-Confirmation).PduRLowerModule: Modul agiert als untere Schicht (Schnittstelle zu Bus-Interfaces oder TPs; stellt Transmit-APIs bereit).
- Schnittstellen-Typ:
PduRCommunicationInterface: Aktiviert IF-Schnittstellen (Standard-PDU-Routing, unsegmentiert, PduInfoType-basiert).PduRTransportProtocol: Aktiviert TP-Schnittstellen (segmentierter Transfer, Buffer-Provisioning via<Mod>_CopyTxData/<Mod>_CopyRxData).
- API- & Feature-Capabilities:
PduRTxConfirmation: Modul stellt Tx-Bestätigungen bereit bzw. erwartet diese (<Mod>_TxConfirmation).PduRTriggertransmit: Modul unterstützt Pull-basierte PDU-Bereitstellung (<Mod>_TriggerTransmit, z. B. für LIN oder FlexRay).PduRCancelTransmit: Modul unterstützt den Abbruch laufender Sendeaufträge (<Mod>_CancelTransmit).PduRCancelReceive: Modul unterstützt den Abbruch laufender TP-Empfangsvorgänge (<Mod>_CancelReceive).PduRChangeParameterApi: Modul unterstützt dynamische TP-Parameteränderungen (<Mod>_ChangeParameter).PduRRetransmission: Aktiviert PduR-interne Pufferung/Wiederholungsmechanismen für das Modul (z. B. bei TT-Kommunikation).PduRUseTag: Aktiviert Tag-basiertes Routing / Multi-Instance-Zuordnung für dieses Modul.
- Rollen-Klassifikation:
3. Dynamisches Verhalten & Sequenzablauf
Da es sich um ein statisches Metamodell handelt, existiert kein dynamischer Laufzeitablauf im Diagramm selbst. Es determiniert jedoch die Codegenerierungs- und Ausführungslogik im BSW-Stack:
[Generator-Phase / EcuC Validation]
PduRBswModuleRef (1..1) aufgelöst?
├── Nein -> Generator-Error (Referenz fehlt)
└── Ja -> Evaluiere Boolean-Flags pro referenziertem Modul
├── PduRUpperModule == TRUE -> Generiere PduR_<User>Transmit(), PduR_<User>CancelTransmit()
├── PduRLowerModule == TRUE -> Binde <Lo>_Transmit(), <Lo>_CancelReceive() in Routing-Tabellen ein
├── PduRTransportProtocol -> Generiere Forwarding für CopyTxData / CopyRxData / TpRxIndication
└── PduRCommunicationInterface -> Generiere Forwarding für RxIndication / TxConfirmation / TriggerTransmit
[Laufzeit-Routing: Pfadselektion abhängig von Flags]
Obere Schicht ruft PduR_<User>Transmit()
└── PduR prüft konfigurierte Routing-Route zur Ziel-Unterschicht (<Lo>):
├── PduRCancelTransmit == FALSE: PduR blockt Abbruchversuche frühzeitig ab
└── PduRTriggertransmit == TRUE: PduR leitet TriggerTransmit an oberen Layer weiter
- Synchroner vs. Asynchroner Pfad:
- Synchron:
Transmit-Aufruf von oberer Schicht via PduR direkt an untere Schicht. - Asynchron: Rx-Events (
<Lo>_RxIndication) oder Bestätigungen (<Lo>_TxConfirmation) triggern Callbacks durch den PduR aufwärts zum oberen Modul. - Pufferung: Ist
PduRRetransmissionaktiv, verwaltet der PduR Zwischenpuffer (FIFO/Last-Is-Best), um Daten bei Übertragungsfehlern ohne Rückgriff auf die Applikation erneut zu senden.
- Synchron:
4. Normative Relevanz & Entwickler-Hinweise
- Kompilierzeit-Optimierung & Memory-Footprint:
- Jedes Flag auf
FALSEschließt die entsprechenden API-Signaturen und Funktionszeiger aus der generierten Link-Time/Post-Build-Tabelle (PduR_PBConfigType) aus. - Dies verhindert ungenutzten Code (Dead Code Elimination) und spart RAM/ROM im Mikrocontroller ein.
- Jedes Flag auf
- API-Vertrag (Header-Inclusion & Funktionsprototypen):
- Wird ein Modul als
PduRUpperModule = TRUEdeklariert, muss der PduR-Codegenerator die Header des referenzierten Moduls (#include "<Module>.h") einbinden und erwartet normierte API-Namen gemäß AUTOSAR-Namenskonvention (z. B.<Mod>_RxIndication,<Mod>_TxConfirmation). - Fehlt die Implementierung eines per Boolean aktivierten Parameters im referenzierten Modul, führt dies zu undefinierten Symbolen beim Linken.
- Wird ein Modul als
- Hybride Modulrollen (Gateway / Zwischenschichten):
- Module wie
IpduM,SecOCoder Gateway-Konfigurationen können gleichzeitigPduRUpperModule = TRUEundPduRLowerModule = TRUEsein. In diesem Fall müssen beide API-Schnittstellenmengen vollständig erfüllt und im Generator konsistent gehalten werden.
- Module wie
- Referenzintegrität (
PduRBswModuleRef):- Durch
lowerMultiplicity = 1ist ein leererPduRBswModules-Container ungültig. Jede Container-Instanz erfordert zwingend eine gültige Modulkonfiguration im EcuC-Tree.
- Durch
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.