前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >什么,恩智浦的flash模拟EEP是这么玩的?

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

作者头像
用户1605515
发布2022-01-11 09:00:00
7450
发布2022-01-11 09:00:00
举报
文章被收录于专栏:嵌入式程序猿嵌入式程序猿

摘要

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

准备工作

  1. 安装S32DS for PA, 因为我们在S32DS下开发MPC5744P。
  2. 安装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,主要有两个问题,

  1. 更新数据必须按块擦除。
  2. 数据不能频繁更新。

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

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

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

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

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

这里还要注意一下ECC

更新和追加数据

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

  1. 将记录状态写为无效$invalid
  2. 写入ID和大小
  3. 写入其余数据
  4. 将记录状态更改为有效$valid.

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

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

读取记录

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

寿命计算

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

总结

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-01-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式程序猿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备工作
  • EEPROM
    • 更新和追加数据
      • 读取记录
        • 寿命计算
        • 总结
        相关产品与服务
        对象存储
        对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档