DEENESPTFRRUARHIKOZHNL

Flash EEPROM Emulation (Fee)

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

模块指南人工智能生成

在 Flash 存储器上模拟具有逻辑块的 EEPROM,并处理异步读写作业。
AI 生成 未审核 模型: claude-opus-5-5 · 推理强度: high · 温度: 不可控 · 提示词: 82b558e5a038 来源 未决问题(6)
因果锚点:R20-11 自 R20-11 起有效 为此规范版本重新合成。
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

在 Flash 存储器上模拟具有逻辑块的 EEPROM,并处理异步读写作业。

Fee 将模拟 EEPROM 的逻辑块映射到 Flash 存储器上,并处理 NVRAM Manager 通过 MemIf 发出的作业。读、写和擦除作业仅被接受,然后在 Fee_MainFunction 中异步处理 [SWS_Fee_00097]。进度和结果由 Fee_GetStatus 和 Fee_GetJobResult 显示。在 Fee_Init 之后,模块最初可能会忙于内部管理(MEMIF_BUSY_INTERNAL),但已经可以接受作业 SWS Fee 第42页。写作业始终涉及整个块。

Fee 将模拟 EEPROM 的逻辑块映射到 Flash 存储器上。BlockNumber 同时表示块的起始地址 [SWS_Fee_00087]。调用来自 NVRAM Manager,经由通过 DeviceIndex 选择相应服务的 Memory Abstraction Interface SWS MemIf 第18页。其下层运行 Flash 驱动程序 Fls。Fee 通过 NvM_JobEndNotification 和 NvM_JobErrorNotification 直接向 NVRAM Manager 提供反馈 [SWS_Fee_00098]、[SWS_Fee_00099]。

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

上下文图:位于 MemIf 与 Fls 之间的 Fee,由 EcuM 初始化,由 SchM 周期性触发,并直接向 NvM 提供反馈。来源:[SWS_Fee_00085]、[SWS_Fee_00097]、[SWS_Fee_00105]。

EcuM 使用选定的配置集调用 Fee_Init;R20-11 将该服务归为异步 [SWS_Fee_00085]。之后状态为 MEMIF_BUSY_INTERNAL,但作业已可被接受。只有重复调用 Fee_MainFunction 才能完成内部管理并转换至 MEMIF_IDLE SWS Fee 第42页。Fee_GetStatus 显示模块状态,Fee_GetJobResult 显示上一个已接受作业的结果 [SWS_Fee_00090]、[SWS_Fee_00091]。

fee_modulstatus start UNINIT MEMIF_UNINIT start->UNINIT BUSY_INTERNAL MEMIF_BUSY_INTERNAL UNINIT->BUSY_INTERNAL Fee_Init BUSY_INTERNAL->BUSY_INTERNAL Fee_MainFunction (管理运行中) IDLE MEMIF_IDLE BUSY_INTERNAL->IDLE Fee_MainFunction (Verwaltung beendet) BUSY MEMIF_BUSY BUSY_INTERNAL->BUSY Fee_Read / Fee_Write angenommen IDLE->BUSY Fee_Read / Fee_Write angenommen BUSY->IDLE Fee_Cancel BUSY->IDLE Auftrag beendet (Annahme)

状态图:从 MEMIF_UNINIT 经由 MEMIF_BUSY_INTERNAL 到 MEMIF_IDLE 和 MEMIF_BUSY 的模块状态;正常作业结束后的返回属于一种假定。来源:[SWS_Fee_00090]、SWS Fee 第28页。

读、写、使无效和擦除作业仅通过 E_OK 报告其已被接受;它们在 Fee_MainFunction 中异步执行 [SWS_Fee_00097]。Fee_Read 读取块的任意片段,Fee_Write 始终以偏移量零读取整个块 SWS Fee 第28页。在写入期间,该块在内部被视为“corrupted”。该标记需与通过 Fee_InvalidateBlock 设置的无效化区分开来 SWS Fee 第21页。

Fee_Cancel 在 R20-11 中是同步的,并通过 Flash 驱动程序中止挂起的作业 [SWS_Fee_00089]。在没有挂起作业的情况下,它报告 FEE_E_INVALID_CANCEL [SWS_Fee_91002]。Flash 错误由驱动程序检测。Fee 根据配置通过两种途径报告这些错误:作为 MEMIF_JOB_FAILED 供查询,或通过 NvM_JobErrorNotification。恢复由 NVRAM Manager 负责 ErrorDescription 第40页。Fee 将未初始化或无效块号等错误操作报告为开发错误 [SWS_Fee_00010]。

在 NV 存储栈中的角色:Flash 存储器作为模拟 EEPROM

Flash EEPROM Emulation (Fee) 为上层提供逻辑块,并将其映射到 Flash 存储器上。在此过程中,BlockNumber 同时表示块在存储器中的起始地址 [SWS_Fee_00087]、[SWS_Fee_00088]。NVRAM Manager 并不直接调用 Fee,而是通过 Memory Abstraction Interface 调用。MemIf_Read 和 MemIf_Write 调用通过 DeviceIndex 选择的抽象模块的函数,并传递其返回值 SWS MemIf 第18页、SWS MemIf 第19页。向下,Fee 基于 Flash 驱动程序 Fls。它从那里导入 Fls_AddressType 和 Fls_LengthType,从 MemIf 导入状态、结果和模式类型 [SWS_Fee_00084]。

反馈绕过 MemIf。MemIf 本身不提供回调;用于底层抽象模块的回调例程由 NVRAM Manager 提供 SWS MemIf 第24页。为此,Fee 调用 NvM_JobEndNotification 和 NvM_JobErrorNotification [SWS_Fee_00098]、[SWS_Fee_00099]。反之,驱动程序通过 Fee_JobEndNotification 和 Fee_JobErrorNotification 向 Fee 报告其作业的结束 [SWS_Fee_00095]、[SWS_Fee_00096]。Fee 由 EcuM 初始化,由 Basic Software Scheduler 周期性触发 SWS Fee 第42页。

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

上下文图:Fee 位于 MemIf 和 Fls 之间。它由 EcuM 初始化,由 SchM 周期性触发,并直接向 NvM 报告作业结束。来源:[SWS_Fee_00085]、[SWS_Fee_00097]、[SWS_Fee_00098]、[SWS_Fee_00104]、[SWS_Fee_00105]、SWS MemIf 第18页。

作为所需的驱动程序服务,R20-11 列出了以下等函数 [SWS_Fee_00105]:

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

可选地添加 Det_ReportError 和 Fls_BlankCheck [SWS_Fee_00104]。同一需求的后续版本则列出 MemAcc_BlankCheck SWS Fee 第40页。对于 R20-11,规范性要求仍为 Fls 变体。

启动:从 Fee_Init 到准备好接受作业

EcuM 使用指向所选配置集的指针调用 Fee_Init [SWS_Fee_00085]。类型 Fee_ConfigType 是一个包含实现特定元素的结构体 [SWS_Fee_00188]。值得注意的是,R20-11 将 Fee_Init 列为异步 [SWS_Fee_00085]。根据变更历史,初始化不必在 Fee_Init 内完成,状态机也作了相应调整 SWS Fee 第4页。

规范的时序图展示了该流程 SWS Fee 第42页:

  1. 在 Fee_Init 之后,模块状态为 MEMIF_BUSY_INTERNAL。
  2. 在此状态下已可接受作业。
  3. 调度器持续调用 Fee_MainFunction,直至内部管理完成。

后续版本规定,Fee_MainFunction 随后将状态从 MEMIF_BUSY_INTERNAL 置为 MEMIF_IDLE。在此期间,管理过程可能持续多次调用 SWS Fee 第38页。图表的较早版本仅显示了由 EcuM 进行的同步调用 SWS Fee 第38页。

Hochlauf von FeeEcuMFeeSchMFee_Init(ConfigPtr)Modulstatus := MEMIF_BUSY_INTERNALFee_Init()从此处开始已接受作业loop仍需要内部管理Fee_MainFunction()interne VerwaltungsoperationStatus bleibt MEMIF_BUSY_INTERNALFee_MainFunction()Fee_MainFunction()Verwaltung beendetModulstatus := MEMIF_IDLEFee_MainFunction()

时序图:Fee_Init 将模块置于 MEMIF_BUSY_INTERNAL。只有重复调用 Fee_MainFunction 才能完成内部管理并转换至 MEMIF_IDLE。来源:[SWS_Fee_00085]、[SWS_Fee_00097]、SWS Fee 第42页。

Fee_MainFunction 处理所请求的读、写和擦除作业以及内部管理操作 [SWS_Fee_00097]。作为调度函数,它由 Basic Software Scheduler 直接调用。它既无参数也无返回值,且是不可重入的 SWS Fee 第40页。

作为控制变量的模块状态和作业结果

上层通过两个同步查询来控制其调用。Fee_GetStatus 返回四个值之一 [SWS_Fee_00090]:

  • MEMIF_UNINIT:模块未初始化。
  • MEMIF_IDLE:模块处于空闲状态。
  • MEMIF_BUSY:正在处理上层的作业。
  • MEMIF_BUSY_INTERNAL:正在执行内部管理操作。

规范将所用 Flash 存储器的重组(垃圾回收)列为内部管理操作的一个示例 SWS Fee 第30页。新作业在 MEMIF_IDLE 和 MEMIF_BUSY_INTERNAL 中均被接受,并导致转换至 MEMIF_BUSY SWS Fee 第28页。在正常作业结束后,状态应重新回到 MEMIF_IDLE。在此处,明确有据可查的返回至 MEMIF_IDLE 仅针对中止情况 SWS Fee 第29页。 问题 Q-beae785a1ba1cbec (未决)

fee_modulstatus start UNINIT MEMIF_UNINIT start->UNINIT BUSY_INTERNAL MEMIF_BUSY_INTERNAL UNINIT->BUSY_INTERNAL Fee_Init BUSY_INTERNAL->BUSY_INTERNAL Fee_MainFunction (管理运行中) IDLE MEMIF_IDLE BUSY_INTERNAL->IDLE Fee_MainFunction (Verwaltung beendet) BUSY MEMIF_BUSY BUSY_INTERNAL->BUSY Fee_Read / Fee_Write angenommen IDLE->BUSY Fee_Read / Fee_Write angenommen BUSY->IDLE Fee_Cancel BUSY->IDLE Auftrag beendet (Annahme)

状态图:模块状态从 MEMIF_UNINIT 经由 MEMIF_BUSY_INTERNAL 到 MEMIF_IDLE 和 MEMIF_BUSY 的生命周期。正常作业结束时的转换被标记为假定。来源:[SWS_Fee_00090]、SWS Fee 第42页、SWS Fee 第28页、SWS Fee 第29页。

Fee_GetJobResult 涉及最近接受的作业 [SWS_Fee_00091]、SWS Fee 第31页。它区分六种结果:

  • MEMIF_JOB_OK:作业已成功完成。
  • MEMIF_JOB_PENDING:作业正在等待或仍在运行。
  • MEMIF_JOB_CANCELED:作业已被取消。
  • MEMIF_JOB_FAILED:作业已失败。
  • MEMIF_BLOCK_INCONSISTENT:该块可能包含已损坏的数据。
  • MEMIF_BLOCK_INVALID:该块已被置为无效;无法读取。

因此,状态描述的是模块,而结果描述的是单个作业;两者需分别查询 [SWS_Fee_00090]。

读、写和块管理作业

作业服务异步工作:E_OK 仅表示作业已被接受 [SWS_Fee_00087]、[SWS_Fee_00088]。Fee_Read 根据块起始地址和 BlockOffset 计算读取地址。偏移量和长度可取其类型范围内的任意值。由此可以从块的任意位置开始读取任意数量的字节 SWS Fee 第26页。如果在 Flash 驱动程序中配置了 Fls_BlankCheck,Fee_Read 会借此预先检查该区域是否可读。这可以避免例如已擦除但未编程的单元触发 ECC 错误 [SWS_Fee_00187]。

相反,Fee_Write 始终写入整个块;偏移量固定为零 SWS Fee 第28页。这是由擦除和写作业必须始终从虚拟 64K 边界开始的上层需求决定的:一个块要么完整写入,要么根本不写 RS MemHwAb 第24页。接受时,Fee 将状态置为 MEMIF_BUSY,将结果置为 MEMIF_JOB_PENDING,并返回 E_OK。对于 Fee_Read,适用相同的接受条件 SWS Fee 第26页。

为了使被中断的写入过程保持可识别,Fee 为每个块维护内部正确性信息 SWS Fee 第21页。在写入过程启动时,该块被标记为“corrupted”,成功结束后再次标记为“not corrupted”。该信息必须与上层通过 Fee_InvalidateBlock 设置的有效性严格区分开来。

通过非易失性存储器栈的写作业NvMMemIfFeeSchMFlsUse Case: Annahme (synchron)MemIf_Write(DeviceIndex, BlockNumber, DataBufferPtr)Fee_Write(BlockNumber, DataBufferPtr)Offset fest 0 (ganzer Block)Status := MEMIF_BUSYErgebnis := MEMIF_JOB_PENDINGE_OKE_OKUse Case: Abarbeitung (asynchron)Fee_MainFunction()Block als „corrupted“ markierenFls_Write(…) (Annahme)Fee_JobEndNotification()Block als „not corrupted“ markierenErgebnis := MEMIF_JOB_OKoptBenachrichtigung konfiguriertNvM_JobEndNotification()

时序图:写入作业被同步接收,但通过 Fee_MainFunction 和驱动程序反馈异步完成。在此过程中,该块首先被标记为“corrupted”,最后再次被标记为“not corrupted”。来源:[SWS_Fee_00088]、[SWS_Fee_00095]、[SWS_Fee_00098]、SWS Fee 第28页、SWS Fee 第21页、SWS Fee 第37页。

Fee_InvalidateBlock 将逻辑块声明为无效 [SWS_Fee_00092]。为此,它调用驱动程序的擦除函数和/或更改内部管理信息,该信息本身必须进行非易失性存储 SWS Fee 第32页。如果上层稍后读取此类块,Fee_MainFunction 会将结果设置为 MEMIF_BLOCK_INVALID。如果已配置,它还会调用上层的错误通知 SWS Fee 第38页。

Fee_EraseImmediateBlock [SWS_Fee_00094] 适用于诊断或类似的系统服务。它们可根据需要在事前预先擦除立即数数据区域。在此过程中是否进行物理擦除取决于具体实现 SWS Fee 第35页。对于 Fee_InvalidateBlock 和 Fee_EraseImmediateBlock,R20-11 明确规定仅在启用 DET 时才返回 E_NOT_OK [SWS_Fee_00092],[SWS_Fee_00094]。

反馈、取消与模式切换

Flash 驱动程序通过 Fee_JobEndNotification [SWS_Fee_00095] 报告驱动程序作业的成功结束。Fee 随后执行必要的块管理,并在已配置的情况下调用上层的作业结束通知。它将仍处于 MEMIF_JOB_PENDING 状态的结果设置为 MEMIF_JOB_OK SWS Fee 第37页。根据存储堆栈的结构,回调可以在中断级别运行并向上穿透多个层。因此其运行时间必须保持较短;在中断级别调用是否被允许取决于系统设计 SWS Fee 第36页。

Fee_Cancel 调用 Flash 驱动程序的取消函数 [SWS_Fee_00089]。上层通过 MemIf_Cancel SWS MemIf 第20页 访问该服务。取消操作仅在状态 MEMIF_BUSY 下生效:Fee 调用驱动程序取消,重置其内部变量并返回到 MEMIF_IDLE。如果启用了 DET,Fee 会预先检查模块是否已初始化 SWS Fee 第29页。

各版本在 Fee_Cancel 方面存在差异。上述较新的版本将该服务归为异步服务,而 R20-11 则将其归为同步服务 [SWS_Fee_00089]。对于 R20-11,以同步分类为准。

fee_cancel start aufruf Fee_Cancel() aufgerufen start->aufruf d_det DET 处于活动状态且 状态为 MEMIF_UNINIT? aufruf->d_det e_uninit FEE_E_UNINIT melden d_det->e_uninit 是 d_busy 作业挂起 (状态 MEMIF_BUSY)? d_det->d_busy 不 ende e_uninit->ende Abbruch (Annahme) fls 调用 Flash 驱动的 中止函数 d_busy->fls 是 e_cancel FEE_E_INVALID_CANCEL melden d_busy->e_cancel 不 reset 重置内部变量, 状态 := MEMIF_IDLE fls->reset reset->ende e_cancel->ende

活动图:Fee_Cancel 在 DET 检查和模块状态之后发生分支。仅有挂起的作业才会被取消;否则将报告 FEE_E_INVALID_CANCEL。来源:[SWS_Fee_00089]、[SWS_Fee_91002]、[SWS_Fee_00010]、SWS Fee 第29页。

Fee_SetMode 切换底层 Flash 驱动程序的操作模式 [SWS_Fee_00086]。相应的图表显示了调用链 NvM → MemIf_SetMode → Fee_SetMode → Fls_SetMode SWS Fee 第39页。Fee_GetVersionInfo 是唯一的重入 Fee 服务 [SWS_Fee_00093]。当 DET 启用时,它会检查传递的指针是否为 NULL SWS Fee 第34页。

配置与集成

Fee 通过传递给 Fee_Init 的 Fee_ConfigType 获取配置 [SWS_Fee_00085],[SWS_Fee_00188]。较早规格书版本的 include 结构显示了如下划分 SWS Fee 第11页:

  • Fee_Cfg.h 包含 MemIf_Types.h 和 Fls.h,可选地还包含 NvM_Cbk.h。
  • Fee_Lcfg.c 和 Fee_PBcfg.c 包含配置数据。
  • 调度器通过 SchM_Fee.h 连接,DET 可选地通过 Det.h 连接。

对于 R20-11,该图仅供参考。如果 Fee 实现为特定制造商的库,则时序图仅对与 EcuM 和 MemIf 的关系具有约束力,对驱动程序的调用则不具约束力 SWS Fee 第42页。

发生错误时的行为

Fee 定义了五个开发错误代码 [SWS_Fee_00010]:

  • FEE_E_UNINIT (0x01):在初始化之前调用了服务。
  • FEE_E_INVALID_BLOCK_NO (0x02):无效的块编号。
  • FEE_E_INVALID_BLOCK_OFS (0x03):无效的块偏移量。
  • FEE_E_PARAM_POINTER (0x04):无效的数据指针。
  • FEE_E_INVALID_BLOCK_LEN (0x05):无效的长度说明。

R20-11 补充了另外两个代码 [SWS_Fee_91002]。FEE_E_BUSY (0x06) 适用于在处理用户作业期间进行的调用。FEE_E_INVALID_CANCEL (0x08) 适用于在没有挂起作业的情况下调用 Fee_Cancel。因此,在状态 MEMIF_BUSY 下发起的全新作业应该会被拒绝并以 E_NOT_OK 响应。 问题 Q-92062834653929da (未决)相关规则在此处仅不完整地给出 SWS Fee 第28页。

Flash 存储器的错误由 Flash 驱动程序检测;Fee 对此如何响应取决于具体实现 ErrorDescription 第40页。根据配置,通过两种途径之一进行报告。要么 MemIf 查询 Fee_GetJobResult 并接收 MEMIF_JOB_FAILED,要么 Fee 主动调用 NvM_JobErrorNotification。恢复由 NVRAM Manager 接管。上层通过 Fee_GetStatus 中的 MEMIF_UNINIT 识别未初始化的模块 ErrorDescription 第53页,[SWS_Fee_00090]。

报告 Flash 错误FlsFeeMemIfNvMFee_JobErrorNotification() (Annahme)implementierungsspezifische FehlerbehandlungErgebnis := MEMIF_JOB_FAILEDaltCallback konfiguriertNvM_JobErrorNotification()Abfrage per PollingFee_GetJobResult()MEMIF_JOB_FAILED由 NVRAM Manager 恢复

时序图:驱动程序错误可选择通过向 NvM 发送回调或轮询 Fee_GetJobResult 来到达上层。来源:[SWS_Fee_00096]、[SWS_Fee_00099]、[SWS_Fee_00091]、ErrorDescription 第40页。

对于数据一致性,来自 R22-11 的图表描述了信息链 ErrorDescription 第64页:

  1. Fee 检查所读取数据的一致性,并将错误转发给 NVRAM Manager。
  2. NVRAM Manager 向 DEM 报告 NVM_E_INTEGRITY_FAILED。
  3. 它启动已配置的恢复机制:重新读取、冗余块或 ROM 块。
  4. 如果这些机制均失败,它会将结果设置为 NVM_REQ_INTEGRITY_FAILED。

在 Fee 端,推测与此对应的是结果 MEMIF_BLOCK_INCONSISTENT [SWS_Fee_00091]。 问题 Q-a1846c349d831e17 (未决)

fee_konsistenz Fee Fee Fee->Fee (1) 检查 读取数据的一致性 NvM NvM (NVRAM Manager) Fee->NvM (2) Fehlerstatus weiterleiten NvM->NvM (4) Wiederherstellung: read retry, redundanter Block, ROM-Block Dem DEM NvM->Dem (3) NVM_E_INTEGRITY_FAILED Ergebnis NvM 的作业结果 NvM->Ergebnis (5)/(6) Wiederherstellung gescheitert: NVM_REQ_INTEGRITY_FAILED

协作图:一致性错误由 Fee 传递给 NvM。NvM 将其报告给 DEM,尝试恢复,并在失败时设置 NvM 结果(截至 R22-11 版本)。来源:ErrorDescription 第64页。

进一步详细证据

包含接收条件、回调行为和主函数的详细规则部分来自规范的后续版本,例如 SWS Fee 第38页。在它们与 R20-11 存在差异的地方,已在上方注明。最重要的依据:

结语:基于 Fee 规范摘录(classic,R20-11)的 AI 生成指南。以链接的 Requirements 为准。来自其他版本的文档位置均已标注;假定均标记为解释。

Flash EEPROM Emulation (Fee)

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

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

函数 Fee_Init [SWS_Fee_00085] 📄 PDF

void Fee_Init (const Fee_ConfigType* ConfigPtr);

Service to initialize the FEE module.

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

函数 Fee_Init 作为用于初始化 Flash EEPROM 仿真模块(FEE)的核心服务 [SWS_Fee_00085]。该调用通过 Fee.h 中声明的接口进行,服务 ID 为 0x00 [SWS_Fee_00085]。作为唯一的输入参数,传入 ConfigPtr,它用作指向类型为 const Fee_ConfigType* 的所选配置数据集的指针 [SWS_Fee_00085]。未定义额外的输入/输出参数或纯输出参数,且该函数没有返回值(void)[SWS_Fee_00085]。

尽管它是一个基本的初始化函数,但在规范中其执行语义被明确归类为异步(Asynchronous)[SWS_Fee_00085]。解释:由于该函数以异步方式工作,调用 Fee_Init 大概仅触发模块初始化,而耗时的初始化步骤则在后台以非阻塞方式完成 [SWS_Fee_00085]。 问题 Q-7d91ac2e51869606 (未决)

对于并发性和调用上下文,规范规定 Fee_Init 是不可重入的(Non Reentrant)[SWS_Fee_00085]。因此,在任何时候都不得从不同上下文并行或嵌套调用该函数 [SWS_Fee_00085]。

本使用说明由 AI 创建,且完全基于 AUTOSAR Classic Release R20-11 规范。

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

函数 Fee_SetMode [SWS_Fee_00086] 📄 PDF

void Fee_SetMode (MemIf_ModeType Mode);

Function to switch the mode of the underlying Flash Driver

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

用法与调用上下文

函数Fee_SetMode用于切换底层Flash驱动程序([SWS_Fee_00086])的工作模式。它通过头文件Fee.h提供,服务ID为0x01([SWS_Fee_00086])。该服务仅需要一个输入参数Mode(类型为MemIf_ModeType),该参数确定Flash驱动程序所需的工作模式([SWS_Fee_00086])。既不传递输出参数,也不传递返回值(void)([SWS_Fee_00086])。

异步语义与并发性

该接口被指定为异步的([SWS_Fee_00086])。由于调用后不返回函数值,Flash硬件的实际切换过程可能在后台延迟执行。 问题 Q-9dbc267f51e150af (未决)关于调用上下文,Fee_SetMode被归类为不可重入(Non Reentrant)([SWS_Fee_00086])。因此调用者必须确保该函数不会同时或以中断方式从不同线程或任务中被调用。

错误处理与交互

在本规范摘录中,未为Fee_SetMode定义特定的错误代码、DET错误消息或DEM事件([SWS_Fee_00086])。同样未指明与其他需求的直接关联。解释:任何对无效模式值的检查可能在驱动程序内部或Fee模块中处理,而无需向调用者显式返回错误。 问题 (未决)

此文本由 AI 创建,仅基于 AUTOSAR 版本 R20-11 的规范。

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

函数 Fee_Read [SWS_Fee_00087] 📄 PDF

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

Service to initiate a read job.

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

使用

函数 Fee_Read 用于在 Flash EEPROM 仿真模块中启动异步读取作业,并通过头文件 Fee.h 声明 [SWS_Fee_00087]。它具有服务 ID 0x02,并接受以下传入参数 [SWS_Fee_00087]:

  • Block Number:逻辑块的编号,该编号同时指示其在 Flash 存储器中的起始地址。
  • Block Offset:相关块内的读取偏移量。
  • Length:要从该块读取的字节数。
  • Data Buffer Ptr:用于存放所读取数据的目标缓冲区的指针。

作为返回值,函数提供 Std_ReturnType:E_OK 指示模块已接受所请求的读取作业;E_NOT_OK 指示作业已被拒绝 [SWS_Fee_00087]。

并发性与限制

Fee_Read 的调用被指定为不可重入(Non Reentrant)且异步(Asynchronous)[SWS_Fee_00087]。

与 Flash 驱动程序的协同工作

只要在 Flash 驱动程序中配置了函数 Fls_BlankCheck,Fee_Read 就必须调用该函数 [SWS_Fee_00187]。这用于事先检查是否可以读取存储区域,而不会例如因已擦除但尚未编程的 Flash 单元触发 ECC 错误 [SWS_Fee_00187]。

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

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

函数 Fee_Write [SWS_Fee_00088] 📄 PDF

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

Service to initiate a write job.

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

用法与语义

函数 Fee_Write 用作根据 [SWS_Fee_00088] 在 Flash EEPROM 仿真模块中启动写入作业的服务。其声明可通过头文件 Fee.h 获取。该调用为异步进行:该函数仅触发写入过程,不会阻塞直到写入过程物理完成。

为传递写入数据定义了两个参数[SWS_Fee_00088]:

  • BlockNumber(uint16):表示逻辑块号,并同时定义该块在 EEPROM 中的起始地址。
  • DataBufferPtr(const uint8*):指向包含待写入有效数据的缓冲区指针。

返回值和并发性

类型为 Std_ReturnType 的返回值直接指示模块是否能够接受该写入作业[SWS_Fee_00088]:

  • E_OK:所请求的作业已被模块接受。
  • E_NOT_OK:该作业未被模块接受。

在并发性方面,Fee_Write 被指定为不可重入(Non Reentrant)[SWS_Fee_00088]。因此调用方必须确保不会从不同上下文中并发调用该函数。该函数的服务 ID 为 0x03 [SWS_Fee_00088]。解读:返回 E_OK 后,物理数据传输可能会通过后续的模块周期在后台异步处理。 问题 Q-8bedddcf2371f6bf (未决)

此文本由 AI 生成,用作参考指引。引用的 AUTOSAR 规范具有权威性。

函数 Fee_Cancel [SWS_Fee_00089] 📄 PDF

void Fee_Cancel (void);

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

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

函数 Fee_Cancel 是模块 Fee 的同步服务,用于将中止请求转发给底层 Flash 驱动程序 [SWS_Fee_00089]。该服务通过头文件 Fee.h 声明,并具有数值服务 ID 0x04 [SWS_Fee_00089]。

用法与调用上下文

该接口具有签名 void Fee_Cancel (void) [SWS_Fee_00089]。根据规范,调用适用以下参数和执行特性:

  • 参数:该函数不需要传递参数;既没有输入参数、输入/输出参数,也没有输出参数[SWS_Fee_00089]。
  • 返回值:不向调用方返回任何返回值[SWS_Fee_00089]。
  • 同步性:函数调用的处理规定为同步(Synchronous)[SWS_Fee_00089]。

并发性与限制

在并发行为方面,Fee_Cancel 被指定为不可重入(Non Reentrant)[SWS_Fee_00089]。因此,调用实例必须确保该函数不会从不同的任务或中断上下文中并行或嵌套调用。

交互与错误处理

Fee_Cancel 的核心任务是调用底层 Flash 驱动程序的中止函数[SWS_Fee_00089]。有效负载中未为该函数定义具体的错误代码、返回值或错误消息。由于未描述错误处理,错误情况下的行为可能取决于所调用的 Flash 驱动程序的实现。 问题 Q-bb066b6c05a2eb12 (未决)

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

函数 Fee_GetStatus [SWS_Fee_00090] 📄 PDF

MemIf_StatusType Fee_GetStatus (void);

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

函数 Fee_GetJobResult [SWS_Fee_00091] 📄 PDF

MemIf_JobResultType Fee_GetJobResult (void);

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

函数 Fee_InvalidateBlock [SWS_Fee_00092] 📄 PDF

Std_ReturnType Fee_InvalidateBlock (uint16 BlockNumber);

Service to invalidate a logical block.

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

函数Fee_InvalidateBlock用作在Flash存储器中使逻辑块失效的服务[SWS_Fee_00092]。它可通过头文件Fee.h获取,并具有服务ID 0x07 [SWS_Fee_00092]。

用法与参数

调用以异步方式进行;因此实际的失效操作作为后台作业触发[SWS_Fee_00092]:

  • Block Number(uint16,in):表示逻辑块号,它同时确定该块在Flash存储器中的起始地址[SWS_Fee_00092]。
  • 返回值(Std_ReturnType):当失效作业被模块成功接受时,返回E_OK [SWS_Fee_00092]。

错误处理

如果模块无法接受该请求,则返回E_NOT_OK——但根据规范,该错误返回明确仅限于启用了DET的配置(only if DET is enabled)[SWS_Fee_00092]。解释:如果DET被停用,则作业被拒绝可能不会通过E_NOT_OK向调用者发出信号,因为规范将该错误值的返回与DET启用绑定。 问题 Q-2e54187ddb69e481 (未决)

并发性与边界条件

该接口被声明为不可重入(Non Reentrant)[SWS_Fee_00092]。因此调用者必须确保只要前一个函数调用处于活动状态,就不会发生对Fee_InvalidateBlock的并发或中断调用[SWS_Fee_00092]。

本文由 AI 基于 AUTOSAR R20-11 规范生成。

函数 Fee_EraseImmediateBlock [SWS_Fee_00094] 📄 PDF

Std_ReturnType Fee_EraseImmediateBlock (uint16 BlockNumber);

Service to erase a logical block.

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

用法与参数

函数Fee_EraseImmediateBlock提供用于擦除逻辑块的异步服务,并通过头文件Fee.h声明[SWS_Fee_00094]。该函数具有十六进制服务ID 0x09 [SWS_Fee_00094]。作为唯一的输入参数,类型为uint16的Block Number指定逻辑块的编号,并同时标识其在EEPROM中的起始地址[SWS_Fee_00094]。

返回值与错误处理

该接口提供状态Std_ReturnType作为返回值[SWS_Fee_00094]。值E_OK确认模块已成功接收请求的擦除作业[SWS_Fee_00094]。如果作业未被模块接受,函数将返回E_NOT_OK;但根据规范,该返回值仅在DET错误监控处于激活状态时出现[SWS_Fee_00094]。

并发性与限制

关于并发性和调用条件,Fee_EraseImmediateBlock被归类为不可重入(Non Reentrant)且异步工作[SWS_Fee_00094]。因此调用模块必须确保只要模块仍在忙于处理,就不会对同一接口进行进一步调用。

基于AUTOSAR规范的上下文相关说明。

函数 Fee_JobEndNotification [SWS_Fee_00095] 📄 PDF

void Fee_JobEndNotification (void);

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

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

函数 Fee_JobEndNotification 用于通知 Fee 模块异步操作已成功完成([SWS_Fee_00095])。

关于使用和签名,适用以下规定:

  • 签名与参数:该函数具有签名 void Fee_JobEndNotification (void);。它既不期望输入、输入/输出,也不期望输出参数,并且不提供返回值([SWS_Fee_00095])。
  • 头文件:声明通过 Fee.h 提供([SWS_Fee_00095])。
  • 服务 ID:该函数通过服务 ID 0x10 定义([SWS_Fee_00095])。
  • 同步性:调用本身被指定为同步([SWS_Fee_00095])。
  • 并发性:该例程被归类为不可重入(Non Reentrant)([SWS_Fee_00095])。

交互与调用上下文:通常情况下,此回调可能由下层模块(如 Flash 驱动程序)调用,以指示异步写入或擦除作业的结束。 问题 Q-8a3ccdba2024001f (未决)由于具有 Non Reentrant 属性,调用方必须确保不会发生并发调用([SWS_Fee_00095])。

此文本由 AI 基于 R20-11 的 AUTOSAR 规范生成。

函数 Fee_JobErrorNotification [SWS_Fee_00096] 📄 PDF

void Fee_JobErrorNotification (void);

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

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

函数Fee_JobErrorNotification用作通知服务,以向Fee模块告知异步操作的失败[SWS_Fee_00096]。该接口具有签名void Fee_JobErrorNotification (void),并通过头文件Fee.h提供[SWS_Fee_00096]。标识为0x11的服务既不传递输入、输入/输出参数,也不传递输出参数[SWS_Fee_00096]。调用同样不向调用者返回任何返回值[SWS_Fee_00096]。

调用的执行语义被指定为同步(Synchronous)[SWS_Fee_00096]。对于运行时行为,核心限制是该函数不可重入(Non Reentrant)[SWS_Fee_00096]。解释:调用者(大概是底层驱动程序模块)必须确保绝不并发或从中断上下文中并行触发该通知。 问题 Q-7d4c9618bf385721 (未决)

关于错误处理,无参数接口不传输特定的错误代码,并且未为此调用记录模块特定的DET或DEM消息[SWS_Fee_00096]。Fee模块可能会在内部将报告的错误情况分配给活动的异步作业,并相应地调整其状态。 问题 Q-1fa43444195edb62 (未决)

本文由 AI 基于 AUTOSAR R20-11 规范生成。

函数 Fee_MainFunction [SWS_Fee_00097] 📄 PDF

void Fee_MainFunction (void);

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

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

根据[SWS_Fee_00097],函数Fee_MainFunction用于集中处理所请求的读、写和擦除作业,并执行模块的内部管理操作。其指定签名包含void Fee_MainFunction (void);,服务ID为0x12 [SWS_Fee_00097]。

就接口和使用而言,该函数不处理任何传入参数,且没有返回值[SWS_Fee_00097]。从其在头文件SchM_Fee.h中的可用性大概可以推断出,其调用由基础软件的调度管理周期性地执行。 问题 Q-5ef9bcc5f438cb89 (未决)描述表明,先前异步传递的作业可能会在这些周期性循环中相继得到处理。

对于错误场景、重入性和特定调用条件,规范不包含单独的标识符或错误代码[SWS_Fee_00097]。解释:作为模块状态的集中周期性控制函数,Fee_MainFunction大概是不可重入的,因此应避免从多个任务并发调用。 问题 (未决)

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

函数 NvM_JobEndNotification [SWS_Fee_00098] 📄 PDF

void NvM_JobEndNotification (void);

-

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

使用与签名

函数NvM_JobEndNotification在Flash EEPROM Emulation(Fee)规范中被定义为服务,并通过头文件Nvm.h提供([SWS_Fee_00098])。根据其语法void NvM_JobEndNotification (void);,该函数既不需要输入参数也不需要输出参数,并且不提供返回值([SWS_Fee_00098])。对于执行行为,规定了同步语义(Sync/Async: true)([SWS_Fee_00098])。

并发性与限制

关于重入性,该函数被分类为Don't care([SWS_Fee_00098])。规范中未规定关于调用上下文的特定限制。未为该元素指定通过DET或DEM消息进行的单独错误处理([SWS_Fee_00098])。

交互与功能定位

尽管该函数是Flash EEPROM Emulation规范的一部分,但描述字段不包含更多详细信息([SWS_Fee_00098])。解释:基于命名以及在Nvm.h中的声明,该函数可能用作回调接口,Fee模块通过该接口向NvM模块发出异步处理作业正常完成的信号。 问题 Q-ee00bece2e28a0e4 (未决)

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

函数 NvM_JobErrorNotification [SWS_Fee_00099] 📄 PDF

void NvM_JobErrorNotification (void);

-

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

用法与调用上下文

根据[SWS_Fee_00099],函数NvM_JobErrorNotification被定义为同步接口(Sync/ Async true)。其声明通过头文件Nvm.h提供([SWS_Fee_00099])。签名为void NvM_JobErrorNotification (void),因此它既不接受输入、直通参数也不接受输出参数,并且不提供返回值([SWS_Fee_00099])。根据标识符及其与模块Fee的归属,该回调函数大概用于在Flash EEPROM仿真驱动程序中的异步作业处理期间发生错误时通知NVRAM管理。 问题 Q-4d70f8d384e04832 (未决)

错误处理与并发

在[SWS_Fee_00099]中未列出特定的错误代码、DET消息或DEM事件。由于不传递状态或错误参数,详细的错误分析大概基于内部模块状态或驱动程序的后续查询。 问题 Q-c45e72b67236c432 (未决)关于并发性,[SWS_Fee_00099]针对重入性指定了标准Don't care,因此需求方面未对可重入能力制定限制性规定。

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

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

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

初始化与状态

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

MemIf_StatusType Fee_GetStatus (void);

Service to return the version information of the FEE module.

void Fee_GetVersionInfo (Std_VersionInfoType* VersionInfoPtr);
Fee_Init 函数

Service to initialize the FEE module.

void Fee_Init (const Fee_ConfigType* ConfigPtr);

服务

Fee_Cancel 函数

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

void Fee_Cancel (void);

Service to erase a logical block.

Std_ReturnType Fee_EraseImmediateBlock (uint16 BlockNumber);

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

MemIf_JobResultType Fee_GetJobResult (void);

Service to invalidate a logical block.

Std_ReturnType Fee_InvalidateBlock (uint16 BlockNumber);

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

void Fee_JobEndNotification (void);

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

void Fee_JobErrorNotification (void);
Fee_Read 函数

Service to initiate a read job.

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

Function to switch the mode of the underlying Flash Driver

void Fee_SetMode (MemIf_ModeType Mode);
Fee_Write 函数

Service to initiate a write job.

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

-

void NvM_JobEndNotification (void);

-

void NvM_JobErrorNotification (void);

周期性

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

void Fee_MainFunction (void);

类型

Configuration data structure of the Fee module.