在嵌入式软件系统中,管理非易失性的数据存储,如在系统启动时,从非易失性存储器中读取一些关键数据,在系统关闭阶段,同步应用程序RAM区的数据到非易失性存储器中,是一项十分必要的工作。
目前行业内用的最广泛的非易失性存储设备主要是EEPROM和FLASH ,其均有在ECU掉电后,存储的数据不丢失这样的属性。
但是EEPROM和Flash由于设计特性和制造工艺的不同,各自都有相应的优势,对应的也有相应的劣势。
对于EEPROM:
优点:
- 以一个Byte为单位写入和擦除的,使得EEPROM擦写比较独立自由,也不会影响其他数据。
- EEPROM的擦写寿命(PE cycles)是比较高的,达百万次。
缺点:
- 容量小
- 价格贵
- 读/写速度慢,其读写速度慢的主要原因是受限于IIC和SPI的通信速度
比如芯片AT25040(SPI Serial EEPROMS), 其最高时钟频率2.1MHZ
对于Flash
优点:
- 容量大
- 价格便宜
- 读/写速度快 ,对于位于uC内部的Flash,由于CPU的主频一般都是百万兆HZ,所以CPU访问Flash的速度更快
缺点
- 擦写寿命很短(通常只有十万次PE cycles)
- Flash的最小擦除单位是Logical Sector, 最小编程(写)单位是Page, 一般一个扇区(sector)包括了多个页(page)
如在TC3xx中,对于Pflash,一个Page = 32 Bytes; 而对于Dflash,一个Page =8 Bytes。
在汽车ECU中,需要在下电时保存的数据一般比较多,如发生故障时的DTC和相应的冻结帧,但是EEPROM内存比较小,价格昂贵,而修改Flash中存储的值需要擦除整个内存块,Flash使用寿命短,频繁更新数据势必会降低Flash的使用寿命。
为了降本增效,工程师们就想出了一个结合EEPROM和Flash优点的存储方法,采用uc内部的DFLASH 模拟EEPROM,来存储ECU下电时需要保存到非易失性存储器中的数据,在AUTOSAR软件架构中,存储协议栈可以实现这部分功能。