DEENESPTFRRUARHIKOZHNL
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 laufenden WriteAll-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).

3. Dynamisches Verhalten & Sequenzablauf

Initiale Phase (Job-Start):
  1. NvM User ruft synchron NvM_WriteAll() auf.
  2. Der NvM meldet unmittelbar im Aufrufkontext an den BswM: BswM_NvM_CurrentJobMode(NVM_WRITE_ALL, NVM_REQ_PENDING).
  3. Der Funktionsaufruf kehrt zum NvM User zurü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, bevor NvM_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.
  • 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:
      1. NvM_CancelWriteAll() setzt intern lediglich ein Abbruch-Flag und kehrt sofort synchron zum Aufrufer zurück; zu diesem Zeitpunkt erfolgt keine BswM-Benachrichtigung.
      2. 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).
      3. 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-Call BswM_NvM_CurrentJobMode(NVM_WRITE_ALL, NVM_REQ_CANCELED) ab.

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 der NvM_MainFunction() erreicht.
  • BswM-Regelwerk (BswMArbitration):
    • Der BswM muss über eine BswMNvMJobModeIndication-Regel konfiguriert werden, die auf NVM_REQ_CANCELED lauscht.
    • Erst nach Empfang von NVM_REQ_CANCELED (oder NVM_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).
  • 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.

Vorkommen in AUTOSAR-Releases (5)

Release Dokument Seite Nr. Bildunterschrift im Dokument
R21-11 AUTOSAR_SWS_NVRAMManager S. 152 9.12 Figure 9.12: NvM interraction with BswM in case of a WriteAll cancellation
R22-11 AUTOSAR_SWS_NVRAMManager S. 154 9.12 Figure 9.12: NvM interraction with BswM in case of a WriteAll cancellation
R23-11 AUTOSAR_CP_SWS_NVRAMManager S. 148 9.12 Figure 9.12: NvM interraction with BswM in case of a WriteAll cancellation
R24-11 AUTOSAR_CP_SWS_NVRAMManager S. 169 9.12 Figure 9.12: NvM interraction with BswM in case of a WriteAll cancellation
R25-11 AUTOSAR_CP_SWS_NVRAMManager S. 155 9.12 Figure 9.12: NvM interraction with BswM in case of a WriteAll cancellation