新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于嵌入式MCU数据Flash的数据存储及管理方法研究与实现

基于嵌入式MCU数据Flash的数据存储及管理方法研究与实现

——
作者:刘源杨 马建辉 庄汝科 王岗时间:2013-09-23来源:电子产品世界收藏

  具体应用

本文引用地址:http://www.eepw.com.cn/article/170167.htm

  在笔者开发的电动汽车仪表盘中,需要存储总里程、小计里程、电机故障等信息,按照前文所述的方法,首先建立数据分区,为每个数据条目建立ID,该ID同时可表征数据状态字:

  ID=1,对应电机故障,大小为1个字节;
  ID=2,对应总里程,大小为4个字节;
  ID=3,对应小计里程,大小为2个字节;

  各数据条目在分区内的格式如下:

  分区状态字Status_word(1个字节)+电机故障ID(1个字节)+电机故障(1个字节)+总里程ID(一个字节)+总里程(4个字节)+小计里程ID(1个字节)+小计里程(2个字节);

  经计算,实际存储需求为11个字节,为了计算的方便,设定分区大小为2的幂,选为16;MC9S12HY32内置数据的扇区大小为256个字节,为了保证掉电不丢失数据,必须占用至少两个扇区,根据公式(1),分区个数选定为32。数据可擦写次数为10万次,在每次数据写操作都会引起数据分区轮转的最坏情况下,数据可擦写次数为10万*32=320万次,大于的可擦写100万次的使用寿命,可以满足产品生命周期要求。

  如前文所述,在进行数据读/写操作时,首先通过数据条目ID进行偏移地址查表,计算数据在分区内的相对地址,其实现函数如下:

  uint16_t GetDataAddrFromItsId(uint16_t data_id)
  {
  uint16_t addr;
  if(EE_MOTOR_ERR == data_id){
  addr = _START + 1;
  }else if(EE_MILES_TOTAL == data_id){
  addr = _START + 3;
  }else if(EE_MILES_RELATIVE == data_id){
  addr = EEPROM_START + 8;
  }else{
  addr = EEPROM_START; /* not valid data id,so give unvalid addr */
  }
  return addr;
  }
  EE_MOTOR_ERR、EE_MILES_TOTAL、EE_MILES_RELATIVE即表示数据条目ID的宏。

  在行车过程中,当小计里程改变时,不仅在液晶屏上实时更新小计里程数据,同时需要把更新后的小计里程写在数据中,其具体函数如下:

  void MilesRelativeStore(void)
  {
  if(Miles_relative != Miles_relative_stored){
  (void)WriteEeprom(EE_MILES_RELATIVE,&Miles_relative,sizeof(Miles_relative));
  Miles_relative_stored = Miles_relative;
  }
  }

  由上述函数可见,应用本专利所设计方法,可以屏蔽底层实现细节,提供给应用层简单、清晰、和EEPROM一样简便的接口。

  结语

  本文从Flash特性出发研究并实现一种高效的及管理方法,其实现层面实现与EEPROM同样的应用接口,具有很高的使用价值,同时有效利用了的内部资源,提高了 Data Flash的使用寿命,使之可以满足产品生命周期要求,并节约了产品的BOM成本,所设计方法在笔者设计的汽车仪表盘中得到实际应用和长时间验证,运行效果良好,具有很好的实用价值。

  参考文献:
  [1] 刘会忠,景瑞霞.损耗均衡算法在Flash管理中的应用研究[J].河北省科学院学报,2009,(2):4-6
  [2] 山东省科学院自动化研究所.一种利用内部数据Flash存储非易失性数据的方法:中国,201210074452.5[P].2012-09-12
  [3] 易军,曹龙汉,周熙.FLASH存储管理子系统的设计与实现[J].微计算机信息,2008,(8):86-87
  [4] 叶树梅,季爱明,俞一彪.系统中Flash存储管理策略[J].科学技术与工程,2011,(17):77-79
  [5] 梁海浪,蔡李隆.dsPIC30F6014内部EEPROM读写C程序设计及其应用[J] .电子产品世界,2005,(11):96-98
  [6] 杜伟庆,苏凯雄.系统中NOR Flash 的分块管理与实现[J] .计算机与数字工程,2009,(12):80-82
  [7] 王标,周新志,罗志平.系统中Nand Flash写平衡的研究[J].微计算机信息,2008,(14):8-10
  [8] 陆林燕,王鲁静,郑正奇.NAND FLASH编程实现研究分析[J].计算机技术与发展,2008,(3):118-120

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 3 4 下一页

评论


相关推荐

技术专区

关闭