AUTOSAR_CP_SWS_NVRAMManager
FIG-1d34f64357f589ca
297 × 310 px
4 Release(s)
Figure 7.4: ROM block layout
SHA-256 Inhalts-Fingerabdruck:
1d34f64357f589cadd9257e8e54c77a319f3efdf5628c832b9bca865b8e2e260
✦
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: Schematisches Speicher-Layout-Diagramm (Memory Block Layout) einer logischen AUTOSAR-Basissoftware-Speicherentität.
- Funktionale Einordnung: Verortet im NVRAM Manager (NvM) auf der Service-Ebene des AUTOSAR Classic Platform Basissoftware-Stacks (BSW).
- Technischer Zweck: Das Diagramm spezifiziert die interne Datenstruktur des ROM-Blocks als optionalen Bestandteil eines logischen NVRAM-Blocks (neben NV Block, RAM Block und Administrative Block nach SWS_NvM_00054). Es definiert den physischen Footprint für werkseitige Fallback- bzw. Initialisierungsdaten im nichtflüchtigen Programmspeicher (Flash/ROM).
2. Komponenten, Entitäten & Schnittstellen
- Dargestellte Entitäten:
ROM Block: Logische Speichereinheit im Flash- bzw. ROM-Bereich des Mikrocontrollers (SWS_NvM_00128).ROM block data (default data): Reine Nutzdaten (Default-/Werksdaten) des NVRAM-Blocks.
- Architektonische Besonderheiten & Strukturgrenzen:
- Keine Verwaltungsinformationen (Administrative Data): Im Gegensatz zum NV Block (Header, CRC) und RAM Block (optionaler RAM-CRC) enthält der ROM-Block weder Header noch Prüfsummen (CRC) (SWS_NvM_00136). Der Speicherbedarf im ROM entspricht exakt der konfigurierten Nutzdatenlänge
NvMNvBlockLength(SWS_NvM_00135).
- Keine Verwaltungsinformationen (Administrative Data): Im Gegensatz zum NV Block (Header, CRC) und RAM Block (optionaler RAM-CRC) enthält der ROM-Block weder Header noch Prüfsummen (CRC) (SWS_NvM_00136). Der Speicherbedarf im ROM entspricht exakt der konfigurierten Nutzdatenlänge
- Beziehungen & Kardinalitäten:
- Existenz: Optional (0..1 je NVRAM-Block bei
NVM_BLOCK_NATIVEundNVM_BLOCK_REDUNDANT; 0..N beiNVM_BLOCK_DATASET, gesteuert überNvMRomBlockNum) (SWS_NvM_00132). - Referenzierung: Statisch per Zeiger über den Konfigurationsparameter
NvMRomBlockDataAddressim NvM-Deskriptor adressiert oder alternativ überNvMInitBlockCallbackdynamisch synthetisiert. - Sharing: Ein ROM-Block darf von mehreren NVRAM-Blöcken geteilt werden (SWS_NvM_00134).
- Existenz: Optional (0..1 je NVRAM-Block bei
3. Dynamisches Verhalten & Sequenzablauf
Der ROM-Block nimmt nicht aktiv an Schreibzyklen teil, sondern dient ausschließlich als read-only Quelle zur Wiederherstellung von Datenkonsistenz:
- Trigger zur Restauration in den RAM-Block:
- Systemstart (
NvM_ReadAll): Schlägt das Einlesen des NV-Blocks fehl (z. B. Integritätsfehler/CRC-Mismatch,NVRAM_BLOCK_CORRUPTEDoder Block uninitialisiertNVRAM_BLOCK_INVALID), lädt der NvM automatisch die Daten aus dem ROM-Block in den zugeordneten RAM-Block (SWS_NvM_00133, SRS_Mem_08547). - Expliziter API-Request:
NvM_RestoreBlockDefaults(BlockId, NvM_DestPtr)(asynchron)NvM_RestorePRAMBlockDefaults(BlockId)(asynchron für Permanent RAM Blocks)
- Fehlertoleranz während Single-Block-Reads: Asynchroner Fallback bei Fehler in
NvM_ReadBlock()bzw.NvM_ReadPRAMBlock(), wennNvMBlockUseAutoValidationoder entsprechende Recovery-Mechanismen greifen.
- Systemstart (
- Kopierpfad:
- Liegt
NvMRomBlockDataAddress != NULLvor, führt der NvM-Job einen synchronen Byte-Copy in den Arbeits-RAM-Puffer durch. - Ist stattdessen ein Callback konfiguriert (
NvMInitBlockCallback), wird dieser aufgerufen, um den RAM-Block applikativ mit Default-Werten zu belegen.
- Liegt
- Statusübergänge & Diagnoserückmeldung:
- Bei erfolgreicher Restauration wechselt der Verwaltungsstatus des Blocks im Administrative Block auf
NVRAM_VALIDundNVRAM_CHANGED. - Bei unlesbarem ROM oder Zeigerkonfigurationsfehlern meldet der NvM
NVM_REQ_NOT_OKan den Aufrufer sowie ggf.NVM_E_RESTORE_FAILEDvia DEM / DET.
- Bei erfolgreicher Restauration wechselt der Verwaltungsstatus des Blocks im Administrative Block auf
4. Normative Relevanz & Entwickler-Hinweise
- Memory-Mapping & Compiler-Abstraktion:
- ROM-Block-Datenstrukturen müssen im Linkerskript in ROM/Flash-Sektionen gemappt werden (z. B. via
NVM_START_SEC_CONST_UNSPECIFIED). - Deklaration zwingend als
const(bzw.CONST(..., NVM_CONST)gemäß AUTOSAR Memory Mapping).
- ROM-Block-Datenstrukturen müssen im Linkerskript in ROM/Flash-Sektionen gemappt werden (z. B. via
- Alignment & Größenkongruenz:
- Die Datenstruktur im ROM muss in Layout, Padding und Bytegröße exakt mit der Struktur des zugehörigen RAM-Blocks (
NvMRamBlockDataAddress) übereinstimmen (sizeof(ROM_Data) == NvMNvBlockLength).
- Die Datenstruktur im ROM muss in Layout, Padding und Bytegröße exakt mit der Struktur des zugehörigen RAM-Blocks (
- RAM-Validierungs-Flagging beachten:
- Nach Restauration aus dem ROM-Block gilt der Block im RAM als geändert (
NVRAM_CHANGED). Beim nächstenNvM_WriteAll()(z. B. ECU-Shutdown) oder explizitemNvM_WriteBlock()werden diese Default-Werte persistent in das EEPROM/Flash geschrieben, um den defekten/uninitialisierten NV-Block permanent zu heilen.
- Nach Restauration aus dem ROM-Block gilt der Block im RAM als geändert (
- Speicheroptimierung (Design-Entscheidung):
- Da keine Prüfsummen oder Block-IDs im ROM-Block hinterlegt sind, kann derselbe ROM-Default-Puffer über
NvMRomBlockDataAddressvon mehreren NVRAM-Blöcken referenziert werden, um Flash-Speicher zu sparen.
- Da keine Prüfsummen oder Block-IDs im ROM-Block hinterlegt sind, kann derselbe ROM-Default-Puffer über
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.