-
概述
- FEE驱动程序通过标准服务和定义良好的配置根据AUTOSAR提供Flash EEPROM仿真。此外,还提供了客户特定的功能,如原始Flash处理、准静态(QS)数据块支持、未配置数据块支持、擦除暂停恢复。针对第二代AURIXTM硬件,DFlash0 EEPROM内存区域被FEE驱动程序专门用于提供模拟EEPROM功能。特定于dflash的操作,如擦除、读取和写入,都是在FLS驱动程序中实现的。FEE不使用DFlash1。DFlash1为HSM预留。FEE驱动程序是作为Post-Build变体交付的,因为FEE功能不仅可用于运行时应用程序,还可用于引导代码。
注意:准静态数据区有500个擦除/写入循环的限制。
- FEE驱动程序实现从FLS驱动程序调用的回调函数。这些功能将在配置FLS驱动程序时配置。FEE驱动程序通过可配置的通知功能报告Job的完成情况和错误。用户可以在配置FEE模块时配置这些功能。
- 依赖硬件
- 详细配置
container:FeeBlockConfiguration 中包含fee驱动中添加的各数据块的配置参数;
FeeBlockNumber 用于指定fee驱动中分配的各存储块的序号,软件自动生成,从1开始计,须小于FeeMaxBlockCount值,本例中创建了3个块,因此序号为1,2,3;
FeeQsBlockInstances 用于指定Qs大块中的小块个数,前提是大块应该是Qs类型的块,本例中块0 和块1 都是NvM类型的数据块,因此这两块的此项值必须为0;块2 是Qs类型的块,因此可以指定此QS大块中包含的小块个数,本例中只设置了一个小块,因此块2 中的此项值为1;更多详细信息请参阅原始文档;
FeeQsBlockAddress 用于指定各块的起始地址,这个地址也是一个DFLASH0中的相对偏移地址,不是真实物理地址,虽然项目名中带有Qs,但不论Qs还是Nvm类型的数据块,均由此项设置起始地址。由于在Fls的配置文档中我们设置NvM块的相对起始地址是0,块大小是0x60000,因此这里NvM类型数据块的相对地址取值范围是[0, 0x60000);本例创建了两个NvM的小块,起始地址分别是0x10000和0x20000;Fls配置文档中Qs类型数据块的相对起始地址是0xc0000,大小是0x40000,因此这里Qs类型数据块的相对地址取值范围是[0xc0000, 0x100000);本例中创建了一个Qs小块,起始地址是0xc0000;因此本例中3个数据块此项的值依次是0x10000,0x20000,0xc0000;
FeeQuasiStaticManager 用于指定数据块存储的数据类型,选择true表示此块是Qs块,选择false表示此块是NvM块,因此本例中的3个块此项的值依次是false,false,true;
FeeBlockSize 用于指定块大小,此值须是4096的整数倍;
FeeImmediateData 用于指定数据类型,正常数据设置为FALSE,即时数据设置为TRUE,默认使用false即可;
FeeNumberOfWriteCycles 定义特定逻辑块的写周期计数;它表示一个特定逻辑块可以被写入的最大次数;值为0表示该块不受任何限制,可以根据用户的需要任意写入次数;
FeeDeviceIndex 由于fee是在fls的基础上进行的配置,因此这里需要引用Fls的配置;
container:FeeGeneral 中包含fee驱动的通用配置;
FeeDevErrorDetect 是否启用开发错误侦测api,本例中禁用;
FeeSafetyEnable 是否启用安全模式api,本例中禁用;
FeeInitCheckApi 是否启用初始化检查api,默认禁用;
FeeMainFunctionPeriod 设置主函数调度周期值,使用默认值10ms;
FeeNvmJobEndNotification 用于添加NvM块Job传输结束后的回调通知函数,并由用户在代码中实现同名函数;
FeeNvmJobErrorNotification 用于添加NvM块Job传输错误后的回调通知函数,并由用户在代码中实现同名函数;
FeeQsJobEndNotification 用于添加Qs块Job传输结束后的回调通知函数,并由用户在代码中实现同名函数;
FeeQsJobErrorNotification 用于添加Qs块Job传输错误后的回调通知函数,并由用户在代码中实现同名函数;
FeePollingMode 是否启用模块的轮询模式,由于英飞凌FEE的实现仅在非轮询模式下工作。因此,默认值设置为FALSE,且不可变更;
FeeSetModeSupported 是否启用FEE模块的SetMode功能,本例中禁用;
FeeVersionInfoApi 是否启用版本信息api,默认禁用;
FeeVirtualPageSize 用于指定对逻辑块进行对齐的字节大小,此值默认是8且不可变更;
FeeBlockTypeConfigured 用于指定数据块类型配置分类,支持3种模式,分别是FEE_DOUBLE_SECTOR_AND_QUASI_STATIC_DATA ,
FEE_DOUBLE_SECTOR_DATA_ONLY 和 FEE_QUASI_STATIC_DATA_ONLY;本例中既支持NvM又支持Qs,因此选择FEE_DOUBLE_SECTOR_AND_QUASI_STATIC_DATA;
container:FeePublishedInformation 中包含fee驱动的信息,这里采用默认值即可;
container:FeeIfxSpecificConfig 中包含fee驱动适用于英飞凌的特殊配置;
FeeThresholdValue 用于指定触发垃圾收集/扇区更改的阈值,默认200;
FeeMaxBlockCount 用于指定fee中分配块总数的最大值,跨配置共享的块只计算一次,且此值须大于FeeBlockNumber中的最大值;
FeeUseEraseSuspend 是否启用擦除挂起的特性,默认禁用;
FeeStateVarStructure 此参数用于提供包含特定于fee驱动程序的整个全局变量的结构的名称,用户可以修改(建议使用默认值),并在代码中以静态全局变量的形式存在;
FeeUnConfigBlock 用于指定在GC期间是否应将未配置的块复制到新扇区或忽略;选择FEE_UNCONFIG_BLOCK_IGNORE表示忽略;选择FEE_UNCONFIG_BLOCK_KEEP表示复制;
FeeUnConfigBlkOverflowHandle 用于指定当缓存表溢出时fee驱动的行为,选择FEE_CONTINUE表示未配置的块不能容纳在缓存表在GC后丢失;选择
FEE_STOP_AT_GC表示在GC过程中FEE进入伪非法状态,只允许读操作,不允许写操作;
FeeGcRestart 用于指定GC重启点,选择FEE_GC_RESTART_INIT表示在fee初始化完成后进行GC重启;选择FEE_GC_RESTART_WRITE表示在Job被请求时进行GC重启;
FeeGetCycleCountApi 是否启用获取周期计数api,默认禁用;
FeeEraseAllEnable 是否启用全部擦除功能,默认禁用;
FeeGetPrevDataApi 是否启用获取先前数据api,默认禁用;
FeeCancelAllApi 是否启用取消全部操作api,默认禁用;
FeeMaxBytesPerCycle 用于指定在读、写和比较操作期间,在一次fee主函数调用中处理的最大数据字节数;
FeeNvmIllegalStateNotification 用于添加NvM块处于非法状态时的回调通知函数,并由用户在代码中实现同名函数;
FeeQsIllegalStateNotification 用于添加Qs块处于非法状态时的回调通知函数,并由用户在代码中实现同名函数;
FeeQsHardenErrorNotification 用于添加Qs块硬件错误时的回调通知函数,并由用户在代码中实现同名函数;
FeeVirginFlashIllegalState 是否启用检测原始Flash (DFlash0)的行为,默认禁止;
container:FeeDemEventParameterRefs 中包含fee驱动涉及的诊断事件集合,需要在Dem中配套设置,本例中关闭了诊断事件管理,因此使用默认值,均无须配置;
container:CommonPublishedInformatica 中是软件自动生成的版本号默认值,用户无需修改,保持默认即可。