AutosarMCAL开发——基于EB FEE驱动

1. FEE原理

在Fls解析文章中介绍了Flash与EEPROM储存器的区别,本文将介绍FEE具体实现原理。
FEE模块,全称Flash EEPROM Emulation Module,旨在使用Flash模拟EEPROM以增加使用寿命。
术语解释
page:Flash最小读写单元,TC3xx系列一般为8byte
logic Section(Block):由若干个page组成的块,Flash擦除的最小单位,TC3xx系列一般为2K或4K
Physical Section(Bank):由若干个块组成的单元,自定义大小
DFlash:若干个Bank组成整个DFLASH储存器
其关系如下图所示
在这里插入图片描述

  • Flash模拟EEPROM
    Flash与EEPROM的主要区别在于EEPROM支持按字节读写,但是Flash最小只能按页读写,这在硬件上已经确定了。那为什么还要说模拟EEPROM呢,我的理解是模拟的EEPROM实际上是模拟EEPROM做内存管理机制,以提高储存空间的使用率以及寿命。为了实现上述目标,衍生处理以下两个机制
    1.数据块标识机制:牺牲部分logic Section中的空间用于标识数据状态,以便进行数据管理
    在这里插入图片描述
    其中,每次向logic Section(Block)中存储数据段时,并不会覆盖之前的数据,因为对于已有数据的内存块写数据需要先擦除。旧数据与新数据均保留在同一个logic Section(Block)中,为了避免混淆,对每个数据段都做标识旧数据设置为Invaild新数据设置为Vaild,读取只读取Vaild数据,这样就只剩下一个问题,那就是如何清除旧数据。

链接: 如何将Flash模拟成EEPROM (EEPROM Emulation)
2.换页机制(GC):
换页机制的目的有两个,1.保证总能由新的块以供使用 2.清楚多余旧数据
在这里插入图片描述
其步骤为:
1.将写满数据的的扇区copy至新的扇区,只copy标记为Vaild的数据段;
2.将旧扇区整块擦除
3.如此循环往复

至此,原来我们想要修改储存在flash中的某个数据段需要将整个块擦除在写入新数据,费事且会造成部分块频繁擦写提前损坏;而采用FEE则解决了上述问题,极大延长了Flash的使用寿命。

2.EB配置以及接口应用

EB配置步骤
1.通过Fls配置扇区
2.FEE设置
2.FEE配置数据块信息

1.通过Fls配置扇区
在这里插入图片描述
在这里插入图片描述
2.FEE设置
在这里插入图片描述
在这里插入图片描述

2.FEE配置数据块信息在这里插入图片描述

接口函数调用步骤
1.Fee_MainFunction();将FEEmainfunc放置所需task
2. Fee_Write( );Fee_Read();Fee_GetStatus();Fee_GetJobResult();

接口名传入参数说明返回参数说明
Fee_Write( )uint16 BlockNumber;uint8 * DataBufferPtrFEE block id;待写入数据buffer指针Std_ReturnType执行状态 (0 ok ;1 not ok)
Fee_Read()uint16 BlockNumber;uint16 BlockOffset;uint8 * DataBufferPtr;uint16 LengthFEE block id;读取数据偏移值;读取数据buffer指针;数据长度Std_ReturnType执行状态 (0 ok ;1 not ok)

3.总结

本文为博主个人学习总结记录,如有不正,欢迎指正

  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值