AUTOSAR_CP_SWS_CANDriver
FIG-1414ecd6dcee29f3
345 × 296 px
1 Release(s)
Figure 7.1: Driver State
SHA-256 Inhalts-Fingerabdruck:
1414ecd6dcee29f3ade0849024ec0d7cede2370b526d326808b46bdb08d9e3d3
✦
KI-generierte Bildanalyse & technische Beschreibung
Modell: gemini-3.8-flash (via agy) · Rezept figure-description@2 · erstellt am 2026-10-07
1. Diagrammtyp & Architektur-Kontext
- Klassifikation: UML-Zustandsdiagramm (State Machine Diagram).
- Architektur-Kontext: AUTOSAR Classic Platform (CP), Microcontroller Abstraction Layer (MCAL), BSW-Modul
Can(AUTOSAR_CP_SWS_CANDriver, Release R24-11). - Funktionale Einordnung: Definiert den übergeordneten Lebenszyklus (Global Module State / Driver State) des gesamten CAN-Treibers. Dieser Zustand kapselt die Verfügbarkeit der Treiber-Infrastruktur und ist strikt zu unterscheiden von den individuellen Controller-Zuständen (
CAN_CS_UNINIT,CAN_CS_STOPPED,CAN_CS_STARTED,CAN_CS_SLEEP).
2. Komponenten, Entitäten & Schnittstellen
- Zustände:
Initial(UML-Pseudozustand): Eintrittspunkt nach Hardware-Reset / Power-On.CAN_UNINIT: Modul ist nicht initialisiert; Hardware-Register sind undefiniert bzw. im Reset-Zustand; Pufferstrukturen und Controller-Instanzen sind unkonfiguriert.CAN_READY: Modul ist vollständig initialisiert, globale Datenstrukturen und Mailboxen sind allokiert; Treiber ist betriebsbereit.
- Schnittstellen (Transitions-Trigger / APIs):
Can_Init(const Can_ConfigType* ConfigPtr): Synchroner Treiber-Initialisierungsservice (SWS_Can_00246,SRS_SPAL_12057,SRS_Can_01041).Can_DeInit(void): Synchroner Treiber-Deinitialisierungsservice (SWS_Can_91009,SWS_Can_91010,SRS_Can_01166).
- Kardinalitäten & Relationen:
- Flache 1:1-Zustandsmaschine ohne hierarchische Unterzustände auf Treiberebene.
- Orthogonal zu den Controller-Statemachines: Der Treiberzustand übersteuert alle untergeordneten Controller-Instanzen (kein Controller kann ohne
CAN_READYbetrieben werden).
3. Dynamisches Verhalten & Sequenzablauf
- Systemstart / Reset:
- Unkonditionierter Übergang vom Pseudozustand
InitialnachCAN_UNINIT(SWS_Can_00245).
- Unkonditionierter Übergang vom Pseudozustand
- Initialisierungspfad (
CAN_UNINIT→CAN_READY):- Trigger: Synchroner Aufruf von
Can_Init(). - Ablauf: Hardware-Register werden gemäß
Can_ConfigTypekonfiguriert, Hardware-Objekte (HRH/HTH) initialisiert und alle zugeordneten Controller in den ZustandCAN_CS_STOPPEDversetzt. - Guard / Fehlerbedingung: Wird
Can_Init()im ZustandCAN_READYaufgerufen, wird bei aktivemCanDevErrorDetectder DET-FehlerCAN_E_TRANSITIONgemeldet; die Re-Initialisierung wird abgewiesen.
- Trigger: Synchroner Aufruf von
- Deinitialisierungspfad (
CAN_READY→CAN_UNINIT):- Trigger: Synchroner Aufruf von
Can_DeInit(). - Abbruchbedingung / Guard (
SWS_Can_91010): Alle im Treiber verwalteten CAN-Controller müssen sich im ZustandCAN_CS_STOPPEDbefinden. Befindet sich mindestens ein Controller im ZustandCAN_CS_STARTEDoderCAN_CS_SLEEP, darf die Transition nicht stattfinden; DET meldetCAN_E_TRANSITION. - Fehlerbedingung (
SWS_Can_91009): Aufruf vonCan_DeInit()im ZustandCAN_UNINITmeldet DETCAN_E_TRANSITION(bzw. je nach ImplementierungCAN_E_UNINIT).
- Trigger: Synchroner Aufruf von
- Schutz operationaler APIs:
- Alle regulären CAN-APIs (z. B.
Can_SetControllerMode(),Can_Write(),Can_GetControllerMode(),Can_CheckWakeup(),Can_MainFunction_Write()) prüfen den Modulstatus. Im ZustandCAN_UNINITverwerfen sie den Aufruf und meldenCAN_E_UNINIT.
- Alle regulären CAN-APIs (z. B.
4. Normative Relevanz & Entwickler-Hinweise
- Orchestrierung (EcuM / BswM):
Can_Init()darf ausschließlich durch den BSW-Initialisierungs-Sequenzer (EcuM / BswM) aufgerufen werden, bevorCanIf_Init()ausgeführt wird. - Zustands-Semantik für Treiber-Entwickler:
CAN_READYbedeutet nicht, dass der CAN-Bus aktiv ist. Es signalisiert lediglich die statische Betriebsbereitschaft. Vor einer Datenübertragung (Can_Write) mussCanIfdie individuellen Controller explizit überCan_SetControllerMode(Controller, CAN_CS_STARTED)aktivieren.- Das Treiberzustands-Flag muss reentrancy-sicher implementiert sein (insbesondere bei Multi-Core-MCALs, wenn Controller unterschiedlichen Cores zugeordnet sind).
- Shutdown- & Sleep-Restriktionen: Vor Aufruf von
Can_DeInit()muss der State Manager (CanSMviaCanIf) sicherstellen, dass alle Kanäle sauber gestoppt wurden. Ein direkter Shutdown-Versuch aus demSTARTED- oderSLEEP-Zustand scheitert an der normativen GuardSWS_Can_91010.
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.