AUTOSAR_SWS_NVRAMManager
FIG-186fb16c314796cb
887 × 1140 px
1 Release(s)
Figure 22: NvM interraction with BswM for a multiblock operation
SHA-256 Inhalts-Fingerabdruck:
186fb16c314796cb7765bef4d4b2c1989ad55ba065acadaf165288fb6768708e
✦
KI-generierte Bildanalyse & technische Beschreibung
Modell: gemini-3.8-flash (via agy) · Rezept figure-description@2 · erstellt am 2026-10-07
1. Diagrammtyp & Architektur-Kontext
- Klassifikation: UML-Sequenzdiagramm (Interaction Diagram / zeitlicher Ablauf mit Loops und Interaktionsrahmen).
- Technischer Zweck & Einordnung: Spezifikation des Zusammenspiels zwischen NVRAM Manager (NvM), Basic Software Manager (BswM) und dem NvM-Benutzer (z. B. EcuM, BswM selbst oder Anwendungs-SWCs) während der asynchronen Abarbeitung einer Multi-Block-Operation (z. B.
NvM_ReadAll,NvM_WriteAll,NvM_ValidateAll,NvM_FirstInitAll). - Architektur-Kontext: Dient der Synchronisation des BSW-Modusmanagements (BswM Mode Arbitration / Rule Evaluation) mit dem Fortschritt der nicht-flüchtigen Speicherverwaltung auf Gesamtjob- sowie Einzelblockebene zur Steuerung von ECU-Zustandsübergängen (z. B. Startup Phase II, Shutdown, Sleep).
2. Komponenten, Entitäten & Schnittstellen
Akteure & Entitäten (Lifelines)
BSW Task (OS task or cyclic call): Periodischer Betriebssystem-Task-Kontext zur zyklischen Ausführung der BSW-Main-Funktionen.«module» BswM: AUTOSAR Basic Software Manager (Mode Management, Regelauswertung und Aktionsausführung).«module» NvM: AUTOSAR NVRAM Manager (Verwaltung des nicht-flüchtigen Speichers).NvM User: Aufrufer der Multi-Block-Anforderung (z. B. EcuM während Startup/Shutdown oder Diagnosedienst).
Verwendete Schnittstellen & APIs
- User → NvM (Synchroner Request):
Multi Block Request(): Repräsentiert asynchrone Multi-Block-APIs wieNvM_ReadAll(),NvM_WriteAll(),NvM_CancelWriteAll()etc.
- NvM → BswM (Modus-Indikationen / Status-Updates):
BswM_NvM_CurrentJobMode(uint8 ServiceId, NvM_RequestResultType JobResult): Meldet den Status des Gesamtjobs an den BswM (NVM_REQ_PENDINGbei Start,MultiBlockJobResultwieNVM_REQ_OK,NVM_REQ_NOT_OKetc. bei Fertigstellung).BswM_NvM_CurrentBlockMode(NvM_BlockIdType Block, NvM_RequestResultType JobResult): Meldet den Status eines individuellen NVRAM-Blocks an den BswM (NVM_REQ_PENDINGzu Beginn der Blockverarbeitung,JobResultbei Abschluss des Blocks).
- BSW Task → NvM (Zyklische Ablaufsteuerung):
NvM_MainFunction(): Zyklischer Scheduler-Einsprungpunkt zur Weiterschaltung der internen NvM-Zustandsmaschine und Treiber-Interaktion (MemIf → Fee/Ea → Fls/Eep).
- NvM → NvM User (Callback):
SingleBlockCallback(JobResult): Optionaler, blockbezogener Benachrichtigungs-Callback (NvMSingleBlockCallbackFunction).
3. Dynamisches Verhalten & Sequenzablauf
- Initialer Request (Synchrone Phase):
NvM UserruftMulti Block Request()auf.NvMakzeptiert den Auftrag in die interne Warteschlange und setzt die Job-Indikation ab:BswM_NvM_CurrentJobMode(ServiceId, NVM_REQ_PENDING).- Rückkehr zum Aufrufer; der Auftrag verbleibt asynchron im Zustand Pending.
- Äußere Schleife – Block-Iteration (
loop For each block to be processed):- Für jeden konfigurierten Block, der Teil der Multi-Block-Anforderung ist:
- Block-Start:
NvM_MainFunction()wird durch den BSW-Task aufgerufen.NvMsignalisiert dem BswM den Start des Blocks viaBswM_NvM_CurrentBlockMode(Block, NVM_REQ_PENDING). - Innere Schleife – Asynchrone Treiberabarbeitung (
loop While block is still being processed):- Wiederholte Aufrufe von
NvM_MainFunction(). Die Low-Level-Treiber (EEPROM/Flash-Emulation) transferieren Daten schrittweise; der NvM verbleibt im blockinternen Wartezustand.
- Wiederholte Aufrufe von
- **Block-Abschluss (Block processing finishes in this call):**
- In diesem
NvM_MainFunction()-Zyklus detektiert der NvM das Ende der Blockoperation. NvMmeldet das Einzelergebnis an BswM viaBswM_NvM_CurrentBlockMode(Block, JobResult).NvMtriggert den konfigurierten Benutzer-CallbackSingleBlockCallback(JobResult).
- In diesem
- Block-Start:
- Für jeden konfigurierten Block, der Teil der Multi-Block-Anforderung ist:
- **Multi-Block-Abschluss (Multi block operation finishes in this call):**
- Nach Abarbeitung des letzten Blocks führt ein nachfolgender Aufruf von
NvM_MainFunction()zum Gesamtabschluss. NvMmeldet das Gesamtresultat an den BswM viaBswM_NvM_CurrentJobMode(ServiceId, MultiBlockJobResult).
- Nach Abarbeitung des letzten Blocks führt ein nachfolgender Aufruf von
4. Normative Relevanz & Entwickler-Hinweise
- Konfigurationsschalter (BswM-Kopplung):
- Das Aufrufen von
BswM_NvM_CurrentJobModeerfordertNvMBswMMultiBlockJobStatusInformation == TRUE. - Das Aufrufen von
BswM_NvM_CurrentBlockModeerfordertNvMBswMBlockStatusInformation == TRUEam jeweiligen Blockdescriptor (NvMBlockDescriptor).
- Das Aufrufen von
- BswM-Regelwerk & Mode Arbitration:
- BswM nutzt diese Callbacks zur Auswertung von
BswMNvMJobModeIndicationundBswMNvMBlockModeIndication. Erst nach Empfang vonBswM_NvM_CurrentJobMode(..., NVM_REQ_OK)darf der BswM beispielsweise von Startup zu Normalbetrieb (z. B. nachNvM_ReadAll) oder in die Sleep-/Power-Off-Sequenz (nachNvM_WriteAll) schalten.
- BswM nutzt diese Callbacks zur Auswertung von
- Task-Kontext & Reentranz-Restriktionen:
NvM_MainFunction()und die daraus synchron getriggerten Callbacks (BswM_NvM_*,SingleBlockCallback) laufen synchron im Kontext desBSW Task.- Achtung vor Blockaden: Weder
BswM_NvM_*noch derSingleBlockCallbackdürfen blockierende Operationen ausführen oder synchron blockierend auf weitere NvM-Jobs warten.
- Laufzeitverhalten & Granularität:
- Jeder Block beansprucht mindestens zwei bis mehrere Zyklen der
NvM_MainFunction(). Die Task-Zykluszeit derNvM_MainFunctionbestimmt direkt die Gesamtlaufzeit von Multi-Block-Jobs (kritisch für Startup- und Shutdown-Budgets der ECU).
- Jeder Block beansprucht mindestens zwei bis mehrere Zyklen der
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.