AUTOSAR_SWS_FlashEEPROMEmulation 中文翻译

文档编号:089 | 状态:Final | 发布于:AUTOSAR CP Release 4.4.0
所属标准:AUTOSAR Classic Platform | 文档责任方:AUTOSAR

本翻译覆盖原文档 1-56 页正文(约 1.28 MB)。
原文为软件规范(SWS),定义 Flash EEPROM 模拟(Fee)模块的 API 与配置——含 13 个 API 函数(含 2 个通知回调模板 + 1 个调度函数)。Fee 实现 Flash 上的 EEPROM 模拟(块管理、扇区布局、垃圾回收、磨损均衡)。


1 引言与功能概述

Fee(Flash EEPROM Emulation)位于 MemIf 与 Fls 之间,在 Flash 硬件上模拟 EEPROM 行为——将 NV 块请求转换为扇区布局/页操作,支持块管理、扇区擦除、垃圾回收、磨损均衡。

2 缩略语与缩写

缩略语描述
FeeFlash EEPROM Emulation(Flash 模拟 EEPROM)
NV BlockNon-Volatile Block(非易失性块)
Sector扇区(最小擦除单位)
Garbage Collection垃圾回收(合并有效块、释放旧扇区)
Wear Leveling磨损均衡(将写操作分散到不同扇区)
DETDefault Error Tracer(默认错误追踪器)

3 相关文档

4 约束与假设

Fee 仅支持单一底层设备(Fls)。扇区布局、垃圾回收策略、磨损均衡由配置决定。

5 与其他模块的依赖

Fee 依赖 Fls(底层驱动)、MemIf(上层抽象)、DET、DEM。

6 需求可追溯性

SWS_Fee_NNNNN 规范项 ID 约 100+ 条。

7 功能规范

7.1 预配置

扇区布局(扇区数、起始地址、大小)、块到扇区映射、擦除时间、垃圾回收策略、磨损均衡策略、通知回调。

7.2 通用行为

Fee 实现块管理(写时复制 + 失效旧块 + 垃圾回收)。每次写操作:

  1. 查找空闲扇区;
  2. 复制有效块到新扇区;
  3. 更新要修改的块;
  4. 标记旧块为失效(不立即擦除);
  5. 后台进行垃圾回收。

7.3 错误分类

7.3.1 开发错误

错误码含义
FEE_E_UNINITFee 未初始化
FEE_E_ALREADY_INITIALIZED已初始化
FEE_E_PARAM_BLOCKNUMBER无效的块号
FEE_E_PARAM_OFFSET无效的偏移
FEE_E_PARAM_LENGTH无效的长度
FEE_E_PARAM_POINTER无效的指针
FEE_E_BUSY操作忙
FEE_E_INVALID_BLOCK_NO块号超出配置
FEE_E_BLOCK_INVALIDATED块已失效

7.3.2-7.3.5 运行时/瞬态/生产/扩展生产错误

无。

8 API 规范

8.1 导入类型

Std_ReturnTypeStd_VersionInfoTypeStd_ConfigType

8.2 类型定义

类型描述
Fee_ConfigTypeFee 抽象配置
Fee_BlockNumberType块号(uint16)
Fee_OffsetType偏移(uint16)
Fee_LengthType长度(uint16)
Fee_DataType数据(uint8/16/32)

8.3 函数定义

API功能
Fee_Init初始化 Fee
Fee_SetMode设置模式(Fast/Slow)
Fee_Read读块
Fee_Write写块(含垃圾回收触发)
Fee_Cancel取消操作
Fee_GetStatus获取状态
Fee_GetJobResult获取作业结果
Fee_InvalidateBlock使块失效
Fee_GetVersionInfo获取版本信息
Fee_EraseImmediateBlock立即擦除块
Fee_JobEndNotification作业结束通知回调(应用实现)
Fee_JobErrorNotification作业错误通知回调(应用实现)
Fee_MainFunction主函数(异步处理 + 垃圾回收)

共 13 个 API 函数(含 2 个通知回调模板 + 1 个调度函数)。

9 序列图

  1. 读块:MemIf → Fee_Read(Block, Offset, Length, Buf) → 扫描块链查找最新有效数据 → 异步通知;
  2. 写块:MemIf → Fee_Write(Block, Buf) → 检查空闲扇区 → 复制有效数据 → 写入新数据 → 标记旧数据失效 → 异步通知;
  3. 垃圾回收:后台 → Fee_MainFunction() → 检查扇区 → 选择最旧扇区 → 复制所有有效数据 → 擦除整个扇区 → 释放;
  4. 失效块:MemIf → Fee_InvalidateBlock(Block) → 写入失效标志 → 通知。

10 配置规范

10.1 容器与配置参数

容器描述
Fee根容器(开发错误检测、版本 API、立即块擦除 API 等)
FeeGeneral通用配置(块数、扇区布局)
FeeBlockConfiguration块配置(块号、大小、起始地址、立即数据)
FeeSector扇区配置(起始地址、大小)
FeePublishedInformation发布信息

共 5 个 ECUC 容器,含 20+ 配置参数。

10.2 发布信息

发布信息包括 Fee 模块版本、配置变体、块数、扇区数、最大块大小等。


📋 校对记录

校对轮次:L1 自动校对(2026-06-13)