DEENESPTFRRUARHIKOZHNL

Memory Abstraction Interface (MemIf)

ModulMemIf (Memory Abstraction Interface)
BSW-Modul-ID22
Standard-Header#include "MemIf.h"
SWS-SpezifikationAUTOSAR_SWS_MemoryAbstractionInterface.pdf
ClusterMemory Services

Modul-GuideKI-GENERIERT

Leitet Speicheraufträge des NVRAM-Managers per Geräteindex an Flash-EEPROM-Emulation oder EEPROM-Abstraktion weiter.
KI-GENERIERT ungeprüft Modell: claude-opus-5-5 · Aufwand: high · Temperatur: nicht steuerbar · Prompt: 423eb9cf4c9b Herkunft Offene Fragen (5)
Kausaler Anker: R20-11 Gültig ab R20-11 Neu synthetisiert für diesen Spezifikationsstand.
KI-generiertclaude-opus-5-5 · 2026-10-13

Leitet Speicheraufträge des NVRAM-Managers per Geräteindex an Flash-EEPROM-Emulation oder EEPROM-Abstraktion weiter.

MemIf leitet die Speicheraufträge des NVRAM Managers an Fee- oder Ea-Module weiter und verbirgt deren Anzahl hinter einer einheitlichen API SWS MemIf S. 7. Der Parameter DeviceIndex wählt das Modul; ist nur eines konfiguriert, wird er ignoriert und MemIf als Makrosatz umgesetzt SWS MemIf S. 17. Die Dienste nehmen Aufträge synchron an und reichen den Rückgabewert weiter, während die Speicheroperation asynchron darunter abläuft. Status und Ergebnis liefern MemIf_GetStatus und MemIf_GetJobResult. Bei aktiver Entwicklungsfehlererkennung liefern fehlerhafte Aufrufe E_NOT_OK bzw. MEMIF_JOB_FAILED.

Das Memory Abstraction Interface ersetzt die früheren Treiber-Schnittstellenschichten für Flash und EEPROM. Es erlaubt dem NVRAM Manager, über eine einheitliche API mehrere Abstraktionsmodule anzusprechen: die Flash EEPROM Emulation (Fee) und die EEPROM Abstraction (Ea) SRS MemHwAb S. 5. MemIf verbirgt die Anzahl dieser Module und bietet eine virtuelle Segmentierung auf einem linearen Adressraum SWS MemIf S. 7.

kontext cluster_services Services Layer cluster_abstraktion Memory Hardware Abstraction cluster_treiber Memory Drivers NvM NvM (NVRAM Manager) MemIf MemIf (Memory Abstraction Interface) NvM->MemIf MemIf_Read / MemIf_Write / ... (DeviceIndex) Fee Fee (Flash EEPROM Emulation) MemIf->Fee Fee_* Ea Ea (EEPROM Abstraction) MemIf->Ea Ea_* Lib Herstellerspezifische Bibliothek (statt Fee/Ea + Treiber) MemIf->Lib gleiche API wie Fee/Ea Det DET (optional) MemIf->Det Det_ReportError Fee->NvM NvM_JobEndNotification / NvM_JobErrorNotification Fls Flash Driver Fee->Fls Ea->NvM NvM_JobEndNotification / NvM_JobErrorNotification Eep EEPROM Driver Ea->Eep

Kontextdiagramm: MemIf vermittelt zwischen NvM und Fee/Ea; Fertigmeldungen gehen direkt von Fee/Ea an den NvM. Quellen: SWS Fee S. 6, [SWS_MemIf_00047]

Eigene Speicherlogik hat MemIf nicht. Der Parameter DeviceIndex wählt das Modul; ist nur eines konfiguriert, wird er ignoriert und MemIf als Makrosatz umgesetzt. Bei mehreren Modulen erfolgt die Verteilung etwa über Funktionszeigertabellen SWS MemIf S. 17. In R20-11 ist DeviceIndex vom Typ uint8 [SWS_MemIf_00039]; spätere Fassungen verwenden uint16.

Die Dienste nehmen Aufträge synchron an und reichen den Rückgabewert des Moduls weiter [SWS_MemIf_00040]. Die Speicheroperation läuft danach asynchron in der Hauptfunktion der unteren Schicht. Den Abschluss erfährt der NvM per Callback aus Fee/Ea oder durch Polling von MemIf_GetJobResult SWS Fee S. 48. MemIf_GetStatus meldet UNINIT, IDLE, BUSY oder BUSY_INTERNAL [SWS_MemIf_00064]. Das Jobergebnis bezieht sich stets auf den letzten Auftrag und unterscheidet unter anderem abgebrochene, inkonsistente und ungültige Blöcke [SWS_MemIf_00065]. MemIf_SetMode wirkt auf alle Module zugleich [SWS_MemIf_00038].

Schreibauftrag über MemIf (Beispiel Ea/Eep)NvMMemIfEaEepBSW-Task (OS-Task oder zyklischer Aufruf)Use Case: Auftragsannahme (synchron)MemIf_Write(DeviceIndex,BlockNumber, DataBufferPtr)Modul per DeviceIndex wählenEa_Write(BlockNumber, DataBufferPtr)Eep_Write(EepromAddress,DataBufferPtr, Length)Std_ReturnTypeStd_ReturnTypeStd_ReturnType (unverändert)Use Case: Ausführung (asynchron)Bis zum Ende liefert GetJobResultMEMIF_JOB_PENDINGloopbis der Auftrag beendet istEep_MainFunction()altBenachrichtigung konfiguriertEa_JobEndNotification()NvM_JobEndNotification()Polling-BetriebMemIf_GetJobResult(DeviceIndex)Ea_GetJobResult()MEMIF_JOB_OKMEMIF_JOB_OK

Sequenzdiagramm: Synchrone Annahme über MemIf, asynchrone Ausführung im Treiber, Abschluss per Callback oder Polling. Quellen: SWS Ea S. 41, [SWS_MemIf_00040]

Im Fehlerfall meldet MemIf ungültige Geräteindizes und NULL-Zeiger als Entwicklungsfehler [SWS_MemIf_00006]. Die Dienste liefern dann E_NOT_OK, MemIf_GetJobResult liefert MEMIF_JOB_FAILED SWS MemIf S. 21. Laufzeitfehler des Speichers erkennen Fee bzw. Ea; der NvM liest sie im Polling-Betrieb als MEMIF_JOB_FAILED und ist für die Behebung zuständig ErrorDescription S. 58.

Rolle im Speicherstapel: Weiche zwischen NvM und Fee/Ea

Das Memory Abstraction Interface (MemIf) ersetzt die früheren Treiber-Schnittstellenschichten für Flash und EEPROM. Es erlaubt dem NVRAM Manager (NvM), über eine einzige API mehrere Speicherabstraktionsmodule anzusprechen: die Flash EEPROM Emulation (Fee) und die EEPROM Abstraction (Ea) SRS MemHwAb S. 5. Nach oben verbirgt MemIf, wie viele Fee- und Ea-Module darunter liegen. Es bietet eine virtuelle Segmentierung auf einem einheitlichen linearen Adressraum SWS MemIf S. 7. Fee und Ea liefern die blockbasierte Adressierung und eine „virtuell unbegrenzte“ Zahl von Lösch-Schreib-Zyklen. Deshalb muss der NvM nicht geändert werden, wenn Treiber oder Baustein wechseln SRS MemHwAb S. 5.

MemIf enthält selbst keine Speicherlogik. Seine API ist auf die API der Abstraktionsmodule abzubilden, und das funktionale Verhalten legen deren Spezifikationen bzw. die der Speichertreiber fest SWS MemIf S. 17. Entsprechend benötigt MemIf die Dienste der Abstraktionsmodule, für Ea etwa Ea_Read, Ea_Cancel, Ea_GetStatus und Ea_GetJobResult [SWS_MemIf_00047]. Optional nutzt es Det_ReportError [SWS_MemIf_00048]. Die in MemIf.h definierten Typen MemIf_StatusType, MemIf_JobResultType und MemIf_ModeType bilden das gemeinsame Vokabular des Stapels [SWS_MemIf_00064] [SWS_MemIf_00065] [SWS_MemIf_00066]. So liefert etwa Fls_GetJobResult direkt MemIf_JobResultType SWS Fls S. 36.

Die Abbildungen jüngerer Releases zeigen unterhalb von Ea und Fee zusätzlich die Module MemAcc und Mem SWS Ea S. 42. Für R20-11 dürfte vermutlich die ältere Übersicht maßgeblich sein, in der Fee auf den Flash-Treiber und Ea auf den EEPROM-Treiber aufsetzen SWS Fee S. 6. Für MemIf ist der Unterschied ohne Belang, da es nur bis zur Abstraktionsebene weiterleitet SWS MemIf S. 17. Frage Q-3c74a6029dd0d159 (offen)

kontext cluster_services Services Layer cluster_abstraktion Memory Hardware Abstraction cluster_treiber Memory Drivers NvM NvM (NVRAM Manager) MemIf MemIf (Memory Abstraction Interface) NvM->MemIf MemIf_Read / MemIf_Write / ... (DeviceIndex) Fee Fee (Flash EEPROM Emulation) MemIf->Fee Fee_* Ea Ea (EEPROM Abstraction) MemIf->Ea Ea_* Lib Herstellerspezifische Bibliothek (statt Fee/Ea + Treiber) MemIf->Lib gleiche API wie Fee/Ea Det DET (optional) MemIf->Det Det_ReportError Fee->NvM NvM_JobEndNotification / NvM_JobErrorNotification Fls Flash Driver Fee->Fls Ea->NvM NvM_JobEndNotification / NvM_JobErrorNotification Eep EEPROM Driver Ea->Eep

Kontextdiagramm: MemIf liegt zwischen NvM und den Abstraktionsmodulen Fee/Ea; Fertigmeldungen erreichen den NvM direkt aus Fee/Ea. Quellen: SWS Fee S. 6, SRS MemHwAb S. 5, [SWS_MemIf_00047], [SWS_MemIf_00048]

Geräteauswahl über DeviceIndex: Makros oder Verteiltabelle

Der Parameter DeviceIndex wählt das Abstraktionsmodul und damit den Speicherbaustein. Ist nur ein Modul konfiguriert, wird er ignoriert SWS MemIf S. 17. In diesem Fall ist MemIf als Satz von Makros umzusetzen, etwa #define MemIf_Write(DeviceIndex, BlockNumber, DataPtr) Fee_Write(BlockNumber, DataPtr). Bei mehreren Modulen sind die Aufrufe über effiziente Mechanismen zu verteilen; als eine Lösung nennt die Spezifikation Tabellen von Funktionszeigern, die über DeviceIndex indiziert werden SWS MemIf S. 17. Ersetzt eine herstellerspezifische Bibliothek alle benötigten Fee- und Ea-Module, besteht MemIf nur aus Makros SRS MemHwAb S. 5.

In R20-11 ist DeviceIndex vom Typ uint8 [SWS_MemIf_00039] [SWS_MemIf_00041]. Spätere Fassungen der Spezifikation führen ihn als uint16 SWS MemIf S. 18. Normativ für dieses Release ist uint8.

abbildung start Konfiguration von MemIf q0 Ersetzt eine Herstellerbibliothek alle Fee- und Ea-Module? start->q0 lib MemIf besteht nur aus Makros auf die Bibliotheks-API q0->lib ja q1 Wie viele Abstraktionsmodule sind konfiguriert? q0->q1 nein ende Funktion des Moduls wird gerufen, Rückgabewert wird durchgereicht lib->ende ein Makros bilden die MemIf-API ab (z. B. MemIf_Write -> Fee_Write) q1->ein genau eines mehr Effiziente Verteilung, z. B. Funktionszeigertabelle q1->mehr mehrere ign DeviceIndex wird ignoriert ein->ign ign->ende idx DeviceIndex wählt das Modul (Fee oder Ea) mehr->idx idx->ende

Aktivitätsdiagramm: Die Anzahl der konfigurierten Abstraktionsmodule entscheidet zwischen Makro-Abbildung und Verteilung per DeviceIndex. Quellen: SWS MemIf S. 17, SRS MemHwAb S. 5

Auftragsablauf: synchrone Annahme, asynchrone Ausführung

Alle MemIf-Dienste sind synchron spezifiziert. Jeder ruft die gleichnamige Funktion des gewählten Moduls auf und gibt deren Rückgabewert zurück, so etwa Read, Write und InvalidateBlock [SWS_MemIf_00039] [SWS_MemIf_00040] [SWS_MemIf_00044]. Die eigentliche Speicheroperation läuft danach asynchron in der zyklisch aufgerufenen Hauptfunktion der unteren Schicht. Die Ea-Sequenz zeigt dazu eine Schleife über Eep_MainFunction im BSW-Task SWS Ea S. 41. Laut Fee-Spezifikation gilt dieses Muster auch für die übrigen asynchronen Dienste SWS Fee S. 48.

Vom Auftragsende erfährt der NvM je nach Stackkonfiguration auf einem von zwei Wegen. Entweder ruft das Abstraktionsmodul einen Callback wie NvM_JobEndNotification bzw. NvM_JobErrorNotification, oder der NvM pollt MemIf_GetJobResult SWS Fee S. 48 EXP ErrorDescription S. 45. MemIf selbst stellt keine Callback-Funktion bereit; seine API besteht aus den folgenden Diensten [SWS_MemIf_00038] [SWS_MemIf_00046].

DienstService-IDRückgabeWirkung
MemIf_SetMode0x01–ruft SetMode aller Abstraktionsmodule [SWS_MemIf_00038]
MemIf_Read0x02Std_ReturnTypeliest Length Bytes des Blocks ab BlockOffset nach DataBufferPtr [SWS_MemIf_00039]
MemIf_Write0x03Std_ReturnTypeschreibt einen Block [SWS_MemIf_00040]
MemIf_Cancel0x04–bricht den laufenden Auftrag ab [SWS_MemIf_00041]
MemIf_GetStatus0x05MemIf_StatusTypeModulstatus [SWS_MemIf_00042]
MemIf_GetJobResult0x06MemIf_JobResultTypeErgebnis des letzten Auftrags [SWS_MemIf_00043]
MemIf_InvalidateBlock0x07Std_ReturnTypeinvalidiert einen Block [SWS_MemIf_00044]
MemIf_GetVersionInfo0x08–Versionsinformation, reentrant [SWS_MemIf_00045]
MemIf_EraseImmediateBlock0x09Std_ReturnTypelöscht einen Block [SWS_MemIf_00046]
Schreibauftrag über MemIf (Beispiel Ea/Eep)NvMMemIfEaEepBSW-Task (OS-Task oder zyklischer Aufruf)Use Case: Auftragsannahme (synchron)MemIf_Write(DeviceIndex,BlockNumber, DataBufferPtr)Modul per DeviceIndex wählenEa_Write(BlockNumber, DataBufferPtr)Eep_Write(EepromAddress,DataBufferPtr, Length)Std_ReturnTypeStd_ReturnTypeStd_ReturnType (unverändert)Use Case: Ausführung (asynchron)Bis zum Ende liefert GetJobResultMEMIF_JOB_PENDINGloopbis der Auftrag beendet istEep_MainFunction()altBenachrichtigung konfiguriertEa_JobEndNotification()NvM_JobEndNotification()Polling-BetriebMemIf_GetJobResult(DeviceIndex)Ea_GetJobResult()MEMIF_JOB_OKMEMIF_JOB_OK

Sequenzdiagramm: Ein Schreibauftrag wird synchron über MemIf angenommen, asynchron im Treiber ausgeführt und per Callback oder Polling abgeschlossen. Quellen: SWS Ea S. 41, SWS Fee S. 48, ErrorDescription S. 60, [SWS_MemIf_00040]

Status, Jobergebnis und Betriebsmodus

MemIf_GetStatus liefert den Status des gewählten Moduls [SWS_MemIf_00042]. Möglich sind MEMIF_UNINIT, MEMIF_IDLE, MEMIF_BUSY und MEMIF_BUSY_INTERNAL. Bei MEMIF_BUSY_INTERNAL ist das Abstraktionsmodul mit interner Verwaltung beschäftigt, während der Treiber busy oder idle sein kann [SWS_MemIf_00064]. Die Fee-Spezifikation konkretisiert die Bedingungen und nennt als Beispiel für interne Verwaltung die Reorganisation des Flashs (Garbage Collection) SWS Fee S. 30. Beim Flash-Treiber darf der Status schon vor der Initialisierung abgefragt werden und lautet dann MEMIF_UNINIT SWS Fls S. 35.

status start Start UNINIT MEMIF_UNINIT start->UNINIT IDLE MEMIF_IDLE UNINIT->IDLE Modul initialisiert BUSY MEMIF_BUSY IDLE->BUSY Auftrag der oberen Schicht in Bearbeitung BUSYINT MEMIF_BUSY_INTERNAL IDLE->BUSYINT interne Verwaltung (z. B. Garbage Collection) BUSY->IDLE Auftrag beendet BUSYINT->IDLE interne Verwaltung beendet

Zustandsdiagramm: Lebenszyklus des über MemIf_GetStatus sichtbaren Modulstatus. Quellen: [SWS_MemIf_00064], SWS Fee S. 30

MemIf_GetJobResult liefert das Ergebnis des letzten Auftrags [SWS_MemIf_00043] [SWS_MemIf_00065]. Lesen, Schreiben und Löschen teilen sich ein einziges Jobergebnis, sodass nur das des letzten Auftrags abfragbar ist. Mit der Annahme eines neuen Auftrags wird es auf MEMIF_JOB_PENDING gesetzt SWS Fls S. 36; Fee spricht vom letzten angenommenen Auftrag SWS Fee S. 31. Neben OK, FAILED und CANCELED gibt es zwei blockbezogene Ergebnisse. MEMIF_BLOCK_INCONSISTENT bedeutet, dass der Block korrupt oder nicht gefunden ist; MEMIF_BLOCK_INVALID bedeutet, dass er als ungültig markiert ist [SWS_MemIf_00065].

jobergebnis neu Neuer Auftrag angenommen PENDING MEMIF_JOB_PENDING neu->PENDING OK MEMIF_JOB_OK PENDING->OK erfolgreich beendet FAILED MEMIF_JOB_FAILED PENDING->FAILED nicht erfolgreich CANCELED MEMIF_JOB_CANCELED PENDING->CANCELED abgebrochen INCONS MEMIF_BLOCK_INCONSISTENT PENDING->INCONS Block korrupt oder nicht gefunden INVALID MEMIF_BLOCK_INVALID PENDING->INVALID Block als ungültig markiert OK->neu nächster Auftrag FAILED->neu nächster Auftrag CANCELED->neu nächster Auftrag INCONS->neu nächster Auftrag INVALID->neu nächster Auftrag

Zustandsdiagramm: Ein angenommener Auftrag steht auf PENDING und endet in genau einem der Endergebnisse. Quellen: [SWS_MemIf_00065], SWS Fls S. 36, SWS Fee S. 31

MemIf_SetMode hat als einziger Dienst keinen DeviceIndex und ruft SetMode aller Abstraktionsmodule auf [SWS_MemIf_00038]. Die Modi sind MEMIF_MODE_SLOW und MEMIF_MODE_FAST [SWS_MemIf_00066]. Bei den Treibern steht das für langsamen Lesezugriff bzw. normalen SPI-Zugriff einerseits und schnellen Lesezugriff bzw. SPI-Burst andererseits. Eep_SetMode darf nicht während einer laufenden Operation gerufen werden SWS Eep S. 34. Fls_SetMode weist bei aktiver Prüfung eine Anfrage im Busy-Zustand zurück SWS Fls S. 42. Interpretation: Da MemIf_SetMode alle Module erreicht, sollte es nur aufgerufen werden, wenn alle Geräte MEMIF_IDLE melden. Frage Q-d6ee630fca619042 (offen)

Abbrechen laufender Aufträge

MemIf_Cancel ruft die Cancel-Funktion des gewählten Moduls auf [SWS_MemIf_00041]. Der Abbruch selbst ist synchron, bezüglich der Hardware aber asynchron: Die Hardware kann noch nachlaufen, wenn der Aufruf bereits zurückgekehrt ist SWS Fee S. 45 SWS Ea S. 44. Das Jobergebnis lautet danach MEMIF_JOB_CANCELED [SWS_MemIf_00065], was Fee ausdrücklich als Fehlschlag wertet SWS Fee S. 31.

Für den Flash-Pfad zeigt die Treiberspezifikation die Kette MemIf_Cancel → Fee_Cancel → Fls_Cancel mit anschließenden Fehlerbenachrichtigungen. Sie fordert außerdem, Fls_Cancel nicht während einer laufenden Fls_MainFunction aufzurufen. Dafür gibt es zwei Wege: Die Jobfunktionen von NvM und Flash-Treiber werden synchronisiert, oder der Task der Fls_MainFunction wird nicht unterbrochen SWS Fls S. 58.

Abbruch eines laufenden Flash-AuftragsNvMMemIfFeeFlsMemIf_Cancel(DeviceIndex)Fee_Cancel()Fls_Cancel()Fls_Cancel nicht währendlaufender Fls_MainFunctionRückkehrRückkehrRückkehr (synchron)Abbruch ist asynchronzur HardwareoptFehlerbenachrichtigung konfiguriertFee_JobErrorNotification()NvM_JobErrorNotification()MemIf_GetJobResult(DeviceIndex)Fee_GetJobResult()MEMIF_JOB_CANCELEDMEMIF_JOB_CANCELED

Sequenzdiagramm: Der Abbruch läuft synchron durch alle Schichten, die Fehlerbenachrichtigung folgt, danach meldet GetJobResult CANCELED. Quellen: SWS Fls S. 58, SWS Fee S. 45, [SWS_MemIf_00041]

Aufrufregeln, Reentranz und Einbettung in die BSW

Mit Ausnahme von MemIf_GetVersionInfo sind alle Dienste nicht reentrant [SWS_MemIf_00045] [SWS_MemIf_00040]. Parallele Aufrufe aus mehreren Kontexten müssen daher ausgeschlossen werden. Da Status und Jobergebnis je Modul nur den letzten Auftrag widerspiegeln, sollte der Aufrufer einen neuen Auftrag erst nach Abschluss des vorigen erteilen SWS Fls S. 36.

Das Memory-Mapping-Beispiel eines ICC2-Clusters „MEM“ führt MemIf gemeinsam mit dem NvM. Dort ist MemIf_SetMode als BswCalledEntity modelliert, und MemIf hat das Section-Präfix MEMIF SWS MemoryMapping S. 50. Der BSW Distribution Guide nennt MEMIF neben FLS und FEE als Beispiel für „Type I“; der Geltungsbereich lässt sich per SwAddrMethod mit lokalem Scope auf einen Kern begrenzen EXP BSWDistributionGuide S. 31. Vermutlich ist MemIf in Mehrkernsystemen damit kernlokal zu betreiben. Frage Q-d998fdc58e0bcddd (offen)

Verhalten im Fehlerfall

MemIf kennt zwei Entwicklungsfehler. MEMIF_E_PARAM_DEVICE (0x01) steht für einen falschen DeviceIndex, MEMIF_E_PARAM_POINTER (0x02) für einen NULL-Zeiger [SWS_MemIf_00006]. Gemeldet werden sie über das optionale Det_ReportError [SWS_MemIf_00048]. Spezifische Fehlercodes werden laut Tracing-Tabelle nicht über die API zurückgegeben SWS MemIf S. 12.

Ist die Entwicklungsfehlererkennung aktiv und wird ein Fehler erkannt, liefern Read, Write, InvalidateBlock und EraseImmediateBlock E_NOT_OK [SWS_MemIf_00039] [SWS_MemIf_00040] [SWS_MemIf_00044] [SWS_MemIf_00046]. MemIf_GetJobResult liefert in diesem Fall MEMIF_JOB_FAILED SWS MemIf S. 21. Sonst wird der Wert des Moduls unverändert weitergereicht.

fehlerpruefung aufruf Aufruf eines MemIf-Dienstes (DeviceIndex, ggf. Zeiger) q1 Entwicklungsfehlererkennung aktiviert? aufruf->q1 q2 Parameter gültig? q1->q2 ja weiter Funktion des per DeviceIndex gewählten Moduls aufrufen q1->weiter nein det Det_ReportError mit MEMIF_E_PARAM_DEVICE (0x01) oder MEMIF_E_PARAM_POINTER (0x02) q2->det nein q2->weiter ja fehl Rückgabe E_NOT_OK (MemIf_GetJobResult: MEMIF_JOB_FAILED) det->fehl rueck Rückgabewert des Moduls unverändert zurückgeben weiter->rueck

Aktivitätsdiagramm: Parameterprüfung bei aktiver Entwicklungsfehlererkennung und Durchreichen des Modulergebnisses. Quellen: [SWS_MemIf_00006], [SWS_MemIf_00048], SWS MemIf S. 18, SWS MemIf S. 21

Laufzeitfehler des Speichers erkennt nicht MemIf, sondern Fee bzw. Ea; MemIf selbst reagiert nicht darauf („N/A“). Im Polling-Betrieb liest der NvM den Fehler über MemIf_GetJobResult als MEMIF_JOB_FAILED, und die Behebung liegt beim NvM ErrorDescription S. 58 ErrorDescription S. 60. Eine jüngere Fassung beschreibt diese Behebung näher. Danach erhöht der NvM bei Schreibaufträgen einen Wiederholzähler, bricht nach Überschreiten ab und meldet NVM_E_REQ_FAILED an den DEM EXP ErrorDescription S. 45. Für R20-11 ist dieses Detail hier nicht normativ belegt.

Weiterführende Detailbelege

KI-generierter Leitfaden auf Basis der im Prompt bereitgestellten Spezifikationsauszüge. Normativ sind die referenzierten Requirements des Release R20-11. Interpretationen sind als solche gekennzeichnet.

Memory Abstraction Interface (MemIf)

Abstracts underlying Flash and EEPROM memory drivers.

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

function MemIf_SetMode [SWS_MemIf_00038] 📄 PDF

void MemIf_SetMode (MemIf_ModeType Mode);

Invokes the "Set Mode" functions of all underlying memory abstraction modules.

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

Die Funktion MemIf_SetMode dient dem synchronen Umschalten des Betriebsmodus über die Speicherschnittstelle [SWS_MemIf_00038]. Bei Aufruf leitet sie den geforderten Modus an die individuellen „Set Mode“-Funktionen sämtlicher darunterliegender Speicherabstraktionsmodule weiter [SWS_MemIf_00038]. Als Parameter wird der Zielmodus Mode übergeben, während die Funktion keinen Rückgabewert liefert [SWS_MemIf_00038]. Definiert ist die Schnittstelle mit der Service-ID 0x01 im Header MemIf.h [SWS_MemIf_00038].

Hinsichtlich der Nebenläufigkeit ist MemIf_SetMode als nicht reentrant (Non Reentrant) spezifiziert [SWS_MemIf_00038]. Interpretation: Aufrufer dürfen die Funktion vermutlich nicht zeitgleich oder unterbrechend aus mehreren Tasks oder Interrupt-Service-Routinen aufrufen, weshalb ein nebenläufiger Zugriff bei Bedarf durch externe Schutzmechanismen koordiniert werden dürfte. Frage Q-02b14e9cb4b05dc9 (offen)

Aufgrund der synchronen Ausführungssemantik kehrt der Aufruf erst nach Weiterleitung der Anforderung an die Speicherabstraktionsmodule zum Aufrufer zurück [SWS_MemIf_00038]. Spezifische Rückgabewerte zur Fehleranzeige oder gesonderte DET- bzw. DEM-Fehlermeldungen sind für diese Funktion in der Elementspezifikation nicht vorgesehen [SWS_MemIf_00038].

Dieser Nutzungshinweis wurde automatisiert generiert und basiert ausschließlich auf den Angaben der Spezifikation AUTOSAR R20-11.

Implementer's Guide folgt (Komplexität I1)

function MemIf_Read [SWS_MemIf_00039] 📄 PDF

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

Invokes the "Read" function of the underlying memory abstraction module selected by the parameter Device Index.

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

Die Funktion MemIf_Read leitet eine Leseanforderung synchron an das über den Parameter DeviceIndex ausgewählte unterlagerte Speicherabstraktionsmodul weiter [SWS_MemIf_00039]. Sie ist im Header MemIf.h deklariert und dient dem Auslesen von Daten eines logischen Speicherblocks.

Parameter und Schnittstelle

Der Aufruf von MemIf_Read umfasst folgende Ein- und Ausgabeparameter [SWS_MemIf_00039]:

  • DeviceIndex: Index des Zielgeräts zur Auswahl des Zielmoduls.
  • BlockNumber: Logische Blocknummer des zu lesenden Speicherblocks.
  • BlockOffset: Byte-Offset innerhalb des logischen Blocks, ab dem gelesen wird.
  • DataBufferPtr: Zeiger auf den Puffer zur Speicherung der gelesenen Daten.
  • Length: Anzahl der zu lesenden Datenbytes.

Fehlerbehandlung und Rückgabewerte

Wenn die Erkennung von Entwicklungsfehlern (Development Error Detection) aktiv ist und ein Entwicklungsfehler erkannt wird, gibt die Funktion E_NOT_OK zurück [SWS_MemIf_00039]. Andernfalls wird der Rückgabewert der aufgerufenen Lesefunktion des unterlagerten Moduls als Std_ReturnType weitergereicht [SWS_MemIf_00039].

Nebenläufigkeit und Einschränkungen

Die Funktion ist als synchron und nicht reentrant (Non Reentrant) spezifiziert [SWS_MemIf_00039]. Ein Aufruf dürfte daher typischerweise im Task-Kontext erfolgen; parallele oder verschachtelte Aufrufe müssen durch den Aufrufer vermieden bzw. serialisiert werden. Frage Q-b774bf07a69e28af (offen)

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

function MemIf_Write [SWS_MemIf_00040] 📄 PDF

Std_ReturnType MemIf_Write (uint8 DeviceIndex, uint16 BlockNumber, const uint8* DataBufferPtr);

Invokes the "Write" function of the underlying memory abstraction module selected by the parameter Device Index.

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

Verwendung und Aufrufkontext

Die Schnittstellenfunktion MemIf_Write dient als Abstraktionsschicht und ruft die Write-Funktion des unterlagerten Speicherabstraktionsmoduls auf, welches über den Parameter DeviceIndex selektiert wird [SWS_MemIf_00040]. Beim synchronen Aufruf werden drei Eingangsparameter übergeben: der Geräteindex DeviceIndex zur Auswahl des Zieltreibers, die logische Blocknummer BlockNumber sowie der Zeiger DataBufferPtr auf den Puffer mit den zu schreibenden Daten [SWS_MemIf_00040]. Die Funktion ist unter der Service-ID 0x03 spezifiziert und über die Header-Datei MemIf.h verfügbar [SWS_MemIf_00040].

Fehlerbehandlung und Rückgabewerte

Der Rückgabewert ist vom Typ Std_ReturnType [SWS_MemIf_00040]. Falls die Erkennung von Entwicklungsfehlern (Development Error Detection) für das Memory Abstraction Interface aktiv ist und ein Entwicklungsfehler gemäß [SWS_MemIf_00022] festgestellt wird, liefert MemIf_Write den Fehlercode E_NOT_OK zurück [SWS_MemIf_00040]. Liegt kein Fehler vor, leitet die Funktion den Rückgabewert des aufgerufenen unterlagerten Moduls unverändert an den Aufrufer weiter [SWS_MemIf_00040].

Nebenläufigkeit und Randbedingungen

Hinsichtlich des Nebenläufigkeitsverhaltens ist MemIf_Write als synchron und nicht reentrant (Non Reentrant) definiert [SWS_MemIf_00040].

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

function MemIf_Cancel [SWS_MemIf_00041] 📄 PDF

void MemIf_Cancel (uint8 DeviceIndex);

Invokes the "Cancel" function of the underlying memory abstraction module selected by the parameter Device Index.

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

Die synchrone Funktion MemIf_Cancel dient dazu, die Cancel-Funktion des unterlagerten Speicherabstraktionsmoduls aufzurufen, das über den Parameter Device Index ausgewählt wird [SWS_MemIf_00041]. Der Dienst besitzt keinen Rückgabewert und leitet den Abbruchauftrag unmittelbar an die adressierte Abstraktionsinstanz weiter [SWS_MemIf_00041].

Für den Aufruf und die Einbindung gelten folgende technische Eigenschaften:

  • Aufrufkontext und Nebenläufigkeit: Die Funktion ist als nicht reentrant (Non Reentrant) definiert [SWS_MemIf_00041]. Aufrufer müssen sicherstellen, dass die Ausführung nicht nebenläufig oder unterbrechend durch andere Kontexte erfolgt.
  • Signatur und Identifikation: Die Schnittstelle void MemIf_Cancel (uint8 Device Index) besitzt die Service-ID 0x04 und wird über die Header-Datei MemIf.h bereitgestellt [SWS_MemIf_00041].
  • Parameter: Der Eingangsparameter Device Index (Typ uint8) selektiert das Zielmodul; Ein-/Ausgabe- oder Rückgabeparameter sind nicht vorhanden [SWS_MemIf_00041].
  • Fehlerbehandlung: Die Spezifikation beschreibt für diese Funktion keine spezifischen Fehlercodes, Rückgabewerte oder DET-Meldungen [SWS_MemIf_00041] (Interpretation: Eine Überprüfung auf unzulässige Geräteindizes dürfte der übergeordneten Systemarchitektur oder dem unterlagerten Modul überlassen sein). Frage Q-4a5d989ce611ba89 (offen)

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

function MemIf_GetStatus [SWS_MemIf_00042] 📄 PDF

MemIf_StatusType MemIf_GetStatus (uint8 DeviceIndex);

Invokes the "Get Status" function of the underlying memory abstraction module selected by the parameter Device Index.

function MemIf_GetJobResult [SWS_MemIf_00043] 📄 PDF

MemIf_JobResultType MemIf_GetJobResult (uint8 DeviceIndex);

Invokes the "Get Job Result" function of the underlying memory abstraction module selected by the parameter Device Index. Available v ia Mem If.h

function MemIf_InvalidateBlock [SWS_MemIf_00044] 📄 PDF

Std_ReturnType MemIf_InvalidateBlock (uint8 DeviceIndex, uint16 BlockNumber);

Invokes the "Invalidate Block" function of the underlying memory abstraction module AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_MemoryAbstractionInterface selected by the parameter Device Index.

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

Die synchrone Funktion MemIf_InvalidateBlock leitet den Auftrag zur Ungültigkeitserklärung eines logischen Blocks an das über den Parameter DeviceIndex ausgewählte unterliegende Speicherabstraktionsmodul weiter [SWS_MemIf_00044]. Die Schnittstelle wird über den Header MemIf.h bereitgestellt und führt die Service-ID 0x07 [SWS_MemIf_00044].

Verwendung und Parameter

Der Aufruf erfolgt synchron und übergibt die folgenden Eingabeparameter an das Adressierungsziel [SWS_MemIf_00044]:

  • DeviceIndex: Numerischer Index des zugrunde liegenden Speicherabstraktionsmoduls [SWS_MemIf_00044].
  • BlockNumber: Eindeutige Kennung des zu invalidierenden Speicherblocks [SWS_MemIf_00044].

Fehlerbehandlung und Rückgabewerte

Die Funktion gibt einen Statuswert des Typs Std_ReturnType zurück [SWS_MemIf_00044]:

  • Ist die Erkennung von Entwicklungsfehlern (Development Error Detection) für das Memory Abstraction Interface aktiviert und tritt ein Fehler gemäß SWS_MemIf_00022 auf, gibt die Funktion E_NOT_OK zurück [SWS_MemIf_00044].
  • Wird kein Entwicklungsfehler festgestellt, gibt die Schnittstelle das Ergebnis der aufgerufenen Funktion des unterliegenden Moduls zurück [SWS_MemIf_00044].

Nebenläufigkeit

Die Funktion ist als nicht reentrant (Non Reentrant) spezifiziert [SWS_MemIf_00044].

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

function MemIf_EraseImmediateBlock [SWS_MemIf_00046] 📄 PDF

Std_ReturnType MemIf_EraseImmediateBlock (uint8 DeviceIndex, uint16 BlockNumber);

Invokes the "Erase Immediate Block" function of the underlying memory abstraction module selected by the parameter Device Index.

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

Verwendung

Die synchrone Funktion MemIf_EraseImmediateBlock veranlasst das Löschen eines als unmittelbar eingestuften Blocks im unterlagerten Speicherabstraktionsmodul [SWS_MemIf_00046]. Der Aufruf wird über den Header MemIf.h bereitgestellt und führt die Service-ID 0x09 [SWS_MemIf_00046]. Als Eingangsparameter dienen DeviceIndex zur Adressierung des spezifischen Speichergeräts bzw. Abstraktionsmoduls sowie BlockNumber zur Identifikation des Zielblocks [SWS_MemIf_00046]. Zusätzliche Inout- oder Out-Parameter existieren nicht [SWS_MemIf_00046].

Rückgabewerte und Fehlerbehandlung

Die Funktion gibt einen Statuswert vom Typ Std_ReturnType zurück [SWS_MemIf_00046]. Wenn die Erkennung von Entwicklungsfehlern für das Memory Abstraction Interface aktiviert ist und ein entsprechender Fehler gemäß [SWS_MemIf_00022] festgestellt wird, liefert der Aufruf den festen Rückgabewert E_NOT_OK [SWS_MemIf_00046]. Tritt kein derartiger Fehler auf, wird das unmittelbare Ergebnis der aufgerufenen Funktion des unterlagerten Moduls an den Aufrufer durchgereicht [SWS_MemIf_00046].

Nebenläufigkeit und Einschränkungen

Die Ausführung von MemIf_EraseImmediateBlock erfolgt synchron und ist als nicht reentrant (Non Reentrant) spezifiziert [SWS_MemIf_00046]. Interpretation: Da parallele Aufrufe der Schnittstelle unzulässig sind, dürfte die Funktion im Gesamtsystem vermutlich nur aus einem synchronisierten Kontext auf Task-Ebene aufgerufen werden, um Dateninkonsistenzen in den unterlagerten Speichertreibern zu verhindern. Frage Q-4fce518bab0115db (offen)

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

type MemIf_StatusType [SWS_MemIf_00064] 📄 PDF

Denotes the current status of the underlying abstraction module and device drive. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_MemoryAbstractionInterface

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

Der Aufzählungstyp MemIf_StatusType kennzeichnet den aktuellen Betriebs- und Ausführungsstatus des unterlagerten Speicherabstraktionsmoduls sowie des zugehörigen Gerätetreibers gemäß [SWS_MemIf_00064]. Definiert ist dieser Typ im Memory Abstraction Interface und steht Aufrufern über die Header-Datei MemIf.h zur Verfügung [SWS_MemIf_00064].

Die Enumeration umfasst vier distinkte Zustände zur Abbildung der Betriebsbereitschaft [SWS_MemIf_00064]:

  • MEMIF_UNINIT: Das unterlagerte Abstraktionsmodul oder der zugehörige Gerätetreiber ist (noch) nicht initialisiert [SWS_MemIf_00064].
  • MEMIF_IDLE: Das Abstraktionsmodul oder der Gerätetreiber ist betriebsbereit und führt aktuell keine Aufträge aus [SWS_MemIf_00064].
  • MEMIF_BUSY: Das unterlagerte Modul oder der Gerätetreiber verarbeitet gegenwärtig eine Operation [SWS_MemIf_00064].
  • MEMIF_BUSY_INTERNAL: Das Abstraktionsmodul wickelt interne Verwaltungsoperationen ab, während der Treiber frei oder beschäftigt sein kann [SWS_MemIf_00064].

Aufrufende Schichten nutzen diesen Status, um vor Auftragsvergaben synchron festzustellen, ob die Speicherschichten betriebsbereit sind oder interne Verwaltungsvorgänge laufen [SWS_MemIf_00064]. Da MemIf_StatusType eine reine Datentypdefinition darstellt, sind funktionale Aspekte wie DET- oder DEM-Meldungen, Reentranzregeln oder Aufrufkontexte im Spezifikationselement nicht separat ausgewiesen.

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

Implementer's Guide folgt (Komplexität I1)

type MemIf_JobResultType [SWS_MemIf_00065] 📄 PDF

Denotes the result of the last job.

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

Der Aufzählungstyp MemIf_JobResultType beschreibt das Ergebnis des zuletzt verarbeiteten Auftrags an die Speicherschnittstelle und wird über die Header-Datei MemIf.h bereitgestellt [SWS_MemIf_00065].

Die Enumeration definiert Zustände für die Ausführung sowie spezifische Fehler- und Blockzustände [SWS_MemIf_00065]:

  • MEMIF_JOB_OK: Der angeforderte Auftrag wurde erfolgreich beendet [SWS_MemIf_00065].
  • MEMIF_JOB_PENDING: Der Auftrag wurde noch nicht abgeschlossen [SWS_MemIf_00065]. Interpretation: Dies deutet darauf hin, dass Aufträge asynchron bearbeitet werden und der Aufrufer den Abschluss über diesen Zwischenzustand ermittelt. Frage Q-31078cf25506334e (offen)
  • MEMIF_JOB_FAILED: Der Auftrag wurde nicht erfolgreich abgeschlossen [SWS_MemIf_00065].
  • MEMIF_JOB_CANCELED: Der Auftrag wurde abgebrochen [SWS_MemIf_00065].
  • MEMIF_BLOCK_INCONSISTENT: Der angeforderte Block ist inkonsistent, enthält möglicherweise beschädigte Daten oder wurde nicht gefunden [SWS_MemIf_00065].
  • MEMIF_BLOCK_INVALID: Der angeforderte Block wurde als ungültig markiert, sodass die gewünschte Operation nicht ausgeführt werden kann [SWS_MemIf_00065].

Bei der Auswertung des Auftragsergebnisses dient der Typ zur Differenzierung zwischen allgemeinen Ausführungsfehlern (MEMIF_JOB_FAILED) und blockbezogenen Problemen (MEMIF_BLOCK_INCONSISTENT, MEMIF_BLOCK_INVALID) [SWS_MemIf_00065].

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

type MemIf_ModeType [SWS_MemIf_00066] 📄 PDF

Denotes the operation mode of the underlying abstraction mod ules and device drivers.

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

Der Aufzählungstyp MemIf_ModeType definiert den Betriebsmodus der unterlagerten Speicherabstraktionsmodule und Gerätetreiber [SWS_MemIf_00066]. Er wird über die Header-Datei MemIf.h bereitgestellt und dient der Steuerung des Geschwindigkeits- und Betriebsverhaltens der Speicherzugriffe [SWS_MemIf_00066].

Der Wertebereich umfasst gemäß [SWS_MemIf_00066] zwei Zustände:

  • MEMIF_MODE_SLOW: Die unterlagerten Abstraktionsmodule und Gerätetreiber arbeiten im langsamen Modus (Slow Mode) [SWS_MemIf_00066].
  • MEMIF_MODE_FAST: Die unterlagerten Abstraktionsmodule und Gerätetreiber arbeiten im schnellen Modus (Fast Mode) [SWS_MemIf_00066].

Hinsichtlich Fehlerbehandlung, Reentranz oder spezifischer Aufrufkontexte enthält die Spezifikation des Typs keine gesonderten Festlegungen; die Übergabe und Auswertung des Modus erfolgt synchron über die entsprechenden Schnittstellen der Speicherschnittstelle bzw. der unterlagerten Treiber [SWS_MemIf_00066].

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

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_MemIf
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_MemIf@rel:R20-11#a06cc739
Content hash
a06cc739
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_MemoryAbstractionInterface.pdf#nameddest=SWS_MemIf_00038

Initialisierung und Status

Invokes the "Get Status" function of the underlying memory abstraction module selected by the parameter Device Index.

MemIf_StatusType MemIf_GetStatus (uint8 DeviceIndex);

Returns version information.

void MemIf_GetVersionInfo (Std_VersionInfoType* VersionInfoPtr);

Dienste

MemIf_Cancel function

Invokes the "Cancel" function of the underlying memory abstraction module selected by the parameter Device Index.

void MemIf_Cancel (uint8 DeviceIndex);

Invokes the "Erase Immediate Block" function of the underlying memory abstraction module selected by the parameter Device Index.

Std_ReturnType MemIf_EraseImmediateBlock (uint8 DeviceIndex, uint16 BlockNumber);

Invokes the "Get Job Result" function of the underlying memory abstraction module selected by the parameter Device Index. Available v ia Mem If.h

MemIf_JobResultType MemIf_GetJobResult (uint8 DeviceIndex);

Invokes the "Invalidate Block" function of the underlying memory abstraction module AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_MemoryAbstractionInterface selected by the parameter Device Index.

Std_ReturnType MemIf_InvalidateBlock (uint8 DeviceIndex, uint16 BlockNumber);
MemIf_Read function

Invokes the "Read" function of the underlying memory abstraction module selected by the parameter Device Index.

Std_ReturnType MemIf_Read (uint8 DeviceIndex, uint16 BlockNumber, uint16 BlockOffset, uint8* DataBufferPtr, uint16 Length);
MemIf_SetMode function

Invokes the "Set Mode" functions of all underlying memory abstraction modules.

void MemIf_SetMode (MemIf_ModeType Mode);
MemIf_Write function

Invokes the "Write" function of the underlying memory abstraction module selected by the parameter Device Index.

Std_ReturnType MemIf_Write (uint8 DeviceIndex, uint16 BlockNumber, const uint8* DataBufferPtr);

Typen

Denotes the result of the last job.

Denotes the operation mode of the underlying abstraction mod ules and device drivers.

Denotes the current status of the underlying abstraction module and device drive. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_MemoryAbstractionInterface