基于嵌入式mcu数据flash数据存储和管理方法探究和实现

基于嵌入式mcu数据flash数据存储和管理方法探究和实现

ID:5941751

大小:29.00 KB

页数:7页

时间:2017-12-29

基于嵌入式mcu数据flash数据存储和管理方法探究和实现_第1页
基于嵌入式mcu数据flash数据存储和管理方法探究和实现_第2页
基于嵌入式mcu数据flash数据存储和管理方法探究和实现_第3页
基于嵌入式mcu数据flash数据存储和管理方法探究和实现_第4页
基于嵌入式mcu数据flash数据存储和管理方法探究和实现_第5页
资源描述:

《基于嵌入式mcu数据flash数据存储和管理方法探究和实现》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、基于嵌入式MCU数据Flash数据存储和管理方法探究和实现  摘要:本文设计了一种利用MCU内部数据Flash存储非易失性数据的方法,它将数据Flash的若干扇区划分为多个数据分区,不同数据分区存储数据在不同历史时间的拷贝,最新数据分区存储最新的数据拷贝;在数据读操作进行时,计算最新数据拷贝的Flash存储位置,直接读取该地址;在数据写操作进行时,判断数据写入位置是否已经被擦除,如果写入位置未擦除,将数据写入下一个分区,同时将当前分区中的其他数据复制到下一个分区;如果写入位置已经擦除,直接将数据

2、写入当前分区中。该方法实现了类似EEPROM的数据读写方式,操作方便,应用接口简单,而且可以尽量避免扇区擦除操作,提高存储效率,同时提高MCU内部数据Flash的使用寿命。本文网络版地址:http://www.eepw.com.cn/article/170167.htm关键词:数据Flash;数据分区;扇区;EEPROMDOI:10.3969/j.issn.1005-5517.2013.10.015引言7在嵌入式系统设计中,经常需要存储一些非易失性的数据,在笔者开发的电动汽车仪表盘中,需要存储总

3、里程、小计里程、电机故障等其他信息,采用支持对字节读写的EEPROM实现数据存储,操作起来和RAM一样简单方便,但同时会在大批量产品的生产中带来成本问题和维护问题。在有数据Flash的MCU中,采用数据Flash代替EEPROM实现非易失性的存储,便可以节约成本且无需维护,笔者所设计的仪表盘采用内置4KB数据闪存的MC9S12HY32做为处理器,足以满足仪表盘数据存储要求。用Flash存储数据的传统方式是为每个数据分配固定的存储地址,由于Flash在进行写操作时需要先擦除数据所在的整个扇区[1]

4、,对一个数据进行写操作便会造成对扇区内其他数据的擦除,由于擦除操作耗时较长,不仅效率低,影响嵌入式系统的实时性,而且为了避免丢失其他数据需要相当复杂的处理,对MCU的RAM空间也有一定的要求。如果写入数据失败,会造成所写入数据的丢失,如果在擦除扇区后发生掉电,便会造成扇区内所有数据的丢失。不仅如此,由于每次写入操作都需要先擦除扇区,以擦除次数表征的Flash使用寿命也无法满足产品生命周期的要求。本文提供一种利用MCU内部数据Flash存储非易失性数据的方法[2],它不仅操作方便,应用接口简单,而

5、且可以尽量避免扇区擦除操作,提高存储效率,同时提高MCU内部数据Flash的使用寿命。总体设计7通过在MCU数据Flash上建立多个数据分区,存储数据的多个拷贝,避免对Flash固定地址的反复擦除,提高Flash的使用寿命,同时通过数据读写方法的设计和数据分区的管理,避免对Flash扇区的不必要擦除,并最终实现和EEPROM读写很类似的应用接口。具体地,首先根据嵌入式系统的应用需求和MCU内部数据Flash的扇区大小,合理设置数据分区大小和个数,将数据Flash的若干扇区划分为多个数据分区。在每

6、个数据分区的起始地址设置分区状态字[3],反映数据分区的存储历史时间,不同数据分区存储数据在不同历史时间的拷贝,当前数据分区存储最新的数据拷贝;同时为每个数据条目建立数据状态字,反映该数据在所在分区内存储地址是否已经被擦除。数据分区设计首先根据嵌入式系统的应用需求和MCU内部数据Flash的扇区大小,合理设置数据分区大小和个数,将数据Flash的若干扇区划分为多个数据分区,其取值均为2的n次幂,分区以0,1,2?进行编号,个数不大于256。分区大小和个数的设置和数据Flash的扇区长度匹配起来,

7、满足以下公式:分区大小*分区个数=扇区大小*扇区个数(1)在每个数据分区的起始地址设置分区状态字,反映数据分区的存储历史时间,在分区擦除后的第一次写操作完成后更新。设置数据条目的格式为dataid+data,dataid取值区间为[0,254],为每个数据条目的data7id和data分配偏移地址,建立数据序列,组织数据分区,数据分区的格式为:分区状态字+dataid1+data1+dataid2+data2?。数据分区这样的存储结构非常适合需要进行多个独立数据存储的嵌入式系统应用,通过数据分区

8、的格式定义,对其某个数据的寻址非常简单。数据读取操作数据读取操作在最新数据分区上进行,首先通过数据条目的dataid进行偏移地址查表,然后根据最新数据分区编号进行地址计算,计算公式如下:地址=0号分区首地址+(最新数据分区编号*分区大小)+偏移地址(2)和EEPROM的读取方式一样,直接读取该地址便可以得到数据[5],读取操作不会改变最新数据分区及其状态字。其软件实现如下所示:voidReadEeprom(uint16_tdata_id,void*dest_addr,uint16_tsize){

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。