一种基于单片机的提升NORFLASH使用周期的方法与流程

文档序号:20916502发布日期:2020-05-29 13:35阅读:669来源:国知局
一种基于单片机的提升NORFLASH使用周期的方法与流程

本发明属于norflash闪存技术领域,具体涉及一种基于单片机的提升norflash使用周期的方法。



背景技术:

由于单片机本身内存容量小,在实际电路设计中都会外挂一个flash芯片,进行数据存储与读取。norflash是市面上主要的闪存之一,norflash支持芯片内执行,应用程序可以直接在闪存上运行。norflash读取速度也更快,所以norflash被广泛使用。但是单片机资源少功能单一,没有文件系统,需要直接将一些固定长度的数据写入固定的地址,对该地址进行反复写入、读取、擦除,而其他地址数据未合理利用。

另外,norflash一般只有10万次的擦写寿命,不适合频繁擦写的场景。对于需要使用norflash且有频繁读写的工程项目,产品长时间运行后数据容易损坏,产品可靠性低。



技术实现要素:

(一)要解决的技术问题

本发明要解决的技术问题是如何提供一种基于单片机的提升norflash使用周期的方法,以克服现有的单片机读写norflash时存在的空间利用率不高、可靠性不高的问题。

(二)技术方案

为了解决上述技术问题,本发明提出一种norflash的使用方法,该方法包括将norflash划分为引导区与数据区,通过引导区记录当前数据区待写入数据的地址;将所述引导区划分为3块地址区同时记录地址,所述3块地址区的各个比特位的原始值均为1;数据区每次写入数据均写入长度为l字节的数据,每在数据区写入l字节的数据,在3块地址区均按从左到右的顺序将第一个值为1的比特位设为0。

进一步地,所述引导区起始地址为dy,所述数据区起始地址为ds,所述3块地址区记为地址区a、地址区b和地址区c。

进一步地,所述数据区的总长度为l×n字节,则所述3块地址区中的每一个地址区均需要n比特的空间,假设m字节为包含n比特的最小长度,则所述地址区a地址为dy,所述地址区b地址为dy+m,所述地址区c的地址为dy+2×m。

一种采用norflash的使用方法的基于单片机的提升norflash使用周期的方法,其特征在于,该方法包括如下步骤:

步骤一:读取所述引导区内的所述3块地址区;

步骤二:比对所述3块地址区的数据,若数据相同则转入步骤三;

步骤三:计算得出地址区数据从左到右比特位有n位数据为0,剩余比特位为1;当n大于0时,当前数据区地址为所述数据区的起始地址ds+(n-1)×l,如果要读取数据则转入步骤四,如果要写入新数据则转入步骤五;

步骤四:从地址ds+(n-1)×l,读取长度为l字节的数据,结束流程;

步骤五:判断n是否等于n,如n小于n则转入步骤七,否则转入步骤六;

步骤六:擦除所述引导区与所述数据区的数据,此时n为0,转入步骤七;

步骤七:分别在所述3块地址区的第n+1比特位写入0;

步骤八:在地址为ds+n×l,写入l字节数据,结束流程。

进一步地,所述步骤二还包括:若所述3块地址区的数据不同则选取数据相同的2块地址区数据为正确数据转入步骤三。

进一步地,所述步骤三还包括:当n等于0时,如果要写入新数据则转入步骤七。

(三)有益效果

本发明提供一种基于单片机的提升norflash使用周期的方法,将norflash的空间划分为引导区和数据区,每次在数据区写入l字节的数据,均要在引导区记录一个比特位,通过引导区的比特位可以就算出在数据区读取和写入数据的位置,从而可以将norflash的数据区几乎全部填满时再擦除。由于可以将norflash的数据区几乎全部填满,所以增加了norflash的空间利用率;由于norflash的数据区几乎全部填满时才进行一次擦除,很大程度上减少了擦除的次数,提升norflash使用寿命,可将norflash使用寿命提升n倍,提高了norflash的可靠性。另外,由于将引导区划分为3块地址区同时记录地址,可以对抗外界电磁干扰。

附图说明

图1为本发明的基于单片机的norflash芯片读写方法流程图。

具体实施方式

为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。

本发明的基于单片机的norflash芯片读写方法,将norflash划分为引导区与数据区,通过引导区记录当前数据区待写入数据的地址。假定引导区起始地址为dy,数据区起始地址为ds。

引导区划分为3块地址区(地址区a、地址区b、地址区c)同时记录地址,以应对外界电磁等干扰损坏地址区数据,地址区的各个比特位的原始值均为1。数据区每次写入数据均写入长度为l字节的数据,每当需要在数据区写入固定长度为l字节的数据时,则在地址区记录地址,每在数据区写入l字节的数据,在地址区记录1比特,记录方法为:在3块地址区(地址区a、地址区b、地址区c)均按从左到右的顺序将第一个值为1的比特位设为0。数据区的总长度为l×n字节,则3块地址区(地址区a、地址区b、地址区c)中的每一个地址区均需要n比特的空间。假设m字节为包含n比特的最小长度,则地址区a地址为dy,地址区b地址为dy+m,地址区c的地址为dy+2×m。

本发明技术方案的流程图如图1所示,本发明提出的flash读写方法包括下列步骤:

步骤一:读取引导区内3个地址区。

步骤二:比对地址区a、地址区b、地址区c的数据,若数据相同则继续步骤三。若数据不同则选取数据相同的2个地址区数据为正确数据转入步骤三。

步骤三:计算得出地址数据从左到右比特位有n位数据为0,剩余比特位为1。当n大于0时,当前数据区地址为ds+(n-1)×l,数据长度为l字节,如果要读取数据则转入步骤四,如要写入新数据则转入步骤五;当n等于0时,如要写入新数据则转入步骤五。

步骤四:从地址ds+(n-1)×l,读取长度为l字节的数据,结束流程。

步骤五:判断n是否等于n,如n小于n则转入步骤七,否则转入步骤六。

步骤六:擦除引导区与数据区数据,此时n为0,转入步骤七。

步骤七:分别在地址区a、地址区b、地址区c的第n+1比特位写入0。

步骤八:在地址为ds+n×l,写入l字节数据,结束流程。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。



技术特征:

1.一种norflash的使用方法,其特征在于,将norflash划分为引导区与数据区,通过引导区记录当前数据区待写入数据的地址;将所述引导区划分为3块地址区同时记录地址,所述3块地址区的各个比特位的原始值均为1;数据区每次写入数据均写入长度为l字节的数据,每在数据区写入l字节的数据,在3块地址区均按从左到右的顺序将第一个值为1的比特位设为0。

2.如权利要求1所述的norflash的使用方法,其特征在于,所述引导区起始地址为dy,所述数据区起始地址为ds,所述3块地址区记为地址区a、地址区b和地址区c。

3.如权利要求2所述的norflash的使用方法,其特征在于,所述数据区的总长度为l×n字节,则所述3块地址区中的每一个地址区均需要n比特的空间,假设m字节为包含n比特的最小长度,则所述地址区a地址为dy,所述地址区b地址为dy+m,所述地址区c的地址为dy+2×m。

4.一种采用如权利要求1-3任一项所述的norflash的使用方法的基于单片机的提升norflash使用周期的方法,其特征在于,该方法包括如下步骤:

步骤一:读取所述引导区内的所述3块地址区;

步骤二:比对所述3块地址区的数据,若数据相同则转入步骤三;

步骤三:计算得出地址区数据从左到右比特位有n位数据为0,剩余比特位为1;当n大于0时,当前数据区地址为所述数据区的起始地址ds+(n-1)×l,如果要读取数据则转入步骤四,如果要写入新数据则转入步骤五;

步骤四:从地址ds+(n-1)×l,读取长度为l字节的数据,结束流程;

步骤五:判断n是否等于n,如n小于n则转入步骤七,否则转入步骤六;

步骤六:擦除所述引导区与所述数据区的数据,此时n为0,转入步骤七;

步骤七:分别在所述3块地址区的第n+1比特位写入0;

步骤八:在地址为ds+n×l,写入l字节数据,结束流程。

5.如权利要求4所述的基于单片机的提升norflash使用周期的方法,其特征在于,所述步骤二还包括:若所述3块地址区的数据不同则选取数据相同的2块地址区数据为正确数据转入步骤三。

6.如权利要求4所述的基于单片机的提升norflash使用周期的方法,其特征在于,所述步骤三还包括:当n等于0时,如果要写入新数据则转入步骤七。


技术总结
本发明涉及一种基于单片机的提升NORFLASH使用周期的方法,属于NORFLASH闪存读写技术领域。本发明为了克服现有的单片机读写NORFLASH时存在的空间利用率不高、可靠性不高的问题,将NORFLASH的空间划分为引导区和数据区,每次在数据区写入L字节的数据,均要在引导区记录一个比特位,通过引导区的比特位可以就算出在数据区读取和写入数据的位置,从而可以将NORFLASH的数据区几乎全部填满时再擦除。本发明增加了NORFLASH的空间利用率、提升NORFLASH使用寿命和可靠性。

技术研发人员:蒙宇;李云飞
受保护的技术使用者:山西银河电子设备厂
技术研发日:2020.01.15
技术公布日:2020.05.29
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1