AUTOSAR FEE学习

  • 前言

    FEE,即Flash EEPROM Emulation,指使用MCU片上的Flash来模拟EEPROM功能,实现数据的可掉电存储。相比于传统的外挂存储器,使用模拟EEPROM具有更快的访问速度、更简单的PCB设计、更强的抗干扰能力以及对OEM/TireN来说很重要的一点:更低的成本控制,毕竟能用一块芯片解决的问题就不会用两片。

    本文主要结合过往项目开发经验记录下自己用过的一种模拟EERPOM存储机制。该机制的核心思想为:将Flash划分为多个Sector,当剩余空间不足时,将最早写满的Sector内容拷贝到当前使用的Sector中,然后将最早的Sector擦除以释放空间。

    这种方法只会擦除已写满的Sector并且每个Sector机会相同,使整个存储空间保持一个比较均匀的擦写频率,避免了对局部地址/空间反复擦写,过早耗尽Flash寿命。

  • Sector

  • Sector State

    为了便于管理,Sector定义了五种工作状态UNDEF、ERASED、USED、FULL和REQUEST TO ERASE,各状态之间转换流程如下图所示:

    UNDEF —— 未定义状态,比如MCU芯片首次使用Flash为空的时候,或者Flash被擦除的时候,准确来讲只要没有有效的sector header信息都认为是UNDEF;

    ERASED —— Sector已经成功擦除,准备好被写入;

    USED —— Sector已经写入了数据,并且后续可以正常写入;

    FULL —— Sector已经写不下新数据;

    REQUEST TO ERASE —— 请求擦除已满的Sector,如果擦除成功会变为ERASED状态,如果擦除异常,比如Sector只擦除一部分(头部)信息后被打断,就会进入UNDEF状态。

    为了记录上述这些状态信息,Sector在头部预留了一段空间专门用来存放头部信息(Sector Header)。

  • Sector Header

    Sector Header的定义如下:

    Pattern —— 固定值0xCAFE;

    Ident —— 存放Sector State:

            0x00:UNDEF

            0x01:ERASED

            0x02:USED

            0x03:FULL

            0x04:REQUEST TO ERASE

            0x05:START(可以当作USED,只是Content域存放内容不同)

    Content —— Sector change counter,不同Sector取值不同(依次累加),可以表明Sector的使用次序,适用于ERASED、USED和FULL,REQUEST TO ERASE/START不适用,前者取值为0,后者存放地址信息(低三个字节),用来指明从Sector中何处开始可以写入数据块;

  

  • 6
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值