-
概述
- FLS驱动程序根据AUTOSAR为DFlash 0的初始化、读、写和擦除提供了定义良好的配置和标准服务。除此之外,还提供了一些非autosar服务,例如Fls_17_Dmu_CompareWordsSync, Fls_17_Dmu_CancelNonEraseJobs, Fls_17_Dmu_VerifyErase,Fls_17_Dmu_VerifySectorErase, Fls_17_Dmu_GetNotifCaller等等。用户通过FLS驱动程序获得对底层DFlash0的封装访问。FLS驱动程序的作用域仅限于DFlash0 Bank。
- 中断路由器由IRQ驱动程序或用户软件配置。中断模式是在不使用英飞凌FEE的情况下使用FLS。英飞凌FEE仅支持轮询模式,因此不支持中断模式。
- flsloader和FLS驱动程序使用DMU IP模块。FLS在运行时使用,FLSLOADER驱动在引导期间使用。因此,对DMU寄存器的访问不是并发的。
- 依赖资源
- 详细配置
container:FlsConfigSet 中包含fls驱动的详细配置;
FlsAcErase 用于指定执行擦除命令循环的RAM地址,在TC3xx中,Pflash和Dflash可以并行读取,不需要加载Dflash访问代码RAM,因此不使用此值,默认为0即可;
FlsAcWrite 用于指定执行写命令循环的RAM地址,在TC3xx中,Pflash和Dflash可以并行读取,不需要加载Dflash访问代码RAM,因此不使用此值,默认为0即可;
FlsCallCycle 用于指定fls主函数的调用周期,单位为秒,这里设置周期为10ms;
FlsDefaultMode 用于选择DFLASH0的默认读取模式,支持MEMIF_MODE_FAST和MEMIF_MODE_SLOW 2种模式,默认选择MEMIF_MODE_SLOW即可;
FlsJobEndNotification 用于添加Job传输结束后的回调通知函数,并由用户在代码中实现同名函数;
FlsJobErrorNotification 用于添加Job传输错误后的回调通知函数,并由用户在代码中实现同名函数;
FlsEraseVerifyErrNotif 用于添加擦除校验错误后的回调通知函数,并由用户在代码中实现同名函数;
FlsProgVerifyErrNotif 用于添加数据编程校验错误后的回调通知函数,并由用户在代码中实现同名函数;
FlsMaxReadFastMode 用于指定Fls驱动在快速模式下,一个周期内Job处理的最大读取字节数,FlsMaxReadFastMode配置的值应该大于FlsMaxReadNormalMode配置的值;
FlsMaxReadNormalMode 用于指定Fls驱动在正常模式下,一个周期内Job处理的最大读取字节数;
FlsMaxWriteFastMode 用于指定Fls驱动在快速模式下,一个周期内Job处理的最大写入字节数;
FlsMaxNormalMode 用于指定Fls驱动在正常模式下,一个周期内Job处理的最大写入字节数;
FlsProtection 用于指定需要保护的地址,由于fls驱动中不支持,因此使用默认值0即可;
FlsWaitStateRead 用于定义读访问的等待状态,使用默认值FLS_17_DMU_WAIT_STATE_READACCESS9即可;
FlsWaitStateErrorCorrection 用于指定错误纠正等待状态,使用默认值FLS_17_DMU_WAIT_STATE_ERRORCORRECTION1即可;
FlsDemEventParameterRefs 用于指定诊断事件的管理和引用,本例中并未使用;
FlsExternalDriver 用于指定外部fls器件的相关配置,fls驱动只使用片内DFLASH0,因此这里无需配置;
FlsSectorList 用于指定DFLAH0中各分区的布局信息以及各块存储的数据类型;本例中将DFLASH0分为两个大块,一块是FlsSector_NvM块,一块是FlsSector_QS块,分别用来存储NvM类型和QS类型的数据;
FlsNumberOfSectors 用于指定分区块使用NvM类型还是QS类型,因为NvM类型数据需要使用双扇区算法,因此此值为2表示此sector用作NvM块,存储NvM类型数据;此值为1表示此sector用作QS块,存储QS类型数据;
FlsPageSize 用于指定页操作的数据大小,默认8字节数据为一页,使用默认值即可;
FlsSectorSize 用于指定单个sector的大小,此值须小于DFLASH0物理存储的总大小的一半;同时注意如果将sector分配为NvM类型时,此值表示一个扇区的大小,而不是NvM块的总大小(NvM采用双扇区算法,一个NvM块中有2个小的sector);
FlsSectorStartAddress 用于指定此sector在DFLASH0中的开始偏移量,此值是相对偏移量值,不是真实物理地址值,此值须小于DFLASH0物理存储的总大小;
FlsSector_NvM块和FlsSector_QS块配置信息:芯片的DFLASH0总大小为0x100000,本例中FlsSector_NvM块分配了0xC0000,FlsSector_QS块分配了0x40000;因此NvM块的起始地址是0,QS块的起始地址是0xc0000,
NvM块中一个sector大小为0x60000,QS块中一个sector的大小为0x40000;
NvM类型存储块和QS类型存储块在DFLASH0中的布局和关系:
container:FlsGeneral 中包含fls驱动的通用配置
FlsAcLoadOnJobStart 在TC3xx中,Pflash和Dflash可以并行读取,因此不需要将Dflash访问代码加载到RAM中,因此此项不可编辑且使用默认值false即可;
FlsBaseAddress 用于指定fls驱动使用的DFLASH0外设的真实物理基础地址0xaf000000;
FlsBlankCheckApi 是否启用块检查api,默认禁用;
FlsInitCheckApi 是否启用初始化检查api,默认禁用;
FlsCancelApi 是否启用取消api,本例中启用;
FlsCompareApi 是否启用比较api,本例中启用;
FlsDevErrorDetect 是否启用开发错误侦测api,本例中禁用;
FlsRunTimeErrorDetect 是否启用运行时错误侦测api,本例中禁用;
FlsSafetyEnable 是否启用安全模式api,本例中禁用;
FlsIfxFeeUse 是否启用fee驱动,本例中启用,如果不用fee驱动则此处须设置禁用;
FlsDriverIndex 用于指定fls驱动的序号;
FlsGetJobResultApi 是否启用获取Job结果api,本例中启用;
FlsGetStatusApi 是否启用获取结果api,本例中启用;
FlsSetModeApi 是否启用设置模式api,本例中启用;
FlsTotalSize 用于指定DFLASH0的总大小,0x100000;
FlsUseInterrupts 是否启用fls中断,默认禁用;
FlsVersionInfoApi 是否启用版本信息api,默认禁用;
FlsInitApiMode 用于指定初始化api的运行等级为SUPERVISOR;
FlsRuntimeApiMode 用于指定运行时api的运行等级为SUPERVISOR;
container:FlsPublishedInformation 中包含fls驱动物理器件的电气参数信息;这些项都是不可编辑的,因此使用默认值即可,更多信息请参阅原始文档获取;
container:FlsIfxSpecificConfig 中包含fls驱动适用于英飞凌的特殊配置;
FlsStateVarStruct 此参数用于提供包含特定于fls驱动程序的整个全局变量的结构的名称,用户可以修改(建议使用默认值),并在代码中以静态全局变量的形式存在;
FlsUseEraseSuspend 用于启用或禁用fls擦除挂起和擦除恢复功能,默认禁用;
FlsEraseSuspendTimeout 用于指定擦除挂起超时时间,默认无须修改;
FlsIllegalStateNotification 用于设定非法状态的通知回调函数,并由用户在代码中实现函数定义;
container:CommonPublishedInformatica 中是软件自动生成的版本号默认值,用户无需修改,保持默认即可。
标签:启用,Fls,指定,EB,api,用于,驱动,NvM,fls From: https://www.cnblogs.com/lance9527/p/17011022.html