AUTOSAR存储 - FEE换页思想

点击订阅专栏不迷路


>>>>>>>>>>返回专栏总目录《AUTOSAR从入门到精通专栏》<<<<<<<<<<

关注文章末尾公众号或微信中搜索“AUTOSAR解忧杂货铺”,后台发送“资料”领取汽车电子入门资料,发送“加群”加入汽车电子交流群

一、Fee简介

在AUTOSAR的存储架构中,FEE(Flash EEPROM Emulation) 位于 ECU抽象层(ECU Abstraction Layer),是连接上层NVRAM管理器(NvM)与底层Flash驱动(Fls)的核心模块。主要作用是模拟 EEPROM 的行为,通过管理 DFLASH 区域的存储块,实现数据的高效存储和擦写操作,确保数据的完整性和可靠性,同时延长 Flash 的使用寿命。解决Flash物理特性(需先擦除后写入、块擦除寿命有限)与汽车数据频繁小粒度更新的矛盾,如下图所示

在这里插入图片描述

二、页、扇区、块

接下来让我对页、扇区和块有一个初步的了解。
在这里插入图片描述

  • Page:DFLASH最小编程单元,大小为8Byte。意味着即使只想写入1一个字节的数据,也会将对应的8字节数据重新写入。这就要求Fee软件层需要先读取出相应Page的数据,修改其中的1个字节,再将8Byte写入。

  • Logical Section:逻辑扇区,擦除的最小单元,由若干个Page构成,配置成2K,就相当于一次擦除最少擦除2K大小。

  • Physical Section:物理扇区,由多个逻辑扇区组成。

  • Data Flash:可以由多个物理扇区组成,我们也称物理扇区为BANK。

  • Block:块,软件意义上的定义。

在这里插入图片描述

数据最终会写入到物理扇区中。一个物理扇区写满后,就需要新的物理扇区来继续写入数据。然而,物理扇区的数量是有限的,不能无限增加新的 BANK。此外,对于同一个数据的多次写入,程序实际上只关心最后一次写入的有效性。因此,如何有效擦除无用数据并循环使用物理扇区成为解决问题的关键,这正是 FEE 换页机制的核心所在。

三、换页机制

1、换页由来

采用换页而不是覆盖有以下几点原因:

  • 首先,擦除的最小单元是逻辑扇区,而写入的最小单元是 Page。逻辑扇区比 Page 大很多。如果采用覆盖方式,意味着这个逻辑扇区中只能存在这一个 BLOCK,以避免擦除时将其他 BLOCK 的数据擦除掉。这会造成大量的空间浪费。

  • 其次,Data Flash 的擦除寿命有限频繁的擦除会减少 D-FLASH 的使用寿命。

  • 最后,擦除是最耗时的操作,每次 BLOCK 写入都要擦除原有数据再写入,会让效率非常低。

在这里插入图片描述

  • 第一次写入BLOCK1,Block 1 地址状态为有效
  • 第一次写入BLOCK2,Block 2 地址状态为有效
  • 第二次写入BLOCK1,将第一次写入的Block 1的地址状态置为无效,同时第二次写入的地址是有效。
  • 当APP请求读取BLOCK1的数据时,只会读取地址有效的数据。

因此,如果针对同一个BLOCK数据多次写入,并不是将原来的内容覆盖,而是在扇区中写入新的数据,而将老的数据置为无效。

2、换页概念

换页机制可能针对不同的芯片,有一些区别,但是大体原理都是一样,Fee(Flash EEPROM Emulation)模块通过对 Flash 空间整体划分为两个逻辑 Sector(逻辑扇区)来管理数据存储。这两个逻辑 Sector 中,一个作为 Active Sector(活动扇区),另一个作为 Inactive Sector(非活动扇区)。这两个 Sector 可以由一个或多个物理 Sector(物理扇区)组成。

在任意时间,只能有一个逻辑 Sector 作为 Active Sector。只有当 Active Sector 需要写入下一个 Block,或者达到配置的剩余空间时,才会进行翻页操作。

3、换页机制(Bank Swap)

AUTOSAR FLS/FEE的实现策略采用新增而非覆盖的方式,随着数据写入次数增多,当前物理扇区终将写满,需要新物理扇区,但物理扇区数量有限,不能一直有新BANK。同时,针对同一BLOCK多次写入时,对程序有用的数据只有最后一次,所以如何擦除无用数据并循环使用物理扇区是关键,这就引出了FEE/FLS换页机制(Bank Swap),如下图所示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 将所有有效数据拷贝到新的Bank
  • 将原来Bank 整体擦除
  • 将擦除的Bank 作为新的Bank 供下一次换页使用

Tip📌: 这是2个BANK的换页策略, 理论上可以有N个BANK,不过换页机制大体相近

在换页过程中,新的 BLOCK 写入请求的处理方式取决于请求的类型。具体来说,BLOCK 写入请求分为两种类型:

  • Immediate :对于 Immediate 写入请求,需要立即处理,打断当前的擦除动作,将新的数据写入到新的 Bank 中(某些 FEE Driver 可能会写入到“第三块 BANK”)。原则上,对于 Immediate 写入请求,数据不需要等待换页完成即可写入。
  • Normal:对于 Normal 写入请求,则需要等待换页过程完成之后才能进行写入,因此可能出现 BLOCK 写入时间较长的情况,在设计时需要考虑到这一点。

在 NvM Block 的配置中,如果 Priority 被设置为 0,则该 BLOCK 的请求会被视为 Immediate 请求,否则则为 Normal 请求。

四、总结

FEE(Flash EEPROM Emulation)作为 AUTOSAR 存储模块的核心软件层,负责管理 DFLASH(数据闪存)区域,需考虑 FLASH 使用寿命、BLOCK 稳定写入、换页时长、启动换页阈值、BANK 大小等关键功能设计,以确保数据存储的可靠性、安全性和高效性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值