DEENESPTFRRUARHIKOZHNL

NVRAM Manager (NvM)

ModulNvM (NVRAM Manager)
BSW-Modul-ID20
Standard-Header#include "NvM.h"
SWS-SpezifikationAUTOSAR_SWS_NVRAMManager.pdf
ClusterMemory Services

Modul-GuideKI-GENERIERT

Verwaltet nichtflüchtige Datenblöcke und gleicht sie asynchron zwischen RAM und NV-Speicher ab.
KI-GENERIERT ungeprüft Modell: claude-opus-5-5 · Aufwand: high · Temperatur: nicht steuerbar · Prompt: 1d912b11517a Herkunft Offene Fragen (1)
Kausaler Anker: R20-11 Gültig ab R20-11 Neu synthetisiert für diesen Spezifikationsstand.
KI-generiertclaude-opus-5-5 · 2026-10-13

Verwaltet nichtflüchtige Datenblöcke und gleicht sie asynchron zwischen RAM und NV-Speicher ab.

Der NVRAM Manager (NvM) ist der einzige Zugang zum nichtflüchtigen Speicher. Er kopiert NVRAM-Blöcke implizit zwischen RAM und NV-Speicher [SWS_NvM_00038]. Beim Start füllt das vom BswM angestoßene NvM_ReadAll die RAM-Blöcke, beim Shutdown sichert NvM_WriteAll geänderte Blöcke. Einzelaufträge wie NvM_WriteBlock werden asynchron eingereiht, priorisiert bearbeitet und per Status oder Callback quittiert [SWS_NvM_00185]. Lesefehler fängt der NvM über Wiederholungen, redundante Kopien und Defaultdaten ab; den Blockstatus müssen Anwender dennoch selbst prüfen.

Der NVRAM Manager (NvM) ist der einzige Zugang zum nichtflüchtigen Speicher [SWS_NvM_00384]. Er kopiert Blöcke implizit zwischen NVRAM und RAM; die Anwendung arbeitet direkt mit den RAM-Daten [SWS_NvM_00038]. Nach unten nutzt er die Memory Abstraction Interface mit Fee bzw. Ea [SWS_NvM_00051]. Zustände meldet er an den BswM, Fehler an DEM und DET [SWS_NvM_00745] [SWS_NvM_00592].

kontext nutzer NvM-Anwender (SW-C über RTE, BSW-Module) nvm NvM (NVRAM Manager) nutzer->nvm Einzelaufträge NvM_ReadBlock, NvM_WriteBlock, … bswm BswM bswm->nvm NvM_Init, NvM_ReadAll, NvM_WriteAll, NvM_CancelWriteAll nvm->nutzer SingleBlock-, InitBlock- und Mirror-Callbacks nvm->bswm BswM_NvM_CurrentJobMode, BswM_NvM_CurrentBlockMode memif MemIf nvm->memif Lese-/Schreibaufträge, MemIf_GetJobResult dem DEM nvm->dem Produktionsfehler det DET nvm->det Entwicklungsfehler crc Crc nvm->crc CRC-Berechnung fee Fee / Ea memif->fee Weiterleitung fee->nvm NvM_JobEndNotification, NvM_JobErrorNotification

Kontextdiagramm: Einbettung des NvM zwischen Anwendern, BswM, MemIf/Fee/Ea sowie DEM und DET. Quellen: [SWS_NvM_00384] [SWS_NvM_00465] [SWS_NvM_00746]

Jeder NVRAM-Block besteht aus NV-Block, RAM-Block und Administrative Block, optional ergänzt um einen ROM-Block mit Defaultdaten [SWS_NvM_00138]. Es gibt die Typen Native, Redundant und Dataset; sie unterscheiden sich in der Zahl der NV- und ROM-Blöcke [SWS_NvM_00557] [SWS_NvM_00558] [SWS_NvM_00559]. Den RAM-Block gleicht der NvM implizit direkt ab oder explizit über einen RAM-Mirror mit Callbacks [SWS_NvM_00511].

Der Lebenszyklus verläuft in drei Schritten:

Einzelaufträge wie NvM_WriteBlock werden eingereiht und stehen danach auf NVM_REQ_PENDING [SWS_NvM_00185]. Optional nutzt der NvM eine eigene Warteschlange für Immediate-Aufträge [SWS_NvM_00378]. Das Ergebnis liefert NvM_GetErrorStatus oder ein konfigurierter Callback [SWS_NvM_00015] [SWS_NvM_00740].

Asynchroner Einzelblockauftrag mit RückmeldungNvM-AnwenderNvMBswMBSW-TaskMemIfNvM_WriteBlock(BlockId, NvM_SrcPtr)einreihen, Blockergebnis:NVM_REQ_PENDINGoptNvMBswMBlockStatusInformation == TRUEBswM_NvM_CurrentBlockMode(BlockId, NVM_REQ_PENDING)E_OKloopbis der Schreibjob abgeschlossen istNvM_MainFunction()Schreibauftrag / Status abfragenJob-ErgebnisoptNvMSingleBlockCallback konfiguriertNvM_SingleBlockCallbackFunction(NVM_WRITE_BLOCK, JobResult)optNvMBswMBlockStatusInformation == TRUEBswM_NvM_CurrentBlockMode(BlockId, Ergebnis)NvM_GetErrorStatus(BlockId, RequestResultPtr)E_OK, Ergebnis

Sequenzdiagramm: Ein asynchroner Schreibauftrag wird eingereiht, in NvM_MainFunction abgearbeitet und per Callback, BswM-Meldung und Statusabfrage quittiert. Quellen: [SWS_NvM_00185] [SWS_NvM_00347] [SWS_NvM_00891], SWS NvM S. 160

Lesefehler fängt der NvM über drei Stufen ab:

Interpretation: Die Reihenfolge der Stufen dürfte der Aufzählung in der Error Description folgen. Frage Q-027e7f981e4d0a43 (offen) Schreibfehler wiederholt der NvM bis NVM_MAX_NUM_OF_WRITE_RETRIES und meldet dann NVM_E_REQ_FAILED an den DEM [SWS_NvM_00684]. Anwender prüfen den Status ihrer Blöcke selbst [SWS_NvM_00694].

Rolle im Speicherstack: einziger Zugang zum nichtflüchtigen Speicher

Der NVRAM Manager (NvM) bündelt den Zugriff auf nichtflüchtige Daten. Die Umgebung spricht den nichtflüchtigen Speicher ausschließlich über den NvM an, der dafür eine Callback-Schnittstelle bereitstellt [SWS_NvM_00384]. Der Zugriff ist implizit: Der NvM kopiert Blöcke zwischen NVRAM und gemeinsam genutztem RAM. Die Anwendung arbeitet unter Beachtung von Synchronisationsregeln direkt mit den RAM-Daten [SWS_NvM_00038] [SWS_NvM_00692]. Ein Block wird über seine konfigurierte Block-ID ausgewählt [SWS_NvM_00069] [SWS_NvM_00471]. Upper Layer binden dafür nur NvM.h ein [SWS_NvM_00691]. Das Schaubild zum impliziten Aktualisieren zeigt die Arbeitsteilung: Andere Teile der Basissoftware lösen das Sichern und Wiederherstellen aller Blöcke abhängig vom ECU-Zustand aus. Die SW-C greift nur auf den Inhalt ihrer RAM-Blöcke zu (SWS NvM S. 121).

Nach unten arbeitet der NvM gegen die Memory Abstraction Interface. Zusammen mit Fee bzw. Ea stellt sie einen virtuellen linearen 32-Bit-Adressraum bereit [SWS_NvM_00051] [SWS_NvM_00465]. Prüfsummen bildet der NvM über das Crc-Modul [SWS_NvM_00466]. Das Ende eines Lower-Layer-Jobs erfährt er auf zwei Wegen:

Produktionsfehler gehen an den DEM [SWS_NvM_00592], Entwicklungsfehler an den DET [SWS_NvM_00614]. Auftragszustände meldet der NvM an den BswM [SWS_NvM_00745] [SWS_NvM_00746].

kontext nutzer NvM-Anwender (SW-C über RTE, BSW-Module) nvm NvM (NVRAM Manager) nutzer->nvm Einzelaufträge NvM_ReadBlock, NvM_WriteBlock, … bswm BswM bswm->nvm NvM_Init, NvM_ReadAll, NvM_WriteAll, NvM_CancelWriteAll nvm->nutzer SingleBlock-, InitBlock- und Mirror-Callbacks nvm->bswm BswM_NvM_CurrentJobMode, BswM_NvM_CurrentBlockMode memif MemIf nvm->memif Lese-/Schreibaufträge, MemIf_GetJobResult dem DEM nvm->dem Produktionsfehler det DET nvm->det Entwicklungsfehler crc Crc nvm->crc CRC-Berechnung fee Fee / Ea memif->fee Weiterleitung fee->nvm NvM_JobEndNotification, NvM_JobErrorNotification

Kontextdiagramm: Der NvM vermittelt zwischen Anwendern und BswM auf der einen Seite und MemIf/Fee/Ea auf der anderen. Fehler meldet er an DEM und DET. Quellen: [SWS_NvM_00384] [SWS_NvM_00745] [SWS_NvM_00746] [SWS_NvM_00465] [SWS_NvM_00466], Error Description S. 43

Aufbau eines NVRAM-Blocks und die drei Verwaltungstypen

Ein NVRAM-Block besteht aus den Pflichtbestandteilen NV-Block, RAM-Block und Administrative Block. Ein ROM-Block mit Defaultdaten ist optional [SWS_NvM_00138] [SWS_NvM_00139] [SWS_NvM_00020]. Die Zusammensetzung legt der Blockdeskriptor zur Konfigurationszeit fest [SWS_NvM_00140]. Die einzelnen Bestandteile:

Der NvM unterstützt die Typen NVM_BLOCK_NATIVE, NVM_BLOCK_REDUNDANT und NVM_BLOCK_DATASET [SWS_NvM_00137]. Sie unterscheiden sich in der Zahl der NV- und ROM-Blöcke [SWS_NvM_00557] [SWS_NvM_00558] [SWS_NvM_00559] (SWS NvM S. 10). Bei Dataset-Blöcken gilt:

blockaufbau nvram NVRAM-Block (BlockId, Verwaltungstyp) nv NV-Block Header (opt.), Daten, CRC (opt.) nvram->nv NATIVE: 1 REDUNDANT: 2 DATASET: 1..m ram RAM-Block permanent, temporär oder RAM-Mirror nvram->ram genau 1 rom ROM-Block (optional) Defaultdaten nvram->rom NATIVE/REDUNDANT: 0..1 DATASET: 0..n adm Administrative Block Index, Attribute, Fehler-/Status nvram->adm genau 1

Kollaborationsdiagramm (Blockstruktur): Pflicht- und Optionalbestandteile eines NVRAM-Blocks mit Kardinalitäten je Verwaltungstyp. Quellen: [SWS_NvM_00138] [SWS_NvM_00557] [SWS_NvM_00558] [SWS_NvM_00559] [SWS_NvM_00134], SWS NvM S. 10

Lebenszyklus: NvM_Init, NvM_ReadAll und NvM_WriteAll

Der BswM ruft NvM_Init exklusiv auf [SWS_NvM_00693]. NvM_Init setzt Warteschlangen und Zustandsautomaten zurück und signalisiert intern „INIT DONE“ [SWS_NvM_00399]. Es initialisiert weder RAM-Blöcke noch unterlagerte Module [SWS_NvM_00091] [SWS_NvM_00193]. Der Konfigurationszeiger ist stets NULL_PTR [SWS_NvM_00881]. Erst danach verarbeitet NvM_MainFunction Aufträge [SWS_NvM_00257].

Die RAM-Blöcke füllt anschließend NvM_ReadAll [SWS_NvM_00718]. Der Aufruf signalisiert den Auftrag nur. Die Bearbeitung wird zurückgestellt, bis die Einzelblockaufträge erledigt sind [SWS_NvM_00243]. Danach läuft der Job in drei Schritten:

  1. Zuerst vergleicht er die gespeicherte mit der kompilierten Konfigurations-ID [SWS_NvM_00073]. Bei Abweichung hängt das Verhalten von NvMDynamicConfiguration ab: Mit NvMDynamicConfiguration == FALSE wird die Abweichung ignoriert [SWS_NvM_00248]. Andernfalls erhalten nicht änderungsresistente Blöcke Defaultdaten [SWS_NvM_00249] [SWS_NvM_00674] (NV Data Handling S. 15).
  2. Dann iteriert er über die Anwenderblöcke außer den Block-IDs 0 und 1 [SWS_NvM_00244]. Dabei verarbeitet er nur Blöcke mit permanentem RAM-Block oder expliziter Synchronisation [SWS_NvM_00118].
  3. Zum Schluss setzt er das Gesamtergebnis auf NVM_REQ_OK oder NVM_REQ_NOT_OK [SWS_NvM_00895] [SWS_NvM_00301].

Im Mode-Management-Beispiel startet die BswM-Regel NvMReadAllFinished die restliche Initialisierung erst nach Abschluss von NvM_ReadAll (Mode Management Guide S. 31).

Start: NvM_Init und NvM_ReadAllBSW-TaskBswMNvMMemIf / Fee / EaUse Case: InitialisierungNvM_Init(NULL_PTR)Queues und Zustände zurücksetzen,„INIT DONE“ – RAM-Blöcke unverändertNvM_Init()Use Case: Multiblock-Auftrag NvM_ReadAllNvM_ReadAll()NvM_ReadAll()optNvMBswMMultiBlockJobStatusInformation == TRUEBswM_NvM_CurrentJobMode(ReadAll, NVM_REQ_PENDING)NvM_MainFunction()erster Schritt: gespeicherte undkompilierte Konfigurations-ID vergleichenloopje Anwenderblock für NvM_ReadAll (ohne Block-ID 0 und 1)NvM_MainFunction()NV-Block lesenJob-ErgebnisRAM-Block bzw. Mirror füllen,Blockergebnis setzenoptNvMBswMMultiBlockJobStatusInformation == TRUEBswM_NvM_CurrentJobMode(ReadAll, Ergebnis)BswM_MainFunction()Regel NvMReadAllFinished:restliche BSW-Initialisierung

Sequenzdiagramm: Asynchroner Start mit NvM_Init, NvM_ReadAll und Rückmeldung des Multiblock-Zustands an den BswM. Quellen: [SWS_NvM_00693] [SWS_NvM_00243] [SWS_NvM_00073] [SWS_NvM_00888] [SWS_NvM_00889], NV Data Handling S. 20

Zum Shutdown ruft der BswM NvM_WriteAll auf [SWS_NvM_00092]. Der Job verhält sich so:

Anwender markieren geänderte Blöcke mit NvM_SetRamBlockStatus(…, TRUE), sofern die API aktiviert ist [SWS_NvM_00406] [SWS_NvM_00408]. Bei Dirty-Flag-Blöcken übernimmt die RTE diesen Aufruf (NV Data Handling S. 41).

NvM_CancelWriteAll ist dem BswM vorbehalten [SWS_NvM_00703] und bleibt ohne laufendes NvM_WriteAll wirkungslos [SWS_NvM_00233]. Der aktuelle Block wird nicht-destruktiv abgeschlossen [SWS_NvM_00238]. Die restlichen Blöcke und das Multiblock-Ergebnis erhalten NVM_REQ_CANCELED [SWS_NvM_00236] [SWS_NvM_00237] (SWS NvM S. 161).

Zwei weitere Multiblock-Aufträge ergänzen den Lebenszyklus:

  • NvM_ValidateAll setzt Blöcke mit automatischer Validierung auf „VALID / CHANGED“ [SWS_NvM_00856].
  • NvM_FirstInitAll beschreibt Blöcke mit Defaultdaten oder invalidiert sie, wenn keine vorhanden sind [SWS_NvM_00913] [SWS_NvM_00919].

Für alle Multiblock-Aufträge gilt eine Warteschlangenlänge von eins [SWS_NvM_00380].

Shutdown: NvM_WriteAll und NvM_CancelWriteAllBSW-TaskBswMNvMNvM_WriteAll()NvM_WriteAll()loopje Block mit permanentem RAM oder expliziter SynchronisationNvM_MainFunction()„valid/modified“ prüfen; geschützte undgesperrte Blöcke überspringen; schreibenaltAbbruch angefordertNvM_CancelWriteAll()NvM_CancelWriteAll()NvM_MainFunction()aktuellen Block nicht-destruktiv beenden,restliche Blöcke: NVM_REQ_CANCELEDBswM_NvM_CurrentJobMode(WriteAll, NVM_REQ_CANCELED)regulärer AbschlussBswM_NvM_CurrentJobMode(WriteAll, Ergebnis)Regel NvMWriteAllFinished:EcuM_GoDown

Sequenzdiagramm: Shutdown mit NvM_WriteAll und optionalem Abbruch durch NvM_CancelWriteAll. Quellen: [SWS_NvM_00092] [SWS_NvM_00682] [SWS_NvM_00238] [SWS_NvM_00237] [SWS_NvM_00889], Mode Management Guide S. 37

Einzelaufträge: Warteschlangen, Prioritäten und Rückmeldung

Einzelblockaufträge wie NvM_ReadBlock, NvM_WriteBlock oder NvM_RestoreBlockDefaults sind asynchron. Die Funktion übernimmt die Parameter, reiht den Auftrag ein und kehrt zurück [SWS_NvM_00195] [SWS_NvM_00208] [SWS_NvM_00224]. Danach steht das Blockergebnis auf NVM_REQ_PENDING [SWS_NvM_00185]. Bei Warteschlangenüberlauf liefert die Funktion E_NOT_OK [SWS_NvM_00184]. Ein Block wird nur eingereiht, wenn er nicht schon ansteht oder bearbeitet wird [SWS_NvM_00385].

Andere Dienste wirken synchron im Kontext des Aufrufers, etwa NvM_SetDataIndex [SWS_NvM_00448] und NvM_GetErrorStatus (SWS NvM S. 158). NvM_CancelJobs entfernt anstehende Aufträge eines Blocks; ein laufender Job wird jedoch fortgesetzt [SWS_NvM_00536] [SWS_NvM_00537].

Die Bearbeitung erfolgt serialisiert nach Priorität [SWS_NvM_00162]. Ist NvMJobPrioritization aktiv, nutzt der NvM zwei Warteschlangen, eine davon für Immediate-Schreibaufträge (Crash-Daten) [SWS_NvM_00564] [SWS_NvM_00378]. Ein solcher NvM_WriteBlock bricht einen anstehenden Job destruktiv ab [SWS_NvM_00300]. NvM_MainFunction startet den abgebrochenen Job danach neu [SWS_NvM_00258]. Ohne Priorisierung arbeitet der NvM in Eingangsreihenfolge, ohne Immediate-Jobs [SWS_NvM_00379]. Aufträge, die während eines Multiblock-Auftrags eingehen, werden eingereiht und anschließend ausgeführt [SWS_NvM_00568] [SWS_NvM_00569].

Jeder asynchrone Auftrag hinterlegt sein Ergebnis im Fehler-/Statusfeld [SWS_NvM_00175]. NvM_GetErrorStatus liest dieses Feld aus [SWS_NvM_00015]. Darüber hinaus gibt es zwei optionale Rückmeldewege:

Asynchroner Einzelblockauftrag mit RückmeldungNvM-AnwenderNvMBswMBSW-TaskMemIfNvM_WriteBlock(BlockId, NvM_SrcPtr)einreihen, Blockergebnis:NVM_REQ_PENDINGoptNvMBswMBlockStatusInformation == TRUEBswM_NvM_CurrentBlockMode(BlockId, NVM_REQ_PENDING)E_OKloopbis der Schreibjob abgeschlossen istNvM_MainFunction()Schreibauftrag / Status abfragenJob-ErgebnisoptNvMSingleBlockCallback konfiguriertNvM_SingleBlockCallbackFunction(NVM_WRITE_BLOCK, JobResult)optNvMBswMBlockStatusInformation == TRUEBswM_NvM_CurrentBlockMode(BlockId, Ergebnis)NvM_GetErrorStatus(BlockId, RequestResultPtr)E_OK, Ergebnis

Sequenzdiagramm: Asynchroner Schreibauftrag mit BswM-Statusmeldungen, Callback und Statusabfrage. Quellen: [SWS_NvM_00185] [SWS_NvM_00347] [SWS_NvM_00740] [SWS_NvM_00890] [SWS_NvM_00891], SWS NvM S. 160

RAM-Block-Synchronisation und Blockzustand

Der NvM kennt zwei Arten, Daten mit dem RAM-Block der Anwendung abzugleichen. Bei impliziter Synchronisation arbeitet er direkt auf diesem RAM-Block. Die Anwendung stellt den Block bereit und greift bis zum Auftragsende nicht darauf zu [SWS_NvM_00698] [SWS_NvM_00699]. Übergibt sie NULL_PTR, nutzt der NvM den permanenten RAM-Block [SWS_NvM_00898] [SWS_NvM_00900]. Ein temporärer Block per Zeiger ist trotzdem möglich [SWS_NvM_00278]. Die PRAM-Dienste arbeiten stets auf dem permanenten RAM-Block [SWS_NvM_00765] [SWS_NvM_00794]. Im RTE-Szenario ist dieser Block ein Per-Instance-Memory (NV Data Handling S. 32).

Bei expliziter Synchronisation (NvMBlockUseSyncMechanism) läuft der Austausch über einen internen RAM-Mirror [SWS_NvM_00511]. Davon gibt es genau einen, bemessen nach dem größten betroffenen Block [SWS_NvM_00513]. Der NvM ruft NvMWriteRamBlockToNvCallback bzw. NvMReadRamBlockFromNvCallback auf [SWS_NvM_00515] [SWS_NvM_00516]. Liefert ein Callback E_NOT_OK, wiederholt er den Aufruf im nächsten Zyklus, bis zu NvMRepeatMirrorOperations-mal [SWS_NvM_00579] [SWS_NvM_00840]. Bis zum Callback darf die Anwendung den RAM-Block noch ändern [SWS_NvM_00705]. Ein Block nutzt entweder explizite Synchronisation oder einen permanenten RAM-Block, nicht beides [SWS_NvM_00904]. Der Mechanismus erlaubt geteilte Blöcke über eine NvBlockSwComponentType (NV Data Handling S. 12).

Schreiben mit expliziter SynchronisationAnwendung (SW-C/RTE)NvMBSW-TaskMemIfRAM-Block mit Daten füllenNvM_WriteBlock(BlockId, NULL_PTR)E_OKRAM-Block darf bis zumCallback noch geändert werdenNvM_MainFunction()NvM_WriteRamBlockToNvm(NvMBuffer)(NvMWriteRamBlockToNvCallback)RAM-Block in RAM-Mirror kopierenaltRückgabe E_OKE_OKMirror-Inhalt in NV-Block schreibenRückgabe E_NOT_OKE_NOT_OKCallback im nächsten NvM_MainFunctionerneut aufrufen (max. NvMRepeatMirrorOperations)

Sequenzdiagramm: Schreibauftrag mit expliziter Synchronisation über den RAM-Mirror, einschließlich Wiederholung bei E_NOT_OK. Quellen: [SWS_NvM_00515] [SWS_NvM_00705] [SWS_NvM_00579] [SWS_NvM_00840], NV Data Handling S. 27

Für permanente RAM-Blöcke bzw. den Mirror führt der NvM einen Zustand „valid“/„invalid“ [SWS_NvM_00128] [SWS_NvM_00132]. Die Übergänge im Einzelnen:

  • NvM_ReadBlock invalidiert den permanenten RAM-Block schon beim Einreihen [SWS_NvM_00198].
  • Nach erfolgreichem Lesen ist er „valid/unchanged“ [SWS_NvM_00200].
  • Nach geladenen Defaultdaten ist er „valid/changed“ [SWS_NvM_00366].
  • NvM_SetRamBlockStatus(…, TRUE) markiert ihn als geändert und stößt eine CRC-Neuberechnung im Hintergrund an [SWS_NvM_00406] [SWS_NvM_00121].
  • Nach erfolgreichem Schreiben gilt er als „valid/unmodified“ [SWS_NvM_00472].
blockzustand invalid INVALID unchanged VALID / UNCHANGED invalid->unchanged NV-Daten erfolgreich gelesen changed VALID / CHANGED invalid->changed Defaultdaten geladen unchanged->invalid NvM_ReadBlock angenommen (permanenter RAM) unchanged->changed NvM_SetRamBlockStatus(TRUE) oder NvM_ValidateAll changed->invalid NvM_ReadBlock angenommen (permanenter RAM) changed->unchanged erfolgreich in NV geschrieben

Zustandsdiagramm: RAM-Block-Zustände und die auslösenden Ereignisse. Quellen: [SWS_NvM_00198] [SWS_NvM_00200] [SWS_NvM_00366] [SWS_NvM_00406] [SWS_NvM_00472] [SWS_NvM_00856]

Konfiguration, Schutzmechanismen und Partitionsbezug

Für begrenzte Ressourcen gibt es drei API-Konfigurationsklassen [SWS_NvM_00149]. Klasse 1 unterstützt keine Dataset-Blöcke [SWS_NvM_00365]. Die Deskriptortabellen werden generiert [SWS_NvM_00143]. Den Speicherbedarf deklarieren die Anwender zur Konfigurationszeit [SWS_NvM_00030]. BSW-Module tun das über NvBlockNeeds (BSWMD Template S. 241). Der ECU-Integrator leitet daraus die NvM-Konfiguration ab (Methodology S. 444).

Für einzelne Blöcke stehen mehrere Schutzmechanismen zur Verfügung:

Bei Partitionierung ruft der NvM Schnittstellen im Kontext der jeweils zugeordneten Partition auf. Allgemeine Funktionen laufen in der Master-Partition [SWS_NvM_00969]. NvM_ReadAll und NvM_WriteAll bietet nur der Master an [SWS_NvM_00970] [SWS_NvM_00971] [SWS_NvM_CONSTR00974]. SW-Cs erreichen den NvM über blockbezogene Ports:

Verhalten im Fehlerfall

Beim Lesen wertet der NvM die Meldungen der MemIf unterschiedlich aus:

Danach greifen mehrere Wiederherstellungsstufen:

  1. Bei CRC-Fehlern folgen konfigurierte Lesewiederholungen [SWS_NvM_00526].
  2. Bei redundanten Blöcken liest der NvM die zweite Kopie und versucht, die Redundanz wiederherzustellen [SWS_NvM_00199] [SWS_NvM_00531]. Misslingt das, meldet er NVM_E_LOSS_OF_REDUNDANCY [SWS_NvM_00546].
  3. Zuletzt lädt der NvM Defaultdaten mit dem Ergebnis NVM_REQ_RESTORED_DEFAULTS [SWS_NvM_00202]. Der NV-Inhalt bleibt dabei unverändert [SWS_NvM_00172].

Fehlen Defaultdaten, bleibt der RAM-Block ungültig [SWS_NvM_00658] [SWS_NvM_00204]. Interpretation: Die Reihenfolge der Stufen dürfte der Aufzählung in der Error Description folgen (Error Description S. 62). Frage (offen) Diese Quelle weicht in zwei Punkten von den Requirements ab. Sie nennt NVM_REQ_RESTORED_FROM_ROM statt NVM_REQ_RESTORED_DEFAULTS. Außerdem fasst sie das endgültige Scheitern pauschal als NVM_E_REQ_FAILED zusammen. Normativ sind die oben genannten Requirements.

lesefehler lesen NV-Block über MemIf lesen pruef Ergebnis der MemIf und CRC-Prüfung? lesen->pruef erfolg NVM_REQ_OK RAM-Block VALID / UNCHANGED pruef->erfolg in Ordnung inv NVM_REQ_NV_INVALIDATED keine DEM-Meldung pruef->inv MEMIF_BLOCK_INVALID retry Lesewiederholung (NVM_MAX_NUM_OF_READ_RETRIES) pruef->retry Fehler, Wiederholungen übrig red NVM_BLOCK_REDUNDANT? pruef->red Fehler, Wiederholungen erschöpft retry->lesen zweit zweiten NV-Block lesen red->zweit ja def Defaultdaten vorhanden? (ROM-Block / Init-Callback) red->def nein zweitok zweite Kopie in Ordnung? zweit->zweitok wieder Redundanz wiederherstellen; bei Misserfolg NVM_E_LOSS_OF_REDUNDANCY zweitok->wieder ja zweitok->def nein wieder->erfolg restore Defaults in RAM laden NVM_REQ_RESTORED_DEFAULTS def->restore ja fail RAM-Block bleibt ungültig NVM_REQ_INTEGRITY_FAILED / NVM_REQ_NOT_OK Meldung an DEM def->fail nein

Aktivitätsdiagramm: Lesefehlerbehandlung von der Wiederholung über die redundante Kopie bis zu den Defaultdaten. Interpretation: Die Reihenfolge folgt der Aufzählung der Error Description. Quellen: [SWS_NvM_00526] [SWS_NvM_00199] [SWS_NvM_00202] [SWS_NvM_00341] [SWS_NvM_00658], Error Description S. 62

Beim Schreiben zählt der NvM negative Rückmeldungen bis NVM_MAX_NUM_OF_WRITE_RETRIES [SWS_NvM_00213] [SWS_NvM_00216]. Wird die Grenze überschritten, setzt er NVM_REQ_NOT_OK und meldet NVM_E_REQ_FAILED [SWS_NvM_00683] [SWS_NvM_00684] (Error Description S. 43). Zwei weitere Fehlerbilder:

  • Scheitert die Schreibverifikation, meldet der NvM NVM_E_VERIFY_FAILED und wiederholt das Schreiben [SWS_NvM_00528] [SWS_NvM_00529].
  • Ein redundanter Block gilt als geschrieben, sobald eine Kopie erfolgreich war [SWS_NvM_00284].

Fehlbedienung meldet der NvM bei aktivierter Entwicklungsfehlererkennung an den DET. Beispiele sind NVM_E_UNINIT und NVM_E_BLOCK_PENDING [SWS_NvM_00614] [SWS_NvM_00615] sowie NVM_E_WRITE_PROTECTED [SWS_NvM_00962]. Ein Multiblock-Auftrag endet mit NVM_REQ_NOT_OK, sobald ein einzelner Block scheitert [SWS_NvM_00318]. Die Anwender prüfen den Status ihrer Blöcke selbst [SWS_NvM_00694]. Nach gescheitertem Lesen liefern sie vor dem nächsten Schreiben gültige Daten [SWS_NvM_00696].

Weiterführende Detailbelege

KI-generierter Leitfaden auf Basis der R20-11-Requirements und zugeordneter Dokumentstellen. Dokumentstellen aus anderen Releases sind ergänzend. Maßgeblich bleiben die verlinkten Spezifikationstexte.

NVRAM Manager (NvM)

Provides synchronous and asynchronous block-based data management for non-volatile storage (EEPROM, Flash).

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

function NvM_Init [SWS_NvM_00447] 📄 PDF

void NvM_Init (const NvM_ConfigType* ConfigPtr);

Service for resetting all internal variables.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: d241ed15a825 Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Verwendung und Aufrufkontext

Die Funktion NvM_Init dient dem synchronen Zurücksetzen aller internen Variablen des NVRAM Managers [SWS_NvM_00447]. Sie erwartet als Übergabeparameter ConfigPtr einen Zeiger auf den ausgewählten Konfigurationsdatensatz und besitzt keinen Rückgabewert [SWS_NvM_00447]. Als API vom Typ 4 ist sie Bestandteil der Konfigurationsklassen 2 und 3 [SWS_NvM_00560], [SWS_NvM_00561]. Die Funktion ist nicht reentrant und darf ausschließlich durch den BSW Mode Manager aufgerufen werden [SWS_NvM_00447], [SWS_NvM_00693].

Initialisierungsaufgaben

Während des Aufrufs führt die Funktion folgende Aktionen aus:

  • Rücksetzen aller internen Variablen, darunter Zustandsmaschinen, Auftrags-Queues und Request-Flags, auf ihre Initialwerte [SWS_NvM_00399].
  • Setzen des Datensatz-Index aller NVRAM-Blöcke vom Typ NVM_BLOCK_DATASET auf null [SWS_NvM_00192].
  • Internes Setzen des Signals „INIT DONE“, welches die Voraussetzung für die Auftragsverarbeitung, das Queue-Management und die CRC-Neuberechnung im Modul darstellt [SWS_NvM_00257], [SWS_NvM_00399].

Einschränkungen und Zusammenspiel

Wegen strikter Anforderungen an die Startzeit des Steuergeräts initialisiert NvM_Init keine konfigurierten NVRAM-Blöcke [SWS_NvM_00091]. Permanente RAM-Blockinhalte werden nicht verändert und Synchronisations-Callbacks nicht aufgerufen; dies ist der Funktion NvM_ReadAll vorbehalten [SWS_NvM_00400]. Zudem initialisiert NvM_Init weder unterlagerte Treiber noch die Speicher-Hardware-Abstraktion oder fremde Module, da deren Initialisierung durch den BSW Mode Manager vorausgesetzt wird [SWS_NvM_00157], [SWS_NvM_00193].

Dieser Nutzungshinweis wurde automatisiert auf Basis der AUTOSAR-Spezifikation R20-11 generiert.

Implementer's Guide folgt (Komplexität I2)

function NvM_SetBlockProtection [SWS_NvM_00450] 📄 PDF

Std_ReturnType NvM_SetBlockProtection (NvM_BlockIdType BlockId, boolean ProtectionEnabled);

Service for setting/ resetting the write protection for a NV block. Availabl e via Nv M.h

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: f3fd900b11e8 Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Verwendung und Semantik

Die synchrone und reentrante Funktion NvM_SetBlockProtection dient dem Setzen oder Zurücksetzen des Schreibschutzes für einen NVRAM-Block über das entsprechende Attribut im administrativen Block [SWS_NvM_00450], [SWS_NvM_00016]. Sie ist der API-Konfigurationsklasse 3 zugeordnet [SWS_NvM_00560]. Die Umgebung des NvM-Moduls kann den Schreibschutz über den Parameter ProtectionEnabled gezielt aktivieren oder deaktivieren [SWS_NvM_00578]. Die Funktion liefert bei erfolgreicher Ausführung E_OK und im Fehlerfall E_NOT_OK zurück [SWS_NvM_00450].

Einschränkungen und Nebenläufigkeit

Das Ändern des Schreibschutzes ist nur für Blöcke zulässig, bei denen NvMWriteBlockOnce auf FALSE konfiguriert ist, unabhängig vom Wert des Parameters NvMBlockWriteProt [SWS_NvM_00325]. Ist NvMWriteBlockOnce auf TRUE konfiguriert, darf der Schreibschutz weder aktiviert noch deaktiviert werden [SWS_NvM_00398], [SWS_NvM_00577]; dieser Schutz kann auch nach Leseoperationen nicht aufgehoben werden [SWS_NvM_00314], [SWS_NvM_00316], [SWS_NvM_00784]. Zudem kann ein über NvM_SetBlockLockStatus gesetzter Sperrzustand nicht durch NvM_SetBlockProtection modifiziert werden [SWS_NvM_00754]. Solange ein Einzelblockauftrag für denselben Block aktiv oder eingereiht ist, ist der Aufruf nicht zulässig [SWS_NvM_00704].

Fehlerbehandlung

Bei aktivierter Entwicklungserkennung (DET) meldet die Funktion spezifische Fehlerzustände:

  • NVM_E_UNINIT, wenn das NvM-Modul noch nicht initialisiert ist [SWS_NvM_00606].
  • NVM_E_PARAM_BLOCK_ID, wenn die übergebene BlockId außerhalb des gültigen Bereichs liegt [SWS_NvM_00609].
  • NVM_E_BLOCK_PENDING, falls für den Block bereits ein Vorgang aktiv oder eingereiht ist [SWS_NvM_00607].
  • NVM_E_BLOCK_CONFIG, wenn der Block mit NvMWriteBlockOnce = TRUE konfiguriert ist [SWS_NvM_00608].
  • NVM_E_BLOCK_LOCKED, wenn der Block gesperrt ist [SWS_NvM_00759].

Dieser Nutzungshinweis basiert auf der Spezifikation des NVRAM Managers in AUTOSAR Classic R20-11.

Implementer's Guide folgt (Komplexität I2)

function NvM_GetErrorStatus [SWS_NvM_00451] 📄 PDF

Std_ReturnType NvM_GetErrorStatus (NvM_BlockIdType BlockId, NvM_RequestResultType* RequestResultPtr);

Service to read the block dependent error/ status information.

function NvM_SetRamBlockStatus [SWS_NvM_00453] 📄 PDF

Std_ReturnType NvM_SetRamBlockStatus (NvM_BlockIdType BlockId, boolean BlockChanged);

Service for setting the RAM block status of a permanent RAM block or the status of the explicit synchronization of a NVRAM block.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: f2f026a0e790 Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Die synchrone und reentrante Funktion NvM_SetRamBlockStatus dient dem Setzen des RAM-Block-Status für permanente RAM-Blöcke oder für Blöcke mit expliziter Synchronisation [SWS_NvM_00453]. Sie steht in den API-Konfigurationsklassen 2 und 3 zur Verfügung [SWS_NvM_00561], [SWS_NvM_00560], sofern sie über den Konfigurationsparameter NvMSetRamBlockStatusApi aktiviert wurde [SWS_NvM_00408].

Über den Parameter BlockChanged wird gesteuert, ob der Block als gültig und verändert (TRUE) oder als ungültig und unverändert (FALSE) markiert wird [SWS_NvM_00453], [SWS_NvM_00406]. Bei Übergabe von TRUE geht das Modul von der Gültigkeit der Daten aus [SWS_NvM_00241]. Die Funktion liefert E_OK bei erfolgreicher Statusänderung und E_NOT_OK im Fehlerfall zurück [SWS_NvM_00453].

Wird BlockChanged auf TRUE gesetzt, fordert die Funktion im Hintergrund eine Neuberechnung der Prüfsumme in NvM_MainFunction an, falls NvMCalcRamBlockCrc konfiguriert ist [SWS_NvM_00121]. Bei Blöcken ohne permanenten RAM mit expliziter Synchronisation nutzt dieser Job den Schreib-Callback zur Datenbeschaffung [SWS_NvM_00906]. Schlägt dieser fehl, erfolgen konfigurierte Wiederholungen pro Aufruf von NvM_MainFunction [SWS_NvM_00907], [SWS_NvM_00908]. Bleiben alle Versuche erfolglos, gilt der Job dennoch als beendet und der Block bleibt als geändert markiert [SWS_NvM_00909].

Vor dem Aufruf muss das NvM-Modul initialisiert sein [SWS_NvM_00711]. Bei aktiver Entwicklungsausstandserkennung meldet die Funktion NVM_E_UNINIT bei uninitialisiertem Modul [SWS_NvM_00643], NVM_E_PARAM_BLOCK_ID bei ungültiger BlockId [SWS_NvM_00645] und NVM_E_BLOCK_PENDING bei bereits laufenden oder eingereihten Aufträgen [SWS_NvM_00644]. Solange ein Einzelblock-Auftrag aktiv ist, darf die Funktion für diesen Block nicht aufgerufen werden [SWS_NvM_00704]. Eine über NvM_SetBlockLockStatus gesetzte Blocksperre kann hierüber nicht verändert werden [SWS_NvM_00754].

Dieser Nutzungshinweis wurde automatisiert auf Basis der AUTOSAR-Spezifikation R20-11 generiert.

Implementer's Guide folgt (Komplexität I2)

function NvM_SetBlockLockStatus [SWS_NvM_00548] 📄 PDF

void NvM_SetBlockLockStatus (NvM_BlockIdType BlockId, boolean BlockLocked);

Service for setting the lock status of a permanent RAM block or of the explicit synchronization of a NVRAM block.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 9c1d841bb0f7 Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Verwendung und Aufrufkontext

Die synchrone und reentrante Funktion NvM_SetBlockLockStatus dient dem Sperren (BlockLocked = TRUE) oder Entsperren (BlockLocked = FALSE) eines permanent konfigurierten RAM-Blocks oder der expliziten Synchronisation eines NVRAM-Blocks [SWS_NvM_00548]. Sie gehört zum Funktionsumfang der API-Konfigurationsklassen 2 und 3 [SWS_NvM_00561], [SWS_NvM_00560]. Die Funktion ist nicht im ServicePort-Interface enthalten und wird primär durch das DCM sowie durch komplexe Gerätetreiber (CDD) aufgerufen [SWS_NvM_00732].

Einschränkungen und Zusammenspiel

Der Aufruf wirkt ausschließlich auf NVRAM-Blöcke mit permanentem RAM-Block oder konfigurierter expliziter Synchronisation; bei allen anderen Blöcken bleibt er ohne Effekt [SWS_NvM_00732]. Wird ein Block gesperrt (BlockLocked = TRUE), stellt das NvM sicher, dass die zugeordneten NV-Daten nicht modifiziert werden: Der Block wird bei NvM_WriteAll übersprungen, und die Dienste NvM_WriteBlock, NvM_WritePRAMBlock, NvM_InvalidateNvBlock sowie NvM_EraseNvBlock werden abgewiesen [SWS_NvM_00751]. Beim nächsten Hochlauf lädt das NvM den Block bei NvM_ReadBlock oder NvM_ReadPRAMBlock garantiert aus dem NV-Speicher [SWS_NvM_00752]. Der gesetzte Sperrzustand kann weder über NvM_SetRamBlockStatus noch über NvM_SetBlockProtection modifiziert werden [SWS_NvM_00754]. Die Übergabe von BlockLocked = FALSE stellt die reguläre Bearbeitung wieder her [SWS_NvM_00753].

Fehlerbehandlung

Bei aktivierter Entwicklungserkennung (DET) meldet die Funktion spezifische Entwicklungsfehler:

  • NVM_E_UNINIT, falls das NvM-Modul zum Aufrufzeitpunkt noch nicht initialisiert ist [SWS_NvM_00728].
  • NVM_E_PARAM_BLOCK_ID, wenn der Parameter BlockId außerhalb des zulässigen Bereichs liegt [SWS_NvM_00731].
  • NVM_E_BLOCK_CONFIG, sofern der referenzierte NVRAM-Block mit dem Parameter NvMWriteBlockOnce = TRUE konfiguriert ist [SWS_NvM_00730].

Dieser Nutzungshinweis basiert auf der AUTOSAR-Classic-Spezifikation R20-11 und fasst die Anforderungen zu Aufruf, Schutzwirkung und Fehlerbehandlung der API zusammen.

Implementer's Guide folgt (Komplexität I2)

function NvM_CancelJobs [SWS_NvM_00535] 📄 PDF

Std_ReturnType NvM_CancelJobs (NvM_BlockIdType BlockId);

Service to cancel all jobs pending for a NV block.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 692d02b963f0 Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Verwendung und Semantik

Die über NvM.h verfügbare Funktion NvM_CancelJobs dient dazu, alle in der Warteschlange anstehenden Aufträge für einen bestimmten NVRAM-Block synchron abzubrechen [SWS_NvM_00535], [SWS_NvM_00536]. Die Funktion ist reentrant ausgelegt und erwartet als Parameter die BlockId, welche den Block-Deskriptor des betreffenden NVRAM-Blocks eindeutig identifiziert [SWS_NvM_00535]. Der Aufruf liefert E_OK zurück, wenn anstehende Aufträge erfolgreich aus der Warteschlange entfernt werden konnten, und E_NOT_OK, falls für den angegebenen Block kein Auftrag in der Warteschlange auffindbar war [SWS_NvM_00535].

Ablauf und Nebenläufigkeit

Ein Auftrag, der zum Zeitpunkt des Funktionsaufrufs bereits aktiv abgearbeitet wird, wird durch NvM_CancelJobs nicht unterbrochen, sondern läuft bis zum Ende weiter [SWS_NvM_00537]. Sofern die Abbruchanforderung für wartende Aufträge akzeptiert wird, setzt der Dienst das blockspezifische Anfrageergebnis vorab auf NVM_REQ_CANCELED [SWS_NvM_00225], [SWS_NvM_00536]. Zweck dieser Bereinigung ist es, die Warteschlange beispielsweise bei Terminierung oder Neustart einer Partition zu leeren und so spätere Benachrichtigungen über abgeschlossene Jobs zu unterbinden [SWS_NvM_00225].

Fehlerbehandlung und Konfiguration

Bei aktivierter Entwicklungserkennung (DET) prüft die Funktion die Vorbedingungen: Ist das Modul noch uninitialisiert, wird der Fehler NVM_E_UNINIT gemeldet [SWS_NvM_00648]. Liegt die übergebene BlockId außerhalb des gültigen Bereichs, erfolgt die DET-Meldung NVM_E_PARAM_BLOCK_ID [SWS_NvM_00649]. NvM_CancelJobs ist als Typ-2-API eingestuft und steht in den API-Konfigurationsklassen 2 und 3 zur Verfügung [SWS_NvM_00561], [SWS_NvM_00560].

Dieser Nutzungshinweis wurde automatisiert auf Basis der AUTOSAR-Spezifikation generiert.

Implementer's Guide folgt (Komplexität I2)

function NvM_ReadBlock [SWS_NvM_00454] 📄 PDF

Std_ReturnType NvM_ReadBlock (NvM_BlockIdType BlockId, void* NvM_DstPtr);

Service to copy the data of the NV block to its corresponding RAM block.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 423f54bb75f5 Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Verwendung und Semantik

Die Funktion NvM_ReadBlock dient dem asynchronen Kopieren von Nutzdaten aus dem NV-Speicher in den zugehörigen RAM-Block [SWS_NvM_00010], [SWS_NvM_00454]. Der Aufruf ist reentrant [SWS_NvM_00454]. Er übernimmt die Parameter, reiht den Leseauftrag in die interne Job-Queue ein und gibt unmittelbar E_OK bei erfolgreicher Annahme bzw. E_NOT_OK bei Ablehnung zurück [SWS_NvM_00195], [SWS_NvM_00454].

Wird ein Zeiger NvM_DstPtr übergeben, können Daten abweichend von der Blockkonfiguration in einen temporären RAM-Puffer gelesen werden; ein unzulässiger NULL-Zeiger führt in diesem Szenario zu einem DET-Fehler [SWS_NvM_00196], [SWS_NvM_00278]. Ein konfigurierter permanenter RAM-Block wird direkt beim Einreihen oder bei Start der Jobverarbeitung als ungültig markiert [SWS_NvM_00198]. Erst nach erfolgreichem Kopiervorgang gilt der RAM-Block als gültig sowie unverändert [SWS_NvM_00200], und das Auftragsergebnis wechselt auf NVM_REQ_OK [SWS_NvM_00206].

Fehlerbehandlung und Datenintegrität

Ist für den Block eine Prüfsumme aktiviert (NvMCalRamBlockCrC == TRUE), fordert der Job nach dem Kopieren eine Neuberechnung an [SWS_NvM_00201]:

  • Bei CRC-Fehlern wird NVM_E_INTEGRITY_FAILED an das DEM gemeldet [SWS_NvM_00203]. Sofern vorhanden, werden Standardwerte geladen und das Ergebnis auf NVM_REQ_RESTORED_DEFAULTS gesetzt [SWS_NvM_00202]. Fehlen ROM-Daten und Initialisierungs-Callbacks, resultiert NVM_REQ_INTEGRITY_FAILED [SWS_NvM_00204].
  • Meldet der Speichertreiber MEMIF_JOB_FAILED und sind keine Ersatzwerte verfügbar, endet der Auftrag mit NVM_REQ_NOT_OK [SWS_NvM_00359].

Besonderheiten der Blocktypen

  • Redundant: Schlägt das Lesen der ersten Kopie fehl, wird automatisch die zweite NV-Kopie herangezogen [SWS_NvM_00199]. Sind beide Kopien ungültig, wird der Gesamtblock invalidiert [SWS_NvM_00317].
  • Dataset: Ist der über den Datensatz-Index selektierte Block als ungültig markiert, unterbleibt das Kopieren in das RAM [SWS_NvM_00355].
  • Write-Once: Konsistent gelesene Blöcke mit gesetztem NVM_WRITE_BLOCK_ONCE werden dauerhaft schreibgeschützt [SWS_NvM_00316].

Dieser Text wurde von einer KI erstellt und basiert ausschließlich auf den Spezifikationen des Release R20-11.

Implementer's Guide folgt (Komplexität I2)

function NvM_WriteBlock [SWS_NvM_00455] 📄 PDF

Std_ReturnType NvM_WriteBlock (NvM_BlockIdType BlockId, const void* NvM_SrcPtr);

Service to copy the data of the RAM block to its corresponding NV block. Available vi a Nv M.h

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: d2775f30ff1b Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Die Funktion NvM_WriteBlock dient dem Kopieren von Daten eines RAM-Blocks in den zugeordneten NV-Block [SWS_NvM_00455], [SWS_NvM_00410]. Der Aufruf wird reentrant und asynchron ausgeführt: Die Funktion übernimmt die übergebenen Parameter BlockId sowie NvM_SrcPtr, reiht den Schreibauftrag in die interne Job-Warteschlange ein und kehrt unmittelbar zurück [SWS_NvM_00208]. Der Rückgabewert signalisiert mit E_OK die erfolgreiche Annahme oder mit E_NOT_OK die Abweisung des Auftrags [SWS_NvM_00455].

Hinsichtlich Parametrierung und Datenquelle gelten folgende Vorgaben:

  • Wird eine gültige RAM-Adresse über NvM_SrcPtr übergeben, nutzt der Schreibauftrag diesen Puffer [SWS_NvM_00210]. Dies erlaubt auch das Sichern temporärer RAM-Blöcke bei eigentlich permanent konfigurierten Blöcken oder expliziter Synchronisation [SWS_NvM_00280].
  • Ein konfigurierter permanenter RAM-Block wird als gültig vorausgesetzt oder vor dem Kopiervorgang automatisch validiert [SWS_NvM_00303].
  • Ist für den NV-Block eine Prüfsumme konfiguriert, fordert der Job vor dem Schreibvorgang eine CRC-Neuberechnung an [SWS_NvM_00212].
  • Bei Datensatz-Blöcken (NVM_BLOCK_DATASET) wird das Ziel über den im administrativen Block hinterlegten Datenindex ausgewählt [SWS_NvM_00338].
  • Bei redundanten Blöcken (NVM_BLOCK_REDUNDANT) schließt der Job mit NVM_REQ_OK ab, sobald mindestens eine Kopie erfolgreich geschrieben wurde [SWS_NvM_00284].
  • Ist NvMWriteBlockOnce == TRUE gesetzt, aktiviert der Job nach erfolgreichem Schreiben umgehend den Schreibschutz im administrativen Block [SWS_NvM_00328].
  • Schreibaufträge für die reservierte Block-ID 1 sind nur bei aktiviertem NvMDynamicConfiguration zulässig [SWS_NvM_00311].

Fehlerbehandlung und Nebenläufigkeit:

  • Ist die Entwicklungserkennung aktiv, meldet NvM_WriteBlock den DET-Fehler NVM_E_UNINIT bei uninitialisiertem Modul [SWS_NvM_00619] sowie NVM_E_BLOCK_PENDING, falls derselbe Block bereits in Bearbeitung oder eingereiht ist [SWS_NvM_00620]. Ein fehlender Quellzeiger bei temporären Puffern führt zu einem DET-Parameterfehler [SWS_NvM_00280].
  • Negative Rückmeldungen der Speicherschnittstelle erhöhen den Wiederholungszähler; nach Überschreiten von NVM_MAX_NUM_OF_WRITE_RETRIES endet der Job mit NVM_REQ_NOT_OK [SWS_NvM_00213], [SWS_NvM_00216].
  • Ist der Block mit Sofortpriorität konfiguriert, bricht NvM_WriteBlock einen aktuell laufenden Job destruktiv ab, damit der Schreibauftrag als nächstes verarbeitet wird [SWS_NvM_00300].

Dieser Nutzungshinweis wurde automatisiert anhand der AUTOSAR-Spezifikation generiert.

Implementer's Guide folgt (Komplexität I2)

function NvM_RestoreBlockDefaults [SWS_NvM_00456] 📄 PDF

Std_ReturnType NvM_RestoreBlockDefaults (NvM_BlockIdType BlockId, void* NvM_DestPtr);

Service to restore the default data to its corr esponding RAM block.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 01efa016ebb0 Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Verwendung und Semantik

Die Funktion NvM_RestoreBlockDefaults stellt Standarddaten in dem zugeordneten RAM-Block wieder her ([SWS_NvM_00456], [SWS_NvM_00012]). Sie arbeitet asynchron: Nach dem Aufruf übernimmt sie die Parameter, reiht die Anforderung in die interne Auftragswarteschlange ein und kehrt unmittelbar mit E_OK bei erfolgreicher Annahme oder mit E_NOT_OK bei Ablehnung zurück ([SWS_NvM_00456], [SWS_NvM_00224]). Wird über den Ausgabeparameter NvM_DestPtr eine gültige RAM-Adresse übergeben, wird diese als Zieladresse verwendet ([SWS_NvM_00435]). Um ROM-Daten in einen temporären RAM-Block zu kopieren, obwohl ein permanenter RAM-Block oder Synchronisations-Callbacks konfiguriert sind, muss der Aufrufer zwingend einen Zeiger ungleich NULL übergeben ([SWS_NvM_00436]).

Fehlerbehandlung und Randbedingungen

Die Funktion ist nicht reentrant ([SWS_NvM_00456]) und Teil der API-Konfigurationsklassen 2 und 3 ([SWS_NvM_00561], [SWS_NvM_00560]). Ist die Entwicklungserkennung (DET) aktiv, meldet sie NVM_E_UNINIT, falls das Modul noch uninitialisiert ist ([SWS_NvM_00625]), NVM_E_PARAM_BLOCK_ID bei ungültiger BlockId ([SWS_NvM_00630]) sowie einen Parameterfehler, wenn bei permanent konfigurierten Blöcken für temporäres Kopieren kein gültiger Zielzeiger übergeben wird ([SWS_NvM_00436]). Die Funktion schlägt synchron mit E_NOT_OK fehl, wenn der Block vom Typ NVM_BLOCK_DATASET ist, mindestens ein ROM-Block existiert und der aktuelle Datenindex auf einen NV-Block zeigt ([SWS_NvM_00353]).

Job-Verarbeitung und Zusammenspiel

Im Rahmen der asynchronen Auftragsverarbeitung lädt der Dienst Standardwerte aus einem konfigurierten ROM-Block ([SWS_NvM_00267]). Ist ein permanenter RAM-Block angefordert oder kommt ein expliziter Synchronisations-Callback (NvMReadRamBlockFromNvCallback) zum Einsatz, wird der RAM-Block vor dem Kopiervorgang bzw. vor dem Callback-Aufruf invalidiert ([SWS_NvM_00227]). Nach erfolgreichem Kopiervorgang oder nach Rückkehr des Synchronisations-Callbacks mit E_OK wird der RAM-Block validiert und als geändert markiert ([SWS_NvM_00228]). Ist für den Block eine Prüfsumme konfiguriert, fordert der Job abschließend eine CRC-Neuberechnung an ([SWS_NvM_00229]). Dieselbe Wiederherstellungslogik nutzen auch NvM_ReadBlock und NvM_ReadAll als Ausweichmechanismus bei fehlerhaftem Speicherlesezugriff oder CRC-Fehlern ([SWS_NvM_00202], [SWS_NvM_00293], [SWS_NvM_00657]).

Dieser Nutzungshinweis wurde automatisiert auf Basis der Spezifikation AUTOSAR Classic R20-11 generiert.

Implementer's Guide folgt (Komplexität I2)

function NvM_EraseNvBlock [SWS_NvM_00457] 📄 PDF

Std_ReturnType NvM_EraseNvBlock (NvM_BlockIdType BlockId);

Service to erase a NV block.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: e5129c2997d6 Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Die reentrante, asynchrone Funktion NvM_EraseNvBlock ([SWS_NvM_00457]) der API-Konfigurationsklasse 3 ([SWS_NvM_00560]) dient dem Löschen eines nichtflüchtigen Speicherblocks anhand der übergebenen BlockId. Sofern kein Schreibschutz aktiv ist, übernimmt die Funktion die Parameter, reiht den Löschauftrag in die interne Auftragswarteschlange ein und kehrt unmittelbar zurück ([SWS_NvM_00231], [SWS_NvM_00418]). Der Rückgabewert E_OK signalisiert die erfolgreiche Annahme des Auftrags, während E_NOT_OK die Zurückweisung anzeigt ([SWS_NvM_00457]).

Vor dem Aufruf muss das NvM-Modul vollständig initialisiert sein ([SWS_NvM_00715]). Nach dem Einreihen wird der Schreibschutz vor Entnahme des Jobs aus der Warteschlange nicht erneut geprüft ([SWS_NvM_00662]). Bei redundanten Blöcken des Typs NVM_BLOCK_REDUNDANT gilt der Löschvorgang erst als erfolgreich, wenn beide redundanten NV-Blöcke gelöscht wurden ([SWS_NvM_00269]). Der Dateninhalt eines zugeordneten RAM-Blocks bleibt durch die Auftragsabwicklung stets unverändert ([SWS_NvM_00416]).

Ein Aufruf wird abgewiesen, wenn ein ROM-Block eines Datensatz-Blocks adressiert wird ([SWS_NvM_00661]) oder der Block mittels NvM_SetBlockLockStatus gesperrt ist ([SWS_NvM_00751]). Bei aktivierter Entwicklungserkennung (DET) meldet die Funktion NVM_E_UNINIT bei uninitialisiertem Modul ([SWS_NvM_00631]), NVM_E_PARAM_BLOCK_ID bei ungültiger BlockId ([SWS_NvM_00635]) sowie NVM_E_BLOCK_LOCKED bei blockiertem Block ([SWS_NvM_00757]). Besitzt der Block keine Sofort-Priorität („immediate priority“) bzw. ist Standard-Priorität konfiguriert, wird bei aktivem DET der Fehler NVM_E_BLOCK_CONFIG gemeldet und E_NOT_OK zurückgegeben ([SWS_NvM_00357], [SWS_NvM_00636]). Schlägt die spätere asynchrone Ausführung fehl, wird der Anforderungsstatus auf NVM_REQ_NOT_OK gesetzt ([SWS_NvM_00271]) und NVM_E_REQ_FAILED an das DEM gemeldet ([SWS_NvM_00663]).

Dieser Nutzungshinweis wurde automatisiert auf Basis der Spezifikation generiert.

Implementer's Guide folgt (Komplexität I2)

function NvM_InvalidateNvBlock [SWS_NvM_00459] 📄 PDF

Std_ReturnType NvM_InvalidateNvBlock (NvM_BlockIdType BlockId);

Service to invalidate a NV block.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: a20887273850 Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Die Funktion NvM_InvalidateNvBlock ist ein asynchroner und reentranter Dienst der API-Konfigurationsklasse 3 zur Invalidierung eines NV-Blocks [SWS_NvM_00459], [SWS_NvM_00560]. Als Aufrufbedingung gilt, dass das NvM-Modul vorab durch die Modulumgebung initialisiert worden sein muss [SWS_NvM_00717]. Der Aufruf übernimmt den Parameter BlockId, reiht die Anforderung bei deaktiviertem Schreibschutz in die Warteschlange ein und kehrt mit E_OK zurück [SWS_NvM_00239], [SWS_NvM_00424]. Kann der Auftrag nicht akzeptiert werden, liefert die Funktion E_NOT_OK [SWS_NvM_00459].

Ein Aufruf wird synchron mit E_NOT_OK zurückgewiesen, wenn über BlockId ein ROM-Block eines Datensatz-Blocks (Dataset) angegeben wurde [SWS_NvM_00664]. Wurde der Block zuvor via NvM_SetBlockLockStatus gesperrt, weist die NvM den Auftrag ab [SWS_NvM_00751] und meldet bei aktiver Entwicklungsschnittstelle den DET-Fehler NVM_E_BLOCK_LOCKED [SWS_NvM_00756]. Ist der Block bereits eingereiht oder in Ausführung, erfolgt die DET-Meldung NVM_E_BLOCK_PENDING [SWS_NvM_00639].

Der eigentliche asynchrone Job invalidiert den referenzierten NV-Block [SWS_NvM_00421] unter Berücksichtigung folgender Randbedingungen:

  • Bei redundanten Blöcken (NVM_BLOCK_REDUNDANT) wird das Auftragsergebnis erst dann auf NVM_REQ_OK gesetzt, wenn beide redundanten NV-Blöcke erfolgreich invalidiert sind [SWS_NvM_00274]; der gleiche Mechanismus findet auch bei NvM_FirstInitAll Anwendung [SWS_NvM_00919], [SWS_NvM_00920].
  • Für Blöcke mit NVM_WRITE_BLOCK_ONCE belässt der Job den Schreibschutz unverändert [SWS_NvM_00960]. Ging kein Lesevorgang voraus, meldet der Job den DET-Fehler NVM_E_WRITE_ONCE_STATUS_UNKNOWN [SWS_NvM_00958].
  • Tritt während der asynchronen Bearbeitung ein Fehler auf, wird das Anfrageergebnis auf NVM_REQ_NOT_OK gesetzt [SWS_NvM_00275] und der Produktionsfehler NVM_E_REQ_FAILED an das DEM übermittelt [SWS_NvM_00666].

Dieser Nutzungshinweis wurde von einer KI generiert und basiert ausschließlich auf den Spezifikationsdaten aus AUTOSAR R20-11.

Implementer's Guide folgt (Komplexität I2)

function NvM_ReadPRAMBlock [SWS_NvM_00764] 📄 PDF

Std_ReturnType NvM_ReadPRAMBlock (NvM_BlockIdType BlockId);

Service to copy the data of the NV block to its corresponding permanent RAM block.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 657ec2501bdc Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Verwendung

Die asynchrone und reentrante Funktion [SWS_NvM_00764] dient dem Kopieren von Daten eines NV-Blocks in den zugeordneten permanenten RAM-Block. Der Aufruf übernimmt die BlockId, reiht die Leseanforderung in die interne Auftragswarteschlange ein und kehrt umgehend zurück [SWS_NvM_00766]. Der Rückgabewert E_OK bestätigt die Annahme des Auftrags, während E_NOT_OK eine Ablehnung signalisiert [SWS_NvM_00764]. Die Funktion gehört zum Funktionsumfang der API-Konfigurationsklassen 2 und 3 [SWS_NvM_00560], [SWS_NvM_00561].

Ablauf und Synchronisation

Mit erfolgreicher Einreihung des Auftrags oder Beginn der Verarbeitung wird der permanente RAM-Block unverzüglich invalidiert [SWS_NvM_00767]. Ist für den Block eine explizite Synchronisation eingerichtet, darf die Anwendung den RAM-Block bis zum Eintreffen der Synchronisationsroutine verändern; die Invalidierung erfolgt in diesem Fall direkt vor dem Aufruf von NvMReadRamBlockFromNvCallback [SWS_NvM_00706], [SWS_NvM_00767]. Wurden die NV-Daten fehlerfrei in das RAM übertragen, schließt der Auftrag mit dem Status NVM_REQ_OK ab [SWS_NvM_00765], [SWS_NvM_00775].

Fehlerbehandlung und Redundanz

Bei Blöcken vom Typ NVM_BLOCK_REDUNDANT startet der Auftrag automatisch einen Leseversuch auf dem zweiten Block, sofern der erste Leseversuch fehlschlägt [SWS_NvM_00768]. Bei Datasets (NVM_BLOCK_DATASET) wird das Kopieren unterbunden, falls der über den Index gewählte NV-Block inkonsistent ist [SWS_NvM_00771]; verweist der Index auf ROM-Daten, werden diese geladen und das Ergebnis auf NVM_REQ_OK gesetzt [SWS_NvM_00772]. Sind Standarddaten konfiguriert und der NV-Block bei ungültigem RAM-Zustand nicht lesbar, erfolgt eine implizite Wiederherstellung [SWS_NvM_00575], die den RAM-Block als gültig sowie geändert einstuft [SWS_NvM_00774]; ohne konfigurierte Vorgabewerte unterbleibt die Wiederherstellung [SWS_NvM_00572]. War zuvor NvM_SetBlockLockStatus aktiv, wird das Nachladen aus dem NV-Speicher erzwungen [SWS_NvM_00752].

Dieser Nutzungshinweis wurde automatisiert auf Basis des Spezifikationsstands AUTOSAR CP R20-11 generiert.

Implementer's Guide folgt (Komplexität I2)

function NvM_WritePRAMBlock [SWS_NvM_00793] 📄 PDF

Std_ReturnType NvM_WritePRAMBlock (NvM_BlockIdType BlockId);

Service to copy the data of the permanent RAM block to its corresponding NV block.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 5a26959f15b3 Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Die reentrante, asynchrone Funktion NvM_WritePRAMBlock stößt das Schreiben der Daten eines permanenten RAM-Blocks in den zugehörigen NV-Block an [SWS_NvM_00793], [SWS_NvM_00794]. Die Funktion ist in den API-Konfigurationsklassen 2 und 3 verfügbar [SWS_NvM_00561], [SWS_NvM_00560]. Die reservierte Block-ID 1 darf nur übergeben werden, wenn NvMDynamicConfiguration auf TRUE gesetzt ist [SWS_NvM_00311].

Bei der Übergabe liefert die Funktion E_OK bei erfolgreicher Annahme oder E_NOT_OK [SWS_NvM_00793]. Ist der referenzierte Block gesperrt, schlägt der Aufruf mit E_NOT_OK fehl und das Modul meldet einen DET-Fehler [SWS_NvM_00797]. Ein Blockschutz wird bereits beim Einreihen in die Auftragsschlange geprüft und vor der Auftragsausführung nicht erneut validiert [SWS_NvM_00799]. Besitzt der NVRAM-Block Sofortpriorität (immediate priority), wird ein laufender Auftrag unmittelbar destruktiv abgebrochen und dieser Schreibauftrag als nächster verarbeitet [SWS_NvM_00800].

Vor der eigentlichen Übertragung in den NV-Speicher fordert der Auftrag eine CRC-Neuberechnung an, sofern der Block mit CRC konfiguriert ist [SWS_NvM_00801]. Ein noch ungültiger permanenter RAM-Block wird automatisch validiert [SWS_NvM_00803]. Bei redundanten Blöcken (NVM_BLOCK_REDUNDANT) werden beide NV-Blöcke beschrieben, beginnend mit demjenigen, der bei vorangegangenen Leseaufträgen nicht gelesen wurde [SWS_NvM_00807], [SWS_NvM_00808]. Bei Schreibfehlern wird die Anzahl der Wiederholungen durch NVM_MAX_NUM_OF_WRITE_RETRIES begrenzt [SWS_NvM_00806]; bei einem Überlauf setzt der NvM das Auftragsergebnis auf NVM_REQ_NOT_OK [SWS_NvM_00804] und meldet NVM_E_REQ_FAILED an das DEM [SWS_NvM_00805].

Hinsichtlich Nebenläufigkeit gilt: Bei impliziter Synchronisation darf die Applikation die Pufferdaten nach Aufruf bis zum Auftragsende nicht mehr modifizieren, lesender Zugriff bleibt gestattet [SWS_NvM_00698]. Bei expliziter Synchronisation darf der Puffer verändert werden, bis die Callback-Routine NvMWriteRamBlockToNvCallback aufgerufen wird [SWS_NvM_00705].

Dieser Text wurde von einer KI generiert und dient der technischen Orientierung anhand der Spezifikation.

Implementer's Guide folgt (Komplexität I2)

function NvM_RestorePRAMBlockDefaults [SWS_NvM_00813] 📄 PDF

Std_ReturnType NvM_RestorePRAMBlockDefaults (NvM_BlockIdType BlockId);

Service to restore the default data to its corresponding permanent RAM block.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: ffad126a6872 Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Verwendung und Semantik

Die Funktion NvM_RestorePRAMBlockDefaults stellt Standarddaten im zugehörigen permanenten RAM-Block wieder her ([SWS_NvM_00813], [SWS_NvM_00814]). Der Dienst arbeitet asynchron und übernimmt über den Parameter BlockId die Kennung des NVRAM-Block-Deskriptors ([SWS_NvM_00813]). Beim Aufruf wird die Anforderung in die interne Auftragswarteschlange eingereiht ([SWS_NvM_00815]). Der Rückgabewert E_OK signalisiert die erfolgreiche Annahme, während E_NOT_OK eine Abweisung anzeigt ([SWS_NvM_00813]). Ist ein ROM-Block konfiguriert, werden die Daten im Rahmen der asynchronen Verarbeitung aus diesem geladen ([SWS_NvM_00816]).

Fehlerbehandlung und Randbedingungen

Sind weder ROM-Standarddaten noch eine Callback-Routine NvMInitBlockCallback für den Block hinterlegt, bleibt der Blockstatus unverändert und der Aufruf liefert E_NOT_OK ([SWS_NvM_00884]). Bei aktivierter Entwicklungserkennung (DET) werden spezifische Fehler gemeldet:

  • NVM_E_UNINIT: Das Modul ist noch nicht initialisiert ([SWS_NvM_00831]).
  • NVM_E_PARAM_BLOCK_ID: Die übergebene BlockId liegt außerhalb des gültigen Bereichs ([SWS_NvM_00834]).
  • NVM_E_BLOCK_PENDING: Für die Block-ID ist bereits ein Auftrag eingereiht oder in Bearbeitung ([SWS_NvM_00832]).
  • NVM_E_BLOCK_WITHOUT_DEFAULTS: Es existieren weder ROM-Defaultdaten noch ein Initialisierungs-Callback ([SWS_NvM_00886]).
  • NVM_E_PARAM_ADDRESS: Es ist weder ein permanenter RAM-Block noch eine explizite Synchronisation konfiguriert ([SWS_NvM_00894]).

Nebenläufigkeit und Zusammenspiel

Der Dienst ist als nicht reentrant spezifiziert ([SWS_NvM_00813]) und steht in den API-Konfigurationsklassen 2 und 3 zur Verfügung ([SWS_NvM_00561], [SWS_NvM_00560]). Dieselbe Wiederherstellungslogik kommt zudem intern bei NvM_ReadPRAMBlock zum Einsatz, falls der unterlagerte Lesevorgang fehlschlägt ([SWS_NvM_00789], [SWS_NvM_00882]).

Dieser Nutzungshinweis basiert auf den Spezifikationen von AUTOSAR Classic Release R20-11.

Implementer's Guide folgt (Komplexität I2)

function NvM_ReadAll [SWS_NvM_00460] 📄 PDF

void NvM_ReadAll (void);

Initiates a multi block read request.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: d6aaa62b8e91 Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Die Funktion NvM_ReadAll stößt asynchron einen Multi-Block-Leseauftrag zur Initialisierung der RAM-Datenblöcke an [SWS_NvM_00460], [SWS_NvM_00158]. Sie besitzt keine Parameter, liefert keinen Rückgabewert und ist nicht reentrant [SWS_NvM_00460]. Der Aufruf signalisiert die Anforderung an das NvM-Modul und kehrt sofort zurück; die eigentliche Abarbeitung wird jedoch verzögert, bis sämtliche Einzelblock-Auftragswarteschlangen leer sind [SWS_NvM_00243].

Zu Beginn validiert der Auftrag während des Systemstarts die Konfigurations-ID durch Vergleich des gespeicherten mit dem kompilierten Wert [SWS_NvM_00073], [SWS_NvM_00246]:

  • Bei Übereinstimmung erfolgt die normale Vorbereitung für alle konfigurierten Blöcke [SWS_NvM_00247].
  • Ein Konfigurationsunterschied wird ignoriert, wenn NvMDynamicConfiguration == FALSE gesetzt ist [SWS_NvM_00248].
  • Ist NvMDynamicConfiguration == TRUE und NvMResistantToChangedSw == FALSE, wird bei Nichtübereinstimmung eine erweiterte Vorbereitung ausgeführt [SWS_NvM_00249].

Anschließend iteriert der Auftrag über alle Anwenderblöcke, beginnend mit der niedrigsten Block-ID (ausgenommen die reservierten IDs 0 und 1) [SWS_NvM_00244]. Berücksichtigt werden permanente RAM-Blöcke oder Blöcke mit konfiguriertem Synchronisations-Callback NvM_ReadRamBlockFromNvm, sofern NvmSelectBlockForReadall == TRUE konfiguriert ist [SWS_NvM_00118]. Nicht gelesene, aber selektierte Blöcke erhalten das Ergebnis NVM_REQ_BLOCK_SKIPPED [SWS_NvM_00287].

Bei redundanten Blöcken (NVM_BLOCK_REDUNDANT) wird bei Fehlschlag des ersten Leseversuchs automatisch der zweite NV-Block gelesen [SWS_NvM_00288]. Nach erfolgreichem Laden ins RAM wird der Blockstatus auf „valid/unmodified“ und das Auftragsergebnis auf NVM_REQ_OK gesetzt [SWS_NvM_00251], [SWS_NvM_00290], [SWS_NvM_00291]. Für Blöcke mit NvMCalRamBlockCrC == TRUE fordert der Auftrag eine CRC-Neuberechnung an [SWS_NvM_00292]. Sofern konfiguriert, wird je Block NvMSingleBlockCallback und nach dem letzten Block MultiBlockCallback aufgerufen [SWS_NvM_00281].

Dieser Nutzungshinweis basiert auf den Spezifikationsvorgaben zu AUTOSAR Classic R20-11.

Implementer's Guide folgt (Komplexität I1)

function NvM_WriteAll [SWS_NvM_00461] 📄 PDF

void NvM_WriteAll (void);

Initiates a multi block write request.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: a7a2e73b7711 Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Verwendung und Aufrufkontext

Die Funktion NvM_WriteAll stößt asynchron einen Multi-Block-Schreibauftrag an und besitzt weder Parameter noch Rückgabewerte [SWS_NvM_00461]. Nach dem Aufruf signalisiert die Funktion die Anforderung an das NvM-Modul und kehrt unmittelbar zurück [SWS_NvM_00254]. Die eigentliche Verarbeitung wird zurückgestellt, bis alle Warteschlangen für Einzelblock-Aufträge vollständig abgearbeitet sind [SWS_NvM_00254]. Der Aufruf erfolgt typischerweise im Rahmen des grundlegenden Abschaltvorgangs (Shutdown) durch den BSW Mode Manager [SWS_NvM_00092].

Ablauf und Blockverarbeitung

Während des Shutdowns synchronisiert der Auftrag permanente RAM-Blöcke mit den zugehörigen NV-Blöcken oder führt den expliziten Synchronisations-Callback NvM_WriteRamBlockToNvm aus [SWS_NvM_00018]. Dabei werden ausschließlich Blöcke berücksichtigt, für die der Konfigurationsparameter NvMSelectBlockForWriteAll auf true gesetzt ist [SWS_NvM_00252], sowie Block 1 im Falle abweichender Konfigurations-IDs bei aktiver dynamischer Konfiguration [SWS_NvM_00310]. Falls für einen NVRAM-Block eine CRC konfiguriert ist, fordert der Auftrag vor dem Schreibvorgang eine Neuberechnung an und aktualisiert die Prüfsumme [SWS_NvM_00253]. Für Blöcke mit NvMWriteBlockOnce == TRUE setzt der Auftrag nach erfolgreichem Schreiben unmittelbar das Schreibschutz-Flag im administrativen Block [SWS_NvM_00329].

Nebenläufigkeit und Fehlerbehandlung

  • Reentranz: Die Funktion ist nicht reentrant [SWS_NvM_00461].
  • Fehlerüberwachung: Um Endlosschleifen zu vermeiden, überwacht ein Retry-Zähler die Wiederholungsversuche bei nicht erfolgreichen Rückmeldungen des MemIf-Moduls [SWS_NvM_00296].
  • Auftragsergebnisse: Scheitert die Verarbeitung mindestens eines Blocks, wird das Gesamtergebnis auf NVM_REQ_NOT_OK gesetzt [SWS_NvM_00318]. Für konfigurierte Blöcke, die nicht geschrieben wurden, wird das Einzelergebnis NVM_REQ_BLOCK_SKIPPED gesetzt [SWS_NvM_00298]. Bei redundanten Blöcken (NVM_BLOCK_REDUNDANT) gilt der Einzelauftrag als NVM_REQ_OK, sobald mindestens einer der NV-Blöcke erfolgreich geschrieben wurde [SWS_NvM_00337].
  • Abbruch: Ein laufender Auftrag kann durch NvM_CancelWriteAll abgebrochen werden [SWS_NvM_00019]. Dies führt zum Gesamtergebnis NVM_REQ_CANCELED [SWS_NvM_00237], wobei der gerade bearbeitete Block zerstörungsfrei und datenkonsistent vollendet wird [SWS_NvM_00238].

Dieser Text wurde von einer KI generiert und dient als Orientierungshilfe. Maßgeblich ist die AUTOSAR-Spezifikation.

Implementer's Guide folgt (Komplexität I1)

function NvM_CancelWriteAll [SWS_NvM_00458] 📄 PDF

void NvM_CancelWriteAll (void);

Service to cancel a running Nv M_ Write All request.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 2a47a7f76a8b Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Verwendung und Semantik

Die Funktion NvM_CancelWriteAll dient dazu, eine laufende Mehrblock-Schreiboperation (NvM_WriteAll) vorzeitig abzubrechen [SWS_NvM_00458], [SWS_NvM_00019]. Der Aufruf ist asynchron, nicht reentrant, nimmt keine Parameter entgegen und liefert keinen Rückgabewert [SWS_NvM_00458]. Die Funktion signalisiert den Abbruchwunsch direkt an das Modul und kehrt umgehend zurück [SWS_NvM_00232]. Die Anforderung wird nicht in die Auftragswarteschlange eingereiht; es kann stets nur eine Anforderung dieses Typs anstehen [SWS_NvM_00420]. Ist zum Aufrufzeitpunkt keine Operation aktiv, bleibt der Aufruf ohne Wirkung [SWS_NvM_00233].

Ablauf und Datenkonsistenz

Der Abbruch wird so durchgeführt, dass die Datenkonsistenz des zum Zeitpunkt des Abbruchs bearbeiteten NVRAM-Blocks nicht beeinträchtigt wird [SWS_NvM_00019]. Das Modul schließt diesen aktiven Block regulär ab und setzt dessen Statusattribut je nach Erfolg auf NVM_REQ_OK oder NVM_REQ_NOT_OK, während alle verbleibenden noch ausstehenden Blöcke auf NVM_REQ_CANCELED gesetzt werden [SWS_NvM_00236]. Das Gesamtergebnis ist implizit durch das Ergebnis der abgebrochenen Operation vorgegeben [SWS_NvM_00235], wird in einer separaten Variablen abgelegt [SWS_NvM_00393] und kann über NvM_GetErrorStatus unter Angabe der reservierten Block-ID 0 abgefragt werden [SWS_NvM_00394]. Zudem kann optional ein übergeordneter Callback (NvMMultiBlockCallback) benachrichtigt werden [SWS_NvM_00260]. Sofern über NvMDrvModeSwitch konfiguriert, schaltet der Auftrag die Speichergeräte nach dem Abbruch in den langsamen Betriebsmodus („slow-mode“) um [SWS_NvM_00681].

Einschränkungen und Fehlerbehandlung

Der Aufruf von NvM_CancelWriteAll ist funktional eingeschränkt und darf ausschließlich durch den BSW Mode Manager (BswM) erfolgen [SWS_NvM_00703]. Zudem gehört die Funktion zur API-Konfigurationsklasse 2 [SWS_NvM_00561]. Das Modul muss vor dem Aufruf initialisiert worden sein [SWS_NvM_00716]; bei aktivierter Entwicklungserkennung (DET) führt ein Aufruf im uninitialisierten Zustand zur Fehlermeldung NVM_E_UNINIT [SWS_NvM_00637].

Dieser Nutzungshinweis wurde automatisiert auf Basis der AUTOSAR-Spezifikation R20-11 erstellt.

Implementer's Guide folgt (Komplexität I1)

function NvM_ValidateAll [SWS_NvM_00855] 📄 PDF

void NvM_ValidateAll (void);

Initiates a multi block validation request.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 234ca1eec615 Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Die Funktion NvM_ValidateAll stößt die asynchrone Validierung mehrerer NVRAM-Blöcke an ([SWS_NvM_00855]) und gehört zur API-Konfigurationsklasse 3 ([SWS_NvM_00560]). Sie ist nicht reentrant, erwartet keine Parameter und liefert keinen Rückgabewert ([SWS_NvM_00855]). Vor dem Aufruf muss das NvM-Modul initialisiert sein ([SWS_NvM_00859]).

Beim Aufruf signalisiert die Funktion die Anforderung an das Modul und kehrt umgehend zurück ([SWS_NvM_00858]). Die tatsächliche Abarbeitung wird jedoch verzögert, bis alle Einzelblock-Auftragswarteschlangen vollständig abgearbeitet sind ([SWS_NvM_00858]). Für Multi-Block-Aufträge steht in der Auftragswarteschlange insgesamt nur ein einziger Platz zur Verfügung ([SWS_NvM_00380]). Das Gesamtergebnis des asynchronen Auftrags wird in einer separaten Zustandsvariablen geführt ([SWS_NvM_00393]).

Im Rahmen der Auftragsabarbeitung werden vorab sowohl das Multi-Block-Ergebnis als auch die Ergebnisse der betroffenen Einzelblöcke auf NVM_REQ_PENDING gesetzt ([SWS_NvM_00861]). Die Verarbeitung berücksichtigt ausschließlich Blöcke, für die NvMBlockUseAutoValidation auf TRUE konfiguriert ist ([SWS_NvM_00856], [SWS_NvM_00860]):

  • Es werden permanente RAM-Blöcke verarbeitet oder die explizite Synchronisation über den Callback NvM_WriteRamBlockToNvm ausgeführt ([SWS_NvM_00860]).
  • Der RAM-Block-Status wird auf „VALID / CHANGED“ gesetzt ([SWS_NvM_00856]).
  • Ist zusätzlich eine CRC-Berechnung im RAM konfiguriert, fordert der Auftrag die Neuberechnung im Hintergrund an, die über NvM_MainFunction verarbeitet wird ([SWS_NvM_00857]).
  • Nach erfolgreicher Validierung des RAM-Blocks wechselt das blockspezifische Ergebnis auf NVM_REQ_OK ([SWS_NvM_00862]).

Dieser Nutzungshinweis wurde automatisiert auf Basis der AUTOSAR-Spezifikation R20-11 generiert.

Implementer's Guide folgt (Komplexität I1)

function NvM_FirstInitAll [SWS_NvM_91001] 📄 PDF

void NvM_FirstInitAll (void);

The function initiates a multi block first initialization request. The job of the function does not care if a block exists in the non - volatile memory or not OR if it is valid (i.e. not corrupted) or not, when processing it.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 97732570bd55 Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Die Funktion NvM_FirstInitAll stößt die asynchrone Erstinitialisierung mehrerer konfigurierter Blöcke an ([SWS_NvM_91001]). Der Dienst ist nicht reentrant, erwartet keine Parameter und liefert keinen Rückgabewert ([SWS_NvM_91001]). Bei der Abarbeitung wird nicht berücksichtigt, ob ein Block im nichtflüchtigen Speicher bereits existiert oder gültig bzw. korrumpiert ist ([SWS_NvM_91001]). Die Warteschlangenlänge für Multi-Block-Aufträge (unter anderem aus NvM_FirstInitAll) beträgt eins, sodass nur ein einziger Multi-Block-Auftrag gleichzeitig eingereiht werden kann ([SWS_NvM_00380]).

Die Verarbeitung unterscheidet sich nach dem Verwaltungstyp des Blocks:

  • NATIVE: Liegen Standarddaten vor, wird der NV-Block damit beschrieben ([SWS_NvM_00913]). Besitzt der Block permanenten RAM oder explizite Synchronisation, wird der RAM wie bei NvM_RestoreBlockDefaults mit den Standarddaten (ROM oder Init-Callback) aktualisiert ([SWS_NvM_00915]); ohne permanenten RAM und ohne explizite Synchronisation dient der interne NvM-Puffer als RAM, wobei der RAM-Zustand unberührt bleibt ([SWS_NvM_00914]). Fehlen Standarddaten ([SWS_NvM_00919]) oder schlägt ein konfigurierter Init-Callback mit einem Rückgabewert ungleich E_OK fehl ([SWS_NvM_00921]), wird der Block invalidiert.
  • REDUNDANT: Sind Standarddaten vorhanden, werden beide Blockinstanzen damit geschrieben ([SWS_NvM_00916]) und bei vorhandenem permanentem RAM bzw. expliziter Synchronisation der RAM aktualisiert ([SWS_NvM_00918]); andernfalls wird der interne Puffer genutzt ([SWS_NvM_00917]). Liefert ein Init-Callback nicht E_OK, werden beide Instanzen invalidiert ([SWS_NvM_00922]).
  • DATASET: Alle für die Verarbeitung konfigurierten Blöcke bzw. NV-Blockinstanzen dieses Typs werden ausnahmslos invalidiert ([SWS_NvM_00923], [SWS_NvM_00924]).

Schlägt das Schreiben eines NATIVE-Blocks mit Standarddaten ([SWS_NvM_00925]), die Invalidierung eines NATIVE-Blocks ([SWS_NvM_00927]) oder das Schreiben beider Instanzen eines REDUNDANT-Blocks ([SWS_NvM_00926]) fehl, setzt der Auftrag das Gesamtergebnis auf NVM_REQ_NOT_OK.

Dieser Text wurde durch eine KI auf Basis der Spezifikation R20-11 generiert.

Implementer's Guide folgt (Komplexität I1)

function NvM_JobEndNotification [SWS_NvM_00462] 📄 PDF

void NvM_JobEndNotification (void);

Function to be used by the underlying memory abstraction to signal end of job without error.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 44e91f5e39db Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Verwendung

Die synchrone Callback-Funktion NvM_JobEndNotification wird von der unterlagerten Speicherabstraktion aufgerufen, um dem NVRAM-Manager das fehlerfreie Ende eines Auftrags zu signalisieren [SWS_NvM_00462]. Die Funktion besitzt weder Parameter noch einen Rückgabewert und ist über die Header-Datei NvM_MemIf.h mit der Service-ID 0x11 verfügbar [SWS_NvM_00462]. Eine erfolgreiche Benachrichtigung der Speicherabstraktion umfasst fehlerfrei abgeschlossene Lese-, Schreib- oder Löschoperationen [SWS_NvM_00111].

Nebenläufigkeit und Einschränkungen

Die Schnittstelle ist als nicht reentrant spezifiziert [SWS_NvM_00462]. Abhängig von der aufrufenden Funktion innerhalb der Speicherabstraktion kann diese Routine im Interrupt-Kontext ausgeführt werden [SWS_NvM_00111]. Alle Module der Speicherabstraktion sollten so konfiguriert werden, dass sie einheitlich denselben Modus – Callback oder Polling – verwenden [SWS_NvM_00111].

Konfiguration und Zusammenspiel

Das NvM-Modul stellt die Callback-Funktion NvM_JobEndNotification nur bereit, wenn der Polling-Modus über den Konfigurationsparameter NvMPollingMode deaktiviert ist [SWS_NvM_00440]. Zudem wird die Funktion durch allgemeine NvM-Konfigurationsparameter beeinflusst [SWS_NvM_00440].

Dieser Nutzungshinweis basiert auf der AUTOSAR-Spezifikation R20-11.

Implementer's Guide folgt (Komplexität I1)

function NvM_JobErrorNotification [SWS_NvM_00463] 📄 PDF

void NvM_JobErrorNotification (void);

Function to be used by the underlying memory abstraction to signal end of job with error.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: aca80117b4e4 Herkunft Offene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Die Callback-Funktion NvM_JobErrorNotification ([SWS_NvM_00463]) dient der unterlagerten Speicherabstraktionsschicht dazu, das fehlerhafte Ende eines asynchronen Auftrags an das NVRAM-Manager-Modul (NvM) zu signalisieren. Der Aufruf erfolgt synchron und ist als nicht reentrant spezifiziert ([SWS_NvM_00463]).

Verwendung und Signatur

  • Schnittstelle: Die Funktionsdeklaration wird über die Header-Datei NvM_MemIf.h zur Verfügung gestellt ([SWS_NvM_00463]).
  • Signatur: Gemäß void NvM_JobErrorNotification(void) besitzt die Funktion weder Eingabe- noch Ausgabe- oder Ein-/Ausgabeparameter und liefert keinen Rückgabewert ([SWS_NvM_00463]).
  • Service-ID: Die Funktion ist über die hexadezimale Kennung 0x12 identifiziert ([SWS_NvM_00463]).

Konfigurationsabhängigkeit und Zusammenspiel

Das Modul NvM stellt die Callback-Funktion NvM_JobErrorNotification nur dann bereit, wenn der Polling-Modus über den Konfigurationsparameter NvMPollingMode deaktiviert ist ([SWS_NvM_00441]). Wird Polling verwendet, entfällt dieser Benachrichtigungsmechanismus. Darüber hinaus wird die Funktion durch die allgemeinen Konfigurationsparameter nach [SWS_NvM_00028] Wortlaut noch nicht übernommen beeinflusst ([SWS_NvM_00441]).

Fehlerbehandlung und Nebenläufigkeit

Die Funktion dient ausschließlich der Fehlermeldung von Aufträgen und definiert weder eigene Fehlercodes noch DET- oder DEM-Rückmeldungen ([SWS_NvM_00463]). Aufgrund der Klassifizierung als Non Reentrant obliegt es vermutlich dem Aufrufer in der Speicherabstraktion sicherzustellen, dass keine überlappenden oder unterbrechenden Aufrufe stattfinden ([SWS_NvM_00463]). Frage Q-5f72d9d605c25922 (offen)

Dieser Nutzungshinweis wurde automatisiert auf Basis der Spezifikation AUTOSAR Classic R20-11 generiert.

Implementer's Guide folgt (Komplexität I1)

function NvM_MainFunction [SWS_NvM_00464] 📄 PDF

void NvM_MainFunction (void);

Service for performing the processing of the Nv M jobs.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: e37fc51f7baf Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Verwendung

Die Funktion NvM_MainFunction besitzt weder Übergabeparameter noch einen Rückgabewert (void NvM_MainFunction(void)) und ist über SchM_NvM.h deklariert ([SWS_NvM_00464]). Sie dient der Abarbeitung der NVRAM-Manager-Aufträge ([SWS_NvM_00464], [SWS_NvM_00256]). Nach dem Abschluss eines asynchronen Dienstes führt sie konfigurierte Callback-Routinen zur Benachrichtigung der oberen Schicht aus ([SWS_NvM_00347]). Zudem übernimmt sie im Hintergrund angeforderte CRC-Neuberechnungen für NVRAM-Blöcke ([SWS_NvM_00333]), etwa infolge von NvM_SetRamBlockStatus ([SWS_NvM_00121]) oder NvM_ValidateAll ([SWS_NvM_00857]).

Ablaufsteuerung und Priorisierung

Sofern konfiguriert, überwacht die Funktion die Immediate-Priority-Queue auf Anforderungen mit Sofortpriorität ([SWS_NvM_00259]). Wurde eine reguläre Anforderung durch einen Sofortauftrag destruktiv abgebrochen, startet NvM_MainFunction diese nach dessen Abschluss neu ([SWS_NvM_00258]). Bei aktivem Polling-Modus prüft sie den Status der an die untere Schicht übergebenen Aufträge ([SWS_NvM_00346]). Während der Verarbeitung von NvM_WriteAll fragt sie zyklisch den Zustand der Speichertreiberabstraktion über MemIf_GetStatus für MEMIF_BROADCAST_ID ab und hält Callbacks an die obere Schicht zurück, solange MEMIF_BUSY_INTERNAL gemeldet wird ([SWS_NvM_00350]).

Fehlerbehandlung und Wiederholungen

Schlagen anwendungsspezifische Callbacks fehl, steuert NvM_MainFunction die Wiederholungsversuche:

  • Liefert NvMReadRamBlockFromNvCallback den Wert E_NOT_OK, wiederholt das Modul den Aufruf im nächsten Zyklus von NvM_MainFunction ([SWS_NvM_00839]).
  • Gibt NvMWriteRamBlockToNvCallback E_NOT_OK zurück, erfolgt die Wiederholung ebenfalls im nächsten Aufruf von NvM_MainFunction ([SWS_NvM_00840]).
  • Gibt der explizite Synchronisations-Callback bei NvM_SetRamBlockStatus E_NOT_OK zurück, führt das Modul die konfigurierten Wiederholungen mit jeweils einem Versuch pro Aufruf von NvM_MainFunction aus ([SWS_NvM_00908]).

Dieser Text wurde von einer KI auf Basis der AUTOSAR-Spezifikation R20-11 generiert.

Implementer's Guide folgt (Komplexität I2)

function NvM_SingleBlockCallbackFunction [SWS_NvM_00467] 📄 PDF

Std_ReturnType NvM_SingleBlockCallbackFunction (NvM_BlockRequestType BlockRequest, NvM_RequestResultType JobResult);

Per block callback routine to notify the upper layer that an asynchronous single block request has been finished.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: f9058239e263 Herkunft Offene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Verwendung

Die Callback-Routine NvM_SingleBlockCallbackFunction benachrichtigt die überlagerte Schicht synchron über den Abschluss einer zuvor angestoßenen asynchronen Einzelblock-Anforderung [SWS_NvM_00467].

Die Funktion verarbeitet zwei Übergabeparameter [SWS_NvM_00467]:

  • BlockRequest (Typ NvM_BlockRequestType): Übergibt die Art der zuvor ausgeführten Blockanforderung, wie beispielsweise Lese- oder Schreiboperationen [SWS_NvM_00467].
  • JobResult (Typ NvM_RequestResultType): Meldet das Gesamtergebnis des abgearbeiteten Blockauftrags [SWS_NvM_00467].

Als Rückgabewert liefert die Funktion den Typ Std_ReturnType [SWS_NvM_00467]. Eine erfolgreiche Abarbeitung des Callbacks wird durch die Rückgabe von E_OK signalisiert; jeder andere Rückgabewert kennzeichnet eine nicht erfolgreiche Ausführung [SWS_NvM_00467].

Fehlerbehandlung und Nebenläufigkeit

Die Schnittstelle spezifiziert keine eigenen DET- oder DEM-Fehlermeldungen [SWS_NvM_00467]. Das Ergebnis des vorangegangenen Auftrags wird über den Parameter JobResult übermittelt, während Fehler innerhalb der Callback-Bearbeitung selbst über den Funktionsrückgabewert gemeldet werden [SWS_NvM_00467].

Bezüglich der Nebenläufigkeit ist die Routine als nicht reentrant (Non Reentrant) deklariert [SWS_NvM_00467]. Sie wird über den Header NvM_Externals.h bereitgestellt [SWS_NvM_00467]. Der Aufruf durch das NvM-Modul dürfte synchron im Taskkontext der zyklischen NvM-Auftragsabarbeitung erfolgen (Interpretation). Frage Q-f50640211851274f (offen)

Dieser Nutzungshinweis wurde durch eine KI auf Basis der Spezifikation AUTOSAR R20-11 generiert.

Implementer's Guide folgt (Komplexität I1)

function NvM_MultiBlockCallbackFunction [SWS_NvM_00468] 📄 PDF

Std_ReturnType NvM_MultiBlockCallbackFunction (NvM_MultiBlockRequestType MultiBlockRequest, NvM_RequestResultType JobResult);

Common callback routine to notify the upper layer that an asynchronous multi block request has been finished. Available v ia Nv M_ Externals.h

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: a3c38e2b6191 Herkunft Offene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Die Callback-Routine NvM_MultiBlockCallbackFunction benachrichtigt die übergeordnete Schicht darüber, dass ein zuvor initiierter asynchroner Multiblock-Auftrag abgeschlossen wurde [SWS_NvM_00468]. Die Deklaration der Funktion wird über die Header-Datei NvM_Externals.h zur Verfügung gestellt [SWS_NvM_00468].

Aufrufkontext und Parameter

Der Aufruf durch den NVRAM-Manager erfolgt synchron zur Abarbeitung im Verarbeitungsablauf [SWS_NvM_00468]. Beim Aufruf werden der Routine zwei Parameter übergeben:

  • MultiBlockRequest (Typ NvM_MultiBlockRequestType): Bezeichnet die konkrete Anforderungsart des zuvor bearbeiteten Multiblock-Auftrags, wie beispielsweise Lese- oder Schreibzugriffe [SWS_NvM_00468].
  • JobResult (Typ NvM_RequestResultType): Übermittelt das Endergebnis der Verarbeitung des vorausgegangenen Multiblock-Jobs an die übergeordnete Schicht [SWS_NvM_00468].

Rückgabewert und Fehlerbehandlung

Die Routine gibt einen Wert vom Typ Std_ReturnType an das aufrufende Modul zurück [SWS_NvM_00468]. Der Rückgabewert E_OK zeigt an, dass die Callback-Funktion erfolgreich abgearbeitet werden konnte; jeder andere Rückgabewert signalisiert hingegen eine fehlgeschlagene Verarbeitung [SWS_NvM_00468]. Spezifische Fehlercodes, DET- oder DEM-Meldungen sind im Spezifikationsumfang für diese Funktion nicht definiert. Interpretation: Die konkreten Konsequenzen eines Rückgabewerts ungleich E_OK dürften implementationsspezifisch sein, da der Standard keine nachgelagerte Fehlerbehandlung vorschreibt. Frage Q-462dea7f3074ae9c (offen)

Nebenläufigkeit und Einschränkungen

Die Funktion ist als nicht reentrant (Non Reentrant) spezifiziert [SWS_NvM_00468]. Innerhalb des aufrufenden Systems muss deshalb sichergestellt werden, dass keine nebenläufigen oder unterbrechenden Mehrfachaufrufe dieser Callback-Schnittstelle stattfinden.

Dieser Text wurde von einer KI auf Basis der Spezifikation generiert.

Implementer's Guide folgt (Komplexität I1)

function NvM_InitBlockCallbackFunction [SWS_NvM_00469] 📄 PDF

Std_ReturnType NvM_InitBlockCallbackFunction (NvM_InitBlockRequestType InitBlockRequest);

Per block callback routine which shall be called by the Nv M module when default data needs to be restored in RAM, and a RO M block is not configured. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_NVRAMManager

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 6fa779cf7b62 Herkunft Offene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Verwendung und Aufrufkontext

Die anwenderspezifische Callback-Routine NvM_InitBlockCallbackFunction wird vom NvM-Modul aufgerufen, wenn Standarddaten für einen NVRAM-Block im RAM wiederhergestellt werden müssen und kein entsprechender ROM-Block konfiguriert ist [SWS_NvM_00469]. Der Aufruf erfolgt synchron und die Schnittstelle ist über den Header NvM_Externals.h deklariert [SWS_NvM_00469].

Als Übergabeparameter erhält die Funktion InitBlockRequest vom Typ NvM_InitBlockRequestType [SWS_NvM_00469]. Dieser Wert informiert die Routine über den spezifischen Anforderungstyp des aktuell verarbeiteten Blocks, wie etwa das Lesen oder Wiederherstellen von Daten (read, restore) [SWS_NvM_00469].

Rückgabewerte und Fehlerbehandlung

Die Routine gibt einen Statuswert vom Typ Std_ReturnType zurück [SWS_NvM_00469]:

  • E_OK: Signalisiert dem NvM-Modul, dass die Callback-Funktion die Daten im RAM erfolgreich initialisiert und verarbeitet hat [SWS_NvM_00469].
  • Jeder andere Rückgabewert: Zeigt an, dass die Initialisierung nicht erfolgreich abgeschlossen werden konnte [SWS_NvM_00469].

Spezifische Fehlercodes für DET oder DEM sind für die Schnittstelle selbst nicht spezifiziert [SWS_NvM_00469].

Nebenläufigkeit und Ausführungseinschränkungen

Die Schnittstelle ist als synchron und nicht reentrant (Non Reentrant) festgelegt [SWS_NvM_00469]. Da der NVRAM Manager synchron auf die Rückkehr der Funktion wartet, dürfte eine blockierende Ausführung innerhalb der Routine die Weiterverarbeitung des NvM unmittelbar anhalten (Interpretation). Frage Q-c0e43c9871c4f2d0 (offen)

Dieser Nutzungshinweis wurde von einer KI auf Basis der Spezifikation AUTOSAR R20-11 generiert.

Implementer's Guide folgt (Komplexität I1)

function NvM_WriteRamBlockToNvm [SWS_NvM_00539] 📄 PDF

Std_ReturnType NvM_WriteRamBlockToNvm (void* NvMBuffer);

Block specific callback routine which shall be called in order to let the application copy data from RAM block to Nv M module's mirror.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 5243b53cfd03 Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Die blockspezifische Callback-Funktion NvM_WriteRamBlockToNvm dient der expliziten Synchronisation, um Anwendungsdaten aus dem RAM-Block in den internen RAM-Spiegel des NvM-Moduls zu kopieren [SWS_NvM_00539]. Sie ist deklarativ über NvM_Externals.h verfügbar und wird vom NvM synchron aufgerufen [SWS_NvM_00539].

Verwendung und Parameter

Die Funktion übergibt als Ausgabeparameter den Zeiger NvMBuffer, welcher die Zieladresse des NvM-Spiegels darstellt, an die die Daten geschrieben werden müssen [SWS_NvM_00539]. Als Rückgabewert liefert die Callback-Routine E_OK bei erfolgreicher Verarbeitung oder jeden anderen Wert bei fehlerhaftem Verlauf [SWS_NvM_00539].

Nebenläufigkeit und Einschränkungen

Gemäß Spezifikation ist NvM_WriteRamBlockToNvm nicht reentrant (Non Reentrant) ausgelegt [SWS_NvM_00539].

Zusammenspiel im Modul

  • Beim Herunterfahren synchronisiert der Job NvM_WriteAll permanente RAM-Blöcke oder ruft die Callback-Routine NvM_WriteRamBlockToNvm zur expliziten Synchronisation auf [SWS_NvM_00018], sofern der Parameter NvMSelectBlockForWriteAll für den NVRAM-Block auf true konfiguriert ist [SWS_NvM_00252].
  • Die Schreibjobs NvM_WriteBlock [SWS_NvM_00303] und NvM_WritePRAMBlock [SWS_NvM_00803] validieren einen noch ungültigen permanenten RAM-Block automatisch nach dem Aufruf von NvM_WriteRamBlockToNvm.

Dieser Text wurde von einer KI auf Basis der AUTOSAR-Spezifikation R20-11 generiert.

Implementer's Guide folgt (Komplexität I1)

function NvM_ReadRamBlockFromNvm [SWS_NvM_00540] 📄 PDF

Std_ReturnType NvM_ReadRamBlockFromNvm (const void* NvMBuffer);

Block specific callback routine which shall be called in order to let the application copy data from Nv M module's mirror to RAM block.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 1b2c937c4017 Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Die Funktion NvM_ReadRamBlockFromNvm ist eine blockspezifische Callback-Routine, die über NvM_Externals.h deklariert wird [SWS_NvM_00540]. Ihr Zweck besteht darin, der Anwendung das Kopieren von Daten aus dem internen Spiegelpuffer des NvM-Moduls in den zugehörigen RAM-Block zu ermöglichen, um eine explizite Synchronisation durchzuführen [SWS_NvM_00540], [SWS_NvM_00118].

Verwendung und Semantik

  • Aufrufkontext und Nebenläufigkeit: Der Aufruf erfolgt synchron und ist als nicht reentrant (Non Reentrant) spezifiziert [SWS_NvM_00540].
  • Parameter: Als Übergabeparameter dient der Zeiger NvMBuffer (Typ const void*). Er übergibt die Pufferadresse, aus welcher die Daten gelesen und in den RAM-Block kopiert werden können [SWS_NvM_00540].
  • Rückgabewert und Fehlerbehandlung: Die Callback-Funktion liefert einen Std_ReturnType zurück. Der Rückgabewert E_OK signalisiert die erfolgreiche Abarbeitung; jeder andere Rückgabewert zeigt eine nicht erfolgreiche Verarbeitung an [SWS_NvM_00540].

Zusammenspiel

Im Rahmen des Multiblock-Dienstes NvM_ReadAll wird NvM_ReadRamBlockFromNvm für diejenigen NVRAM-Blöcke zur expliziten Synchronisation aufgerufen, die entsprechend konfiguriert sind und für die NvmSelectBlockForReadall == TRUE gilt [SWS_NvM_00118], [SWS_NvM_00356]. Dies stellt die Alternative zum direkten Kopiervorgang in permanente RAM-Blöcke dar, während NvM_ReadAll die Verwaltungsdaten der Blöcke initialisiert [SWS_NvM_00356].

Dieser Text wurde durch ein KI-System auf Basis der Spezifikationsvorgaben generiert.

Implementer's Guide folgt (Komplexität I1)

type NvM_MultiBlockRequestType [SWS_NvM_91003] 📄 PDF

Identifies the type of request performed on multi block when signaled via the callback function or when reporting to Bsw M

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: e84ff8330bcb Herkunft Offene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Der Enumerationstyp NvM_MultiBlockRequestType wird über die Header-Datei NvM.h bereitgestellt und dient der eindeutigen Kennzeichnung einer ausgeführten Multi-Block-Anforderung [SWS_NvM_91003]. Der Typ wird verwendet, wenn das Ergebnis oder der Status einer Multi-Block-Operation über eine Callback-Funktion signalisiert oder an das Modul BswM gemeldet wird [SWS_NvM_91003].

Wertebereich und Semantik

Die Enumeration definiert folgende Werte zur Differenzierung der Multi-Block-Aufträge [SWS_NvM_91003]:

  • NVM_READ_ALL (0x00): Zeigt an, dass NvM_ReadAll ausgeführt wurde.
  • NVM_WRITE_ALL (0x01): Zeigt an, dass NvM_WriteAll ausgeführt wurde.
  • NVM_VALIDATE_ALL (0x02): Zeigt an, dass NvM_ValidateAll ausgeführt wurde.
  • NVM_FIRST_INIT_ALL (0x03): Zeigt an, dass NvM_FirstInitAll ausgeführt wurde.
  • NVM_CANCEL_WRITE_ALL (0x04): Zeigt an, dass NvM_CancelWriteAll ausgeführt wurde.

Zusammenspiel

Durch die Übergabe dieses Typs können aufgerufene Callbacks sowie der BswM feststellen, welcher konkrete Mehrblock-Dienst die Benachrichtigung ausgelöst hat. Interpretation: Vermutlich dient die Rückmeldung an den BswM dazu, Folgeaktionen oder Zustandswechsel im Gesamtsystem an den Abschluss spezifischer Multi-Block-Dienste zu koppeln. Frage Q-69b4d985301acfeb (offen)

Dieser Text wurde von einer KI generiert und dient als Orientierungshilfe. Maßgeblich sind die referenzierten Spezifikationen.

Implementer's Guide folgt (Komplexität I1)

type NvM_RequestResultType [SWS_NvM_00470] 📄 PDF

Type NvM_RequestResultType.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 49d0056a8c31 Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Der Typ NvM_RequestResultType basiert auf uint8, steht über Rte_NvM_Type.h bereit und bildet das asynchrone Anfrageergebnis von Lese-, Schreib- und Steueraufträgen des NVRAM-Managers ab [SWS_NvM_00470]. Das Ergebnis wird primär über den API-Dienst NvM_GetErrorStatus abgefragt und kann zusätzlich über eine konfigurierte Callback-Funktion signalisiert werden [SWS_NvM_00470].

Der Wertebereich bildet verschiedene Ausführungszustände und Fehlerfälle ab [SWS_NvM_00470]:

  • NVM_REQ_OK (0x00): Der letzte asynchrone Auftrag wurde erfolgreich beendet; dies ist zugleich der Standardwert nach einem Reset.
  • NVM_REQ_NOT_OK (0x01): Die asynchrone Lese-, Schreib- oder Steueranforderung wurde nicht erfolgreich beendet.
  • NVM_REQ_PENDING (0x02): Eine asynchrone Anforderung ist aktuell noch in Bearbeitung.
  • NVM_REQ_INTEGRITY_FAILED (0x03): Datenintegritätsfehler bei NvM_ReadBlock oder NvM_ReadAll. Im Fall von NvM_ReadBlock wurde der Inhalt des RAM-Blocks verändert, ist jedoch ungültig geworden; die Applikation ist dafür verantwortlich, den Inhalt zu erneuern und zu validieren.
  • NVM_REQ_BLOCK_SKIPPED (0x04): Der referenzierte Block wurde während NvM_ReadAll oder NvM_WriteAll übersprungen (z. B. Dataset-NVRAM-Blöcke bei NvM_ReadAll oder Blöcke ohne permanent konfigurierten RAM-Block).
  • NVM_REQ_NV_INVALIDATED (0x05): Der referenzierte NV-Block ist invalidiert.
  • NVM_REQ_CANCELED (0x06): Abbruch von NvM_WriteAll durch NvM_CancelWriteAll oder Abbruch eines Einzelblock-Auftrags (NvM_ReadBlock, NvM_WriteBlock, NvM_EraseNvBlock, NvM_InvalidateNvBlock, NvM_RestoreBlockDefaults) durch NvM_CancelJobs.
  • NVM_REQ_RESTORED_DEFAULTS (0x08): Die Standardwerte wurden erfolgreich in das RAM-Abbild kopiert.

Im Zusammenspiel mit redundanten Blöcken (NVM_BLOCK_REDUNDANT) setzt die Funktion NvM_InvalidateNvBlock das Anfrageergebnis NvM_RequestResultType erst dann auf NVM_REQ_OK, wenn beide NV-Blöcke invalidiert wurden [SWS_NvM_00274].

Dieser Text wurde automatisch generiert. Alle Angaben basieren ausschließlich auf den Spezifikationsanforderungen der AUTOSAR-Version R20-11.

Implementer's Guide folgt (Komplexität I1)

type NvM_BlockIdType [SWS_NvM_00471] 📄 PDF

Identification of a NVRAM block via a unique block identifier. Reserved NVRAM block IDs: 0 - > to derive multi block request results via Nv M_ Get Error Status 1 - > redundant NVRAM block which holds the configuration ID

type NvM_InitBlockRequestType [SWS_NvM_91123] 📄 PDF

Identifies the type of request performed on a block when signaled via the callback function

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: f4f68ded6ba5 Herkunft Offene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Der Datentyp NvM_InitBlockRequestType basiert auf uint8 und wird über die Header-Datei Rte_NvM_Type.h bereitgestellt [SWS_NvM_91123]. Er dient dazu, die Art der an einem NVRAM-Block durchgeführten Anforderung zu identifizieren, wenn diese über eine entsprechende Callback-Funktion signalisiert wird [SWS_NvM_91123].

Der zulässige Wertebereich umfasst vier Anforderungstypen [SWS_NvM_91123]:

  • NVM_INIT_READ_BLOCK (0x00): Zeigt an, dass NvM_ReadBlock oder NvM_ReadPRAMBlock für den Block angefordert wurde [SWS_NvM_91123].
  • NVM_INIT_RESTORE_BLOCK_DEFAULTS (0x01): Signalisiert, dass NvM_RestoreBlockDefaults oder NvM_RestorePRAMBlockDefaults für den Block angefordert wurde [SWS_NvM_91123].
  • NVM_INIT_READ_ALL_BLOCK (0x02): Weist darauf hin, dass die Verarbeitung des Blocks im Rahmen von NvM_ReadAll erfolgt [SWS_NvM_91123].
  • NVM_INIT_FIRST_INIT_ALL (0x03): Kennzeichnet die Blockverarbeitung während des Ablaufs von NvM_FirstInitAll [SWS_NvM_91123].

Anhand dieses Aufzählungswerts kann die aufgerufene Anwendungslogik unterscheiden, ob es sich um eine explizite Einzelblockanforderung (Lesen oder Wiederherstellen von Standardwerten) oder um eine globale Sammeloperation während des Systemanlaufs handelt [SWS_NvM_91123]. Interpretation: Der Typ dürfte als Parameter an blockbezogene Initialisierungs-Callbacks übergeben werden, damit die Anwendung situationsgerecht Standarddaten bereitstellen oder spezifische Vorbereitungen treffen kann. Frage Q-42d0d469e305728e (offen)

Dieser Nutzungshinweis basiert auf der Spezifikation AUTOSAR Classic Release R20-11.

Implementer's Guide folgt (Komplexität I1)

type NvM_BlockRequestType [SWS_NvM_91002] 📄 PDF

Identifies the type of reques t performed on a block when signaled via the callback function

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 68d31eddd2e0 Herkunft Offene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Der Aufzählungstyp NvM_BlockRequestType basiert auf uint8 und wird über den Header Rte_NvM_Type.h zur Verfügung gestellt [SWS_NvM_91002]. Er dient dazu, bei einer Benachrichtigung über eine Callback-Funktion die Art der Anforderung zu übermitteln, die zuvor auf einem NVRAM-Block ausgeführt wurde [SWS_NvM_91002].

Der Wertebereich umfasst sechs spezifische Blockanforderungen [SWS_NvM_91002]:

  • NVM_READ_BLOCK (0x00): Signalisiert, dass NvM_ReadBlock oder NvM_ReadPRAMBlock für den Block ausgeführt wurde [SWS_NvM_91002].
  • NVM_WRITE_BLOCK (0x01): Signalisiert, dass NvM_WriteBlock oder NvM_WritePRAMBlock für den Block ausgeführt wurde [SWS_NvM_91002].
  • NVM_RESTORE_BLOCK_DEFAULTS (0x02): Signalisiert, dass NvM_RestoreBlockDefaults oder NvM_RestorePRAMBlockDefaults ausgeführt wurde [SWS_NvM_91002].
  • NVM_ERASE_NV_BLOCK (0x03): Signalisiert, dass NvM_EraseNvBlock auf dem Block ausgeführt wurde [SWS_NvM_91002].
  • NVM_INVALIDATE_NV_BLOCK (0x04): Signalisiert, dass NvM_InvalidateNvBlock auf dem Block ausgeführt wurde [SWS_NvM_91002].
  • NVM_READ_ALL_BLOCK (0x05): Signalisiert, dass NvM_ReadAll die Bearbeitung dieses Blocks abgeschlossen hat [SWS_NvM_91002].

In der Anwendungsarchitektur dürfte der Wert als Parameter in Callback-Routinen ausgewertet werden, um übergeordnete Softwarekomponenten über das Ende bestimmter Blockoperationen differenziert zu informieren [SWS_NvM_91002]. Frage Q-467801b6b5e898a2 (offen) Mangels weiterer Vorgaben im Payload zu Fehlercodes oder Nebenläufigkeit beschränken sich die Spezifikationsdetails auf die Typdefinition und den Wertebereich [SWS_NvM_91002].

Dieser Text wurde von einer KI erstellt; die Richtigkeit kann nicht garantiert werden.

Implementer's Guide folgt (Komplexität I1)

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/CP_MOD_NvM
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_NvM@rel:R20-11#0437d95c
Content hash
0437d95c
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_NVRAMManager.pdf#nameddest=SWS_NvM_00447

Initialisierung und Status

Service to get the version information of the Nv M module.

void NvM_GetVersionInfo (Std_VersionInfoType* versioninfo);
NvM_Init function

Service for resetting all internal variables.

void NvM_Init (const NvM_ConfigType* ConfigPtr);

Dienste · Read…

NvM_ReadAll function

Initiates a multi block read request.

void NvM_ReadAll (void);
NvM_ReadBlock function

Service to copy the data of the NV block to its corresponding RAM block.

Std_ReturnType NvM_ReadBlock (NvM_BlockIdType BlockId, void* NvM_DstPtr);

Service to copy the data of the NV block to its corresponding permanent RAM block.

Std_ReturnType NvM_ReadPRAMBlock (NvM_BlockIdType BlockId);

Block specific callback routine which shall be called in order to let the application copy data from Nv M module's mirror to RAM block.

Std_ReturnType NvM_ReadRamBlockFromNvm (const void* NvMBuffer);

Dienste · Set…

Service for setting the lock status of a permanent RAM block or of the explicit synchronization of a NVRAM block.

void NvM_SetBlockLockStatus (NvM_BlockIdType BlockId, boolean BlockLocked);

Service for setting/ resetting the write protection for a NV block. Availabl e via Nv M.h

Std_ReturnType NvM_SetBlockProtection (NvM_BlockIdType BlockId, boolean ProtectionEnabled);

Service for setting the Data Inde x of a dataset NVRAM block.

Std_ReturnType NvM_SetDataIndex (NvM_BlockIdType BlockId, uint8 DataIndex);

Service for setting the RAM block status of a permanent RAM block or the status of the explicit synchronization of a NVRAM block.

Std_ReturnType NvM_SetRamBlockStatus (NvM_BlockIdType BlockId, boolean BlockChanged);

Dienste · Write…

NvM_WriteAll function

Initiates a multi block write request.

void NvM_WriteAll (void);

Service to copy the data of the RAM block to its corresponding NV block. Available vi a Nv M.h

Std_ReturnType NvM_WriteBlock (NvM_BlockIdType BlockId, const void* NvM_SrcPtr);

Service to copy the data of the permanent RAM block to its corresponding NV block.

Std_ReturnType NvM_WritePRAMBlock (NvM_BlockIdType BlockId);

Block specific callback routine which shall be called in order to let the application copy data from RAM block to Nv M module's mirror.

Std_ReturnType NvM_WriteRamBlockToNvm (void* NvMBuffer);

Dienste · Cancel…

Service to cancel all jobs pending for a NV block.

Std_ReturnType NvM_CancelJobs (NvM_BlockIdType BlockId);

Service to cancel a running Nv M_ Write All request.

void NvM_CancelWriteAll (void);

Dienste · Get…

Service for getting the currently set Data Index of a datase t NVRAM block

Std_ReturnType NvM_GetDataIndex (NvM_BlockIdType BlockId, uint8* DataIndexPtr);

Service to read the block dependent error/ status information.

Std_ReturnType NvM_GetErrorStatus (NvM_BlockIdType BlockId, NvM_RequestResultType* RequestResultPtr);

Dienste · Job…

Function to be used by the underlying memory abstraction to signal end of job without error.

void NvM_JobEndNotification (void);

Function to be used by the underlying memory abstraction to signal end of job with error.

void NvM_JobErrorNotification (void);

Dienste · Restore…

Service to restore the default data to its corr esponding RAM block.

Std_ReturnType NvM_RestoreBlockDefaults (NvM_BlockIdType BlockId, void* NvM_DestPtr);

Service to restore the default data to its corresponding permanent RAM block.

Std_ReturnType NvM_RestorePRAMBlockDefaults (NvM_BlockIdType BlockId);

Dienste · Weitere

Service to erase a NV block.

Std_ReturnType NvM_EraseNvBlock (NvM_BlockIdType BlockId);

The function initiates a multi block first initialization request. The job of the function does not care if a block exists in the non - volatile memory or not OR if it is valid (i.e. not corrupted) or not, when processing it.

void NvM_FirstInitAll (void);

Per block callback routine which shall be called by the Nv M module when default data needs to be restored in RAM, and a RO M block is not configured. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_NVRAMManager

Std_ReturnType NvM_InitBlockCallbackFunction (NvM_InitBlockRequestType InitBlockRequest);

Service to invalidate a NV block.

Std_ReturnType NvM_InvalidateNvBlock (NvM_BlockIdType BlockId);

Common callback routine to notify the upper layer that an asynchronous multi block request has been finished. Available v ia Nv M_ Externals.h

Std_ReturnType NvM_MultiBlockCallbackFunction (NvM_MultiBlockRequestType MultiBlockRequest, NvM_RequestResultType JobResult);

Per block callback routine to notify the upper layer that an asynchronous single block request has been finished.

Std_ReturnType NvM_SingleBlockCallbackFunction (NvM_BlockRequestType BlockRequest, NvM_RequestResultType JobResult);

Initiates a multi block validation request.

void NvM_ValidateAll (void);

Zyklisch

Service for performing the processing of the Nv M jobs.

void NvM_MainFunction (void);

Typen

Identification of a NVRAM block via a unique block identifier. Reserved NVRAM block IDs: 0 - > to derive multi block request results via Nv M_ Get Error Status 1 - > redundant NVRAM block which holds the configuration ID

Identifies the type of reques t performed on a block when signaled via the callback function

Configuration data structure of the Nv M module.

Identifies the type of request performed on a block when signaled via the callback function

Identifies the type of request performed on multi block when signaled via the callback function or when reporting to Bsw M

Type NvM_RequestResultType.