一次失败的S32K模拟EEPROM经历

因为项目需要,使用S32K的内部flash模拟EEPROM使用。于是自然是查看数据手册,参考官方DEMO,准备操作。
根据手册内部flash map如下图
可见其中可配置存储分为FLEXNVM和FLEXRAM,根据手册解释:
FlexNVM为可配置非优化存储器,相当于flash。
FlexRAM 可配置RAM,可配置为传统RAM或者存储仿真EEPROM数据。所以当然优先选用FlexRAM来模拟EEPROM,而且NXP官方提供的DEMO也是选用FlexRAM来模拟,如下图所示:
FlexRAM可配置为2K和4K,并且可按字节擦写,擦除10K次,一切都和普通EEPROM的操作类似,仅看代码和测试过程是完美模拟了EERPOM,后面的工作就相对简单了,把官方驱动移植到自己的项目中,封装自己的接口,单步调试,功能测试OK,准备交代码了。
但是测试工程师在实测的时候发现,每块新板子的EEPROM功能初始化都卡住,返工检查发现,每块芯片跑代码的时候都会在第一次分区的时候卡主引起芯片重启,追踪发现,出现具体问题的代码是
FLASH_DRV_DEFlashPartition->FLASH_DRV_CommandSequence中flash状态在等待CCIF标记时引起重启。但是如果执行单步调试,则可以等待到该状态标记位,通过分区初始化,并且只要一次初始化成功,以后都不会影响功能。
找到问题后,立马去搜索问题解决办法,发现很多都有类似的问题,在DS中测试官方代码是没有问题的,但是移植到其他IDE下会出现重启故障,解决方案是将初始化代码重定位到RAM中去执行,我司项目使用的IAR,所以参考官方的ld文件修改自己的icf文件
添加自己的EEPROM段,但是实测发现仍然会有重启故障,折腾了两天后发现此路不同,所以放弃了在FlexRAM中模拟EEPROM。
在FlexNVM中模拟EEPROM,必须考虑对齐的问题,因为FlexNVM的擦除是按照Sector为单位的,芯片默认的Sector为2048,也就是一次擦除2K大小的存储,而写FlexNVM则是按照一个最小存储单元来写的,也就是按照4字节对齐写入,所以在做底层的时候必须考虑对齐的问题,在底层自动将不满4字节长度填满。相对来说没有FlashRAM灵活,但是由于这一块空间比较大(默认64K),所以也有自己的优点,只要做好底层,对于应用来说没有区别。希望各位大神做过FlexRAM模拟的发给我一份代码参考一下(邮箱148305178@qq.com),谢谢!

一次失败的S32K模拟EEPROM经历相关推荐

  1. freescale S12X微控制器 模拟EEPROM 快速上手指南

    嵌入式开发中常有存储一些下电后不丢失的数据的需求,RAM访问起来很方便,但是下电后数据会丢失,而MC9S12XE提供了D-Flash和EEPROM用于存储非易失性数据.之前一直只是知道这个东西,但是一 ...

  2. 单片机成长之路(51基础篇) - 022 N76e003 APROM模拟EEPROM驱动

    N76e003单片机内部没有EEPROM,但是可以使用 APROM模拟EEPROM功能,代码如下: eeprom.h 1 #ifndef _EEPROM_H_ 2 #define _EEPROM_H_ ...

  3. N76E003模拟EEPROM读取和保存应用配置

    N76E003模拟EEPROM读取和保存应用配置 N76E003模拟EEPROM读取和保存应用配置的代码参考了文章: https://blog.csdn.net/u014798590/article/ ...

  4. STC 模拟eeprom数据丢失

    问题:用stc的flash模拟eeprom,发现某些位置的数据会莫名其妙的丢失 原因:结果发现flash数据是以页为单位保存的,stc官方的库函数在擦写数据时是将flash整页擦除的,在我写某个字节的 ...

  5. STM32F103C8T6通过内部Flash写入读取数据,模拟EEPROM(附代码)

    STM32F103C8T6通过内部Flash写入读取数据,模拟EEPROM(附代码) 优点: 1. 模块化编程,方便移植,集成度高: 2. 拿来直接用 Flash空间定定义 主函数初始化已经Flash ...

  6. STM32F407 内部自带FLASH 模拟 EEPROM

    STM32F407 内部自带FLASH 模拟 EEPROM 一.STM32F407自带FLASH STM32F4 本身没有自带 EEPROM,但是 STM32F4 具有 IAP(在应用编程)功能,所以 ...

  7. STM32F10x Flash 模拟 EEPROM

    STM32F10x芯片本身没有集成EEPROM,替代方案是用片上Flash来模拟EEPROM.Flash与EEPROM的区别主要是:一.EEPROM可以按位擦写,而Flash只能按块(页)擦除:二.F ...

  8. STM32CubeIDE用Flash模拟Eeprom

    目录 一.简介 1.1.开发环境 1.2.实现功能 二.擦除Flash页 三.写字节到Flash 四.从Flash读字节 一.简介 1.1.开发环境 STM32CubeIDE V1.9. 1.2.实现 ...

  9. 【飞思卡尔 MC9S12】内部D-Flash模拟EEPROM

    上一篇:[飞思卡尔 MC9S12]内部Flash读写 上一篇讲到内部Flash的读写,本篇讲述使用D-Flash模拟EEPROM.其实使用P-Flash也可以模拟,只不过D-Flash的Page更小( ...

  10. FLASH模拟EEPROM编程

    单片机内存FLASH模拟EEPROM编程 一,简述 很多单片机本身是没有自带EEPROM,但是一般具有在应用编程(IAP:In Application Programming)功能,可以把它的内存FL ...

最新文章

  1. 《对软件工程课程的期望》
  2. linux那些事之 page translation(硬件篇)
  3. 洛谷 P1344 [USACO4.4]追查坏牛奶Pollutant Control 解题报告
  4. Javascript的错误处理
  5. 又收获一位副总裁?传暴风TV CEO刘耀平已加盟小米电视
  6. uint32是什么数据类型_C++编程基础: 4. 数据类型
  7. android瀑布流效果(仿蘑菇街)
  8. 通过Spring Boot中的手动Bean定义提高启动性能
  9. 计算机上安装了更新ie版本,电脑ie浏览器版本过低怎么升级方法
  10. 英语学习框架(一) 英语音标
  11. 易语言画板组件实现自绘圆形进度条源码
  12. oracle建立图书管理数据库,Oracle数据库设计 图书管理系统
  13. 推荐系统中常用算法以及优点缺点对比
  14. 【实习日报】2019年3月 前端开发实习工作日报汇总
  15. Box Model 盒子模型 贷前数据查询 网贷多头借贷信息查询系统开发手机查询
  16. 大众疑问:学会PS 可以找什么工作
  17. TTMS剧院票务管理系统(xupt)
  18. 用python画小王八裤(turtle库)
  19. oracle dbs文件夹,Oracle10g 目录$ORACLE_HOME/dbs 下有文件 hc_.dat ,用处是 ?
  20. python的实验报告大一心理_python的期末实验报告

热门文章

  1. 百度地图API之根据经纬度查询地址信息(Android) .(10)
  2. maven install报The forked VM terminated without saying properly goodbye. VM crash or System.exit call
  3. 上海驾驶证满6年换证
  4. mysql delete in死锁_delete where in导致的死锁问题
  5. 宠物商店mysql数据库设计_宠物商城数据库设计
  6. Scratch制作飞翔的小喵小游戏
  7. 天天向上的力量python代码解释_小白学Python-12(天天向上的力量)
  8. 计算机用户全部删除,电脑用户怎么删除:批量删除计算机用户方法
  9. 程序猿之国庆有空吗?
  10. 谁在叩响野蛮人的家门?