本发明属于读写方法,特别涉及一种应用于flash磨损均衡与掉电保存的读写方法。
背景技术:
1、在一些嵌入式产品中,经常需要频繁对运行参数或配置参数进行存储与读取,但通常flash的读写次数仅为10万次,这对于产品运行寿命来说是一个很大的瓶颈;
2、传统的嵌入式产品中,对参数存储时,一般不同的参数是定义不同的基地址,在该地址进行存取操作,在存储时需要对该flash块进行擦除后再写入,但一般的flash寿命仅为10万次,假如每分钟需要对该参数进行读写,那么单块的flash可工作的时间为100000/(60*24)=69天;
3、一般的读写均衡算法为,对每一块的读写次数进行存储,达到一定次数时(例如设置为9万次),切换到下一块,如图2所示。但该传统方式的弊端在于,不同颗粒间的寿命可能不一致,因而导致该数据的丢失;当该存储值小于块的大小时,浪费存储空间;写入过程如果因外因断电,也会造成数据丢失,因此急需研发一种磨损均衡、能够大幅度的提高使用寿命、断电保存的应用于flash磨损均衡与掉电保存的读写方法。
技术实现思路
1、(一)要解决的技术问题
2、为了克服上述传统方式的存在着不同颗粒间的寿命可能不一致,因而导致该数据的丢失;当该存储值小于块的大小时,浪费存储空间;写入过程如果因外因断电,也会造成数据丢失的缺陷,本发明提供一种磨损均衡、能够大幅度的提高使用寿命、断电保存的应用于flash磨损均衡与掉电保存的读写方法。
3、(二)技术方案
4、本发明通过如下技术方案实现:本发明提出了一种应用于flash磨损均衡与掉电保存的读写方法,所述读写方法具体步骤如下:
5、1)开始,从存储地址开始读取5个字节数,前后加上特定的帧头($)、帧尾(*)以及异或校验;
6、2)判断5字节是否全为oxff;
7、若不是全为oxff,包括以下步骤:
8、重新读地址一次,判断地址是否超出设置值,若是超出设置值,擦除该块数据,接着更新参数,判断地址a往后储存是否不超过设置的地址范围,若是超过,在地址a处写入新参数,直至结束,若不是超过,擦除该块数据,在起始地址写入,直至结束;若不是超出设置值,返回步骤1)重新开始;
9、若是全为oxff,包括以下步骤:
10、直接获取第一个oxff的地址a,判断地址a是否不为块起始地址;若是地址a为块起始地址,往后读取一组数据,即往后退存储参数的个数,直接判断是匹配帧结构以及校验,如果不匹配,便往下继续遍历,即读取地址继续往后,在判断地址a是否超出设置值,若不是超出设置,返回,重复上述往后读取一组数据,及其后续步骤;若是超出设置,擦除该块数据,接着更新参数,重复上述判断地址a往后储存是否不超过设置的地址范围及其后续步骤;
11、若是地址a不是块起始地址,直接更新参数,重复上述判断地址a往后储存是否不超过设置的地址范围及其后续步骤;
12、其中,设置值为系统设置的存储单元地址。
13、(三)有益效果
14、本发明相对于现有技术,具有以下有益效果:
15、本发明达到能够最大化的使用flash的块单元,仅在整个块写满后才擦除,达到磨损均衡的效果;即使在写入过程中外部断电,也仅仅丢失当前一次的写入结果,之前的结果仍然保留,达到断电保存的效果;且在系统设置的存储单元大小一定时,能够大幅度的提高使用寿命。
1.一种应用于flash磨损均衡与掉电保存的读写方法,其特征在于:所述读写方法具体步骤如下: