1. FLS原理
- 术语解释:
FLS(Flash Layer Service):FLS模块是Flash的驱动,负责执行具体的Flash擦写、读取等操作。它直接与Flash硬件交互,为上层应用提供对Flash存储的访问接口。
FEE(Flash EEPROM Emulation):FEE模块的全称是Flash EEPROM Emulation,即Flash模拟EEPROM。它的主要目的是通过算法实现Flash块的交替擦写,以延长Flash的寿命,并解决Flash擦写寿命相对较短的问题。
flash操作中有两个术语: block和page。
block:是flash最小的擦除单位,
page:则是flash写入的最小单位。
-
Autosar中两者的层级关系
其中,CDD可以直接调用FEE模块以对Dflash进行读写操作 -
Flash以及EEPROM原理
1.读不消耗储存器寿命,擦写消耗储存器寿命
2.失效时表现为擦除不干净、读取不了解结果
3.FLash:读写以页为最小单位,擦除以块为最小单位;EEPROM读写以字节为最小单位,擦除以页为最小单位;
4.对储存器执行写1的操作需要先擦除
链接: NAND FLASH擦写原理
链接: EEPROM工作原理
Flash与EEPROM的储存结构:
由于EEPROM存储结构中添加了选通管,因此提高了操作精度,但是也牺牲空间,难以集成,所以EEPROM体积较大,容量较小;Flash使用3D堆叠技术可以做到容量极大,体积极小;
读取:
Flash存储器是一种非易失性存储器,其读取原理主要基于电荷捕获技术。具体来说,Flash存储器的基本单元是一个带浮栅的MOS管。
在读取数据时,Flash存储器通过施加一个较低的电压到控制栅极,这个电压不足以改变浮栅中的电荷状态,但足以使MOS管根据浮栅中的电荷状态(即数据位)而导通或截止。通过检测MOS管的导通状态,Flash存储器可以读取存储在其中的数据。
擦除(0——>1):
写入(1——>0):
2. EB配置以及接口应用
EB配置步骤:
1.FlsConfigSet
2.FlsGeneral
3.Sector
1.FlsConfigSet:
其中FlsCallCycle参数为执行最大超时时间;
2.FlsGeneral:
3.Sector:
接口应用步骤:
1.Fls_17_Dmu_Init(&Fls_17_Dmu_Config); 初始化Fls
2.Fls_17_Dmu_MainFunction(); 将Fls主函数放置对应的线程
3.Fls_17_Dmu_Erase()擦除函数接口 Fls_17_Dmu_Write()写函数接口 Fls_17_Dmu_Read()读取函数接口
接口名 | 传入参数 | 说明 | 返回参数 | 说明 |
---|---|---|---|---|
Fls_17_Dmu_Init() | ConfigPtr | EB生成配置指针 | void | - |
Fls_17_Dmu_Erase() | uint32 TargetAddressconst; uint32 Length | 操作目标地址(基于0xaf000000偏移);操作长度 | Std_ReturnType | 执行状态 (0 ok ;1 not ok) |
Fls_17_Dmu_Write() | uint32 TargetAddress;uint8 *SourceAddressPtr;uint32 Length | 操作目标地址(基于0xaf000000偏移);待写数据buffer指针;操作长度 | 同上 | 同上 |
Fls_17_Dmu_Read() | uint32 SourceAddress;uint8 *TargetAddressPtr;uint32 Length | 操作源地址(基于0xaf000000偏移);待读取苏剧buffer指正;操作长度 | 同上 | 同上 |
Fls_17_Dmu_GetStatus() | void | - | MemIf_StatusType | 同步返回驱动当前状态 |
Fls_17_Dmu_GetJobResult() | void | - | MemIf_JobResultType | 上一次作业结果 |
3.总结
本文为博主个人学习总结记录,如有不正,欢迎指正