Flash EEPROM Emulation (FEE)将从FLASH特定的物理寻址方案和分段中抽象出来,并为上层提供虚拟寻址方案和分段以及更多的擦除周期。
FEE模块为上层提供了32位的虚拟线性地址空间和统一的分割方案。这个虚拟32位地址应该由
· 16 位块数量 – 允许 (theoretical) 65536个逻辑块的数量
· 16 位块抵消 – 允许 (theoretical) 64 KByte /块的块大小
16位块号表示一个可配置(虚拟)分页机制。此地址对齐的值可以从底层flash驱动程序和设备的值派生。这个虚拟分页可以通过参数FeeVirtualPageSize进行配置。
Fee模块的配置应使虚拟页面大小(在FeeVirtualPageSize中定义)为物理页面大小的整数倍,即不允许配置比实际物理页面大小更小的虚拟页面。每个配置的逻辑块应该占用配置的虚拟页面大小的整数倍。逻辑块不能相互重叠,也不能相互包含。块号0x0000和0xFFFF对于逻辑块是不可配置的。
如果底层的闪存设备或设备驱动程序没有为每个物理内存单元提供至少配置的擦除/写周期数,则FEE模块应提供分散写访问的机制,以使物理设备不会受到过度的压力。这也适用于收费模块内部使用的所有管理数据。
ETAS ISOLAR中主要配置或修改内容如下:
FeeMainFunctionPeriod
连续调用主函数之间的周期(以秒为单位)。
FeeNvmJobEndNotification
映射到由上层模块(NvM_JobEndNotification)提供的作业端通知例程。
FeeNvmJobErrorNotification
映射到上层模块提供的作业错误通知例程(NvM_JobErrorNotification)。
FeePollingMode
预处理程序开关,以启用和禁用此模块的轮询模式。
FeeSetModeSupported
编译器切换到启用/禁用'SetMode'功能的收费模块。
这个配置设置必须与所有底层的flash设备驱动程序一致(配置参数FlsSetModeApi)。
FeeVersionInfoApi
预处理程序切换,启用/禁用API来读取模块版本信息。
FeeVirtualPageSize
逻辑块应对齐的字节大小。
目前配置环境中未使用。
FeeBlockNumber
块标识符
FeeBlockSize
逻辑块的大小(以字节为单位)。
FeeImmediateData
高优先级数据的标记
FeeNumberOfWriteCycles
此块所需的写周期数
FeeDeviceIndex
对存储此块的设备的引用
FeePageOverhead
以字节为单位的每个页面的管理开销。
注意:如果管理开销取决于块大小或块位置,那么必须提供一个公式,允许配置器正确地计算管理开销。
FeeRbBlockPersistentId
永久块ID
FeeRbCallbackEnd
成功完成订单后调用的回调函数的名称。这应该用于任何适配器块/作业,因为模块的作业结果只针对NvM操作类型进行更改。
FeeRbCallbackError
回调函数的名称,用于任何适配器块/操作,因为模块的操作结果只针对NvM作业类型进行更改。
FeeRbDataFilterType
定义特定操作的数据分类(例如,在迁移期间,启动,删除服务)。这个标签目前没有效果。
FeeRbDeviceIndex
Rb特殊设备索。NVRAM管理器需要这些信息分别用于内存抽象接口来处理某个逻辑块。
FeeRbFirstReadDataMigration
此标记激活或禁用首次读取数据迁移功能。
FeeRbNoFallback
此标记激活或停用回退机制,以便在最新块损坏时退回到同一块的旧副本。默认情况下,返回到旧副本是可能的。NoFallback特性仅对Renesas可用R1x / P1x以及TI控制器。它仅在至少一个块配置为NoFallback时才被激活。当使用该特性时,需要在关闭期间激活和调用API Fee_Rb_BlockMaintenance()。这对于修复由于写中断而损坏的双存储NoFallback块是必要的。
FeeRbOrigin
NVM /适配器/收费内部块类型
FeeRbRobustness
该标记通过向块数据添加一个额外的校验和,从而提高了在写执行期间对数据修改的健壮性。
FeeRbSecLevel
冗余数据存储。
1 =块在flash中有一个拷贝,2 =块在flash中有两个相同的拷贝
FeeRbSurvival
此标记更改此块的重组行为,以防它不在布局中。
true:扇区重组不会删除此块,即使它不是布局的一部分。
false:扇区重组将删除此块,如果它不是布局的一部分。
FeeRbVarBlockLength
此标记标记块长度是可变的,并在运行时计算。
FeeIndex
指定此模块实例的InstanceId。如果只有一个实例,它的Id应该是0。
FeeRbActEraseSuspension
这个标签提高了在擦除闪光时激活悬挂的可能性。如果它是活动的,擦除订单可以被其他费用订单暂停,如果所有费用订单都完成了,擦除订单应该恢复。此功能仅适用于Ti设备激活。
FeeRbActSafetyChecks
预处理程序开关,以启用或禁用有关布局和块大小的模块的额外内部检查。
FeeRbActSurvivalEval
预处理程序开关,以启用或禁用一个额外的块具体重组未知块与一个积极的生存设置(“FeeRbSurvival”)在媒体。
FeeRbActUnknownBlockReorg
预处理程序开关,以启用或禁用对媒体中任何未知块的附加重组。只允许CB(客户块)启用此功能,因为这将影响部门重组的阈值,使其达到特定的安全级别。ASW属性必须停用(默认)
FeeRbActUnknownBlockReorgCacheSize
置处理器开关,以启用或禁用在重组中对任何未知块的附加优化。只有CB(客户块)和全局加热炉功能(FeeRbActUnknownBlockReorg = TRUE)允许启用该功能。ASW必须被禁用(默认)
FeeRbAddonsCCAS
预处理程序切换到启用或禁用附加组件的CC-AS(“强制的读取“,”停止模式“,”写地址为基础”)。提示:为了使用rba_FeeAddOnAS_ForcedRead功能,还需要激活收费配置标签“FeeRbReadForce”。
FeeRbFsSelect
指定flash上数据的实际布局。
FeeRbMachineType
如果没有MCU模块,则需要配置控制器类型。
MCU_RB_IFX_UC1_DEV2_B,
MCU_RB_IFX_UC1_DEV3_C,
MCU_RB_IFX_UC1_DEV3_D,
MCU_RB_IFX_UC1_DEV4_B,
MCU_RB_IFX_UC1_DEV4_40NM_A,
MCU_RB_IFX_UC1_DEV5_40NM_A,
MCU_RB_IFX_UC1_DEV5_40NM_B,
MCU_RB_JDP_UC1_DEV1,
MCU_RB_JDP_UC1_DEV2_C2,
MCU_RB_JDP_UC1_DEV3_C2,
MCU_RB_JDP_UC1_DEV4_C2,
MCU_RB_ST_UC1_DEV3PLUS_C1,
MCU_RB_ST_UC1_DEV3_40NM_C3,
MCU_RB_MPC56XX_LPD,
MCU_RB_MPC56XX_KOMODO,
MCU_RB_MPC56XX_BOLERO,
MCU_RB_SPC56XL_70XX,
MCU_RB_SPC56XL_70XX_64K,
MCU_RB_ST_CHORUS_1M_C1,
MCU_RB_ST_CHORUS_2M_C1,
MCU_RB_ST_CHORUS_4M_C1,
MCU_RB_V850FX4_512K,
MCU_RB_V850FX4_768K,
MCU_RB_V850FX4_1M,
MCU_RB_V850FX4_1_5M,
MCU_RB_V850R1X_256K,
MCU_RB_V850R1X_256K_REDUCED,
MCU_RB_V850R1X_512K,
MCU_RB_V850R1X_512K_REDUCED,
MCU_RB_V850R1X_1M,
MCU_RB_V850R1X_1M_REDUCED,
MCU_RB_ZYNQ_V3H_SERIAL,
MCU_RB_RCARH3_SERIAL,
MCU_RB_RCAR_V3M_SERIAL,
MCU_RB_RCAR_V3H_SERIAL,
MCU_RB_STV0991,
MCU_RB_RH850P1XC_DEV3,
MCU_RB_RH850P1XC_DEV3_6S,
MCU_RB_RH850P1XC_DEV3_REDUCED,
MCU_RB_RH850P1XC_DEV3_REDUCED_6S,
MCU_RB_RH850P1XC_DEV3_HSM,
MCU_RB_RH850P1XC_DEV4,
MCU_RB_RH850P1XC_DEV4_REDUCED,
MCU_RB_RH850P1XC_DEV4_HSM,
MCU_RB_RH850P1XC_DEV5,
MCU_RB_RH850P1XC_DEV5_REDUCED,
MCU_RB_RH850P1XC_DEV5_HSM,
MCU_RB_PC, MCU_RB_PC_4SEC_64KB,
MCU_RB_PC_8SEC_16KB,
MCU_RB_PC_6SEC_128KB,
MCU_RB_PC_8SEC_64KB,
MCU_RB_EVE_AUTOSAR,
MCU_RB_MANUAL_CFG
FeeRbMaintainRedundantBlocks
前置处理器切换启用/禁用API来维护冗余块。提示:如果使用NvM,这个开关必须设置为“true”
FeeRbPageBufferSize
用于flash驱动程序和Fee之间通信的缓冲区大小。如果没有此参数的配置值,则将自动使用默认值(1024)。
FeeRbReadForce
前置处理器开关,启用和禁用强制读取功能。
FeeRbSectorTable
此容器包含目标列表不支持的目标信息。当用户选择该选项时,必须配置此容器MCU_RB_MANUAL_CFG FeeRbMachineType
FlsRbPageSize
此扇区的页大小(以字节为单位)(HW/目标相关配置)
FeeRbFastCacheInitActive
切换到启用和禁用快速缓存初始化。
FeeRbHeaderRecheckActive
切换到启用和禁用标题重新检查,必须设置为真只有flash类型与未定义的擦除模式
FlsRbErasedValue
此参数定义数据Flash的擦除值(HW/目标相关配置)
无
[1] AUTOSAR_SWS_FlashEEPROMEmulation.pdf
[2] RTA-BSWReferenceGuide.pdf