随着MCU外挂EEProm成本和设计优化,行业内主流使用Flash模拟EEprom。英飞凌MCU芯片的FEE在PFLASH(DFlash0)12M存储进行模拟EEPROM功能,擦除、读、写在FLASH中进行,DFlash1预留给HSM。
1 FLS、FEE配置
FEE驱动可以配置为以下三种模式:
FEE_DOUBLE_SECTOR_AND_QUASI_STATIC_DATA NVM和QS区
FEE_DOUBLE_SECTOR_DATA_ONLY 双扇区NVM
FEE_QUASI_STATIC_DATA_ONLY 准静态区QS
注:Fls地址0xaf00 0000,切除空间0x100 000
注: FeeBlockTypeConfigured选项设置
示例1: FEE中block_1中配置32字节的空间,存储0x5A数据。
示例2: FEE中block_2中配置54字节的空间,存储0xA5数据。
注意:
对于NVM普通数据(双扇区),FeeBlockTypeConfigured应该设置第一个。
对于QS配置,FeeBlockTypeConfigured应该设置为FEE_QUASI_STATIC_DATA_ONLY。
如果既有NVM又有QS区,选择第二个,如果将FeeBlockTypeConfigured设置为FEE_DOUBLE_SECTOR_AND_QUASI_STATIC_DATA,那么在FeeBlockConfiguration部分中需要配置普通双扇区和QS块。FeeQsBlockAddress地址仅适用于QS块。因为这个地址是在FLS中配置的。此地址不应与NVM双扇区大小地址重叠。此外,在配置QS块地址(FeeQsBlockAddress)和QS块大小(FeeBlockSize)时,用户必须确保它们不会违反在FLS中配置的QS扇区大小。不同QS区地址也不应该重叠,应该是连续的。
如果FeeBlockTypeConfigured配置为FEE_DOUBLE_SECTOR_DATA_ONLY,则只应配置正常的双扇区数据块。如果选择FEE_QUASI_STATIC_DATA_ONLY,则只应该配置QS数据块。
与在FEE中完成的配置相对应的配置也必须在FLS中完成。可以这样做:
1)进入FLS配置,配置扇区为sector_0普通双扇区和sector_1为QS扇区。
2)配置每个扇区的大小。
3)适当地给出两个扇区的起始地址:NVM的起始地址写0,QS的起始地址为NVM的sectorsize *2 + 0.
注意,QS扇区地址应该在正常双扇区地址的扇区之后。QS扇区起始地址的计算方法如下:
QS扇区起始地址=NVM双扇区算法中一个Fls扇区的扇区大小x2+NVM起始地址
TC3xx芯片中,PFlah中一个Page为32 Bytes,DFLash中一个Page为8 Bytes
根据上面的截图:
NVM双扇区算法的一个扇区大小= 507904
QS扇区起始地址= 2 × 507904= 1015808
在使用普通双扇区的情况下,QS扇区大小的计算可以总结如下:
QS扇区大小=总闪存大小-(双扇区算法的一个扇区大小x2)
注意:
QS的FlsSectorStartaddress不应该与NVM块重叠。
如果feblocktypeconfigure配置为FEE_DOUBLE_SECTOR_DATA_ONLY,那么应该只配置一个FlsSector, FlsNumberOfSectors的值为2。
如果配置为FEE_QUASI_STATIC_DATA_ONLY,则FlsNumberOfSectors只有一个值为1的FlsSector。因此,在上面的例子中,应该配置值为1的FlsSector_0。
如果feblocktypeconfig被配置为FEE_DOUBLE_SECTOR_AND_QUASI_STATIC_DATA,那么FLS配置中的扇区顺序应该是:FlsSector_0应该配置为2个扇区,然后FlsSector_1应该配置为扇区数量的值为1。
采用DFlash进行EEPROM仿真的算法是双扇区算法。
2 API接口调用
用户必须注意将英飞凌FEE与已配置的FLS模块(FLS配置参数:FlslfxFeeUse)链接起来,以专门支持英飞凌对FEE的实现。这是必需的,因为FLS模块实现了供英飞凌FEE使用的其他非autosar api,这些api只有在FLS配置为支持英飞凌FEE时才可用。
1) Writing blocks close to GC threshold
当写入新数据块时,将WL中存在的前一个数据块的大小添加到新传入块的大小中,并将结果与阈值进行比较。如果可能超出阈值,则将尝试将新的传入块写入下一个连续的字行。如果确定即使在这种情况下也会突破阈值,则会触发GC。这个决定的结果是,接近阈值的Flash内存中有几页没有被利用,并且GC可能比预期的更早被触发。这种行为的发生取决于Flash中已经存在的接近阈值的块的大小和请求写入的块的大小。
2) FEE_E_GC_TRIG DEM
在GC期间,如果要复制的块的总大小大于扇区中的可用空间(违反阈值),则会触发FEE_E_GC_TRIG DEM并引发非法状态通知。用户必须确保块大小和阈值的配置是明智的。
3) Data pointer for Fee_Read and Fee_Write API
在读写API中传递的数据指针需要内存对齐(字对齐)。
4) Quasi Static data blocks
准静态数据块是指在ECU生命周期内不经常更新的大数据块(4K的整数倍)。NVM不容易适应处理准静态数据。因此,所有标准的NVM块都是通过NVRAM管理器处理的。然而,准静态数据将由准静态管理器处理。
准静态管理器是由用户实现的对准静态数据的管理。准静态数据块使用FEE的读写api进行读写。FEE还提供了其他api,例如Fee_17_EraseQuasiStaticData,它们专门用于QS数据。
只有NVM数据存在:
FeeBlockTypeConfigured = FEE_DOUBLE_SECTOR_AND_QUASI_STATIC_DATA
存在NVM和准静态数据:
FeeBlockTypeConfigured = FEE_QUASI_STATIC_DATA_ONLY
只有准静态数据存在:
3 NVM空间
1) PFLASH共16MB,分为Cache和Noncache区
2) PF分为6个Bank
3)DF分为2个Bank
扇区Physical Sector(物理扇区)是内存的一个物理区域与另一个内存区域隔离。一个物理扇区包含多个逻辑扇区。Logical Sector(逻辑扇区):Flash擦除的最小单位。一个逻辑扇区可以包含多个wordline。
PF一个Bank分为3MB的有3个物理sector,1MB的有1个物理sector;每个物理sector分为64个逻辑sector,每个逻辑sector空间16KB。
DF的逻辑扇区的划分有两种模式:Single Ended Mode(单端模式)和Complement Sensing Mode。DF0分为256个逻辑扇区。
Single Ended Mode:每个逻辑扇区的大小为4Kbyte;
Complement Sensing Mode:每个逻辑扇区的大小为2Kbyte。
PFlash: 最小擦除逻辑sector16 KByte
DFlash: 最小擦除逻辑sector4 Kbyte
Page为可编程的最小单元,在英飞凌TC3xx中PFlash一个page大小为32Byte,DFlash一个page为8Byte。
标签:双扇,QS,FEE,FLS,配置,扇区,NVM From: https://blog.csdn.net/wklweiran/article/details/142977733