DEENESPTFRRUARHIKOZHNL

Memory Abstraction Interface (MemIf)

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

Guía del móduloGENERADO POR IA

Reenvía solicitudes de almacenamiento del administrador de NVRAM a la emulación de Flash EEPROM o a la abstracción de EEPROM mediante el índice de dispositivo.
GENERADO POR IA no revisado Modelo: claude-opus-5-5 · Esfuerzo: high · Temperatura: no controlable · Prompt: 423eb9cf4c9b Procedencia Preguntas abiertas (5)
Ancla causal: R20-11 Válido desde R20-11 Sintetizado para esta versión de especificación.
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

Reenvía solicitudes de almacenamiento del administrador de NVRAM a la emulación de Flash EEPROM o a la abstracción de EEPROM mediante el índice de dispositivo.

MemIf reenvía las solicitudes de almacenamiento del NVRAM Manager a módulos Fee o Ea y oculta su cantidad tras una API unificada SWS MemIf p. 7. El parámetro DeviceIndex selecciona el módulo; si solo hay uno configurado, se ignora y MemIf se implementa como un conjunto de macros SWS MemIf p. 17. Los servicios aceptan solicitudes de forma síncrona y transmiten el valor de retorno, mientras que la operación de almacenamiento se ejecuta por debajo de forma asíncrona. El estado y el resultado los proporcionan MemIf_GetStatus y MemIf_GetJobResult. Con la detección de errores de desarrollo activa, las llamadas erróneas devuelven E_NOT_OK o MEMIF_JOB_FAILED.

El Memory Abstraction Interface sustituye a las capas de interfaz de controlador anteriores para Flash y EEPROM. Permite al NVRAM Manager comunicarse con múltiples módulos de abstracción a través de una API unificada: la Flash EEPROM Emulation (Fee) y la EEPROM Abstraction (Ea) SRS MemHwAb p. 5. MemIf oculta el número de estos módulos y proporciona una segmentación virtual sobre un espacio de direcciones lineal SWS MemIf p. 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 misma API que 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

Diagrama de contexto: MemIf media entre NvM y Fee/Ea; las notificaciones de finalización van directamente de Fee/Ea al NvM. Fuentes: SWS Fee p. 6, [SWS_MemIf_00047]

MemIf no dispone de lógica de almacenamiento propia. El parámetro DeviceIndex selecciona el módulo; si solo hay uno configurado, se ignora y MemIf se implementa como un conjunto de macros. En caso de múltiples módulos, la distribución se efectúa, por ejemplo, mediante tablas de punteros a función SWS MemIf p. 17. En R20-11, DeviceIndex es de tipo uint8 [SWS_MemIf_00039]; versiones posteriores utilizan uint16.

Los servicios aceptan solicitudes de forma síncrona y transmiten el valor de retorno del módulo [SWS_MemIf_00040]. A continuación, la operación de almacenamiento se ejecuta de forma asíncrona en la función principal de la capa inferior. El NvM se entera de la finalización mediante callback desde Fee/Ea o mediante sondeo de MemIf_GetJobResult SWS Fee p. 48. MemIf_GetStatus notifica UNINIT, IDLE, BUSY o BUSY_INTERNAL [SWS_MemIf_00064]. El resultado del trabajo se refiere siempre a la última solicitud y distingue, entre otros, bloques cancelados, inconsistentes e inválidos [SWS_MemIf_00065]. MemIf_SetMode tiene efecto sobre todos los módulos al mismo tiempo [SWS_MemIf_00038].

trabajo de escritura mediante MemIf (ejemplo Ea/Eep)NvMMemIfEaEeptarea BSW (tarea de OS o llamada periódica)Use Case: Auftragsannahme (synchron)MemIf_Write(DeviceIndex,BlockNumber, DataBufferPtr)seleccionar módulo mediante DeviceIndexEa_Write(BlockNumber, DataBufferPtr)Eep_Write(EepromAddress,DataBufferPtr, Length)Std_ReturnTypeStd_ReturnTypeStd_ReturnType (sin cambios)Use Case: ejecución (asíncrona)Hasta el final, GetJobResult devuelveMEMIF_JOB_PENDINGloophasta que el trabajo finaliceEep_MainFunction()altBenachrichtigung konfiguriertEa_JobEndNotification()NvM_JobEndNotification()Polling-BetriebMemIf_GetJobResult(DeviceIndex)Ea_GetJobResult()MEMIF_JOB_OKMEMIF_JOB_OK

Diagrama de secuencias: aceptación síncrona a través de MemIf, ejecución asíncrona en el controlador, finalización mediante callback o sondeo. Fuentes: SWS Ea p. 41, [SWS_MemIf_00040]

En caso de error, MemIf notifica índices de dispositivo no válidos y punteros NULL como errores de desarrollo [SWS_MemIf_00006]. En tales casos, los servicios devuelven E_NOT_OK, y MemIf_GetJobResult devuelve MEMIF_JOB_FAILED SWS MemIf p. 21. Fee y Ea detectan los errores de tiempo de ejecución de la memoria; el NvM los lee en modo de sondeo como MEMIF_JOB_FAILED y es responsable de su subsanación ErrorDescription p. 58.

Función en la pila de memoria: distribuidor entre NvM y Fee/Ea

El Memory Abstraction Interface (MemIf) sustituye a las capas de interfaz de controlador anteriores para Flash y EEPROM. Permite al NVRAM Manager (NvM) acceder a múltiples módulos de abstracción de memoria a través de una única API: la Flash EEPROM Emulation (Fee) y la EEPROM Abstraction (Ea) SRS MemHwAb p. 5. Hacia las capas superiores, MemIf oculta cuántos módulos Fee y Ea se encuentran por debajo. Ofrece una segmentación virtual sobre un espacio de direcciones lineal unificado SWS MemIf p. 7. Fee y Ea proporcionan el direccionamiento basado en bloques y un número «virtualmente ilimitado» de ciclos de borrado y escritura. Por ello, no es necesario modificar el NvM cuando cambian el controlador o el componente SRS MemHwAb p. 5.

MemIf no contiene en sí ninguna lógica de almacenamiento. Su API debe mapearse a la API de los módulos de abstracción, y el comportamiento funcional queda definido por las especificaciones de estos o por las de los controladores de memoria SWS MemIf p. 17. En consecuencia, MemIf requiere los servicios de los módulos de abstracción, para Ea por ejemplo Ea_Read, Ea_Cancel, Ea_GetStatus y Ea_GetJobResult [SWS_MemIf_00047]. De forma opcional utiliza Det_ReportError [SWS_MemIf_00048]. Los tipos MemIf_StatusType, MemIf_JobResultType y MemIf_ModeType definidos en MemIf.h constituyen el vocabulario común de la pila [SWS_MemIf_00064] [SWS_MemIf_00065] [SWS_MemIf_00066]. Así, por ejemplo, Fls_GetJobResult devuelve directamente MemIf_JobResultType SWS Fls p. 36.

Las figuras de versiones más recientes muestran adicionalmente por debajo de Ea y Fee los módulos MemAcc y Mem SWS Ea p. 42. Para R20-11 probablemente sea determinante la vista general más antigua, en la que Fee se basa en el controlador de Flash y Ea en el controlador de EEPROM SWS Fee p. 6. Para MemIf, la diferencia carece de relevancia, ya que solo reenvía hasta el nivel de abstracción SWS MemIf p. 17. Pregunta Q-3c74a6029dd0d159 (abierta)

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 misma API que 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

Diagrama de contexto: MemIf se sitúa entre NvM y los módulos de abstracción Fee/Ea; las notificaciones de finalización llegan al NvM directamente desde Fee/Ea. Fuentes: SWS Fee p. 6, SRS MemHwAb p. 5, [SWS_MemIf_00047], [SWS_MemIf_00048]

Selección de dispositivo mediante DeviceIndex: macros o tabla de distribución

El parámetro DeviceIndex selecciona el módulo de abstracción y, con ello, el componente de memoria. Si solo se ha configurado un módulo, este parámetro se ignora SWS MemIf p. 17. En tal caso, MemIf debe implementarse como un conjunto de macros, como #define MemIf_Write(DeviceIndex, BlockNumber, DataPtr) Fee_Write(BlockNumber, DataPtr). Si hay varios módulos, las llamadas deben distribuirse mediante mecanismos eficientes; como una de las soluciones, la especificación menciona tablas de punteros a función indexadas mediante DeviceIndex SWS MemIf p. 17. Si una biblioteca específica del fabricante sustituye a todos los módulos Fee y Ea necesarios, MemIf consta únicamente de macros SRS MemHwAb p. 5.

En R20-11, DeviceIndex es de tipo uint8 [SWS_MemIf_00039] [SWS_MemIf_00041]. Versiones posteriores de la especificación lo indican como uint16 SWS MemIf p. 18. Lo normativo para esta versión es uint8.

abbildung start Konfiguration von MemIf q0 ¿Sustituye una biblioteca de fabricante todos los módulos Fee y Ea? start->q0 lib MemIf solo consta de macros hacia la API de la biblioteca q0->lib Sí q1 ¿Cuántos módulos de abstracción están configurados? q0->q1 No ende se invoca la función del módulo, se propaga el valor de retorno lib->ende ein las macros mapean la API de MemIf (p. ej., MemIf_Write -> Fee_Write) q1->ein exactamente uno mehr Effiziente Verteilung, z. B. Funktionszeigertabelle q1->mehr mehrere ign DeviceIndex se ignora ein->ign ign->ende idx DeviceIndex selecciona el módulo (Fee o Ea) mehr->idx idx->ende

Diagrama de actividades: la cantidad de módulos de abstracción configurados determina si se utiliza el mapeo mediante macros o la distribución por DeviceIndex. Fuentes: SWS MemIf p. 17, SRS MemHwAb p. 5

Flujo de solicitudes: aceptación síncrona, ejecución asíncrona

Todos los servicios de MemIf están especificados de forma síncrona. Cada uno llama a la función homónima del módulo seleccionado y devuelve su valor de retorno, como ocurre con Read, Write e InvalidateBlock [SWS_MemIf_00039] [SWS_MemIf_00040] [SWS_MemIf_00044]. La operación de almacenamiento propiamente dicha se ejecuta a continuación de forma asíncrona en la función principal llamada cíclicamente de la capa inferior. La secuencia de Ea muestra para ello un bucle sobre Eep_MainFunction en la tarea BSW SWS Ea p. 41. Según la especificación de Fee, este patrón es válido también para los demás servicios asíncronos SWS Fee p. 48.

El NvM se entera del final del trabajo a través de una de dos vías, según la configuración de la pila. O bien el módulo de abstracción llama a un callback como NvM_JobEndNotification o NvM_JobErrorNotification, o bien el NvM realiza un sondeo de MemIf_GetJobResult SWS Fee p. 48 EXP ErrorDescription p. 45. MemIf propiamente dicho no proporciona ninguna función de callback; su API consta de los siguientes servicios [SWS_MemIf_00038] [SWS_MemIf_00046].

ServicioID de serviciodevolverEfecto
MemIf_SetMode0x01–llama a SetMode de todos los módulos de abstracción [SWS_MemIf_00038]
MemIf_Read0x02Std_ReturnTypelee Length bytes del bloque a partir de BlockOffset hacia DataBufferPtr [SWS_MemIf_00039]
MemIf_Write0x03Std_ReturnTypeescribe un bloque [SWS_MemIf_00040]
MemIf_Cancel0x04–cancela la solicitud en curso [SWS_MemIf_00041]
MemIf_GetStatus0x05MemIf_StatusTypeestado del módulo [SWS_MemIf_00042]
MemIf_GetJobResult0x06MemIf_JobResultTyperesultado de la última solicitud [SWS_MemIf_00043]
MemIf_InvalidateBlock0x07Std_ReturnTypeinvalida un bloque [SWS_MemIf_00044]
MemIf_GetVersionInfo0x08–información de versión, reentrante [SWS_MemIf_00045]
MemIf_EraseImmediateBlock0x09Std_ReturnTypeborra un bloque [SWS_MemIf_00046]
trabajo de escritura mediante MemIf (ejemplo Ea/Eep)NvMMemIfEaEeptarea BSW (tarea de OS o llamada periódica)Use Case: Auftragsannahme (synchron)MemIf_Write(DeviceIndex,BlockNumber, DataBufferPtr)seleccionar módulo mediante DeviceIndexEa_Write(BlockNumber, DataBufferPtr)Eep_Write(EepromAddress,DataBufferPtr, Length)Std_ReturnTypeStd_ReturnTypeStd_ReturnType (sin cambios)Use Case: ejecución (asíncrona)Hasta el final, GetJobResult devuelveMEMIF_JOB_PENDINGloophasta que el trabajo finaliceEep_MainFunction()altBenachrichtigung konfiguriertEa_JobEndNotification()NvM_JobEndNotification()Polling-BetriebMemIf_GetJobResult(DeviceIndex)Ea_GetJobResult()MEMIF_JOB_OKMEMIF_JOB_OK

Diagrama de secuencias: una solicitud de escritura se acepta de forma síncrona a través de MemIf, se ejecuta de forma asíncrona en el controlador y se finaliza mediante callback o sondeo. Fuentes: SWS Ea p. 41, SWS Fee p. 48, ErrorDescription p. 60, [SWS_MemIf_00040]

Estado, resultado del trabajo y modo de operación

MemIf_GetStatus proporciona el estado del módulo seleccionado [SWS_MemIf_00042]. Los posibles valores son MEMIF_UNINIT, MEMIF_IDLE, MEMIF_BUSY y MEMIF_BUSY_INTERNAL. Con MEMIF_BUSY_INTERNAL, el módulo de abstracción está ocupado con la gestión interna, mientras que el controlador puede estar ocupado o inactivo (busy o idle) [SWS_MemIf_00064]. La especificación de Fee concreta las condiciones y cita como ejemplo de gestión interna la reorganización de la memoria Flash (Garbage Collection) SWS Fee p. 30. En el controlador de Flash, el estado puede consultarse incluso antes de la inicialización y entonces es MEMIF_UNINIT SWS Fls p. 35.

status start comenzar UNINIT MEMIF_UNINIT start->UNINIT IDLE MEMIF_IDLE UNINIT->IDLE Modul initialisiert BUSY MEMIF_BUSY IDLE->BUSY trabajo de la capa superior en procesamiento BUSYINT MEMIF_BUSY_INTERNAL IDLE->BUSYINT interne Verwaltung (z. B. Garbage Collection) BUSY->IDLE Auftrag beendet BUSYINT->IDLE interne Verwaltung beendet

Diagrama de estados: ciclo de vida del estado de módulo visible a través de MemIf_GetStatus. Fuentes: [SWS_MemIf_00064], SWS Fee p. 30

MemIf_GetJobResult proporciona el resultado del último trabajo [SWS_MemIf_00043] [SWS_MemIf_00065]. La lectura, la escritura y el borrado comparten un único resultado de trabajo, de modo que solo se puede consultar el del último trabajo. Con la aceptación de un nuevo trabajo, este se establece en MEMIF_JOB_PENDING SWS Fls p. 36; Fee habla del último trabajo aceptado SWS Fee p. 31. Además de OK, FAILED y CANCELED, existen dos resultados relacionados con el bloque. MEMIF_BLOCK_INCONSISTENT significa que el bloque está corrupto o no se ha encontrado; MEMIF_BLOCK_INVALID significa que está marcado como no válido [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 no exitoso CANCELED MEMIF_JOB_CANCELED PENDING->CANCELED abgebrochen INCONS MEMIF_BLOCK_INCONSISTENT PENDING->INCONS bloque corrupto o no encontrado INVALID MEMIF_BLOCK_INVALID PENDING->INVALID bloque marcado como no válido OK->neu siguiente trabajo FAILED->neu siguiente trabajo CANCELED->neu siguiente trabajo INCONS->neu siguiente trabajo INVALID->neu siguiente trabajo

Diagrama de estados: un trabajo aceptado se encuentra en PENDING y finaliza exactamente en uno de los resultados finales. Fuentes: [SWS_MemIf_00065], SWS Fls p. 36, SWS Fee p. 31

MemIf_SetMode es el único servicio que no tiene DeviceIndex y llama a SetMode de todos los módulos de abstracción [SWS_MemIf_00038]. Los modos son MEMIF_MODE_SLOW y MEMIF_MODE_FAST [SWS_MemIf_00066]. En los controladores, esto representa el acceso de lectura lento o el acceso SPI normal, por un lado, y el acceso de lectura rápido o la ráfaga SPI (SPI burst), por otro. Eep_SetMode no debe llamarse durante una operación en curso SWS Eep p. 34. Fls_SetMode rechaza una solicitud en estado ocupado si la comprobación está activa SWS Fls p. 42. Interpretación: dado que MemIf_SetMode llega a todos los módulos, solo debería llamarse cuando todos los dispositivos notifiquen MEMIF_IDLE. Pregunta Q-d6ee630fca619042 (abierta)

Cancelación de trabajos en curso

MemIf_Cancel llama a la función Cancel del módulo seleccionado [SWS_MemIf_00041]. La cancelación en sí es síncrona, pero asíncrona respecto al hardware: el hardware aún puede seguir funcionando cuando la llamada ya ha retornado SWS Fee p. 45 SWS Ea p. 44. El resultado del trabajo pasa a ser MEMIF_JOB_CANCELED [SWS_MemIf_00065], lo que Fee considera expresamente como un fallo SWS Fee p. 31.

Para la ruta Flash, la especificación del controlador muestra la cadena MemIf_Cancel → Fee_Cancel → Fls_Cancel con notificaciones de error posteriores. Además, exige no invocar Fls_Cancel durante una Fls_MainFunction en curso. Para ello existen dos vías: se sincronizan las funciones de trabajo de NvM y del controlador Flash, o bien no se interrumpe la tarea de Fls_MainFunction SWS Fls p. 58.

cancelación de un trabajo flash en cursoNvMMemIfFeeFlsMemIf_Cancel(DeviceIndex)Fee_Cancel()Fls_Cancel()Fls_Cancel no durantelaufender Fls_MainFunctionRetornoRetornoRetorno (síncrono)la cancelación es asíncronahacia el hardwareoptFehlerbenachrichtigung konfiguriertFee_JobErrorNotification()NvM_JobErrorNotification()MemIf_GetJobResult(DeviceIndex)Fee_GetJobResult()MEMIF_JOB_CANCELEDMEMIF_JOB_CANCELED

Diagrama de secuencia: la cancelación se ejecuta de forma síncrona a través de todas las capas, sigue la notificación de error y, a continuación, GetJobResult notifica CANCELED. Fuentes: SWS Fls p. 58, SWS Fee p. 45, [SWS_MemIf_00041]

Reglas de llamada, reentrancia e integración en la BSW

A excepción de MemIf_GetVersionInfo, todos los servicios son no reentrantes [SWS_MemIf_00045] [SWS_MemIf_00040]. Por lo tanto, deben excluirse las llamadas paralelas desde múltiples contextos. Dado que el estado y el resultado del trabajo por módulo solo reflejan el último trabajo, el llamante solo debería emitir un nuevo trabajo tras finalizar el anterior SWS Fls p. 36.

El ejemplo de mapeo de memoria de un clúster ICC2 «MEM» incluye MemIf junto con NvM. Allí, MemIf_SetMode está modelado como BswCalledEntity, y MemIf tiene el prefijo de sección MEMIF SWS MemoryMapping p. 50. La BSW Distribution Guide cita MEMIF junto a FLS y FEE como ejemplo de «Type I»; el ámbito de validez puede limitarse a un núcleo mediante SwAddrMethod con alcance local EXP BSWDistributionGuide p. 31. Probablemente, en sistemas multinúcleo, MemIf deba operarse de forma local al núcleo. Pregunta Q-d998fdc58e0bcddd (abierta)

Comportamiento en caso de error

MemIf contempla dos errores de desarrollo. MEMIF_E_PARAM_DEVICE (0x01) representa un DeviceIndex incorrecto, MEMIF_E_PARAM_POINTER (0x02) un puntero NULL [SWS_MemIf_00006]. Se notifican a través del módulo opcional Det_ReportError [SWS_MemIf_00048]. Según la tabla de trazabilidad, los códigos de error específicos no se devuelven a través de la API SWS MemIf p. 12.

Si la detección de errores de desarrollo está activa y se detecta un error, Read, Write, InvalidateBlock y EraseImmediateBlock devuelven E_NOT_OK [SWS_MemIf_00039] [SWS_MemIf_00040] [SWS_MemIf_00044] [SWS_MemIf_00046]. En este caso, MemIf_GetJobResult devuelve MEMIF_JOB_FAILED SWS MemIf p. 21. De lo contrario, el valor del módulo se transmite sin modificaciones.

fehlerpruefung aufruf llamada a un servicio de MemIf (DeviceIndex, puntero dado el caso) q1 Entwicklungsfehlererkennung aktiviert? aufruf->q1 q2 ¿parámetros válidos? q1->q2 Sí weiter llamar a la función del módulo seleccionado mediante DeviceIndex q1->weiter No det Det_ReportError con MEMIF_E_PARAM_DEVICE (0x01) o MEMIF_E_PARAM_POINTER (0x02) q2->det No q2->weiter Sí fehl retorno E_NOT_OK (MemIf_GetJobResult: MEMIF_JOB_FAILED) det->fehl rueck devolver sin cambios el valor de retorno del módulo weiter->rueck

Diagrama de actividades: comprobación de parámetros con la detección de errores de desarrollo activa y transmisión directa del resultado del módulo. Fuentes: [SWS_MemIf_00006], [SWS_MemIf_00048], SWS MemIf p. 18, SWS MemIf p. 21

Los errores de tiempo de ejecución de la memoria no los detecta MemIf, sino Fee o Ea; MemIf no reacciona a ellos («N/A»). En modo de sondeo (polling), NvM lee el error a través de MemIf_GetJobResult como MEMIF_JOB_FAILED, y la subsanación corresponde a NvM ErrorDescription p. 58 ErrorDescription p. 60. Una versión más reciente describe esta subsanación con más detalle. Según esta, NvM incrementa un contador de reintentos en los trabajos de escritura, cancela tras superarlo y notifica NVM_E_REQ_FAILED a DEM EXP ErrorDescription p. 45. Para R20-11, este detalle no está respaldado aquí de forma normativa.

Más evidencia detallada

Guía generada por IA sobre la base de los extractos de especificación facilitados en el prompt. Son normativos los requisitos referenciados de la versión R20-11. Las interpretaciones están identificadas como tales.

Memory Abstraction Interface (MemIf)

Abstracts underlying Flash and EEPROM memory drivers.

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

función MemIf_SetMode [SWS_MemIf_00038] 📄 PDF

void MemIf_SetMode (MemIf_ModeType Mode);

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

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: e9d6121ccdfc Procedencia Preguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

La función MemIf_SetMode sirve para el cambio síncrono del modo de funcionamiento a través de la interfaz de memoria [SWS_MemIf_00038]. En la llamada, reenvía el modo solicitado a las funciones individuales «Set Mode» de todos los módulos de abstracción de memoria subyacentes [SWS_MemIf_00038]. Como parámetro se transfiere el modo de destino Mode, mientras que la función no proporciona ningún valor de retorno [SWS_MemIf_00038]. La interfaz está definida con el Service ID 0x01 en la cabecera MemIf.h [SWS_MemIf_00038].

En lo relativo a la concurrencia, MemIf_SetMode está especificada como no reentrante (Non Reentrant) [SWS_MemIf_00038]. Interpretación: Es de suponer que los llamadores probablemente no deben invocar la función de forma simultánea o discontinua desde varias tareas o rutinas de servicio de interrupción, motivo por el cual un acceso concurrente probablemente debería coordinarse mediante mecanismos de protección externos en caso de ser necesario. Pregunta Q-02b14e9cb4b05dc9 (abierta)

Debido a la semántica de ejecución síncrona, la llamada no regresa al llamador hasta después de reenviar la solicitud a los módulos de abstracción de memoria [SWS_MemIf_00038]. En la especificación del elemento no se contemplan valores de retorno específicos para la indicación de errores ni mensajes de error DET o DEM independientes para esta función [SWS_MemIf_00038].

Esta nota de uso se ha generado automáticamente y se basa exclusivamente en las indicaciones de la especificación AUTOSAR R20-11.

Guía del implementador pendiente (complejidad I1)

función 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.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 9f6882978f36 Procedencia Preguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

La función MemIf_Read reenvía una solicitud de lectura de forma síncrona al módulo de abstracción de memoria subyacente seleccionado a través del parámetro DeviceIndex [SWS_MemIf_00039]. Está declarada en la cabecera MemIf.h y sirve para leer datos de un bloque de memoria lógico.

Parámetros e interfaz

La llamada a MemIf_Read incluye los siguientes parámetros de entrada y salida [SWS_MemIf_00039]:

  • DeviceIndex: Índice del dispositivo de destino para seleccionar el módulo de destino.
  • BlockNumber: Número de bloque lógico del bloque de memoria que se va a leer.
  • BlockOffset: Desplazamiento en bytes (byte offset) dentro del bloque lógico a partir del cual se lee.
  • DataBufferPtr: Puntero al búfer para almacenar los datos leídos.
  • Length: Número de bytes de datos que se van a leer.

Tratamiento de errores y valores de retorno

Si la detección de errores de desarrollo (Development Error Detection) está activa y se detecta un error de desarrollo, la función devuelve E_NOT_OK [SWS_MemIf_00039]. De lo contrario, el valor de retorno de la función de lectura invocada del módulo subyacente se reenvía como Std_ReturnType [SWS_MemIf_00039].

Concurrencia y restricciones

La función está especificada como síncrona y no reentrante (Non Reentrant) [SWS_MemIf_00039]. Por tanto, una llamada debería producirse típicamente en contexto de tarea; el llamante debe evitar o serializar las llamadas paralelas o anidadas. Pregunta Q-b774bf07a69e28af (abierta)

Esta nota de uso fue generada por una IA y se basa en la especificación AUTOSAR R20-11.

función 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.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 88682d2af3e3 Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

Uso y contexto de llamada

La función de interfaz MemIf_Write sirve como capa de abstracción y llama a la función Write del módulo de abstracción de memoria subyacente que se selecciona mediante el parámetro DeviceIndex [SWS_MemIf_00040]. En la llamada síncrona se pasan tres parámetros de entrada: el índice de dispositivo DeviceIndex para seleccionar el controlador de destino, el número de bloque lógico BlockNumber así como el puntero DataBufferPtr al búfer con los datos que se van a escribir [SWS_MemIf_00040]. La función está especificada bajo el Service ID 0x03 y disponible a través del archivo de cabecera MemIf.h [SWS_MemIf_00040].

Tratamiento de errores y valores de retorno

El valor de retorno es de tipo Std_ReturnType [SWS_MemIf_00040]. Si la detección de errores de desarrollo (Development Error Detection) para la Memory Abstraction Interface está activa y se detecta un error de desarrollo según [SWS_MemIf_00022], MemIf_Write devuelve el código de error E_NOT_OK [SWS_MemIf_00040]. Si no hay ningún error, la función reenvía el valor de retorno del módulo subyacente invocado de forma inalterada al llamante [SWS_MemIf_00040].

Concurrencia y condiciones de contorno

En cuanto al comportamiento de concurrencia, MemIf_Write está definida como síncrona y no reentrante (Non Reentrant) [SWS_MemIf_00040].

Esta nota de uso fue generada por una IA a partir de la especificación AUTOSAR Classic R20-11.

función 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.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: fa67da25152e Procedencia Preguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

La función síncrona MemIf_Cancel sirve para llamar a la función de cancelación (cancel) del módulo de abstracción de memoria subyacente que se selecciona a través del parámetro Device Index [SWS_MemIf_00041]. El servicio no tiene valor de retorno y reenvía la orden de cancelación directamente a la instancia de abstracción direccionada [SWS_MemIf_00041].

Para la llamada y la integración se aplican las siguientes propiedades técnicas:

  • Contexto de llamada y concurrencia: La función está definida como no reentrante (Non Reentrant) [SWS_MemIf_00041]. Los llamantes deben asegurarse de que la ejecución no se produzca de forma concurrente o interruptiva por parte de otros contextos.
  • Firma e identificación: La interfaz void MemIf_Cancel (uint8 Device Index) tiene el Service ID 0x04 y se proporciona a través del archivo de cabecera MemIf.h [SWS_MemIf_00041].
  • Parámetros: El parámetro de entrada Device Index (tipo uint8) selecciona el módulo de destino; no existen parámetros de entrada/salida ni de retorno [SWS_MemIf_00041].
  • Tratamiento de errores: La especificación no describe para esta función ningún código de error, valor de retorno ni mensaje DET específico [SWS_MemIf_00041] (interpretación: una comprobación de índices de dispositivo no permitidos presumiblemente quede delegada a la arquitectura de sistema de nivel superior o al módulo subyacente). Pregunta Q-4a5d989ce611ba89 (abierta)

Esta nota de uso fue generada por una IA sobre la base de la especificación AUTOSAR R20-11.

función 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.

función 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

función 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.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 65e4894eca9b Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

La función síncrona MemIf_InvalidateBlock reenvía la orden para declarar inválido un bloque lógico al módulo de abstracción de memoria subyacente seleccionado a través del parámetro DeviceIndex [SWS_MemIf_00044]. La interfaz se proporciona a través de la cabecera MemIf.h y lleva el Service ID 0x07 [SWS_MemIf_00044].

Uso y parámetros

La llamada se realiza de forma síncrona y transfiere los siguientes parámetros de entrada al destino de direccionamiento [SWS_MemIf_00044]:

  • DeviceIndex: Índice numérico del módulo de abstracción de memoria subyacente [SWS_MemIf_00044].
  • BlockNumber: Identificador unívoco del bloque de memoria a invalidar [SWS_MemIf_00044].

Tratamiento de errores y valores de retorno

La función devuelve un valor de estado del tipo Std_ReturnType [SWS_MemIf_00044]:

  • Si la detección de errores de desarrollo (Development Error Detection) está activada para la Memory Abstraction Interface y se produce un error conforme a SWS_MemIf_00022, la función devuelve E_NOT_OK [SWS_MemIf_00044].
  • Si no se detecta ningún error de desarrollo, la interfaz devuelve el resultado de la función invocada del módulo subyacente [SWS_MemIf_00044].

concurrencia

La función está especificada como no reentrante (Non Reentrant) [SWS_MemIf_00044].

Esta nota de uso se generó de manera automatizada a partir de la especificación AUTOSAR Classic Release R20-11.

función 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.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: e3fb9cffcdad Procedencia Preguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

usar

La función síncrona MemIf_EraseImmediateBlock ordena el borrado de un bloque clasificado como inmediato en el módulo de abstracción de memoria subyacente [SWS_MemIf_00046]. La llamada se proporciona a través de la cabecera MemIf.h y lleva el Service ID 0x09 [SWS_MemIf_00046]. Como parámetros de entrada sirven DeviceIndex para direccionar el dispositivo de memoria o módulo de abstracción específico, así como BlockNumber para identificar el bloque de destino [SWS_MemIf_00046]. No existen parámetros inout o out adicionales [SWS_MemIf_00046].

Valores de retorno y tratamiento de errores

La función devuelve un valor de estado del tipo Std_ReturnType [SWS_MemIf_00046]. Si la detección de errores de desarrollo para la Memory Abstraction Interface está activada y se detecta el error correspondiente conforme a [SWS_MemIf_00022], la llamada proporciona el valor de retorno fijo E_NOT_OK [SWS_MemIf_00046]. Si no se produce ningún error de este tipo, se transmite al llamador el resultado inmediato de la función invocada del módulo subyacente [SWS_MemIf_00046].

Concurrencia y restricciones

La ejecución de MemIf_EraseImmediateBlock se realiza de forma síncrona y está especificada como no reentrante (Non Reentrant) [SWS_MemIf_00046]. Interpretación: Dado que no están permitidas las llamadas paralelas a la interfaz, es probable que la función en el sistema global probablemente solo deba llamarse desde un contexto sincronizado a nivel de tarea, a fin de evitar inconsistencias de datos en los controladores de memoria subyacentes. Pregunta Q-4fce518bab0115db (abierta)

Esta nota de uso ha sido generada de forma automatizada sobre la base de la especificación AUTOSAR CP R20-11.

tipo 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

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: a0c9a4a73b28 Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

El tipo enumerado MemIf_StatusType identifica el estado actual de funcionamiento y de ejecución del módulo de abstracción de memoria subyacente, así como del controlador de dispositivo asociado conforme a [SWS_MemIf_00064]. Este tipo está definido en la Memory Abstraction Interface y se encuentra a disposición de los llamadores a través del archivo de cabecera MemIf.h [SWS_MemIf_00064].

La enumeración comprende cuatro estados distintos para representar la disponibilidad operativa [SWS_MemIf_00064]:

  • MEMIF_UNINIT: El módulo de abstracción subyacente o el controlador de dispositivo asociado (aún) no está inicializado [SWS_MemIf_00064].
  • MEMIF_IDLE: El módulo de abstracción o el controlador de dispositivo está operativo y actualmente no ejecuta ninguna orden [SWS_MemIf_00064].
  • MEMIF_BUSY: El módulo subyacente o el controlador de dispositivo está procesando una operación en este momento [SWS_MemIf_00064].
  • MEMIF_BUSY_INTERNAL: El módulo de abstracción realiza operaciones de gestión interna, mientras que el controlador puede estar libre u ocupado [SWS_MemIf_00064].

Las capas que realizan la llamada utilizan este estado para determinar de forma síncrona, antes de asignar órdenes, si las capas de memoria están operativas o si se están ejecutando procesos de gestión interna [SWS_MemIf_00064]. Puesto que MemIf_StatusType representa una definición de tipo de datos pura, los aspectos funcionales como mensajes DET o DEM, reglas de reentrancia o contextos de llamada no se indican por separado en el elemento de especificación.

Este texto ha sido generado por una IA a partir de la especificación de AUTOSAR.

Guía del implementador pendiente (complejidad I1)

tipo MemIf_JobResultType [SWS_MemIf_00065] 📄 PDF

Denotes the result of the last job.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 975aee2541ba Procedencia Preguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

El tipo enumerado MemIf_JobResultType describe el resultado de la última orden procesada dirigida a la interfaz de memoria y se proporciona a través del archivo de cabecera MemIf.h [SWS_MemIf_00065].

La enumeración define estados para la ejecución, así como estados específicos de error y de bloque [SWS_MemIf_00065]:

  • MEMIF_JOB_OK: La orden solicitada ha finalizado con éxito [SWS_MemIf_00065].
  • MEMIF_JOB_PENDING: La orden todavía no ha concluido [SWS_MemIf_00065]. Interpretación: Esto indica que las órdenes se procesan de forma asíncrona y que el llamador determina la finalización a través de este estado intermedio. Pregunta Q-31078cf25506334e (abierta)
  • MEMIF_JOB_FAILED: La orden no ha concluido con éxito [SWS_MemIf_00065].
  • MEMIF_JOB_CANCELED: La orden ha sido cancelada [SWS_MemIf_00065].
  • MEMIF_BLOCK_INCONSISTENT: El bloque solicitado es inconsistente, posiblemente contiene datos dañados o no se ha encontrado [SWS_MemIf_00065].
  • MEMIF_BLOCK_INVALID: El bloque solicitado se ha marcado como no válido, de modo que no se puede ejecutar la operación deseada [SWS_MemIf_00065].

Al evaluar el resultado de la orden, el tipo sirve para diferenciar entre errores generales de ejecución (MEMIF_JOB_FAILED) y problemas relativos a bloques (MEMIF_BLOCK_INCONSISTENT, MEMIF_BLOCK_INVALID) [SWS_MemIf_00065].

Este texto ha sido generado por una IA y sirve de orientación.

tipo MemIf_ModeType [SWS_MemIf_00066] 📄 PDF

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

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 00926ceab163 Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

El tipo enumerado MemIf_ModeType define el modo de funcionamiento de los módulos de abstracción de memoria y de los controladores de dispositivos subyacentes [SWS_MemIf_00066]. Se proporciona a través del archivo de cabecera MemIf.h y sirve para el control del comportamiento de velocidad y de funcionamiento de los accesos a memoria [SWS_MemIf_00066].

El rango de valores comprende, según [SWS_MemIf_00066], dos estados:

  • MEMIF_MODE_SLOW: Los módulos de abstracción y los controladores de dispositivos subyacentes funcionan en modo lento (Slow Mode) [SWS_MemIf_00066].
  • MEMIF_MODE_FAST: Los módulos de abstracción y los controladores de dispositivos subyacentes funcionan en modo rápido (Fast Mode) [SWS_MemIf_00066].

En lo que respecta al tratamiento de errores, la reentrancia o los contextos de llamada específicos, la especificación del tipo no contiene estipulaciones independientes; la transferencia y evaluación del modo se realiza de forma síncrona a través de las correspondientes interfaces de la interfaz de memoria o de los controladores subyacentes [SWS_MemIf_00066].

Este texto ha sido generado por una IA y sirve para la orientación técnica.

Guía del implementador pendiente (complejidad 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#532341bc
Content hash
532341bc
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_MemoryAbstractionInterface.pdf#nameddest=SWS_MemIf_00038

Inicialización y estado

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);

Servicios

MemIf_Cancel función

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 función

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 función

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

void MemIf_SetMode (MemIf_ModeType Mode);
MemIf_Write función

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);

Tipos

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