DEENESPTFRRUARHIKOZHNL

Flash EEPROM Emulation (Fee)

ModulFee (Flash EEPROM Emulation)
BSW-Modul-ID21
Standard-Header#include "Fee.h"
SWS-SpezifikationAUTOSAR_SWS_FlashEEPROMEmulation.pdf
ClusterMemory Services

Modul-GuideKI-GENERIERT

Emuliert auf Flash-Speicher ein EEPROM mit logischen Blöcken und bedient asynchrone Lese- und Schreibaufträge.
KI-GENERIERT ungeprüft Modell: claude-opus-5-5 · Aufwand: high · Temperatur: nicht steuerbar · Prompt: 82b558e5a038 Herkunft Offene Fragen (6)
Kausaler Anker: R20-11 Gültig ab R20-11 Neu synthetisiert für diesen Spezifikationsstand.
KI-generiertclaude-opus-5-5 · 2026-10-13

Emuliert auf Flash-Speicher ein EEPROM mit logischen Blöcken und bedient asynchrone Lese- und Schreibaufträge.

Fee bildet die logischen Blöcke eines emulierten EEPROMs auf Flash-Speicher ab und bedient die Aufträge, die der NVRAM Manager über MemIf stellt. Lese-, Schreib- und Löschaufträge werden nur angenommen und dann asynchron in Fee_MainFunction abgearbeitet [SWS_Fee_00097]. Fortschritt und Ergebnis zeigen Fee_GetStatus und Fee_GetJobResult. Nach Fee_Init kann das Modul zunächst mit interner Verwaltung beschäftigt sein (MEMIF_BUSY_INTERNAL), nimmt aber schon Aufträge an SWS Fee S. 42. Schreibaufträge betreffen stets den ganzen Block.

Fee bildet die logischen Blöcke eines emulierten EEPROMs auf Flash-Speicher ab. Die BlockNumber bezeichnet zugleich die Startadresse des Blocks [SWS_Fee_00087]. Aufrufe kommen vom NVRAM Manager über das Memory Abstraction Interface, das den passenden Dienst per DeviceIndex auswählt SWS MemIf S. 18. Darunter arbeitet der Flash-Treiber Fls. Rückmeldungen gibt Fee über NvM_JobEndNotification und NvM_JobErrorNotification direkt an den NVRAM Manager [SWS_Fee_00098], [SWS_Fee_00099].

fee_kontext NvM NvM (NVRAM Manager) MemIf MemIf (Memory Abstraction Interface) NvM->MemIf MemIf_Read / MemIf_Write / MemIf_Cancel / MemIf_SetMode Fee Fee (Flash EEPROM Emulation) MemIf->Fee Fee_Read / Fee_Write / Fee_Cancel / Fee_GetStatus / Fee_GetJobResult Fee->NvM NvM_JobEndNotification / NvM_JobErrorNotification Fls Fls (Flash-Treiber) Fee->Fls Fls_Read / Fls_Write / Fls_Erase / Fls_Cancel / Fls_SetMode / Fls_BlankCheck Det DET Fee->Det Det_ReportError (optional) Fls->Fee Fee_JobEndNotification / Fee_JobErrorNotification EcuM EcuM EcuM->Fee Fee_Init SchM SchM (BSW Scheduler) SchM->Fee Fee_MainFunction (zyklisch)

Kontextdiagramm: Fee zwischen MemIf und Fls, initialisiert vom EcuM, zyklisch angestoßen vom SchM, mit Rückmeldungen direkt an den NvM. Quellen: [SWS_Fee_00085], [SWS_Fee_00097], [SWS_Fee_00105].

Der EcuM ruft Fee_Init mit dem gewählten Konfigurationssatz auf; R20-11 führt diesen Dienst als asynchron [SWS_Fee_00085]. Danach steht der Status auf MEMIF_BUSY_INTERNAL, Aufträge werden aber schon angenommen. Erst wiederholte Aufrufe von Fee_MainFunction schließen die interne Verwaltung ab und führen nach MEMIF_IDLE SWS Fee S. 42. Fee_GetStatus zeigt den Modulzustand, Fee_GetJobResult das Ergebnis des letzten angenommenen Auftrags [SWS_Fee_00090], [SWS_Fee_00091].

fee_modulstatus start UNINIT MEMIF_UNINIT start->UNINIT BUSY_INTERNAL MEMIF_BUSY_INTERNAL UNINIT->BUSY_INTERNAL Fee_Init BUSY_INTERNAL->BUSY_INTERNAL Fee_MainFunction (Verwaltung läuft) IDLE MEMIF_IDLE BUSY_INTERNAL->IDLE Fee_MainFunction (Verwaltung beendet) BUSY MEMIF_BUSY BUSY_INTERNAL->BUSY Fee_Read / Fee_Write angenommen IDLE->BUSY Fee_Read / Fee_Write angenommen BUSY->IDLE Fee_Cancel BUSY->IDLE Auftrag beendet (Annahme)

Zustandsdiagramm: Modulstatus von MEMIF_UNINIT über MEMIF_BUSY_INTERNAL nach MEMIF_IDLE und MEMIF_BUSY; die Rückkehr nach regulärem Auftragsende ist eine Annahme. Quellen: [SWS_Fee_00090], SWS Fee S. 28.

Lese-, Schreib-, Invalidierungs- und Löschaufträge melden mit E_OK nur ihre Annahme; abgearbeitet werden sie asynchron in Fee_MainFunction [SWS_Fee_00097]. Fee_Read liest beliebige Ausschnitte eines Blocks, Fee_Write stets den ganzen Block mit Offset null SWS Fee S. 28. Während des Schreibens gilt der Block intern als „corrupted“. Diese Markierung ist von einer Ungültigsetzung durch Fee_InvalidateBlock zu unterscheiden SWS Fee S. 21.

Fee_Cancel ist in R20-11 synchron und bricht über den Flash-Treiber einen anhängigen Auftrag ab [SWS_Fee_00089]. Ohne anhängigen Auftrag meldet es FEE_E_INVALID_CANCEL [SWS_Fee_91002]. Flash-Fehler erkennt der Treiber. Fee meldet sie je nach Konfiguration auf zwei Wegen: als MEMIF_JOB_FAILED zur Abfrage oder über NvM_JobErrorNotification. Die Wiederherstellung übernimmt der NVRAM Manager ErrorDescription S. 40. Fehlbedienungen wie fehlende Initialisierung oder ungültige Blocknummern meldet Fee als Entwicklungsfehler [SWS_Fee_00010].

Rolle im NV-Speicherstapel: Flash-Speicher als emuliertes EEPROM

Die Flash EEPROM Emulation (Fee) stellt der oberen Schicht logische Blöcke bereit und bildet sie auf Flash-Speicher ab. Die BlockNumber bezeichnet dabei zugleich die Startadresse des Blocks im Speicher [SWS_Fee_00087], [SWS_Fee_00088]. Der NVRAM Manager ruft Fee nicht direkt auf, sondern über das Memory Abstraction Interface. MemIf_Read und MemIf_Write rufen die Funktion des Abstraktionsmoduls auf, das per DeviceIndex gewählt ist, und geben deren Rückgabewert weiter SWS MemIf S. 18, SWS MemIf S. 19. Nach unten stützt sich Fee auf den Flash-Treiber Fls. Von dort importiert es Fls_AddressType und Fls_LengthType, von MemIf die Status-, Ergebnis- und Modustypen [SWS_Fee_00084].

Rückmeldungen laufen am MemIf vorbei. MemIf selbst stellt keine Callbacks bereit; die Rückrufroutinen für die darunterliegenden Abstraktionsmodule liefert der NVRAM Manager SWS MemIf S. 24. Fee ruft dazu NvM_JobEndNotification und NvM_JobErrorNotification auf [SWS_Fee_00098], [SWS_Fee_00099]. Umgekehrt meldet der Treiber das Ende seiner Aufträge über Fee_JobEndNotification und Fee_JobErrorNotification an Fee [SWS_Fee_00095], [SWS_Fee_00096]. Initialisiert wird Fee vom EcuM, zyklisch angestoßen vom Basic Software Scheduler SWS Fee S. 42.

fee_kontext NvM NvM (NVRAM Manager) MemIf MemIf (Memory Abstraction Interface) NvM->MemIf MemIf_Read / MemIf_Write / MemIf_Cancel / MemIf_SetMode Fee Fee (Flash EEPROM Emulation) MemIf->Fee Fee_Read / Fee_Write / Fee_Cancel / Fee_GetStatus / Fee_GetJobResult Fee->NvM NvM_JobEndNotification / NvM_JobErrorNotification Fls Fls (Flash-Treiber) Fee->Fls Fls_Read / Fls_Write / Fls_Erase / Fls_Cancel / Fls_SetMode / Fls_BlankCheck Det DET Fee->Det Det_ReportError (optional) Fls->Fee Fee_JobEndNotification / Fee_JobErrorNotification EcuM EcuM EcuM->Fee Fee_Init SchM SchM (BSW Scheduler) SchM->Fee Fee_MainFunction (zyklisch)

Kontextdiagramm: Fee liegt zwischen MemIf und Fls. Es wird von EcuM initialisiert, von SchM zyklisch angestoßen und meldet Auftragsenden direkt an den NvM. Quellen: [SWS_Fee_00085], [SWS_Fee_00097], [SWS_Fee_00098], [SWS_Fee_00104], [SWS_Fee_00105], SWS MemIf S. 18.

Als benötigte Treiberdienste nennt R20-11 unter anderem folgende Funktionen [SWS_Fee_00105]:

  • Fls_Read, Fls_Write, Fls_Erase und Fls_Compare,
  • Fls_Cancel, Fls_GetStatus, Fls_GetJobResult und Fls_SetMode,
  • Det_ReportRuntimeError.

Optional kommen Det_ReportError und Fls_BlankCheck hinzu [SWS_Fee_00104]. Eine spätere Fassung derselben Anforderung führt stattdessen MemAcc_BlankCheck SWS Fee S. 40. Normativ für R20-11 bleibt die Fls-Variante.

Hochlauf: von Fee_Init bis zur Annahmebereitschaft

Der EcuM ruft Fee_Init mit einem Zeiger auf den gewählten Konfigurationssatz auf [SWS_Fee_00085]. Der Typ Fee_ConfigType ist eine Struktur mit implementierungsspezifischen Elementen [SWS_Fee_00188]. Bemerkenswert ist, dass R20-11 Fee_Init als asynchron führt [SWS_Fee_00085]. Laut Änderungshistorie muss die Initialisierung nicht innerhalb von Fee_Init abgeschlossen sein, und die Zustandsmaschine wurde entsprechend angepasst SWS Fee S. 4.

Das Sequenzdiagramm der Spezifikation zeigt den Ablauf SWS Fee S. 42:

  1. Nach Fee_Init steht der Modulstatus auf MEMIF_BUSY_INTERNAL.
  2. Aufträge können bereits in diesem Zustand angenommen werden.
  3. Der Scheduler ruft Fee_MainFunction so lange auf, bis die interne Verwaltung abgeschlossen ist.

Eine spätere Fassung legt fest, dass Fee_MainFunction den Status dann von MEMIF_BUSY_INTERNAL auf MEMIF_IDLE setzt. Die Verwaltung kann dabei mehr als einen Aufruf dauern SWS Fee S. 38. Die ältere Fassung des Schaubilds zeigt nur den synchronen Aufruf durch den EcuM SWS Fee S. 38.

Hochlauf von FeeEcuMFeeSchMFee_Init(ConfigPtr)Modulstatus := MEMIF_BUSY_INTERNALFee_Init()Aufträge werden ab hier bereits angenommenloopinterne Verwaltung noch erforderlichFee_MainFunction()interne VerwaltungsoperationStatus bleibt MEMIF_BUSY_INTERNALFee_MainFunction()Fee_MainFunction()Verwaltung beendetModulstatus := MEMIF_IDLEFee_MainFunction()

Sequenzdiagramm: Fee_Init versetzt das Modul in MEMIF_BUSY_INTERNAL. Erst wiederholte Aufrufe von Fee_MainFunction schließen die interne Verwaltung ab und führen nach MEMIF_IDLE. Quellen: [SWS_Fee_00085], [SWS_Fee_00097], SWS Fee S. 42.

Fee_MainFunction bearbeitet die angeforderten Lese-, Schreib- und Löschaufträge sowie die internen Verwaltungsoperationen [SWS_Fee_00097]. Als geplante Funktion wird sie direkt vom Basic Software Scheduler aufgerufen. Sie hat weder Parameter noch Rückgabewert und ist nicht reentrant SWS Fee S. 40.

Modulstatus und Auftragsergebnis als Steuergrößen

Die obere Schicht steuert ihre Aufrufe über zwei synchrone Abfragen. Fee_GetStatus liefert einen von vier Werten [SWS_Fee_00090]:

  • MEMIF_UNINIT: Das Modul ist nicht initialisiert.
  • MEMIF_IDLE: Das Modul ist untätig.
  • MEMIF_BUSY: Ein Auftrag der oberen Schicht ist in Bearbeitung.
  • MEMIF_BUSY_INTERNAL: Eine interne Verwaltungsoperation läuft.

Als Beispiel für eine interne Verwaltungsoperation nennt die Spezifikation die Reorganisation des genutzten Flash-Speichers (Garbage Collection) SWS Fee S. 30. Neue Aufträge werden sowohl in MEMIF_IDLE als auch in MEMIF_BUSY_INTERNAL angenommen und führen nach MEMIF_BUSY SWS Fee S. 28. Nach regulärem Auftragsende dürfte der Status wieder auf MEMIF_IDLE fallen. Frage Q-beae785a1ba1cbec (offen) Ausdrücklich belegt ist die Rückkehr nach MEMIF_IDLE hier nur für den Abbruch SWS Fee S. 29.

fee_modulstatus start UNINIT MEMIF_UNINIT start->UNINIT BUSY_INTERNAL MEMIF_BUSY_INTERNAL UNINIT->BUSY_INTERNAL Fee_Init BUSY_INTERNAL->BUSY_INTERNAL Fee_MainFunction (Verwaltung läuft) IDLE MEMIF_IDLE BUSY_INTERNAL->IDLE Fee_MainFunction (Verwaltung beendet) BUSY MEMIF_BUSY BUSY_INTERNAL->BUSY Fee_Read / Fee_Write angenommen IDLE->BUSY Fee_Read / Fee_Write angenommen BUSY->IDLE Fee_Cancel BUSY->IDLE Auftrag beendet (Annahme)

Zustandsdiagramm: Lebenszyklus des Modulstatus von MEMIF_UNINIT über MEMIF_BUSY_INTERNAL nach MEMIF_IDLE und MEMIF_BUSY. Der Übergang bei regulärem Auftragsende ist als Annahme markiert. Quellen: [SWS_Fee_00090], SWS Fee S. 42, SWS Fee S. 28, SWS Fee S. 29.

Fee_GetJobResult bezieht sich auf den zuletzt angenommenen Auftrag [SWS_Fee_00091], SWS Fee S. 31. Es unterscheidet sechs Ergebnisse:

  • MEMIF_JOB_OK: Der Auftrag wurde erfolgreich beendet.
  • MEMIF_JOB_PENDING: Der Auftrag wartet oder läuft noch.
  • MEMIF_JOB_CANCELED: Der Auftrag wurde abgebrochen.
  • MEMIF_JOB_FAILED: Der Auftrag ist fehlgeschlagen.
  • MEMIF_BLOCK_INCONSISTENT: Der Block enthält möglicherweise beschädigte Daten.
  • MEMIF_BLOCK_INVALID: Der Block wurde ungültig gesetzt; Lesen ist nicht möglich.

Der Status beschreibt also das Modul, das Ergebnis den einzelnen Auftrag; beide sind getrennt abzufragen [SWS_Fee_00090].

Lese-, Schreib- und Blockverwaltungsaufträge

Die Auftragsdienste arbeiten asynchron: E_OK bedeutet nur, dass der Auftrag angenommen wurde [SWS_Fee_00087], [SWS_Fee_00088]. Fee_Read berechnet die Leseadresse aus Blockstartadresse und BlockOffset. Offset und Länge dürfen jeden Wert ihres Typbereichs annehmen. So lassen sich beliebig viele Bytes ab einer beliebigen Stelle eines Blocks lesen SWS Fee S. 26. Ist im Flash-Treiber Fls_BlankCheck konfiguriert, prüft Fee_Read damit vorab, ob der Bereich lesbar ist. So wird etwa vermieden, dass gelöschte, aber nicht programmierte Zellen ECC-Fehler auslösen [SWS_Fee_00187].

Fee_Write schreibt dagegen immer den ganzen Block; der Offset ist auf null fixiert SWS Fee S. 28. Das folgt aus der übergeordneten Anforderung, dass Lösch- und Schreibaufträge stets an der virtuellen 64K-Grenze beginnen: Ein Block wird ganz oder gar nicht geschrieben RS MemHwAb S. 24. Bei Annahme setzt Fee den Status auf MEMIF_BUSY und das Ergebnis auf MEMIF_JOB_PENDING und gibt E_OK zurück. Für Fee_Read gilt dieselbe Annahmebedingung SWS Fee S. 26.

Damit unterbrochene Schreibvorgänge erkennbar bleiben, führt Fee für jeden Block eine interne Korrektheitsinformation SWS Fee S. 21. Beim Start eines Schreibvorgangs wird der Block als „corrupted“ markiert, nach erfolgreichem Ende wieder als „not corrupted“. Diese Information ist streng von der Gültigkeit zu trennen, die die obere Schicht mit Fee_InvalidateBlock setzt.

Schreibauftrag über den NV-SpeicherstapelNvMMemIfFeeSchMFlsUse Case: Annahme (synchron)MemIf_Write(DeviceIndex, BlockNumber, DataBufferPtr)Fee_Write(BlockNumber, DataBufferPtr)Offset fest 0 (ganzer Block)Status := MEMIF_BUSYErgebnis := MEMIF_JOB_PENDINGE_OKE_OKUse Case: Abarbeitung (asynchron)Fee_MainFunction()Block als „corrupted“ markierenFls_Write(…) (Annahme)Fee_JobEndNotification()Block als „not corrupted“ markierenErgebnis := MEMIF_JOB_OKoptBenachrichtigung konfiguriertNvM_JobEndNotification()

Sequenzdiagramm: Ein Schreibauftrag wird synchron angenommen, aber asynchron über Fee_MainFunction und die Treiber-Rückmeldung abgeschlossen. Dabei wird der Block zuerst als „corrupted“ und am Ende wieder als „not corrupted“ markiert. Quellen: [SWS_Fee_00088], [SWS_Fee_00095], [SWS_Fee_00098], SWS Fee S. 28, SWS Fee S. 21, SWS Fee S. 37.

Fee_InvalidateBlock erklärt einen logischen Block für ungültig [SWS_Fee_00092]. Dazu ruft es die Löschfunktion des Treibers auf und/oder ändert interne Verwaltungsinformation, die selbst nichtflüchtig gespeichert sein muss SWS Fee S. 32. Liest die obere Schicht später einen solchen Block, setzt Fee_MainFunction das Ergebnis auf MEMIF_BLOCK_INVALID. Falls konfiguriert, ruft sie außerdem die Fehlerbenachrichtigung der oberen Schicht auf SWS Fee S. 38.

Fee_EraseImmediateBlock [SWS_Fee_00094] ist für Diagnose- oder ähnliche Systemdienste gedacht. Sie löschen damit bei Bedarf den Bereich für Immediate-Daten vorab. Ob dabei physisch gelöscht wird, entscheidet die Implementierung SWS Fee S. 35. Für Fee_InvalidateBlock und Fee_EraseImmediateBlock sieht R20-11 die Rückgabe E_NOT_OK ausdrücklich nur bei aktivierter DET vor [SWS_Fee_00092], [SWS_Fee_00094].

Rückmeldungen, Abbruch und Moduswechsel

Der Flash-Treiber meldet das erfolgreiche Ende eines Treiberauftrags über Fee_JobEndNotification [SWS_Fee_00095]. Fee erledigt daraufhin die nötige Blockverwaltung und ruft dann, falls konfiguriert, die Job-End-Benachrichtigung der oberen Schicht auf. Ein noch auf MEMIF_JOB_PENDING stehendes Ergebnis setzt es auf MEMIF_JOB_OK SWS Fee S. 37. Callbacks können je nach Aufbau des Speicherstapels auf Interrupt-Ebene laufen und sich über mehrere Schichten nach oben fortpflanzen. Ihre Laufzeit muss daher kurz bleiben; ob Aufrufe auf Interrupt-Ebene zulässig sind, entscheidet das Systemdesign SWS Fee S. 36.

Fee_Cancel ruft die Abbruchfunktion des Flash-Treibers auf [SWS_Fee_00089]. Die obere Schicht erreicht den Dienst über MemIf_Cancel SWS MemIf S. 20. Wirksam wird der Abbruch nur im Status MEMIF_BUSY: Fee ruft den Treiberabbruch auf, setzt seine internen Variablen zurück und kehrt nach MEMIF_IDLE zurück. Ist die DET aktiviert, prüft Fee vorher, ob das Modul initialisiert ist SWS Fee S. 29.

Bei Fee_Cancel weichen die Releases voneinander ab. Die genannte spätere Fassung führt den Dienst als asynchron, R20-11 dagegen als synchron [SWS_Fee_00089]. Für R20-11 maßgeblich ist die synchrone Einordnung.

fee_cancel start aufruf Fee_Cancel() aufgerufen start->aufruf d_det DET aktiv und Status MEMIF_UNINIT? aufruf->d_det e_uninit FEE_E_UNINIT melden d_det->e_uninit ja d_busy Auftrag anhängig (Status MEMIF_BUSY)? d_det->d_busy nein ende e_uninit->ende Abbruch (Annahme) fls Abbruchfunktion des Flash-Treibers aufrufen d_busy->fls ja e_cancel FEE_E_INVALID_CANCEL melden d_busy->e_cancel nein reset interne Variablen zurücksetzen, Status := MEMIF_IDLE fls->reset reset->ende e_cancel->ende

Aktivitätsdiagramm: Fee_Cancel verzweigt nach DET-Prüfung und Modulstatus. Nur ein anhängiger Auftrag wird abgebrochen; sonst wird FEE_E_INVALID_CANCEL gemeldet. Quellen: [SWS_Fee_00089], [SWS_Fee_91002], [SWS_Fee_00010], SWS Fee S. 29.

Fee_SetMode schaltet den Betriebsmodus des darunterliegenden Flash-Treibers um [SWS_Fee_00086]. Das zugehörige Schaubild zeigt die Aufrufkette NvM → MemIf_SetMode → Fee_SetMode → Fls_SetMode SWS Fee S. 39. Fee_GetVersionInfo ist der einzige reentrante Fee-Dienst [SWS_Fee_00093]. Bei aktivierter DET prüft er den übergebenen Zeiger auf NULL SWS Fee S. 34.

Konfiguration und Integration

Die Konfiguration erhält Fee über den Fee_ConfigType, der an Fee_Init übergeben wird [SWS_Fee_00085], [SWS_Fee_00188]. Die Include-Struktur einer früheren Spezifikationsfassung zeigt folgende Aufteilung SWS Fee S. 11:

  • Fee_Cfg.h bindet MemIf_Types.h und Fls.h ein, optional auch NvM_Cbk.h.
  • Fee_Lcfg.c und Fee_PBcfg.c enthalten die Konfigurationsdaten.
  • Der Scheduler ist über SchM_Fee.h angebunden, die DET optional über Det.h.

Für R20-11 dient dieses Bild nur zur Orientierung. Ist Fee als herstellerspezifische Bibliothek realisiert, sind die Sequenzdiagramme nur für die Beziehungen zu EcuM und MemIf verbindlich, nicht für die Aufrufe an den Treiber SWS Fee S. 42.

Verhalten im Fehlerfall

Als Entwicklungsfehler definiert Fee fünf Codes [SWS_Fee_00010]:

  • FEE_E_UNINIT (0x01): Dienst vor der Initialisierung aufgerufen.
  • FEE_E_INVALID_BLOCK_NO (0x02): ungültige Blocknummer.
  • FEE_E_INVALID_BLOCK_OFS (0x03): ungültiger Block-Offset.
  • FEE_E_PARAM_POINTER (0x04): ungültiger Datenzeiger.
  • FEE_E_INVALID_BLOCK_LEN (0x05): ungültige Längenangabe.

R20-11 ergänzt zwei weitere Codes [SWS_Fee_91002]. FEE_E_BUSY (0x06) gilt für Aufrufe, während ein Nutzerauftrag bearbeitet wird. FEE_E_INVALID_CANCEL (0x08) gilt für Fee_Cancel ohne anhängigen Auftrag. Ein im Status MEMIF_BUSY gestellter neuer Auftrag dürfte demnach abgelehnt und mit E_NOT_OK beantwortet werden. Frage Q-92062834653929da (offen) Die zugehörige Regel liegt hier nur unvollständig vor SWS Fee S. 28.

Fehler des Flash-Speichers erkennt der Flash-Treiber; wie Fee darauf reagiert, ist implementierungsspezifisch ErrorDescription S. 40. Gemeldet wird je nach Konfiguration auf einem von zwei Wegen. Entweder fragt MemIf Fee_GetJobResult ab und erhält MEMIF_JOB_FAILED, oder Fee ruft aktiv NvM_JobErrorNotification auf. Die Wiederherstellung übernimmt der NVRAM Manager. Ein nicht initialisiertes Modul erkennt die obere Schicht an MEMIF_UNINIT in Fee_GetStatus ErrorDescription S. 53, [SWS_Fee_00090].

Meldung eines Flash-FehlersFlsFeeMemIfNvMFee_JobErrorNotification() (Annahme)implementierungsspezifische FehlerbehandlungErgebnis := MEMIF_JOB_FAILEDaltCallback konfiguriertNvM_JobErrorNotification()Abfrage per PollingFee_GetJobResult()MEMIF_JOB_FAILEDWiederherstellung durch den NVRAM Manager

Sequenzdiagramm: Ein Treiberfehler erreicht die obere Schicht wahlweise per Callback an den NvM oder per Polling von Fee_GetJobResult. Quellen: [SWS_Fee_00096], [SWS_Fee_00099], [SWS_Fee_00091], ErrorDescription S. 40.

Für die Datenkonsistenz beschreibt ein Schaubild aus R22-11 die Informationskette ErrorDescription S. 64:

  1. Fee prüft die Konsistenz der gelesenen Daten und gibt einen Fehler an den NVRAM Manager weiter.
  2. Der NVRAM Manager meldet NVM_E_INTEGRITY_FAILED an den DEM.
  3. Er leitet die konfigurierten Wiederherstellungen ein: erneutes Lesen, redundanter Block oder ROM-Block.
  4. Scheitern diese, setzt er das Ergebnis NVM_REQ_INTEGRITY_FAILED.

Auf Fee-Seite entspricht dem vermutlich das Ergebnis MEMIF_BLOCK_INCONSISTENT [SWS_Fee_00091]. Frage Q-a1846c349d831e17 (offen)

fee_konsistenz Fee Fee Fee->Fee (1) Konsistenz der gelesenen Daten prüfen NvM NvM (NVRAM Manager) Fee->NvM (2) Fehlerstatus weiterleiten NvM->NvM (4) Wiederherstellung: read retry, redundanter Block, ROM-Block Dem DEM NvM->Dem (3) NVM_E_INTEGRITY_FAILED Ergebnis Job-Ergebnis des NvM NvM->Ergebnis (5)/(6) Wiederherstellung gescheitert: NVM_REQ_INTEGRITY_FAILED

Kollaborationsdiagramm: Ein Konsistenzfehler wird von Fee an den NvM weitergegeben. Der NvM meldet ihn an den DEM, versucht die Wiederherstellung und setzt bei Scheitern das NvM-Ergebnis (Stand R22-11). Quellen: ErrorDescription S. 64.

Weiterführende Detailbelege

Detailregeln mit Annahmebedingungen, Callback-Verhalten und Hauptfunktion stammen teils aus späteren Fassungen der Spezifikation, z. B. SWS Fee S. 38. Wo sie von R20-11 abweichen, ist das oben vermerkt. Die wichtigsten Belege:

KI-generierter Leitfaden auf Grundlage von Spezifikationsauszügen zu Fee (classic, R20-11). Maßgeblich sind die verlinkten Requirements. Dokumentstellen aus anderen Releases sind als solche gekennzeichnet; Annahmen sind als Interpretation markiert.

Flash EEPROM Emulation (Fee)

Provides emulation of EEPROM-like data blocks on Flash memory devices.

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

function Fee_Init [SWS_Fee_00085] 📄 PDF

void Fee_Init (const Fee_ConfigType* ConfigPtr);

Service to initialize the FEE module.

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

Die Funktion Fee_Init dient als zentraler Dienst zur Initialisierung des Flash-EEPROM-Emulationsmoduls (FEE) [SWS_Fee_00085]. Der Aufruf erfolgt über die in Fee.h deklarierte Schnittstelle mit der Service-ID 0x00 [SWS_Fee_00085]. Als einziger Eingabeparameter wird ConfigPtr übergeben, der als Zeiger auf den ausgewählten Konfigurationsdatensatz des Typs const Fee_ConfigType* dient [SWS_Fee_00085]. Zusätzliche Ein-/Ausgabeparameter oder reine Ausgabeparameter sind nicht definiert, und die Funktion liefert keinen Rückgabewert (void) [SWS_Fee_00085].

Obwohl es sich um eine grundlegende Initialisierungsfunktion handelt, ist die Ausführungssemantik in der Spezifikation ausdrücklich als asynchron (Asynchronous) klassifiziert [SWS_Fee_00085]. Interpretation: Da die Funktion asynchron agiert, dürfte der Aufruf von Fee_Init die Modulinitialisierung vermutlich lediglich anstoßen, während zeitaufwendige Initialisierungsschritte nicht blockierend im Hintergrund abgeschlossen werden [SWS_Fee_00085]. Frage Q-7d91ac2e51869606 (offen)

Für die Nebenläufigkeit und den Aufrufkontext legt die Spezifikation fest, dass Fee_Init nicht reentrant (Non Reentrant) ist [SWS_Fee_00085]. Folglich darf die Funktion zu keinem Zeitpunkt parallel oder verschachtelt aus unterschiedlichen Kontexten aufgerufen werden [SWS_Fee_00085].

Dieser Nutzungshinweis wurde von einer KI erstellt und stützt sich ausschließlich auf die Spezifikation AUTOSAR Classic Release R20-11.

Implementer's Guide folgt (Komplexität I1)

function Fee_SetMode [SWS_Fee_00086] 📄 PDF

void Fee_SetMode (MemIf_ModeType Mode);

Function to switch the mode of the underlying Flash Driver

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

Verwendung und Aufrufkontext

Die Funktion Fee_SetMode dient dem Umschalten des Betriebsmodus des zugrundeliegenden Flash-Treibers ([SWS_Fee_00086]). Sie wird über die Header-Datei Fee.h mit der Service-ID 0x01 bereitgestellt ([SWS_Fee_00086]). Der Dienst erwartet als einzigen Eingangsparameter Mode (vom Typ MemIf_ModeType), der den gewünschten Betriebsmodus des Flash-Treibers festlegt ([SWS_Fee_00086]). Es werden weder Ausgabeparameter noch ein Rückgabewert (void) übergeben ([SWS_Fee_00086]).

Asynchrone Semantik und Nebenläufigkeit

Die Schnittstelle ist als asynchron spezifiziert ([SWS_Fee_00086]). Da nach dem Aufruf kein Funktionswert zurückgegeben wird, dürfte der eigentliche Umschaltvorgang der Flash-Hardware zeitverzögert im Hintergrund ablaufen. Frage Q-9dbc267f51e150af (offen) Hinsichtlich des Aufrufkontextes ist Fee_SetMode als nicht reentrant (Non Reentrant) eingestuft ([SWS_Fee_00086]). Aufrufer müssen daher sicherstellen, dass die Funktion nicht zeitgleich oder unterbrechend aus verschiedenen Threads bzw. Tasks aufgerufen wird.

Fehlerbehandlung und Zusammenspiel

Im vorliegenden Spezifikationsauszug sind für Fee_SetMode keine spezifischen Fehlercodes, DET-Fehlermeldungen oder DEM-Events definiert ([SWS_Fee_00086]). Ebenso werden keine direkten Beziehungen zu weiteren Requirements ausgewiesen. Interpretation: Eine etwaige Überprüfung ungültiger Moduswerte dürfte treiberintern oder im Modul Fee ohne explizite Fehlerrückgabe an den Aufrufer gehandhabt werden. Frage (offen)

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

Implementer's Guide folgt (Komplexität I1)

function Fee_Read [SWS_Fee_00087] 📄 PDF

Std_ReturnType Fee_Read (uint16 BlockNumber, uint16 BlockOffset, uint8* DataBufferPtr, uint16 Length);

Service to initiate a read job.

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

Verwendung

Die Funktion Fee_Read dient der Initiierung eines asynchronen Leseauftrags im Modul Flash EEPROM Emulation und wird über die Header-Datei Fee.h deklariert [SWS_Fee_00087]. Sie besitzt die Service-ID 0x02 und akzeptiert folgende Übergabeparameter [SWS_Fee_00087]:

  • Block Number: Nummer des logischen Blocks, die zugleich dessen Startadresse im Flash-Speicher angibt.
  • Block Offset: Lese-Offset innerhalb des betreffenden Blocks.
  • Length: Anzahl der aus dem Block zu lesenden Bytes.
  • Data Buffer Ptr: Zeiger auf den Ziel-Puffer zur Ablage der gelesenen Daten.

Als Rückgabewert liefert die Funktion Std_ReturnType: E_OK signalisiert, dass der angeforderte Leseauftrag vom Modul angenommen wurde; E_NOT_OK zeigt an, dass der Auftrag abgewiesen wurde [SWS_Fee_00087].

Nebenläufigkeit und Einschränkungen

Der Aufruf von Fee_Read ist als nicht reentrant (Non Reentrant) und asynchron (Asynchronous) spezifiziert [SWS_Fee_00087].

Zusammenspiel mit dem Flash-Treiber

Sofern im Flash-Treiber die Funktion Fls_BlankCheck konfiguriert ist, muss Fee_Read diese Funktion aufrufen [SWS_Fee_00187]. Dies dient der vorherigen Prüfung, ob der Speicherbereich ausgelesen werden kann, ohne beispielsweise ECC-Fehler durch gelöschte, aber noch nicht programmierte Flash-Zellen auszulösen [SWS_Fee_00187].

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

Implementer's Guide folgt (Komplexität I1)

function Fee_Write [SWS_Fee_00088] 📄 PDF

Std_ReturnType Fee_Write (uint16 BlockNumber, const uint8* DataBufferPtr);

Service to initiate a write job.

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

Verwendung und Semantik

Die Funktion Fee_Write dient als Service zum Initiieren eines Schreibauftrags im Flash-EEPROM-Emulationsmodul gemäß [SWS_Fee_00088]. Die Deklaration ist über den Header Fee.h verfügbar. Der Aufruf erfolgt asynchron: Die Funktion stößt den Schreibvorgang lediglich an und blockiert nicht bis zum physischen Abschluss des Schreibvorgangs.

Für die Übergabe der Schreibdaten sind zwei Parameter definiert [SWS_Fee_00088]:

  • BlockNumber (uint16): Bezeichnet die logische Blocknummer und definiert zugleich die Startadresse dieses Blocks im EEPROM.
  • DataBufferPtr (const uint8*): Zeiger auf den Datenpuffer, der die zu schreibenden Nutzdaten enthält.

Rückgabewerte und Nebenläufigkeit

Der Rückgabewert vom Typ Std_ReturnType signalisiert unmittelbar, ob der Schreibauftrag vom Modul angenommen werden konnte [SWS_Fee_00088]:

  • E_OK: Der angeforderte Auftrag wurde vom Modul akzeptiert.
  • E_NOT_OK: Der Auftrag wurde vom Modul nicht akzeptiert.

Hinsichtlich der Nebenläufigkeit ist Fee_Write als nicht reentrant (Non Reentrant) spezifiziert [SWS_Fee_00088]. Aufrufer müssen daher sicherstellen, dass die Funktion nicht nebenläufig aus verschiedenen Kontexten aufgerufen wird. Die Service-ID der Funktion lautet 0x03 [SWS_Fee_00088]. Interpretation: Die physische Übertragung der Daten dürfte nach Rückgabe von E_OK im Hintergrund asynchron durch nachgelagerte Modulzyklen abgewickelt werden. Frage Q-8bedddcf2371f6bf (offen)

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

function Fee_Cancel [SWS_Fee_00089] 📄 PDF

void Fee_Cancel (void);

Service to call the cancel function of the underlying flash driver.

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

Die Funktion Fee_Cancel ist ein synchroner Dienst des Moduls Fee zur Weiterleitung einer Abbruchanforderung an den darunterliegenden Flash-Treiber [SWS_Fee_00089]. Dieser Service ist über den Header Fee.h deklariert und besitzt die numerische Service-ID 0x04 [SWS_Fee_00089].

Verwendung und Aufrufkontext

Die Schnittstelle besitzt die Signatur void Fee_Cancel (void) [SWS_Fee_00089]. Für den Aufruf gelten spezifikationsgemäß folgende Parameter- und Ausführungsmerkmale:

  • Parameter: Die Funktion erwartet keine Übergabeparameter; es sind weder Eingangs-, Ein-/Ausgangs- noch Ausgangsparameter vorhanden [SWS_Fee_00089].
  • Rückgabewert: Es wird kein Rückgabewert an den Aufrufer zurückgegeben [SWS_Fee_00089].
  • Synchronizität: Die Abwicklung des Funktionsaufrufs ist als synchron (Synchronous) festgelegt [SWS_Fee_00089].

Nebenläufigkeit und Einschränkungen

Hinsichtlich des Nebenläufigkeitsverhaltens ist Fee_Cancel als nicht reentrant (Non Reentrant) spezifiziert [SWS_Fee_00089]. Aufrufende Instanzen müssen deshalb sicherstellen, dass die Funktion nicht parallel oder verschachtelt aus unterschiedlichen Task- oder Interrupt-Kontexten aufgerufen wird.

Zusammenspiel und Fehlerbehandlung

Die zentrale Aufgabe von Fee_Cancel besteht darin, die Abbruchfunktion des zugrundeliegenden Flash-Treibers aufzurufen [SWS_Fee_00089]. Spezifische Fehlercodes, Rückgabewerte oder Fehlermeldungen sind für diese Funktion im Payload nicht definiert. Da keine Fehlerbehandlung beschrieben ist, dürfte das Verhalten im Fehlerfall vermutlich von der Implementierung des aufgerufenen Flash-Treibers abhängen. Frage Q-bb066b6c05a2eb12 (offen)

Dieser Nutzungshinweis wurde automatisiert generiert und basiert ausschließlich auf den Spezifikationsinhalten des AUTOSAR-Releases R20-11.

function Fee_GetStatus [SWS_Fee_00090] 📄 PDF

MemIf_StatusType Fee_GetStatus (void);

Service to return the status. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_FlashEEPROMEmulation

function Fee_GetJobResult [SWS_Fee_00091] 📄 PDF

MemIf_JobResultType Fee_GetJobResult (void);

Service to query the result of the last accepted job issued by the upper layer software.

function Fee_InvalidateBlock [SWS_Fee_00092] 📄 PDF

Std_ReturnType Fee_InvalidateBlock (uint16 BlockNumber);

Service to invalidate a logical block.

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

Die Funktion Fee_InvalidateBlock dient als Dienst zum Entwerten eines logischen Blocks im Flash-Speicher [SWS_Fee_00092]. Sie ist über den Header Fee.h verfügbar und besitzt die Service-ID 0x07 [SWS_Fee_00092].

Verwendung und Parameter

Der Aufruf erfolgt asynchron; die eigentliche Ungültigkeitserklärung wird somit als Hintergrundauftrag angestoßen [SWS_Fee_00092]:

  • Block Number (uint16, in): Bezeichnet die logische Blocknummer, welche zugleich die Startadresse des Blocks im Flash-Speicher bestimmt [SWS_Fee_00092].
  • Rückgabewert (Std_ReturnType): Gibt E_OK zurück, wenn der Entwertungsauftrag vom Modul erfolgreich akzeptiert wurde [SWS_Fee_00092].

Fehlerbehandlung

Konnte das Modul die Anforderung nicht annehmen, wird E_NOT_OK zurückgegeben – laut Spezifikation ist diese Fehlerrückgabe jedoch ausdrücklich auf Konfigurationen mit aktiviertem DET beschränkt (only if DET is enabled) [SWS_Fee_00092]. Interpretation: Ist DET deaktiviert, dürfte eine Auftragsabweisung dem Aufrufer nicht über E_NOT_OK signalisiert werden, da die Spezifikation die Rückgabe dieses Fehlerwerts an die DET-Aktivierung bindet. Frage Q-2e54187ddb69e481 (offen)

Nebenläufigkeit und Randbedingungen

Die Schnittstelle ist als nicht reentrant (Non Reentrant) deklariert [SWS_Fee_00092]. Aufrufer müssen daher sicherstellen, dass keine parallelen oder unterbrechenden Aufrufe von Fee_InvalidateBlock erfolgen, solange ein vorheriger Funktionsaufruf aktiv ist [SWS_Fee_00092].

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

function Fee_EraseImmediateBlock [SWS_Fee_00094] 📄 PDF

Std_ReturnType Fee_EraseImmediateBlock (uint16 BlockNumber);

Service to erase a logical block.

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

Verwendung und Parameter

Die Funktion Fee_EraseImmediateBlock stellt einen asynchronen Dienst zum Löschen eines logischen Blocks bereit und ist über die Header-Datei Fee.h deklariert [SWS_Fee_00094]. Die Funktion besitzt die hexadezimale Service-ID 0x09 [SWS_Fee_00094]. Als einziger Eingangsparameter dient Block Number vom Typ uint16; dieser spezifiziert die Nummer des logischen Blocks und kennzeichnet zugleich dessen Startadresse im EEPROM [SWS_Fee_00094].

Rückgabewerte und Fehlerbehandlung

Als Rückgabewert liefert die Schnittstelle den Status Std_ReturnType [SWS_Fee_00094]. Der Wert E_OK bestätigt, dass das Modul den angeforderten Löschauftrag erfolgreich entgegengenommen hat [SWS_Fee_00094]. Wurde der Auftrag vom Modul nicht akzeptiert, liefert die Funktion E_NOT_OK; laut Spezifikation tritt dieser Rückgabewert allerdings nur bei aktivierter DET-Fehlerüberwachung auf [SWS_Fee_00094].

Nebenläufigkeit und Einschränkungen

Bezüglich Nebenläufigkeit und Aufrufbedingungen ist Fee_EraseImmediateBlock als nicht reentrant (Non Reentrant) eingestuft und arbeitet asynchron [SWS_Fee_00094]. Aufrufende Module müssen daher gewährleisten, dass kein weiterer Aufruf derselben Schnittstelle erfolgt, solange das Modul noch mit der Bearbeitung befasst ist.

Kontextbezogene Erläuterung basierend auf der AUTOSAR-Spezifikation.

function Fee_JobEndNotification [SWS_Fee_00095] 📄 PDF

void Fee_JobEndNotification (void);

Service to report to this module the successful end of an asynchronous operation. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_FlashEEPROMEmulation

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

Die Funktion Fee_JobEndNotification dient dazu, dem Modul Fee den erfolgreichen Abschluss einer asynchronen Operation mitzuteilen ([SWS_Fee_00095]).

Hinsichtlich Verwendung und Signatur gelten folgende Festlegungen:

  • Signatur und Parameter: Die Funktion besitzt die Signatur void Fee_JobEndNotification (void);. Sie erwartet weder Eingabe-, Ein-/Ausgabe- noch Ausgabeparameter und liefert keinen Rückgabewert ([SWS_Fee_00095]).
  • Header: Die Deklaration wird über Fee.h bereitgestellt ([SWS_Fee_00095]).
  • Service-ID: Die Funktion ist über die Service-ID 0x10 definiert ([SWS_Fee_00095]).
  • Synchronität: Der Aufruf selbst ist als synchron spezifiziert ([SWS_Fee_00095]).
  • Nebenläufigkeit: Die Routine ist als nicht reentrant (Non Reentrant) eingestuft ([SWS_Fee_00095]).

Zusammenspiel und Aufrufkontext: Typischerweise dürfte dieser Callback von einem unterlagerten Modul (wie einem Flash-Treiber) aufgerufen werden, um das Ende eines asynchronen Schreib- oder Löschauftrags zu signalisieren. Frage Q-8a3ccdba2024001f (offen) Aufgrund der Eigenschaft Non Reentrant muss der Aufrufer sicherstellen, dass keine konkurrierenden Aufrufe erfolgen ([SWS_Fee_00095]).

Dieser Text wurde von einer KI basierend auf der AUTOSAR-Spezifikation für R20-11 generiert.

function Fee_JobErrorNotification [SWS_Fee_00096] 📄 PDF

void Fee_JobErrorNotification (void);

Service to report to this module the failure of an asynchronous operation.

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

Die Funktion Fee_JobErrorNotification dient als Benachrichtigungsservice, um dem Fee-Modul das Fehlschlagen einer asynchronen Operation mitzuteilen [SWS_Fee_00096]. Die Schnittstelle besitzt die Signatur void Fee_JobErrorNotification (void) und ist über den Header Fee.h verfügbar [SWS_Fee_00096]. Dem Service mit der Kennung 0x11 werden weder Eingabe-, Ein-/Ausgabe- noch Ausgabeparameter übergeben [SWS_Fee_00096]. Ebenso liefert der Aufruf keinen Rückgabewert an den Aufrufer zurück [SWS_Fee_00096].

Die Ausführungssemantik des Aufrufs ist als synchron (Synchronous) spezifiziert [SWS_Fee_00096]. Für das Laufzeitverhalten gilt die zentrale Einschränkung, dass die Funktion nicht reentrant (Non Reentrant) ist [SWS_Fee_00096]. Interpretation: Der Aufrufer – bei dem es sich vermutlich um einen unterlagerten Treiberbaustein handelt – muss sicherstellen, dass die Benachrichtigung niemals nebenläufig oder aus unterbrechenden Kontexten parallel ausgelöst wird. Frage Q-7d4c9618bf385721 (offen)

Hinsichtlich der Fehlerbehandlung werden durch die parameterlose Schnittstelle keine spezifischen Fehlercodes übermittelt, und es sind keine modulspezifischen DET- oder DEM-Meldungen für diesen Aufruf dokumentiert [SWS_Fee_00096]. Das Fee-Modul dürfte den gemeldeten Fehlerfall intern dem aktiven asynchronen Auftrag zuordnen und dessen Status entsprechend anpassen. Frage Q-1fa43444195edb62 (offen)

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

function Fee_MainFunction [SWS_Fee_00097] 📄 PDF

void Fee_MainFunction (void);

Service to handle the requested read / write / erase jobs and the internal management operations.

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

Die Funktion Fee_MainFunction dient gemäß [SWS_Fee_00097] der zentralen Verarbeitung von angeforderten Lese-, Schreib- und Löschaufträgen sowie der Ausführung interner Verwaltungsoperationen des Moduls. Sie ist mit der Signatur void Fee_MainFunction (void); und der Service-ID 0x12 spezifiziert [SWS_Fee_00097].

In Bezug auf Schnittstelle und Verwendung verarbeitet die Funktion keine Übergabeparameter und besitzt keinen Rückgabewert [SWS_Fee_00097]. Aus der Verfügbarkeit über den Header SchM_Fee.h lässt sich vermutlich ableiten, dass ihr Aufruf zyklisch durch das Schedule-Management der Basissoftware erfolgt. Frage Q-5ef9bcc5f438cb89 (offen) Die Beschreibung legt nahe, dass zuvor asynchron übergebene Aufträge innerhalb dieser periodischen Zyklen sukzessive abgearbeitet werden dürften.

Zu Fehlerszenarien, Reentranz und spezifischen Aufrufbedingungen enthält die Spezifikation keine gesonderten Kennungen oder Fehlercodes [SWS_Fee_00097]. Interpretation: Als zentrale zyklische Steuerfunktion für den Modulzustand dürfte Fee_MainFunction nicht reentrant sein, weshalb ein nebenläufiger Aufruf aus mehreren Tasks zu vermeiden ist. Frage (offen)

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

function NvM_JobEndNotification [SWS_Fee_00098] 📄 PDF

void NvM_JobEndNotification (void);

-

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

Verwendung und Signatur

Die Funktion NvM_JobEndNotification ist in der Spezifikation der Flash EEPROM Emulation (Fee) als Service definiert und über die Header-Datei Nvm.h verfügbar ([SWS_Fee_00098]). Gemäß ihrer Syntax void NvM_JobEndNotification (void); erfordert die Funktion weder Eingangs- noch Ausgangsparameter und liefert keinen Rückgabewert ([SWS_Fee_00098]). Für das Ausführungsverhalten ist eine synchrone Semantik festgelegt (Sync/Async: true) ([SWS_Fee_00098]).

Nebenläufigkeit und Einschränkungen

Hinsichtlich der Reentranz ist die Funktion mit Don't care klassifiziert ([SWS_Fee_00098]). Spezifische Einschränkungen bezüglich des Aufrufkontextes werden in der Spezifikation nicht vorgegeben. Eine gesonderte Fehlerbehandlung über DET- oder DEM-Meldungen ist für dieses Element nicht spezifiziert ([SWS_Fee_00098]).

Zusammenspiel und funktionale Einordnung

Obwohl die Funktion Bestandteil der Spezifikation der Flash EEPROM Emulation ist, enthält das Beschreibungsfeld keine weiteren Details ([SWS_Fee_00098]). Interpretation: Aufgrund der Benennung und der Deklaration in Nvm.h dürfte die Funktion vermutlich als Callback-Schnittstelle dienen, über die das Modul Fee den regulären Abschluss eines asynchron verarbeiteten Auftrags an das Modul NvM signalisiert. Frage Q-ee00bece2e28a0e4 (offen)

Dieser Nutzungshinweis wurde automatisch auf Basis der Spezifikation von AUTOSAR Release R20-11 generiert.

function NvM_JobErrorNotification [SWS_Fee_00099] 📄 PDF

void NvM_JobErrorNotification (void);

-

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

Verwendung und Aufrufkontext

Die Funktion NvM_JobErrorNotification ist gemäß [SWS_Fee_00099] als synchrone Schnittstelle (Sync/ Async true) definiert. Ihre Deklaration wird über die Header-Datei Nvm.h zur Verfügung gestellt ([SWS_Fee_00099]). Die Signatur lautet void NvM_JobErrorNotification (void), womit sie weder Eingangs-, Durchgangs- noch Ausgangsparameter akzeptiert und keinen Rückgabewert liefert ([SWS_Fee_00099]). Dem Bezeichner und der Zuordnung zum Modul Fee nach dürfte diese Callback-Funktion dazu dienen, das NVRAM-Management bei einem aufgetretenen Fehler während der asynchronen Auftragsverarbeitung im Flash-EEPROM-Emulationstreiber zu benachrichtigen. Frage Q-4d70f8d384e04832 (offen)

Fehlerbehandlung und Nebenläufigkeit

In [SWS_Fee_00099] sind keine spezifischen Fehlercodes, DET-Meldungen oder DEM-Ereignisse aufgeführt. Da keine Status- oder Fehlerparameter übergeben werden, dürfte eine detaillierte Fehleranalyse vermutlich auf internen Modulzuständen oder nachgelagerten Abfragen des Treibers beruhen. Frage Q-c45e72b67236c432 (offen) Bezüglich der Nebenläufigkeit spezifiziert [SWS_Fee_00099] für die Reentranz das Kriterium Don't care, wodurch seitens der Anforderung keine einschränkenden Vorgaben an die Wiedereintrittsfähigkeit formuliert werden.

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

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

Record
AUTOSAR/AP/record/CP_MOD_Fee
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_Fee@rel:R20-11#bd7aa7c9
Content hash
bd7aa7c9
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_FlashEEPROMEmulation.pdf#nameddest=SWS_Fee_00085

Initialisierung und Status

Fee_GetStatus function

Service to return the status. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_FlashEEPROMEmulation

MemIf_StatusType Fee_GetStatus (void);

Service to return the version information of the FEE module.

void Fee_GetVersionInfo (Std_VersionInfoType* VersionInfoPtr);
Fee_Init function

Service to initialize the FEE module.

void Fee_Init (const Fee_ConfigType* ConfigPtr);

Dienste

Fee_Cancel function

Service to call the cancel function of the underlying flash driver.

void Fee_Cancel (void);

Service to erase a logical block.

Std_ReturnType Fee_EraseImmediateBlock (uint16 BlockNumber);

Service to query the result of the last accepted job issued by the upper layer software.

MemIf_JobResultType Fee_GetJobResult (void);

Service to invalidate a logical block.

Std_ReturnType Fee_InvalidateBlock (uint16 BlockNumber);

Service to report to this module the successful end of an asynchronous operation. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_FlashEEPROMEmulation

void Fee_JobEndNotification (void);

Service to report to this module the failure of an asynchronous operation.

void Fee_JobErrorNotification (void);
Fee_Read function

Service to initiate a read job.

Std_ReturnType Fee_Read (uint16 BlockNumber, uint16 BlockOffset, uint8* DataBufferPtr, uint16 Length);
Fee_SetMode function

Function to switch the mode of the underlying Flash Driver

void Fee_SetMode (MemIf_ModeType Mode);
Fee_Write function

Service to initiate a write job.

Std_ReturnType Fee_Write (uint16 BlockNumber, const uint8* DataBufferPtr);

-

void NvM_JobEndNotification (void);

-

void NvM_JobErrorNotification (void);

Zyklisch

Service to handle the requested read / write / erase jobs and the internal management operations.

void Fee_MainFunction (void);

Typen

Configuration data structure of the Fee module.