1. 概述
    1. 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。
  1. 中断路由器由IRQ驱动程序或用户软件配置。中断模式是在不使用英飞凌FEE的情况下使用FLS。英飞凌FEE仅支持轮询模式,因此不支持中断模式。
  2. flsloader和FLS驱动程序使用DMU IP模块。FLS在运行时使用,FLSLOADER驱动在引导期间使用。因此,对DMU寄存器的访问不是并发的。

 

  1. 依赖资源

 

  1. 详细配置

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 中是软件自动生成的版本号默认值,用户无需修改,保持默认即可。

posted on 2022-12-28 18:42  lance9527  阅读(1583)  评论(0编辑  收藏  举报