DEENESPTFRRUARHIKOZHNL

EEPROM Abstraction (Ea)

ModulEa (EEPROM Abstraction)
BSW-Modul-ID40
Standard-Header#include "Ea.h"
SWS-SpezifikationAUTOSAR_SWS_EEPROMAbstraction.pdf
ClusterMemory Services

模块指南人工智能生成

将逻辑存储块映射到 EEPROM 地址,并异步处理读取和写入作业。
AI 生成 未审核 模型: claude-opus-5-5 · 推理强度: high · 温度: 不可控 · 提示词: 55a6c103b1ca 来源 未决问题(4)
因果锚点:R20-11 自 R20-11 起有效 为此规范版本重新合成。
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

将逻辑存储块映射到 EEPROM 地址,并异步处理读取和写入作业。

EEPROM Abstraction 将 NvM 的逻辑块映射到 EEPROM 的地址,并在 R20-11 中使用驱动程序 Eep。读取、写入、无效化和擦除作业被同步接收,并在周期性调用的 Main Function 中异步执行([SWS_Ea_00096])。模块通过回调向 NvM 报告完成或失败,或通过作业结果进行报告。写入始终涉及整个块。只有在 R20-11 中仍存在 Ea_SetMode 和同步的 Ea_Cancel([SWS_Ea_00088])。

EEPROM Abstraction (Ea) 将逻辑块映射到 EEPROM 地址。它位于 MemIf 和 EEPROM 驱动程序 Eep 之间;块编号同时表示该块的起始地址([SWS_Ea_00087])。在底层,Ea 在 R20-11 中使用 Eep 服务进行读取、写入、擦除、取消和模式切换([SWS_Ea_00097])。直到 R21-11,MemAcc 才取代驱动程序 Eep,并且 Ea_SetMode 不复存在(SWS EA 第1页)。

ea_kontext EcuM EcuM Ea Ea EcuM->Ea Ea_Init(ConfigPtr) SchM BSW Scheduler SchM->Ea Ea_MainFunction() Diag Diagnose-/Systemdienst Diag->Ea Ea_EraseImmediateBlock NvM NvM MemIf MemIf NvM->MemIf MemIf_Read / MemIf_Write / MemIf_Cancel / MemIf_SetMode MemIf->Ea Ea_Read, Ea_Write, Ea_Cancel, Ea_SetMode Ea->NvM NvM_JobEndNotification / NvM_JobErrorNotification Eep Eep Ea->Eep Eep_Read, Eep_Write, Eep_Erase, Eep_Cancel, Eep_SetMode, Eep_GetStatus, Eep_GetJobResult Det DET Ea->Det Det_ReportRuntimeError, Det_ReportError (optional) Eep->Ea Ea_JobEndNotification / Ea_JobErrorNotification

上下文图:Ea 位于 NvM/MemIf 与 Eep 之间,由 EcuM 初始化并由 BSW 调度器驱动。来源:[SWS_Ea_00084]、[SWS_Ea_00096]、[SWS_Ea_00097]

在使用指向配置集的指针([SWS_Ea_00084])执行 Ea_Init 之后,Ea_GetStatus 报告状态 MEMIF_IDLE、MEMIF_BUSY 或 MEMIF_BUSY_INTERNAL 之一([SWS_Ea_00089])。最后一个状态代表诸如垃圾回收之类的内部管理(SWS EA 第28页)。

读取、写入、无效化和立即擦除均为异步。E_OK 仅确认作业已被接收。执行在周期性调用的 Ea_MainFunction 中进行([SWS_Ea_00086],[SWS_Ea_00096])。读取可以采用任意偏移量和任意长度。写入始终涉及偏移量为零的整个块(SWS EA 第25页)。写入作业也在 Main Function 中启动属于一种解释。

通过 Ea 的写入作业NvMMemIfEaEepBSW SchedulerUse Case: Auftragsannahme (synchron)MemIf_Write(DeviceIndex, BlockNumber, DataBufferPtr)Ea_Write(BlockNumber, DataBufferPtr)根据 BlockNumber 计算地址,偏移量为 0长度 = 配置的块长度Block als inkonsistent markierenE_OKE_OKUse Case: Asynchrone AbarbeitungEa_MainFunction()Eep_Write(...)假设:驱动程序作业在 Ea_MainFunction 中启动loopbis Treiberauftrag beendetEep_MainFunction()Ea_JobEndNotification()Block als konsistent markierenJobergebnis MEMIF_JOB_OKNvM_JobEndNotification()

时序图:同步接收,通过 Eep 异步执行,并通过回调向 NvM 提供反馈。来源:SWS Eep 第50页、[SWS_Ea_00094]、[SWS_Ea_00099]

Ea_Cancel 在 R20-11 中是同步的([SWS_Ea_00088])。模块通过代码 EA_E_UNINIT 至 EA_E_INVALID_CANCEL 报告错误([SWS_Ea_91001],[SWS_Ea_91002])。根据配置,硬件错误通过两种途径之一传递到 NvM:

  • 通过查询作业结果 MEMIF_JOB_FAILED,
  • 通过回调 NvM_JobErrorNotification。

恢复分别由 NvM 接管(ErrorDescription 第48页)。

在存储栈中的角色:从逻辑块到 EEPROM 地址

EEPROM Abstraction (Ea) 位于存储栈中的 Memory Abstraction Interface (MemIf) 与 EEPROM 驱动程序 (Eep) 之间。它向上层提供面向块的服务。块编号表示一个逻辑块,同时表示其在 EEPROM 中的起始地址([SWS_Ea_00086],[SWS_Ea_00087])。MemIf 将读取和写入作业转发给参数 DeviceIndex 所选取的抽象模块,并透传其返回值(SWS MemIf 第18页,SWS MemIf 第19页)。

在底层,Ea 在 R20-11 中使用 EEPROM 驱动程序的服务:Eep_Read、Eep_Write、Eep_Erase、Eep_Cancel、Eep_GetStatus、Eep_GetJobResult 和 Eep_SetMode。此外还有 Det_ReportRuntimeError([SWS_Ea_00097])。Det_ReportError 是可选接口([SWS_Ea_00098])。导入的类型 Eep_AddressType、Eep_LengthType、MemIf_StatusType、MemIf_JobResultType 和 MemIf_ModeType 反映了这种嵌入结构([SWS_Ea_00083])。

关于版本分类:根据变更历史记录,从 R21-11 起 Ea_SetMode 被移除。此外,Ea_Cancel 变为异步,引入了缓冲区对齐,且 MemAcc 取代 Eep 成为下层(SWS EA 第1页)。因此对于 R20-11,Eep 仍作为下层,且 Ea_SetMode 仍作为服务。缓冲区对齐的规则(SWS EA 第19页)不适用于 R20-11。

ea_kontext EcuM EcuM Ea Ea EcuM->Ea Ea_Init(ConfigPtr) SchM BSW Scheduler SchM->Ea Ea_MainFunction() Diag Diagnose-/Systemdienst Diag->Ea Ea_EraseImmediateBlock NvM NvM MemIf MemIf NvM->MemIf MemIf_Read / MemIf_Write / MemIf_Cancel / MemIf_SetMode MemIf->Ea Ea_Read, Ea_Write, Ea_Cancel, Ea_SetMode Ea->NvM NvM_JobEndNotification / NvM_JobErrorNotification Eep Eep Ea->Eep Eep_Read, Eep_Write, Eep_Erase, Eep_Cancel, Eep_SetMode, Eep_GetStatus, Eep_GetJobResult Det DET Ea->Det Det_ReportRuntimeError, Det_ReportError (optional) Eep->Ea Ea_JobEndNotification / Ea_JobErrorNotification

上下文图:Ea 在上层的 NvM/MemIf 与底层的驱动程序 Eep 之间起中介作用。EcuM 初始化该模块,BSW 调度器周期性驱动它,DET 接收错误消息。来源:[SWS_Ea_00084]、[SWS_Ea_00096]、[SWS_Ea_00097]、[SWS_Ea_00098]、[SWS_Ea_00099]、[SWS_Ea_00100]、SWS EA 第34页

启动与模块状态

Ea_Init 同步初始化该模块且不可重入。ConfigPtr 指向所选的配置集([SWS_Ea_00084])。Ea_ConfigType 是具有实现特定元素的结构([SWS_Ea_00190])。根据规范的时序图,ECU State Manager 在启动时调用 Ea_Init(SWS EA 第47页)。由于这只是单次调用,因此它在下方的状态图中显示为转换。

Ea_GetStatus 将操作状态同步返回为 MemIf_StatusType([SWS_Ea_00089]):

  • MEMIF_UNINIT:初始化之前。
  • MEMIF_IDLE:既没有作业也没有内部管理在运行。
  • MEMIF_BUSY:正在处理上层作业。
  • MEMIF_BUSY_INTERNAL:内部管理操作正在运行,例如 EEPROM 存储器的重组(垃圾回收)。在此期间,驱动程序也可能暂时被占用。

这些状态在 SWS EA 第28页 中进行了描述。模块在状态 MEMIF_IDLE 以及状态 MEMIF_BUSY_INTERNAL 下都会接收写入作业(SWS EA 第25页)。

ea_status start MEMIF_UNINIT MEMIF_UNINIT start->MEMIF_UNINIT MEMIF_IDLE MEMIF_IDLE MEMIF_UNINIT->MEMIF_IDLE Ea_Init(ConfigPtr) MEMIF_BUSY MEMIF_BUSY MEMIF_IDLE->MEMIF_BUSY Auftrag angenommen (Ea_Read, Ea_Write, ...) MEMIF_BUSY_INTERNAL MEMIF_BUSY_INTERNAL MEMIF_IDLE->MEMIF_BUSY_INTERNAL interne Verwaltung startet (z. B. Garbage Collection) MEMIF_BUSY->MEMIF_IDLE 作业已结束(成功/错误) 或 Ea_Cancel MEMIF_BUSY_INTERNAL->MEMIF_IDLE interne Verwaltung beendet MEMIF_BUSY_INTERNAL->MEMIF_BUSY Ea_Write angenommen

状态图:模块状态从 MEMIF_UNINIT 经由 MEMIF_IDLE 到 MEMIF_BUSY 或 MEMIF_BUSY_INTERNAL 的生命周期。在内部管理期间也可以接收写入作业。来源:[SWS_Ea_00084]、[SWS_Ea_00089]、SWS EA 第28页、SWS EA 第25页、SWS EA 第27页

接收作业并在 Ea_MainFunction 中处理

Ea_Read、Ea_Write、Ea_InvalidateBlock 和 Ea_EraseImmediateBlock 是异步的。E_OK 仅表示模块已接收该作业。E_NOT_OK 表示它拒绝了该作业([SWS_Ea_00086]、[SWS_Ea_00087]、[SWS_Ea_00091]、[SWS_Ea_00093])。在得出结果之前,Ea_GetJobResult 报告值 MEMIF_JOB_PENDING([SWS_Ea_00090])。

实际工作由 Ea_MainFunction 完成,可通过 SchM_Ea.h 使用([SWS_Ea_00096])。Basic Software 调度器直接调用该函数。它既没有参数也没有返回值,且不可重入(SWS EA 第36页)。

ea_annahme start d1 Modul initialisiert? (Status ≠ MEMIF_UNINIT) start->d1 d2 Status MEMIF_BUSY? d1->d2 是 e1 报告 EA_E_UNINIT 返回 E_NOT_OK d1->e1 不 d3 块号、偏移量、 长度、指针是否有效? d2->d3 否(IDLE 或 BUSY_INTERNAL) e2 报告 EA_E_BUSY 返回 E_NOT_OK d2->e2 是 e3 报告 EA_E_INVALID_BLOCK_NO / _OFS / _LEN 或 EA_E_PARAM_POINTER 返回 E_NOT_OK d3->e3 不 ok 接收参数 状态 MEMIF_BUSY 作业结果 MEMIF_JOB_PENDING 返回 E_OK d3->ok 是 mf Abarbeitung in Ea_MainFunction ok->mf hinweis 假设:检查顺序 hinweis->d1 betrifft

活动图:接收作业时的检查及其错误代码。检查顺序为一种假定。来源:[SWS_Ea_91001]、[SWS_Ea_91002]、[SWS_Ea_00089]、[SWS_Ea_00090]、SWS EA 第25页

Ea_Read 根据块编号和偏移量计算读取地址。偏移量和长度可取其类型范围内的任意值,从而允许从块内的任意位置读取任意数量的字节。读取操作明确在 Main Function 中异步运行(SWS EA 第24页)。

Ea_Write 根据块编号以固定的零偏移量计算写入地址。该函数将长度设置为为该块配置的长度(SWS EA 第25页)。因此,写入始终涉及整个块([SWS_Ea_00087])。关于写入作业的图表显示了经由 Eep_Write、周期性 Eep_MainFunction、Ea_JobEndNotification 和 NvM_JobEndNotification 的进一步路径(SWS Eep 第50页)。

解释:对于读取,明确要求在 Ea_MainFunction 中启动驱动程序作业。 问题 Q-50dcdf4156855a99 (未决)对于写入,应该同样适用,因为 Ea_MainFunction 会处理所请求的作业([SWS_Ea_00096])。对于特定制造商的库,时序图仅对与调用模块的关系具有约束力,对驱动程序的调用则不具约束力(SWS EA 第45页)。

通过 Ea 的写入作业NvMMemIfEaEepBSW SchedulerUse Case: Auftragsannahme (synchron)MemIf_Write(DeviceIndex, BlockNumber, DataBufferPtr)Ea_Write(BlockNumber, DataBufferPtr)根据 BlockNumber 计算地址,偏移量为 0长度 = 配置的块长度Block als inkonsistent markierenE_OKE_OKUse Case: Asynchrone AbarbeitungEa_MainFunction()Eep_Write(...)假设:驱动程序作业在 Ea_MainFunction 中启动loopbis Treiberauftrag beendetEep_MainFunction()Ea_JobEndNotification()Block als konsistent markierenJobergebnis MEMIF_JOB_OKNvM_JobEndNotification()

时序图:写入作业被同步接收,通过驱动程序异步执行,并通过回调报告给 NvM。来源:SWS Eep 第50页、SWS MemIf 第19页、[SWS_Ea_00087]、[SWS_Ea_00094]、[SWS_Ea_00099]

块管理:地址映射、一致性与无效化

图 7.1 对比了虚拟存储器和物理存储器。块编号(16 位)和偏移量(16 位)构成虚拟地址,使得一个块最多可包含 64 KiB。在物理上,块按照配置的虚拟页大小 EA_VIRTUAL_PAGE_SIZE 对齐;未使用的虚拟空间不占用存储(SWS EA 第23页)。

Ea 为每个块维护各自的一致性信息。在写入过程启动时,该块被视为不一致;成功结束后,再次被视为一致。Ea 必须能够将不一致的块与有意无效化的块区分开来(SWS EA 第19页,R24-11 版本)。对于调用者而言,这两种情况通过作业结果 MEMIF_BLOCK_INCONSISTENT 和 MEMIF_BLOCK_INVALID 可见([SWS_Ea_00090])。

Ea_InvalidateBlock 将块 BlockNumber 无效化([SWS_Ea_00091])。根据具体实现,这可以通过驱动程序的擦除函数进行,也可以通过内部管理信息进行(该信息随后必须非易失性存储)(SWS EA 第31页)。

Ea_EraseImmediateBlock 删除一个块([SWS_Ea_00093])。该函数专为诊断或可比较的系统服务而设计,这些服务会预先删除即时数据(Immediate 数据)所在的区域。该函数计算地址时采用偏移量零。它确保 Ea 能够写入即时数据(SWS EA 第34页)。

运行模式、取消与通知

在 R20-11 中,Ea_SetMode 使用 MemIf_ModeType 类型的参数 Mode 切换 EEPROM 驱动程序的模式。该服务是异步且不可重入的([SWS_Ea_00085])。API 元素中不带参数的简短签名与此不符;以服务描述为准。示意图展示了链路 NvM → MemIf_SetMode → Ea_SetMode → Eep_SetMode(SWS EA 第42页)。自 R21-11 起,该服务被移除(SWS EA 第1页)。

使用 Ea_SetMode 进行模式切换 (R20-11)NvMMemIfEaEepMemIf_SetMode(MemIf_ModeType)Ea_SetMode(MemIf_ModeType)Eep_SetMode(MemIf_ModeType)Eep_SetMode()Ea_SetMode()MemIf_SetMode()Ea_SetMode 仅适用于直至 R20-11,自 R21-11 起移除

时序图:模式切换从 NvM 经由 MemIf 和 Ea 一直透传至驱动程序(仅至 R20-11)。来源:[SWS_Ea_00085]、SWS EA 第52页、SWS EA 第42页

Ea_Cancel 取消正在执行的异步作业,并且在 R20-11 中是同步的([SWS_Ea_00088])。后续文档位置将该服务描述为异步;对于 R20-11,以需求为准。根据该处的内容规定:在状态 MEMIF_BUSY 下,Ea 调用驱动程序的取消函数并重置其内部变量。作业结果随后为 MEMIF_JOB_CANCELED(SWS EA 第27页)。MemIf 转发该取消请求(SWS MemIf 第20页)。在没有挂起作业的情况下执行取消将返回 EA_E_INVALID_CANCEL([SWS_Ea_91002])。

使用 Ea_Cancel 取消作业NvMMemIfEaEepMemIf_Cancel(DeviceIndex)Ea_Cancel()altStatus MEMIF_UNINIT (DET aktiv)EA_E_UNINIT melden内部变量保持不变Status MEMIF_BUSYEep_Cancel()返回复位内部变量Jobergebnis MEMIF_JOB_CANCELED就绪以接收新作业无挂起作业EA_E_INVALID_CANCEL melden返回返回

时序图:Ea_Cancel 根据模块状态分支为在驱动程序处取消、错误消息或无更改返回。来源:[SWS_Ea_00088]、[SWS_Ea_91002]、[SWS_Ea_00097]、SWS EA 第27页、SWS MemIf 第20页

底层通过 Ea_JobEndNotification 或 Ea_JobErrorNotification 报告异步作业的成功或失败([SWS_Ea_00094]、[SWS_Ea_00095])。Ea 随后向 NvM 发出来自 NvM_MemIf.h 的 NvM_JobEndNotification 或 NvM_JobErrorNotification 信号([SWS_Ea_00099]、[SWS_Ea_00100])。MemIf 本身不提供回调(SWS MemIf 第24页)。

回调可以在中断级别运行。因此其运行时间必须保持很短,且系统设计必须使配置与其相协调(SWS EA 第35页)。Ea_GetVersionInfo 是唯一可重入的服务([SWS_Ea_00092])。

发生错误时的行为

错误代码位于两个表中。

  • 第一个表([SWS_Ea_91001]):EA_E_UNINIT (0x01)、EA_E_INVALID_BLOCK_NO (0x02)、EA_E_INVALID_BLOCK_OFS (0x03)、EA_E_PARAM_POINTER (0x04) 和 EA_E_INVALID_BLOCK_LEN (0x05)。
  • 第二个表([SWS_Ea_91002]):EA_E_BUSY (0x06) 和 EA_E_INVALID_CANCEL (0x08)。

EA_E_INIT_FAILED 在 R20-11 中被移除(SWS EA 第1页)。解释:第一个表可能通过可选的 Det_ReportError 记录开发错误,第二个表通过 Det_ReportRuntimeError 记录运行时错误([SWS_Ea_00097]、[SWS_Ea_00098])。 问题 Q-8443a03d306e4143 (未决)

在开发错误检测处于激活状态且处于未初始化状态时:Ea_GetJobResult 报告 EA_E_UNINIT 并返回 MEMIF_JOB_FAILED(SWS EA 第30页)。Ea_Cancel 报告 EA_E_UNINIT 并在不更改内部变量的情况下返回(SWS EA 第27页)。Ea_GetVersionInfo 在指针为 NULL 时报告 EA_E_PARAM_POINTER(SWS EA 第32页)。Ea_InvalidateBlock 和 Ea_EraseImmediateBlock 仅在 DET 处于激活状态时返回 E_NOT_OK([SWS_Ea_00091]、[SWS_Ea_00093])。

硬件错误由 EEPROM 驱动程序检测。Ea 的响应取决于具体实现。根据配置,可通过以下两种途径之一进行报告:通过查询作业结果 MEMIF_JOB_FAILED,或通过回调 NvM_JobErrorNotification。恢复由 NvM 负责(ErrorDescription 第48页、[SWS_Ea_00095]、[SWS_Ea_00100])。对于查询途径,错误描述指明了 Eep_GetJobResult。Ea 在其 Main Function 中查询此函数推测意图如此,但未明确规定。 问题 (未决)

作业结果对错误类型进行了细致区分([SWS_Ea_00090]):

  • MEMIF_JOB_CANCELED:已取消,视为失败。
  • MEMIF_JOB_FAILED:作业失败。
  • MEMIF_BLOCK_INCONSISTENT:块可能包含损坏的数据。
  • MEMIF_BLOCK_INVALID:块已被作废,操作无法执行。
报告驱动程序错误NvMEaEepEep 检测到异步作业中的错误altKonfiguration: Callback-BenachrichtigungEa_JobErrorNotification()implementierungsspezifische ReaktionNvM_JobErrorNotification()Konfiguration: PollingEep_GetJobResult()MEMIF_JOB_FAILEDAnnahme: Abfrage in Ea_MainFunctionEa_GetJobResult()MEMIF_JOB_FAILED恢复:NvM 的任务

时序图:根据配置,驱动程序错误通过回调或通过查询作业结果传达至 NvM。来源:ErrorDescription 第48页、[SWS_Ea_00095]、[SWS_Ea_00100]、[SWS_Ea_00090]、[SWS_Ea_00097]

进一步详细证据

基于有效负载中提供的 R20-11 需求和文档位置的 AI 生成指南。后续版本的文档位置已标明;如有偏差,以需求为准。标记为解释的表述不具规范性。

EEPROM Abstraction (Ea)

Provides uniform access to external and internal EEPROM devices.

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

函数 Ea_Init [SWS_Ea_00084] 📄 PDF

void Ea_Init (const Ea_ConfigType* ConfigPtr);

Initializes the EEPROM abstraction module.

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

函数 Ea_Init 用于初始化 EEPROM Abstraction 模块([SWS_Ea_00084])。它通过头文件 Ea.h 提供,并将模块置于就绪状态([SWS_Ea_00084])。

根据 [SWS_Ea_00084] 中的接口规范,以下属性和约束适用于该调用:

  • 语义和服务 ID:该调用以同步方式进行。该服务被分配了服务 ID 0x00。
  • 重入性:该函数被指定为不可重入(Non Reentrant),因此不得并发执行。
  • 参数:ConfigPtr(类型 const Ea_ConfigType*)用作输入参数,指向所选的配置数据集。既不存在输入/输出参数,也不存在输出参数。
  • 返回值:该函数不返回任何值(void)。

关于调用上下文,当前条目不包含明确规定;初始化通常应在 ECU 启动阶段集中进行,然后再执行其他模块函数。 问题 Q-b2b40930e5fd0ee7 (未决)[SWS_Ea_00084] 中未列出特定的错误代码、出错时的反应或向 DET 和 DEM 发送的报告。

本段文本由人工智能基于 AUTOSAR 规范 R20-11 生成。

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

函数 Ea_SetMode [SWS_Ea_00085] 📄 PDF

void Ea_SetMode (MemIf_ModeType Mode);

Function to switch the mode of the underlying EEPROM Driver

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

用法与语义

函数 Ea_SetMode 用于切换底层 EEPROM 驱动程序([SWS_Ea_00085])的操作模式。它接受类型为 MemIf_ModeType 的所需模式 Mode 作为输入参数([SWS_Ea_00085])。该函数没有返回值(void),服务 ID 为 0x01,可通过头文件 Ea.h 获取([SWS_Ea_00085])。

执行是异步进行的(Asynchronous),因此驱动程序的实际切换在调用后会在后台继续处理([SWS_Ea_00085])。

并发性与限制

  • 重入性:该函数被指定为不可重入(Non Reentrant)([SWS_Ea_00085])。必须在调用方防止来自不同任务或上下文的并行调用。
  • 调用上下文和参数:不得传递任何输入/输出或纯输出参数;仅提供了输入参数 Mode([SWS_Ea_00085])。

本文件由人工智能根据 AUTOSAR 规范生成。

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

函数 Ea_Read [SWS_Ea_00086] 📄 PDF

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

Reads Length bytes of block Blocknumber at offset Block Offset into the buffer Data Buffer Ptr.

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

用法与语义

函数 Ea_Read 用于通过头文件 Ea.h 从指定的逻辑 EEPROM 块中读取有效数据 [SWS_Ea_00086]。通过参数 Block Number 对逻辑块进行寻址,该参数同时决定了其在 EEPROM 中的起始地址 [SWS_Ea_00086]。参数 Block Offset 指定块内的相对读取偏移量,而 Length 则定义要读取的字节数 [SWS_Ea_00086]。目标数据被写入由 Data Buffer Ptr 引用的缓冲区中 [SWS_Ea_00086]。

该调用的行为是异步的(Asynchronous):返回值 E_OK 仅表示 Ea 模块已接受作业请求,而 E_NOT_OK 则表示请求被拒绝 [SWS_Ea_00086]。解释:由于数据传输在后台异步执行,推测所引用的缓冲区在作业完全执行完毕之前必须保持不变且持续有效。 问题 Q-34c9b29f373bd6cf (未决)

并发性与限制

该接口被指定为不可重入(Non Reentrant)[SWS_Ea_00086]。因此,不允许从不同的执行上下文中进行并行调用,必须在调用方进行同步。

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

函数 Ea_Write [SWS_Ea_00087] 📄 PDF

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

Writes the contents of the Data Buffer Ptr to the block Block Number.

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

函数 Ea_Write 触发将数据从缓冲区异步写入逻辑 EEPROM 块的操作 [SWS_Ea_00087]。它通过头文件 Ea.h 声明,且其 Service-ID 为 0x03 [SWS_Ea_00087]。

参数与返回值

  • BlockNumber(输入,uint16):表示逻辑块的编号,并同时代表其在 EEPROM 中的起始地址 [SWS_Ea_00087]。
  • DataBufferPtr(输入,const uint8*):指向包含待写入数据缓冲区的指针 [SWS_Ea_00087]。
  • 返回值(Std_ReturnType):E_OK 表示写入作业已被 Ea 模块接受执行;E_NOT_OK 表示请求被拒绝 [SWS_Ea_00087]。

并发性与限制

该函数被指定为不可重入(Non Reentrant)[SWS_Ea_00087]。因此,在没有事先进行外部同步的情况下,推测不得无协调地进行并发调用。 问题 Q-a52fbcca6963c760 (未决)由于写入过程是异步执行的(Asynchronous)[SWS_Ea_00087],推测调用方必须将提供的缓冲区 DataBufferPtr 保留在内存中且不作更改,直至作业完全结束。该函数的规范摘录中未指明具体的 DET 或 DEM 错误代码。

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

函数 Ea_Cancel [SWS_Ea_00088] 📄 PDF

void Ea_Cancel (void);

Cancels the ongoing asynchronous operation.

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

函数 Ea_Cancel 中止 EEPROM Abstraction 模块当前正在运行的异步过程([SWS_Ea_00088])。该服务通过头文件 Ea.h 提供,服务 ID 为 0x04([SWS_Ea_00088])。

关于调用行为和接口定义,适用以下特性([SWS_Ea_00088]):

  • 语义:调用本身是同步进行的(Synchronous),尽管它中止了一个正在运行的异步操作([SWS_Ea_00088])。
  • 参数和返回:签名为 void Ea_Cancel(void)。该函数既不需要输入、输出也不需要传递参数,并且没有返回值([SWS_Ea_00088])。
  • 重入性:该接口被定义为不可重入(Non Reentrant)([SWS_Ea_00088])。因此,不得从多个执行上下文或中断任务并发调用它。

由于 Ea_Cancel 不接受作业或块标识符,因此中止直接涉及当前正在处理的整个异步过程([SWS_Ea_00088])。规范数据中不包含特定的错误代码或对检测机制的反馈。推测该调用通常由上层(如 Memory Abstraction 接口(MemIf))执行,以便有针对性地提前终止耗时的读取、写入或擦除过程。 问题 Q-e441cbf6a5097568 (未决)

本段文本由人工智能基于 AUTOSAR 规范 R20-11 生成。

函数 Ea_GetStatus [SWS_Ea_00089] 📄 PDF

MemIf_StatusType Ea_GetStatus (void);

Service to return the Status.

函数 Ea_GetJobResult [SWS_Ea_00090] 📄 PDF

MemIf_JobResultType Ea_GetJobResult (void);

Service to return the Job Result.

函数 Ea_InvalidateBlock [SWS_Ea_00091] 📄 PDF

Std_ReturnType Ea_InvalidateBlock (uint16 BlockNumber);

Invalidates the block Block Number.

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

使用

函数 Ea_InvalidateBlock 用于使由逻辑块编号指示的块失效 [SWS_Ea_00091]。它具有服务 ID 0x07,并通过头文件 Ea.h 提供 [SWS_Ea_00091]。作为输入参数,它接受类型为 uint16 的 Block Number;该参数表示逻辑块编号,并同时指定 EEPROM 中相关块的起始地址 [SWS_Ea_00091]。尚未为此服务定义输入/输出参数或纯输出参数 [SWS_Ea_00091]。

该调用作为异步操作(Asynchronous)执行 [SWS_Ea_00091]。类型为 Std_ReturnType 的返回值 E_OK 向调用者确认 EA 模块已接受作业请求以进行进一步处理 [SWS_Ea_00091]。

错误处理

如果 EA 模块无法接受请求的作业,则返回错误值 E_NOT_OK [SWS_Ea_00091]。然而,根据规范,仅当 DET 被启用时才会返回此 E_NOT_OK [SWS_Ea_00091]。

并发性与限制

该接口被指定为不可重入(Non Reentrant)[SWS_Ea_00091]。解读:因此,调用者推测不得并行或以中断方式调用该函数,因为模块端无法保证重入性 [SWS_Ea_00091]。 问题 Q-81d805517d2eac88 (未决)

本使用说明是基于 AUTOSAR Classic R20-11 的规范自动创建的。

函数 Ea_EraseImmediateBlock [SWS_Ea_00093] 📄 PDF

Std_ReturnType Ea_EraseImmediateBlock (uint16 BlockNumber);

Erases the block Block Number.

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

根据 [SWS_Ea_00093],函数 Ea_EraseImmediateBlock 用于擦除 EEPROM 中的逻辑块。

  • 用法和语义:该调用以异步方式进行([SWS_Ea_00093])。通过输入参数 Block Number 传递逻辑块的编号,该编号同时表示该块在 EEPROM 中的起始地址([SWS_Ea_00093])。返回值的类型为 Std_ReturnType:E_OK 表明所请求的作业已被模块接受([SWS_Ea_00093])。
  • 错误处理:如果 Default Error Tracer(DET)被启用,则在 EA 模块无法接受该作业时,函数返回 E_NOT_OK([SWS_Ea_00093])。如果 DET 未启用,根据规范的字面表述,出错时不应返回 E_NOT_OK。 问题 Q-5015a2135dbd4723 (未决)
  • 并发性和限制:该函数被指定为不可重入(Non Reentrant)([SWS_Ea_00093])。因此,调用者必须确保避免并行或重叠的调用。声明可通过头文件 Ea.h 获取,服务 ID 为 0x09([SWS_Ea_00093])。

本文件由人工智能根据 AUTOSAR 规范生成。

函数 Ea_JobEndNotification [SWS_Ea_00094] 📄 PDF

void Ea_JobEndNotification (void);

Service to report to this module the successful end of an asynchronous operation.

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

函数 Ea_JobEndNotification 用于通知模块 Ea 先前发起的异步操作已成功完成 [SWS_Ea_00094]。该接口通过头文件 Ea.h 提供,服务 ID 为 0x10 [SWS_Ea_00094]。

关于语义和接口定义,根据 [SWS_Ea_00094] 适用以下属性:

  • 签名和参数:该函数不需要任何传递参数(void),并且不返回任何返回值(void)。
  • 同步性:该调用是同步处理的。
  • 错误处理:该接口仅报告成功完成;该元素中的此通知未定义特定的错误代码或错误消息。

在并发性方面,Ea_JobEndNotification 被指定为不可重入(Non Reentrant)[SWS_Ea_00094]。因此,调用者必须确保不发生并行或嵌套调用。解读:该函数通常应由底层驱动程序在其异步处理结束时调用,其中调用上下文推测必须确保顺序执行且互不抢占。 问题 Q-296b61b743e7c9b8 (未决)

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

函数 Ea_JobErrorNotification [SWS_Ea_00095] 📄 PDF

void Ea_JobErrorNotification (void);

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

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

函数 Ea_JobErrorNotification 用作通知接口,以向 Ea 模块报告先前启动的异步操作的错误 [SWS_Ea_00095]。它通过头文件 Ea.h 可用,且其 Service-ID 为 0x11 [SWS_Ea_00095]。

关于接口规范和使用,适用以下特性:

  • 参数与返回值:该函数既没有传入参数(无 in、out 或 inout),也没有返回值(签名 void Ea_JobErrorNotification(void))[SWS_Ea_00095]。
  • 执行行为与重入性:调用为同步处理,但被指定为不可重入(Non Reentrant)[SWS_Ea_00095]。因此,调用方必须确保调用按顺序进行,不被并行上下文重叠。
  • 协同交互:由于该函数用于通知异步作业的失败,一旦作业失败,通常推测由底层硬件抽象模块或存储器驱动程序发起调用(解释)。 问题 Q-810e76dee987a5a1 (未决)

未为此服务定义具体的错误代码、开发错误(DET)或生产错误(DEM);元素中未指定该调用本身的单独错误行为。

本文由 AI 生成。所有专业表述完全基于 AUTOSAR R20-11 的规范数据。

函数 Ea_MainFunction [SWS_Ea_00096] 📄 PDF

void Ea_MainFunction (void);

Service to handle the requested jobs and the internal management operations.

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

使用

函数 Ea_MainFunction 用于处理请求的作业以及在 EEPROM Abstraction 模块内执行内部管理操作 [SWS_Ea_00096]。根据接口定义 void Ea_MainFunction(void),该函数不接受任何传递参数,也不向调用者返回任何返回值 [SWS_Ea_00096]。

调用上下文与并发性

该接口具有服务 ID 0x12,并通过头文件 SchM_Ea.h 进行声明 [SWS_Ea_00096]。解读:由于通过 SchM_Ea.h 提供,该调用通常应由调度管理器(BSW 调度器)在任务上下文中周期性执行,以便在后台持续推进存储作业的异步处理。 问题 Q-23f33a40a1e08c34 (未决)

错误处理

由于 Ea_MainFunction 不提供返回值,因此错误状态或作业进度不会直接通过函数调用传递 [SWS_Ea_00096]。在当前规范摘录中,未为此服务定义特定的错误代码以及向开发接口模块(DET)或诊断模块(DEM)报告的要求。

本文本由自动生成。所有陈述均完全基于 R20-11 版本的规范数据。

函数 NvM_JobEndNotification [SWS_Ea_00099] 📄 PDF

void NvM_JobEndNotification (void);

Function to be used by the underlying memory abstraction to signal end of job without error.

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

用法与语义

根据 [SWS_Ea_00099],回调函数 NvM_JobEndNotification 供底层存储抽象用于向上级模块指示作业已成功结束且无错误。该服务具有签名 void NvM_JobEndNotification(void);它既不需要输入参数也不需要输入/输出参数,并且不返回值 [SWS_Ea_00099]。执行被指定为同步的,并且该接口通过头文件 NvM_MemIf.h 提供 [SWS_Ea_00099]。

并发性与调用条件

关于运行时行为,NvM_JobEndNotification 被归类为不可重入(Non Reentrant)[SWS_Ea_00099]。因此,调用实体必须确保不会从多个上下文中以中断或并行方式调用该通知。解读:存储抽象层通常应在其周期性主函数中或在异步驱动程序作业完成后执行该函数,只要确定该操作已无误结束。 问题 Q-adabc07be0a3e7d2 (未决)

错误处理与交互

在 [SWS_Ea_00099] 中未为该通知函数定义特定的错误代码、开发错误(DET)或生产错误(DEM)。其原因在于该调用仅指示作业的无误完成 [SWS_Ea_00099]。如果在存储作业期间发生错误,则不会调用此通知。

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

函数 NvM_JobErrorNotification [SWS_Ea_00100] 📄 PDF

void NvM_JobErrorNotification (void);

Function to be used by the underlying memory abstraction to signal end of job with error.

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

通知函数 NvM_JobErrorNotification 由底层存储抽象(Memory Abstraction)用于向 NVRAM Manager 报告作业的失败完成 [SWS_Ea_00100]。该接口的声明通过头文件 NvM_MemIf.h 提供 [SWS_Ea_00100]。

根据规范 [SWS_Ea_00100],以下属性适用于该接口的调用和集成:

  • 签名和语法:该函数的签名为 void NvM_JobErrorNotification (void) [SWS_Ea_00100]。
  • 参数和返回值:该函数既没有输入参数(Parameters (in): None)、输入/输出参数(Parameters (inout): None),也没有输出参数(Parameters (out): None),并且不返回值(Return value: None)[SWS_Ea_00100]。
  • 同步性:该调用被指定为同步(Synchronous)[SWS_Ea_00100]。
  • 并发性:该函数被确定为不可重入(Non Reentrant)[SWS_Ea_00100]。因此,来自存储抽象的相应调用不得并发或重叠发生。

定义中未包含特定的错误代码、用于错误区分的参数或向 Default Error Tracer(DET)或 Diagnostic Event Manager(DEM)模块发送通知的要求 [SWS_Ea_00100]。该函数仅用作以错误结束的作业结果的纯状态消息 [SWS_Ea_00100]。

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

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

Record
AUTOSAR/AP/record/CP_MOD_Ea
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_Ea@rel:R20-11#e0416bb6
Content hash
e0416bb6
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_EEPROMAbstraction.pdf#nameddest=SWS_Ea_00084

初始化与状态

Service to return the Status.

MemIf_StatusType Ea_GetStatus (void);

Service to get the version information of this module.

void Ea_GetVersionInfo (Std_VersionInfoType* VersionInfoPtr);
Ea_Init 函数

Initializes the EEPROM abstraction module.

void Ea_Init (const Ea_ConfigType* ConfigPtr);

服务

Ea_Cancel 函数

Cancels the ongoing asynchronous operation.

void Ea_Cancel (void);

Erases the block Block Number.

Std_ReturnType Ea_EraseImmediateBlock (uint16 BlockNumber);

Service to return the Job Result.

MemIf_JobResultType Ea_GetJobResult (void);

Invalidates the block Block Number.

Std_ReturnType Ea_InvalidateBlock (uint16 BlockNumber);

Service to report to this module the successful end of an asynchronous operation.

void Ea_JobEndNotification (void);

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

void Ea_JobErrorNotification (void);
Ea_Read 函数

Reads Length bytes of block Blocknumber at offset Block Offset into the buffer Data Buffer Ptr.

Std_ReturnType Ea_Read (uint16 BlockNumber, uint16 BlockOffset, uint8* DataBufferPtr, uint16 Length);
Ea_SetMode 函数

Function to switch the mode of the underlying EEPROM Driver

void Ea_SetMode (MemIf_ModeType Mode);
Ea_Write 函数

Writes the contents of the Data Buffer Ptr to the block Block Number.

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

Function to be used by the underlying memory abstraction to signal end of job without error.

void NvM_JobEndNotification (void);

Function to be used by the underlying memory abstraction to signal end of job with error.

void NvM_JobErrorNotification (void);

周期性

Service to handle the requested jobs and the internal management operations.

void Ea_MainFunction (void);

类型

Configuration data structure of the Ea module.