AUTOSAR_CP_SWS_EEPROMAbstraction
FIG-607bf2d10fae231b
845 × 1081 px
1 Release(s)
Figure 9.2: Sequence diagram of "Ea_Write" service
SHA-256 Inhalts-Fingerabdruck:
607bf2d10fae231b864f2729d540d3eb234e0e3068d0d4583d38b209eb38082f
✦
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-Sequenzdiagramm (Interaktionsdiagramm mit Aktivierungsbalken, synchronen Aufrufen, asynchronen Zyklen und kombiniertem Fragment
loop). - Funktionale Einordnung: AUTOSAR Classic Platform (Release R23-11), NVRAM-Stack / Memory-Subsystem. Das Diagramm spezifiziert den vollständigen Lebenszyklus eines asynchronen Schreibauftrags (
Ea_Write) über die Schichten des modernisierten AUTOSAR-Speicherstapels (Einführung desMemAcc-Moduls als Vermittler zwischen Abstraktionsschicht und vereinheitlichtenMem-Treibern).
2. Komponenten, Entitäten & Schnittstellen
Akteure & Software-Module:
«module» NvM(Non-Volatile RAM Manager): Applikationsnaher BSW-Dienst (Service Layer); verwaltet NV-Datenblöcke, initiiert Aufträge und empfängt Fertigstellungsmeldungen.«module» MemIf(Memory Abstraction Interface): Abstraktionsschnittstelle (ECU Abstraction Layer); leitet Zugriffe anhand des konfiguriertenDeviceIndexan die konkrete Abstraktionsinstanz (EaoderFee) weiter.«module» Ea(EEPROM Abstraction): Spezifische Abstraktionsschicht für EEPROM-Speicher; mappt logische Blocknummern auf virtuelle Adressen/Instanzen des Speicherbereichs.«module» MemAcc(Memory Access): Zentraler Arbitrierungs- und Adressierungs-Broker (ECU Abstraction Layer, eingeführt ab R21-11/R22-11); steuert hardwareunabhängig Zugriffe auf segmentierte Adressräume (AddressAreaId).«module» Mem: Einheitlicher MCAL-Treiber (Memory Driver); kapselt den direkten Hardwarezugriff auf den physikalischen Speicher.BSW Task (OS task or cyclic call): Präemptiver oder kooperativer Betriebssystem-Task-Kontext für die zyklische Ausführung der BSW-Main-Functions.
Dargestellte APIs & Signaturen:
- Auftragserteilung:
MemIf_Write(Std_ReturnType, uint16 DeviceIndex, uint16 BlockNumber, const uint8* DataPtr)Ea_Write(Std_ReturnType, uint16 BlockNumber, const uint8* DataPtr)MemAcc_Write(Std_ReturnType, MemAcc_AddressAreaIdType AddressAreaId, MemAcc_AddressType Address, const MemAcc_DataType* DataPtr, MemAcc_LengthType Length)Mem_Write(Std_ReturnType, Mem_InstanceIdType InstanceId, Mem_AddressType Address, const Mem_DataType* DataPtr, Mem_LengthType Length)
- Zyklische Verarbeitung & Status-Abfrage:
Ea_MainFunction(void)MemAcc_MainFunction(void)Mem_MainFunction(void)Mem_GetJobResult(Mem_JobResultType, Mem_InstanceIdType InstanceId)
- Asynchrone Rückmeldungen (Callbacks):
Ea_JobEndNotification(void)NvM_JobEndNotification(void)
3. Dynamisches Verhalten & Sequenzablauf
- Job-Initiierung (Synchroner Abstieg, Top-Down):
NvMruftMemIf_Write()auf, welches den Aufruf anEa_Write()delegiert.Ea_Write()validiert den Request, puffert interne Metadaten, wechselt in den Zustand Busy und liefert unmittelbarE_OKviaMemIf_Write()anNvMzurück (nicht-blockierende Annahme).
- Auftragstranslation & Dispatch an MemAcc:
- Der
BSW Tasktriggert periodischEa_MainFunction(). Eaberechnet aus der logischen Blocknummer die Adressparameter und setzt den Schreibauftrag überMemAcc_Write()ab.MemAcc_Write()quittiert synchron mitE_OK.
- Der
- Treiber-Interaktion & Polling-Schleife (
loop MemAcc_MainFunction):- Der
BSW Taskruft zyklischMemAcc_MainFunction()auf. - Im ersten Zyklus leitet
MemAccdie physische Transaktion viaMem_Write()an den MCAL-TreiberMemweiter. - In Folgezyklen steuert
MemAcc_MainFunction()die Treiberabarbeitung:- Aufruf von
Mem_MainFunction()zur internen Zustandsfortschreibung der Hardware. - Polling des Verarbeitungsstatus über
Mem_GetJobResult(InstanceId).
- Aufruf von
- Der Loop terminiert, sobald
Mem_GetJobResult()den StatusMEM_JOB_OK(oder einen Fehlercode) zurückgibt.
- Der
- Kaskadierte Fertigstellungs-Benachrichtigung (Bottom-Up):
- Nach erfolgreichem Treiber-Abschluss ruft
MemAcc_MainFunction()den CallbackEa_JobEndNotification()auf. Eaaktualisiert seinen Blockstatus und benachrichtigt wiederum die Service-Schicht überNvM_JobEndNotification().- Rückkehr der Callbacks und finaler Abschluss des Zyklus von
MemAcc_MainFunction().
- Nach erfolgreichem Treiber-Abschluss ruft
4. Normative Relevanz & Entwickler-Hinweise
- Asynchroner API-Vertrag: Der Rückgabewert
E_OKvonEa_Write()garantiert ausschließlich die Annahme des Auftrags in die Warteschlange, nicht den physikalischen Schreibvorgang. - Puffer-Integrität (
DataPtr): Da keine zwingende Kopie im RAM der Abstraktionsschichten erfolgt, muss der Applikations-/NvM-Datenpuffer (DataPtr) über den gesamten asynchronen Zyklus bis zum Eintreffen derNvM_JobEndNotification()statisch gültig und unverändert bleiben. - Task-Scheduling & Latenzen:
- Die Durchlaufzeit (
Job Processing Time) hängt direkt von den Ausführungsperioden desBSW TaskfürEa_MainFunction(),MemAcc_MainFunction()und der hardwareabhängigen Programmierzeit imMem-Treiber ab. - Das Diagramm zeigt, dass
MemAcc_MainFunctiondieMem_MainFunctiondirekt aufrufen kann (oder sequenziell im gleichen Task eingebettet ist). IstMem_MainFunctionseparat im OS geschedult, verlängert sich die Latenz pro Schleifendurchlauf um die Task-Offset-Zeiten.
- Die Durchlaufzeit (
- R23-11 MemAcc-Architekturübergang: Klassische Architekturen (Direktkopplung
Ea->Eep) sind hier vollständig durch das standardisierte SubsystemMemAccabgelöst.Eaadressiert keine MCAL-Treiber-APIs mehr direkt, sondern nutzt vereinheitlichteMemAcc_AddressAreaIdType-Identifier. - Fehlerbehandlung: Bricht
Mem_GetJobResult()mit einem Fehler (MEM_JOB_FAILED) ab, mussMemAccentsprechendEa_JobErrorNotification()(nicht im Erfolgsdiagramm dargestellt) triggern, umNvMden Fehlerzustand zwecks Retry oder Redundanzumschaltung zu signalisieren.
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.