• 122查看
  • 0回复

[芯片硬件] 什么,恩智浦的flash模拟EEP是这么玩的?

[复制链接]

该用户从未签到

发表于 28-3-2024 09:35:24 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


摘要

本篇笔记主要记录基于恩智浦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模拟EEP是这么玩的?w1.jpg

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

    更新数据必须按块擦除。

    数据不能频繁更新。

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

什么,恩智浦的flash模拟EEP是这么玩的?w2.jpg
   
什么,恩智浦的flash模拟EEP是这么玩的?w3.jpg

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

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

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

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

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

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

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

这里还要注意一下ECC

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

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

更新和追加数据

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

    将记录状态写为无效$invalid

    写入ID和大小

    写入其余数据

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

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

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

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

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

读取记录

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

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

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

寿命计算

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

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

总结

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

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 27-4-2024 17:19 , Processed in 0.414741 second(s), 30 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.