单片机技术网|技术阅读
登录|注册

您现在的位置是:单片机技术网 > 技术阅读 > 什么,恩智浦的flash模拟EEP是这么玩的?

什么,恩智浦的flash模拟EEP是这么玩的?

摘要


本篇笔记主要记录基于恩智浦MPC5744P的Flash模拟EEPROM存储参数和数据的算法,对官方给出的方案深入学习,并可以添加一些扩展内容。


准备工作

  • 安装S32DS for PA, 因为我们在S32DS下开发MPC5744P。

  • 安装S32DS 的SDK,  我们使用最新版3.0.3

  • EEPROM

    EEPROM (electrically erasable programmable read only memory)

    因为我们的板卡没有外部EEPROM,必须使用内部Flash来模拟, MPC5744P有内部DFlash 可以用来模拟EEPROM,计划分为四部分来存储设计,1,系统参数,2,标定参数,3,历史记录,4,故障记录

    MPC5744P 片上可以用来模拟EEPROM 的地址范围如下图所示,总共96Kb,可以供我们使用。注意表黄色部分取值范围。

    使用Flash模拟EEPROM,主要有两个问题,

  • 更新数据必须按块擦除。

  • 数据不能频繁更新。

  • 但是NXP提供一种算法可以解决这个问题,在flash里建立一种类似于文件系统的记录来解决这种问题。


       

    如果数据长度是固定长度的则上方右图变形为下图

    这种记录算法简单说明如下


    MPC5744P这种类似于文件系统的记录结构如下

    包含两部分,Metadata Segment 和Data Segment 。



    这里还要注意一下ECC

    更新和追加数据

    追加和更新数据记录可以分四步完成

  • 将记录状态写为无效$invalid

  • 写入ID和大小

  • 写入其余数据

  • 将记录状态更改为有效$valid.

  • 记录状态有以下几种取值。$empty为擦除后的状态。


    这里给出一个例子说明记录。

    读取记录

    这里主要是查找记录实现,需要找到要读取的记录数据,通过查找算法,寻找到ID符合并且是最近的一次有效记录,因为可能存在多个同一ID的数据,需要找到最新的。

    寿命计算

    可以使用官方工具进行设计的计算,可以根据自己的实际配置参数进行计算评估,如果是绿色就证明合理,如果报红色就证明不合理,需要调整。

    总结

    该算法是NXP的专利,可以在NXP的片子上使用,巧妙的解决了Flash存储的问题,并且解决了寿命的问题。利用数据记录这种类似文件系统的格式,其中还设计到记录的查找算法,分固定长度和变长度。