DEENESPTFRRUARHIKOZHNL

Memory Abstraction Interface (MemIf)

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

模块指南人工智能生成

通过设备索引将 NVRAM 管理器的存储作业转发至 Flash EEPROM 仿真或 EEPROM 抽象。
AI 生成 未审核 模型: claude-opus-5-5 · 推理强度: high · 温度: 不可控 · 提示词: 423eb9cf4c9b 来源 未决问题(5)
因果锚点:R20-11 自 R20-11 起有效 为此规范版本重新合成。
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

通过设备索引将 NVRAM 管理器的存储作业转发至 Flash EEPROM 仿真或 EEPROM 抽象。

MemIf 将 NVRAM 管理器的存储作业转发至 Fee 或 Ea 模块,并在统一 API 之后隐藏其数量 SWS MemIf 第7页。参数 DeviceIndex 用于选择模块;如果仅配置了一个模块,则该参数会被忽略,且 MemIf 实现为宏集 SWS MemIf 第17页。服务以同步方式接受作业并传递返回值,而存储操作则在底层以异步方式运行。状态和结果由 MemIf_GetStatus 和 MemIf_GetJobResult 提供。在开发错误检测处于激活状态时,错误的调用会返回 E_NOT_OK 或 MEMIF_JOB_FAILED。

Memory Abstraction 接口取代了原先用于 Flash 和 EEPROM 的驱动程序接口层。它允许 NVRAM 管理器通过统一 API 访问多个抽象模块:Flash EEPROM 仿真(Fee)和 EEPROM 抽象(Ea)SRS MemHwAb 第5页。MemIf 隐藏了这些模块的数量,并在线性地址空间上提供虚拟分段 SWS MemIf 第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 与 Fee/Ea 相同的 API 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

上下文图:MemIf 在 NvM 与 Fee/Ea 之间进行中介协调;完成通知直接从 Fee/Ea 发送至 NvM。来源:SWS Fee 第6页、[SWS_MemIf_00047]

MemIf 没有自己的存储逻辑。参数 DeviceIndex 用于选择模块;如果仅配置了一个模块,则该参数会被忽略,且 MemIf 实现为宏集。在存在多个模块时,分配大致通过函数指针表进行 SWS MemIf 第17页。在 R20-11 中,DeviceIndex 的类型为 uint8 [SWS_MemIf_00039];后续版本使用 uint16。

各服务同步接受作业并传递模块的返回值 [SWS_MemIf_00040]。随后,存储操作在下层的主函数中异步运行。NvM 通过来自 Fee/Ea 的回调或通过轮询 MemIf_GetJobResult 来获知完成情况 SWS Fee 第48页。MemIf_GetStatus 报告 UNINIT、IDLE、BUSY 或 BUSY_INTERNAL [SWS_MemIf_00064]。作业结果始终针对上一作业,并能够区分中止、不一致和无效的块等 [SWS_MemIf_00065]。MemIf_SetMode 同时作用于所有模块 [SWS_MemIf_00038]。

通过 MemIf 执行写作业(示例 Ea/Eep)NvMMemIfEaEepBSW Task(OS Task 或周期性调用)Use Case: Auftragsannahme (synchron)MemIf_Write(DeviceIndex,BlockNumber, DataBufferPtr)通过 DeviceIndex 选择模块Ea_Write(BlockNumber, DataBufferPtr)Eep_Write(EepromAddress,DataBufferPtr, Length)Std_ReturnTypeStd_ReturnTypeStd_ReturnType(未更改)Use Case: 执行(异步)在结束前 GetJobResult 返回MEMIF_JOB_PENDINGloop直到作业结束Eep_MainFunction()altBenachrichtigung konfiguriertEa_JobEndNotification()NvM_JobEndNotification()Polling-BetriebMemIf_GetJobResult(DeviceIndex)Ea_GetJobResult()MEMIF_JOB_OKMEMIF_JOB_OK

时序图:通过 MemIf 进行同步接收,在驱动程序中进行异步执行,通过回调或轮询完成。来源:SWS Ea 第41页、[SWS_MemIf_00040]

发生错误时,MemIf 将无效的设备索引和 NULL 指针作为开发错误 [SWS_MemIf_00006] 报告。此时各服务返回 E_NOT_OK,MemIf_GetJobResult 则返回 MEMIF_JOB_FAILED SWS MemIf 第21页。存储器的运行时错误由 Fee 或 Ea 检测;NvM 在轮询模式下将其读取为 MEMIF_JOB_FAILED,并负责进行恢复 ErrorDescription 第58页。

在存储栈中的角色:NvM 与 Fee/Ea 之间的分流器

Memory Abstraction Interface(MemIf)取代了原先针对 Flash 和 EEPROM 的驱动程序接口层。它允许 NVRAM Manager(NvM)通过单一 API 访问多个存储抽象模块:Flash EEPROM Emulation(Fee)和 EEPROM Abstraction(Ea)SRS MemHwAb 第5页。对上层而言,MemIf 屏蔽了底层存在多少个 Fee 和 Ea 模块。它在统一的线性地址空间上提供虚拟分段 SWS MemIf 第7页。Fee 和 Ea 提供基于块的寻址以及“虚拟无限制”的擦写循环次数。因此,当更换驱动程序或器件时,NvM 无需进行修改 SRS MemHwAb 第5页。

MemIf 本身不包含任何存储逻辑。其 API 需映射到抽象模块的 API 上,而功能行为则由它们的规范或存储器驱动程序的规范确定 SWS MemIf 第17页。相应地,MemIf 需要抽象模块的服务,例如针对 Ea 的 Ea_Read、Ea_Cancel、Ea_GetStatus 和 Ea_GetJobResult [SWS_MemIf_00047]。它可选使用 Det_ReportError [SWS_MemIf_00048]。在 MemIf.h 中定义的类型 MemIf_StatusType、MemIf_JobResultType 和 MemIf_ModeType 构成了该协议栈的通用词汇 [SWS_MemIf_00064] [SWS_MemIf_00065] [SWS_MemIf_00066]。例如,Fls_GetJobResult 直接返回 MemIf_JobResultType SWS Fls 第36页。

较新版本的图示在 Ea 和 Fee 下方额外展示了 MemAcc 和 Mem 模块 SWS Ea 第42页。对于 R20-11,推测可能以较早的概览为准,其中 Fee 基于 Flash 驱动程序构建,而 Ea 基于 EEPROM 驱动程序构建 SWS Fee 第6页。对于 MemIf 而言,该差异无关紧要,因为它仅转发至抽象层 SWS MemIf 第17页。 问题 Q-3c74a6029dd0d159 (未决)

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 与 Fee/Ea 相同的 API 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

上下文图:MemIf 位于 NvM 与抽象模块 Fee/Ea 之间;完成通知直接从 Fee/Ea 送达 NvM。来源:SWS Fee 第6页、SRS MemHwAb 第5页、[SWS_MemIf_00047]、[SWS_MemIf_00048]

通过 DeviceIndex 进行设备选择:宏或分发分派表

参数 DeviceIndex 用于选择抽象模块,从而选择存储器件。若仅配置了一个模块,该参数将被忽略 SWS MemIf 第17页。在此情况下,MemIf 应实现为一组宏,例如 #define MemIf_Write(DeviceIndex, BlockNumber, DataPtr) Fee_Write(BlockNumber, DataPtr)。当存在多个模块时,调用必须通过高效机制进行分发;作为一种解决方案,规范列出了通过 DeviceIndex 进行索引的函数指针表 SWS MemIf 第17页。若某厂商特有库替代了所有所需的 Fee 和 Ea 模块,则 MemIf 仅由宏构成 SRS MemHwAb 第5页。

在 R20-11 中,DeviceIndex 的类型为 uint8 [SWS_MemIf_00039] [SWS_MemIf_00041]。规范的后续版本将其列为 uint16 SWS MemIf 第18页。针对该版本,具有规范约束力的是 uint8。

abbildung start Konfiguration von MemIf q0 某厂商库是否替代了 所有 Fee 和 Ea 模块? start->q0 lib MemIf 仅由针对库 API 的 宏构成 q0->lib 是 q1 配置了多少个 抽象模块? q0->q1 不 ende 调用该模块的函数, 透传返回值 lib->ende ein 宏映射 MemIf API (例如 MemIf_Write -> Fee_Write) q1->ein 恰好一个 mehr Effiziente Verteilung, z. B. Funktionszeigertabelle q1->mehr mehrere ign DeviceIndex 被忽略 ein->ign ign->ende idx DeviceIndex 选择模块 (Fee 或 Ea) mehr->idx idx->ende

活动图:已配置抽象模块的数量决定了是在宏映射与按 DeviceIndex 分发之间做出选择。来源:SWS MemIf 第17页、SRS MemHwAb 第5页

作业流程:同步接收,异步执行

所有 MemIf 服务均被规范为同步服务。每个服务都会调用所选模块的同名函数并返回其返回值,例如 Read、Write 和 InvalidateBlock [SWS_MemIf_00039] [SWS_MemIf_00040] [SWS_MemIf_00044]。实际的存储操作随后在下层周期性调用的主函数中异步执行。为此,Ea 序列展示了在 BSW 任务中遍历 Eep_MainFunction 的循环 SWS Ea 第41页。根据 Fee 规范,该模式同样适用于其余异步服务 SWS Fee 第48页。

根据协议栈配置,NvM 可通过两种途径之一获知作业结束。要么抽象模块调用诸如 NvM_JobEndNotification 或 NvM_JobErrorNotification 的回调函数,要么 NvM 轮询 MemIf_GetJobResult SWS Fee 第48页 EXP ErrorDescription 第45页。MemIf 本身不提供回调函数;其 API 由以下服务组成 [SWS_MemIf_00038] [SWS_MemIf_00046]。

服务服务 ID返回作用
MemIf_SetMode0x01–调用所有抽象模块的 SetMode [SWS_MemIf_00038]
MemIf_Read0x02Std_ReturnType从 BlockOffset 开始读取块的 Length 个字节至 DataBufferPtr [SWS_MemIf_00039]
MemIf_Write0x03Std_ReturnType写入一个块 [SWS_MemIf_00040]
MemIf_Cancel0x04–中止正在运行的作业 [SWS_MemIf_00041]
MemIf_GetStatus0x05MemIf_StatusType模块状态 [SWS_MemIf_00042]
MemIf_GetJobResult0x06MemIf_JobResultType上一个作业的结果 [SWS_MemIf_00043]
MemIf_InvalidateBlock0x07Std_ReturnType使一个块无效 [SWS_MemIf_00044]
MemIf_GetVersionInfo0x08–版本信息,可重入 [SWS_MemIf_00045]
MemIf_EraseImmediateBlock0x09Std_ReturnType擦除一个块 [SWS_MemIf_00046]
通过 MemIf 执行写作业(示例 Ea/Eep)NvMMemIfEaEepBSW Task(OS Task 或周期性调用)Use Case: Auftragsannahme (synchron)MemIf_Write(DeviceIndex,BlockNumber, DataBufferPtr)通过 DeviceIndex 选择模块Ea_Write(BlockNumber, DataBufferPtr)Eep_Write(EepromAddress,DataBufferPtr, Length)Std_ReturnTypeStd_ReturnTypeStd_ReturnType(未更改)Use Case: 执行(异步)在结束前 GetJobResult 返回MEMIF_JOB_PENDINGloop直到作业结束Eep_MainFunction()altBenachrichtigung konfiguriertEa_JobEndNotification()NvM_JobEndNotification()Polling-BetriebMemIf_GetJobResult(DeviceIndex)Ea_GetJobResult()MEMIF_JOB_OKMEMIF_JOB_OK

时序图:写作业通过 MemIf 同步接收,在驱动程序中异步执行,并通过回调或轮询完成。来源:SWS Ea 第41页、SWS Fee 第48页、ErrorDescription 第60页、[SWS_MemIf_00040]

状态、作业结果与运行模式

MemIf_GetStatus 返回所选模块的状态 [SWS_MemIf_00042]。可能的状态包括 MEMIF_UNINIT、MEMIF_IDLE、MEMIF_BUSY 和 MEMIF_BUSY_INTERNAL。处于 MEMIF_BUSY_INTERNAL 时,抽象模块忙于内部管理,而驱动程序可能处于 busy 或 idle [SWS_MemIf_00064]。Fee 规范对这些条件进行了具体说明,并将 Flash 重组(垃圾回收)列为内部管理的示例 SWS Fee 第30页。对于 Flash 驱动程序,允许在初始化之前查询状态,此时状态为 MEMIF_UNINIT SWS Fls 第35页。

status start 开始 UNINIT MEMIF_UNINIT start->UNINIT IDLE MEMIF_IDLE UNINIT->IDLE Modul initialisiert BUSY MEMIF_BUSY IDLE->BUSY 上层作业 正在处理中 BUSYINT MEMIF_BUSY_INTERNAL IDLE->BUSYINT interne Verwaltung (z. B. Garbage Collection) BUSY->IDLE Auftrag beendet BUSYINT->IDLE interne Verwaltung beendet

状态图:通过 MemIf_GetStatus 可见的模块状态的生命周期。来源:[SWS_MemIf_00064]、SWS Fee 第30页

MemIf_GetJobResult 返回上一个作业的结果 [SWS_MemIf_00043] [SWS_MemIf_00065]。读、写和擦除共用单一作业结果,因此仅可查询上一个作业的结果。随着新作业被接收,它将被设置为 MEMIF_JOB_PENDING SWS Fls 第36页;Fee 称其为最后接收的作业 SWS Fee 第31页。除 OK、FAILED 和 CANCELED 之外,还存在两个与块相关的结果。MEMIF_BLOCK_INCONSISTENT 表示块已损坏或未找到;MEMIF_BLOCK_INVALID 则表示其被标记为无效 [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 不成功 CANCELED MEMIF_JOB_CANCELED PENDING->CANCELED abgebrochen INCONS MEMIF_BLOCK_INCONSISTENT PENDING->INCONS 块损坏 或未找到 INVALID MEMIF_BLOCK_INVALID PENDING->INVALID 块被标记为无效 OK->neu 下一个作业 FAILED->neu 下一个作业 CANCELED->neu 下一个作业 INCONS->neu 下一个作业 INVALID->neu 下一个作业

状态图:已接收的作业处于 PENDING 状态,并以恰好一种最终结果结束。来源:[SWS_MemIf_00065]、SWS Fls 第36页、SWS Fee 第31页

MemIf_SetMode 是唯一没有 DeviceIndex 的服务,它调用所有抽象模块的 SetMode [SWS_MemIf_00038]。模式包括 MEMIF_MODE_SLOW 和 MEMIF_MODE_FAST [SWS_MemIf_00066]。在驱动程序端,这分别代表慢速读访问或常规 SPI 访问,以及快速读访问或 SPI 突发传输。不得在正在进行的操作期间调用 Eep_SetMode SWS Eep 第34页。当检查处于激活状态时,Fls_SetMode 会拒绝处于 Busy 状态的请求 SWS Fls 第42页。解释:由于 MemIf_SetMode 作用于所有模块,因此仅应在所有设备均报告 MEMIF_IDLE 时调用。 问题 Q-d6ee630fca619042 (未决)

中止正在运行的作业

MemIf_Cancel 调用所选模块的 Cancel 函数 [SWS_MemIf_00041]。中止本身是同步的,但相对于硬件而言是异步的:当调用已返回时,硬件可能仍在继续运行 SWS Fee 第45页 SWS Ea 第44页。此后的作业结果为 MEMIF_JOB_CANCELED [SWS_MemIf_00065],Fee 明确将其视为失败 SWS Fee 第31页。

针对 Flash 路径,驱动程序规范展示了 MemIf_Cancel → Fee_Cancel → Fls_Cancel 链条及后续的错误通知。此外,该规范还要求不得在正在运行的 Fls_MainFunction 期间调用 Fls_Cancel。为此有两种途径:同步 NvM 和 Flash 驱动程序的作业函数,或者不中断 Fls_MainFunction 的任务 SWS Fls 第58页。

取消正在运行的 Flash 作业NvMMemIfFeeFlsMemIf_Cancel(DeviceIndex)Fee_Cancel()Fls_Cancel()Fls_Cancel 不在如下期间进行:laufender Fls_MainFunction返回返回返回(同步)取消为异步进行至硬件optFehlerbenachrichtigung konfiguriertFee_JobErrorNotification()NvM_JobErrorNotification()MemIf_GetJobResult(DeviceIndex)Fee_GetJobResult()MEMIF_JOB_CANCELEDMEMIF_JOB_CANCELED

时序图:中止同步穿过所有层,随后进行错误通知,之后 GetJobResult 报告 CANCELED。来源:SWS Fls 第58页、SWS Fee 第45页、[SWS_MemIf_00041]

调用规则、可重入性与 BSW 嵌入

除 MemIf_GetVersionInfo 外,所有服务均为不可重入 [SWS_MemIf_00045] [SWS_MemIf_00040]。因此必须杜绝来自多个上下文的并发调用。由于每个模块的状态和作业结果仅反映上一个作业,调用方应仅在上一作业完成后才发出新作业 SWS Fls 第36页。

ICC2 簇“MEM”的内存映射示例将 MemIf 与 NvM 一同列出。在那里,MemIf_SetMode 被建模为 BswCalledEntity,且 MemIf 具有节前缀 MEMIF SWS MemoryMapping 第50页。BSW Distribution Guide 将 MEMIF 与 FLS 和 FEE 并列作为“Type I”的示例;其作用域可通过具有本地作用域的 SwAddrMethod 限制在单个核上 EXP BSWDistributionGuide 第31页。据推测,在多核系统中 MemIf 应作为核局部模块运行。 问题 Q-d998fdc58e0bcddd (未决)

发生错误时的行为

MemIf 包含两个开发错误。MEMIF_E_PARAM_DEVICE(0x01)代表错误的 DeviceIndex,MEMIF_E_PARAM_POINTER(0x02)代表 NULL 指针 [SWS_MemIf_00006]。它们通过可选的 Det_ReportError 进行报告 [SWS_MemIf_00048]。根据跟踪表,特定错误代码不会通过 API 返回 SWS MemIf 第12页。

若开发错误检测处于激活状态且检测到错误,Read、Write、InvalidateBlock 和 EraseImmediateBlock 返回 E_NOT_OK [SWS_MemIf_00039] [SWS_MemIf_00040] [SWS_MemIf_00044] [SWS_MemIf_00046]。在此情况下,MemIf_GetJobResult 返回 MEMIF_JOB_FAILED SWS MemIf 第21页。否则,模块的值将被原样透传。

fehlerpruefung aufruf 调用 MemIf 服务 (DeviceIndex,视情况包含指针) q1 Entwicklungsfehlererkennung aktiviert? aufruf->q1 q2 参数是否有效? q1->q2 是 weiter 调用通过 DeviceIndex 选定模块的函数 q1->weiter 不 det Det_ReportError,伴随 MEMIF_E_PARAM_DEVICE (0x01) 或 MEMIF_E_PARAM_POINTER (0x02) q2->det 不 q2->weiter 是 fehl 返回 E_NOT_OK (MemIf_GetJobResult:MEMIF_JOB_FAILED) det->fehl rueck 原样返回模块的 返回值 weiter->rueck

活动图:激活开发错误检测时的参数检查及模块结果透传。来源:[SWS_MemIf_00006]、[SWS_MemIf_00048]、SWS MemIf 第18页、SWS MemIf 第21页

存储器的运行时错误不由 MemIf 检测,而是由 Fee 或 Ea 检测;MemIf 本身对此不作响应(“N/A”)。在轮询模式下,NvM 通过 MemIf_GetJobResult 读取错误并体现为 MEMIF_JOB_FAILED,且恢复工作由 NvM 负责 ErrorDescription 第58页 ErrorDescription 第60页。较新版本对该恢复过程进行了更详细的描述。根据该描述,NvM 在执行写作业时会递增重试计数器,超过上限后中止,并将 NVM_E_REQ_FAILED 报告给 DEM EXP ErrorDescription 第45页。对于 R20-11,该细节在此处没有规范依据。

进一步详细证据

基于 Prompt 中所提供规范摘录由 AI 生成的指南。具有规范约束力的是所引用的 Release R20-11 需求。解释均已标明。

Memory Abstraction Interface (MemIf)

Abstracts underlying Flash and EEPROM memory drivers.

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

函数 MemIf_SetMode [SWS_MemIf_00038] 📄 PDF

void MemIf_SetMode (MemIf_ModeType Mode);

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

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: e9d6121ccdfc 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

函数 MemIf_SetMode 用于通过存储器接口同步切换工作模式 [SWS_MemIf_00038]。调用时,它将请求的模式转发到所有底层存储器抽象模块各自的“Set Mode”函数 [SWS_MemIf_00038]。目标模式 Mode 作为参数传递,而该函数不提供返回值 [SWS_MemIf_00038]。该接口在头文件 MemIf.h 中定义,服务 ID 为 0x01 [SWS_MemIf_00038]。

关于并发性,MemIf_SetMode 被指定为不可重入(Non Reentrant)[SWS_MemIf_00038]。解释:调用方推测不得从多个任务或中断服务例程并发或中断性调用该函数,因此必要时可能应通过外部保护机制来协调并发访问。 问题 Q-02b14e9cb4b05dc9 (未决)

由于同步执行语义,该调用仅在将请求转发给存储器抽象模块之后才返回给调用方 [SWS_MemIf_00038]。元素规范中未针对此函数规定用于错误指示的特定返回值或专用的 DET/DEM 错误消息 [SWS_MemIf_00038]。

本使用说明为自动生成,完全基于 AUTOSAR R20-11 规范的内容。

实现者指南即将推出(复杂度 I1)

函数 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.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 9f6882978f36 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

函数 MemIf_Read 将读取请求同步转发给通过参数 DeviceIndex 选定的底层内存抽象模块 [SWS_MemIf_00039]。它在头文件 MemIf.h 中声明,用于读取逻辑存储块的数据。

参数与接口

对 MemIf_Read 的调用包括以下输入和输出参数 [SWS_MemIf_00039]:

  • DeviceIndex:用于选择目标模块的目标设备索引。
  • BlockNumber:待读取存储块的逻辑块号。
  • BlockOffset:逻辑块内开始读取的字节偏移量。
  • DataBufferPtr:指向用于存储读取数据的缓冲区的指针。
  • Length:要读取的数据字节数。

错误处理与返回值

当开发错误检测(Development Error Detection)处于激活状态且检测到开发错误时,函数返回 E_NOT_OK [SWS_MemIf_00039]。否则,被调用的底层模块读取函数的返回值将作为 Std_ReturnType 传递 [SWS_MemIf_00039]。

并发性与限制

该函数被指定为同步且不可重入的(Non Reentrant)[SWS_MemIf_00039]。因此,调用通常可能在任务上下文中进行;调用者必须避免并发或嵌套调用,或对其进行串行化。 问题 Q-b774bf07a69e28af (未决)

本使用说明由 AI 生成,并基于 AUTOSAR 规范 R20-11。

函数 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.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 88682d2af3e3 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

用法与调用上下文

接口函数 MemIf_Write 用作抽象层,并调用通过参数 DeviceIndex 选定的底层内存抽象模块的 Write 函数 [SWS_MemIf_00040]。在同步调用时传递三个输入参数:用于选择目标驱动程序的设备索引 DeviceIndex、逻辑块号 BlockNumber 以及指向包含待写入数据缓冲区的指针 DataBufferPtr [SWS_MemIf_00040]。该函数在服务 ID 0x03 下指定,并通过头文件 MemIf.h 提供 [SWS_MemIf_00040]。

错误处理与返回值

返回值属于 Std_ReturnType 类型 [SWS_MemIf_00040]。如果 Memory Abstraction Interface 的开发错误检测(Development Error Detection)处于激活状态,并且根据 [SWS_MemIf_00022] 确定了开发错误,则 MemIf_Write 返回错误代码 E_NOT_OK [SWS_MemIf_00040]。如果不存在错误,该函数将调用的底层模块的返回值原样转发给调用者 [SWS_MemIf_00040]。

并发性与边界条件

关于并发行为,MemIf_Write 被定义为同步且不可重入的(Non Reentrant)[SWS_MemIf_00040]。

本使用说明由 AI 基于 AUTOSAR Classic R20-11 规范生成。

函数 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.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: fa67da25152e 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步函数 MemIf_Cancel 用于调用通过参数 Device Index 选定的底层内存抽象模块的 Cancel 函数 [SWS_MemIf_00041]。该服务没有返回值,并将中止任务直接转发给寻址的抽象实例 [SWS_MemIf_00041]。

调用与集成适用以下技术特性:

  • 调用上下文与并发性:该函数被定义为不可重入(Non Reentrant)[SWS_MemIf_00041]。调用方必须确保执行不会被其他上下文并发进行或中断。
  • 签名与标识:接口 void MemIf_Cancel (uint8 Device Index) 具有服务 ID 0x04,并通过头文件 MemIf.h 提供 [SWS_MemIf_00041]。
  • 参数:输入参数 Device Index(类型 uint8)用于选择目标模块;不存在输入/输出参数或返回参数 [SWS_MemIf_00041]。
  • 错误处理:规范未针对该函数描述任何特定的错误码、返回值或 DET 消息 [SWS_MemIf_00041](Interpretation:对非法设备索引的检查很可能留给上层系统架构或下层模块处理)。 问题 Q-4a5d989ce611ba89 (未决)

本使用说明由 AI 基于 AUTOSAR 规范 R20-11 生成。

函数 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.

函数 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

函数 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.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 65e4894eca9b 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步函数 MemIf_InvalidateBlock 将使逻辑块失效的请求转发给通过参数 DeviceIndex 选定的底层存储器抽象模块 [SWS_MemIf_00044]。该接口通过头文件 MemIf.h 提供,并具有服务 ID 0x07 [SWS_MemIf_00044]。

用法与参数

调用以同步方式进行,并将以下输入参数传递给寻址目标 [SWS_MemIf_00044]:

错误处理与返回值

该函数返回类型为 Std_ReturnType 的状态值 [SWS_MemIf_00044]:

  • 如果为 Memory Abstraction Interface 启用了开发错误检测(Development Error Detection),并且发生了符合 SWS_MemIf_00022 的错误,则该函数返回 E_NOT_OK [SWS_MemIf_00044]。
  • 如果未检测到开发错误,该接口将返回所调用的底层模块函数的结果 [SWS_MemIf_00044]。

并发性

该函数被指定为不可重入(Non Reentrant)[SWS_MemIf_00044]。

本使用说明基于 AUTOSAR Classic Release R20-11 规范自动生成。

函数 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.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: e3fb9cffcdad 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

使用

同步函数 MemIf_EraseImmediateBlock 触发底层存储器抽象模块中被归类为立即块的擦除操作 [SWS_MemIf_00046]。该调用通过头文件 MemIf.h 提供,并具有服务 ID 0x09 [SWS_MemIf_00046]。输入参数包括用于寻址特定存储设备或抽象模块的 DeviceIndex 以及用于标识目标块的 BlockNumber [SWS_MemIf_00046]。不存在额外的 Inout 或 Out 参数 [SWS_MemIf_00046]。

返回值与错误处理

该函数返回类型为 Std_ReturnType 的状态值 [SWS_MemIf_00046]。如果为 Memory Abstraction Interface 启用了开发错误检测,并检测到符合 [SWS_MemIf_00022] 的相应错误,则该调用返回固定的返回值 E_NOT_OK [SWS_MemIf_00046]。如果未发生此类错误,则将底层模块所调用函数的直接结果传递给调用方 [SWS_MemIf_00046]。

并发性与限制

MemIf_EraseImmediateBlock 的执行同步进行,并被指定为不可重入(Non Reentrant)[SWS_MemIf_00046]。解释:由于不允许对该接口进行并发调用,因此在整个系统中,该函数推测可能仅能从任务层级的同步上下文中调用,以防止底层存储驱动程序中的数据不一致。 问题 Q-4fce518bab0115db (未决)

此使用说明基于 AUTOSAR CP R20-11 规范自动生成。

类型 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

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: a0c9a4a73b28 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

根据 [SWS_MemIf_00064],枚举类型 MemIf_StatusType 表示底层存储器抽象模块及关联设备驱动程序的当前运行和执行状态。该类型在 Memory Abstraction Interface 中定义,并通过头文件 MemIf.h 供调用方使用 [SWS_MemIf_00064]。

该枚举包含用于映射运行就绪性的四种不同状态 [SWS_MemIf_00064]:

  • MEMIF_UNINIT:底层抽象模块或关联的设备驱动程序(尚)未初始化 [SWS_MemIf_00064]。
  • MEMIF_IDLE:抽象模块或设备驱动程序已准备就绪,当前未执行任何作业 [SWS_MemIf_00064]。
  • MEMIF_BUSY:底层模块或设备驱动程序当前正在处理某项操作 [SWS_MemIf_00064]。
  • MEMIF_BUSY_INTERNAL:抽象模块正在处理内部管理操作,而驱动程序可能空闲或繁忙 [SWS_MemIf_00064]。

调用层使用此状态在分配作业之前同步确定存储层是否就绪或内部管理过程是否正在运行 [SWS_MemIf_00064]。由于 MemIf_StatusType 代表纯数据类型定义,因此规范元素中未单独列出功能方面的内容,例如 DET 或 DEM 消息、重入规则或调用上下文。

此文本由 AI 基于 AUTOSAR 规范生成。

实现者指南即将推出(复杂度 I1)

类型 MemIf_JobResultType [SWS_MemIf_00065] 📄 PDF

Denotes the result of the last job.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 975aee2541ba 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

枚举类型 MemIf_JobResultType 描述了向存储器接口发送的最近处理作业的结果,并通过头文件 MemIf.h 提供 [SWS_MemIf_00065]。

该枚举定义了执行状态以及特定的错误和块状态 [SWS_MemIf_00065]:

在评估作业结果时,该类型用于区分常规执行错误(MEMIF_JOB_FAILED)和与块相关的问题(MEMIF_BLOCK_INCONSISTENT、MEMIF_BLOCK_INVALID)[SWS_MemIf_00065]。

此文本由 AI 生成,仅供参考。

类型 MemIf_ModeType [SWS_MemIf_00066] 📄 PDF

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

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 00926ceab163 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

枚举类型 MemIf_ModeType 定义了底层存储器抽象模块和设备驱动程序的工作模式 [SWS_MemIf_00066]。它通过头文件 MemIf.h 提供,用于控制存储器访问的速度和运行行为 [SWS_MemIf_00066]。

根据 [SWS_MemIf_00066],取值范围包含两种状态:

  • MEMIF_MODE_SLOW:底层抽象模块和设备驱动程序工作在慢速模式(Slow Mode)下 [SWS_MemIf_00066]。
  • MEMIF_MODE_FAST:底层抽象模块和设备驱动程序工作在快速模式(Fast Mode)下 [SWS_MemIf_00066]。

关于错误处理、重入或特定的调用上下文,该类型的规范不包含专门的规定;模式的传递和评估通过存储器接口或底层驱动程序的相应接口同步进行 [SWS_MemIf_00066]。

本文由 AI 生成,用于技术指导。

实现者指南即将推出(复杂度 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#a5b60342
Content hash
a5b60342
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_MemoryAbstractionInterface.pdf#nameddest=SWS_MemIf_00038

初始化与状态

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

服务

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 函数

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

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

void MemIf_SetMode (MemIf_ModeType Mode);

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

类型

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