AUTOSAR_CP_SWS_NVRAMManager
FIG-9953e27f74ad0bc9
932 × 844 px
5 Release(s)
Figure 9.12: NvM interraction with BswM in case of a WriteAll cancellation
SHA-256 Inhalts-Fingerabdruck:
9953e27f74ad0bc96c280d219d6926121d3275de62f8227e179f872bbc6a68e1
✦
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 mit kombiniertem Fragment (
alt-Operator für bedingte Abläufe). - Technischer Zweck: Spezifikation der Wechselwirkung zwischen dem NVRAM Manager (NvM) und dem Basic Software Mode Manager (BswM) bei Abbruch des asynchronen Multi-Block-Dienstes
NvM_WriteAll(). - Systemkontext: Einordnung in die AUTOSAR-Systemphase Shutdown bzw. Sleep-Transition. Dient der Zustandssynchronisation des BSW-Modusmanagements (BswM Mode Arbitration / Mode Control), um festzustellen, wann der NvM seine Schreiboperationen vorzeitig eingestellt hat und Folgeaktionen (z. B. Power-Off, Reset oder Fast-Wakeup) freigegeben werden können.
2. Komponenten, Entitäten & Schnittstellen
- Akteure & Module:
NvM User: Aufrufende Instanz (typischerweise BswM selbst oder EcuM im Shutdown-Kontext).«module» NvM: AUTOSAR Memory Service Layer Komponente (NVRAM Manager).«module» BswM: AUTOSAR System Service Layer Komponente (Modusverwaltung).BSW Task (OS task or cyclic call): Zyklischer OS-Task-Kontext zur Abarbeitung der BSW-Main-Functions.
- Schnittstellen (APIs) & Parameter:
NvM_WriteAll(): Synchroner Initiierungsaufruf für die asynchrone Multi-Block-Schreibsequenz.NvM_CancelWriteAll(): API zur Signalisierung des vorzeitigen Abbruchs des laufendenWriteAll-Auftrags.NvM_MainFunction(): Zyklische Scheduling-Funktion des NvM zur internen State-Machine- und Job-Abwicklung.BswM_NvM_CurrentJobMode(uint8 ServiceId, NvM_RequestResultType JobResult): Indication-Callback des NvM an den BswM zur Meldung des aktuellen Job-Status.- Parameter 1:
NVM_WRITE_ALL(Kennung des Multi-Block-Dienstes). - Parameter 2:
NVM_REQ_PENDING(Auftrag akzeptiert / in Bearbeitung) bzw.NVM_REQ_CANCELED(Auftrag abgebrochen).
- Parameter 1:
3. Dynamisches Verhalten & Sequenzablauf
Initiale Phase (Job-Start):
NvM Userruft synchronNvM_WriteAll()auf.- Der NvM meldet unmittelbar im Aufrufkontext an den BswM:
BswM_NvM_CurrentJobMode(NVM_WRITE_ALL, NVM_REQ_PENDING). - Der Funktionsaufruf kehrt zum
NvM Userzurück; der Schreibauftrag ist im NvM eingereiht.
Fallunterscheidung (alt-Fragment bei Abbruch via NvM_CancelWriteAll()):
- Zweig 1:
[NvM_WriteAll accepted but not yet started]- Bedingung:
NvM_CancelWriteAll()trifft ein, bevorNvM_MainFunction()mit der physischen Abarbeitung des ersten NVRAM-Blocks begonnen hat. - Ablauf: Der NvM verarbeitet den Abbruch vollständig synchron innerhalb des API-Aufrufs
NvM_CancelWriteAll(). - Signalisierung: NvM setzt sofort den Indication-Call
BswM_NvM_CurrentJobMode(NVM_WRITE_ALL, NVM_REQ_CANCELED)ab und kehrt anschließend zum Aufrufer zurück.
- Bedingung:
- Zweig 2:
[NvM_WriteAll started but not finished]- Bedingung:
NvM_CancelWriteAll()trifft ein, während bereits Blöcke über MemIf/Fee/Ea geschrieben werden oder der erste Block in Bearbeitung ist. - Ablauf:
NvM_CancelWriteAll()setzt intern lediglich ein Abbruch-Flag und kehrt sofort synchron zum Aufrufer zurück; zu diesem Zeitpunkt erfolgt keine BswM-Benachrichtigung.- Der aktuell in der Hardware bzw. Abstraction Layer laufende atomare Block-Schreibvorgang wird noch regulär zu Ende geführt (Flash/EEPROM-Schreibvorgänge dürfen zur Vermeidung von Speicher-Inkonsistenzen nicht hart unterbrochen werden).
- Im nächsten Kontext von
NvM_MainFunction()erkennt der NvM das Cancel-Flag, bricht die Bearbeitung der verbleibenden Blöcke in der Queue ab und setzt den Indication-CallBswM_NvM_CurrentJobMode(NVM_WRITE_ALL, NVM_REQ_CANCELED)ab.
- Bedingung:
4. Normative Relevanz & Entwickler-Hinweise
- Asynchronität & Blockierschutz: Software-Komponenten (z. B. Shutdown-Handler im BswM) dürfen nicht blockierend darauf warten, dass
NvM_CancelWriteAll()den Job sofort beendet. Ist der Job bereits gestartet, wird die Fertigstellung erst nach mindestens einem Zyklus derNvM_MainFunction()erreicht. - BswM-Regelwerk (
BswMArbitration):- Der BswM muss über eine
BswMNvMJobModeIndication-Regel konfiguriert werden, die aufNVM_REQ_CANCELEDlauscht. - Erst nach Empfang von
NVM_REQ_CANCELED(oderNVM_REQ_OK/NVM_REQ_NOT_OK) darf der BswM Transitionsaktionen triggern, die Peripherietreiber (SPI, Flash, EEPROM) deinitialisieren oder den Mikrocontroller abschalten (Mcu_PerformReset, Power-Hold-Freigabe).
- Der BswM muss über eine
- Datenkonsistenz: Der Entwickler muss beachten, dass bei Zweig 2 der zum Zeitpunkt des Cancel-Aufrufs aktive Block vollständig geschrieben wird, nachfolgende Blöcke jedoch ihren vorigen Stand im NVM beibehalten. Der globale Result-Status des Multi-Block-Requests wechselt auf
NVM_REQ_CANCELED.
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.