CN114461537A - Flash存储器的数据读写方法 - Google Patents
Flash存储器的数据读写方法 Download PDFInfo
- Publication number
- CN114461537A CN114461537A CN202111604778.XA CN202111604778A CN114461537A CN 114461537 A CN114461537 A CN 114461537A CN 202111604778 A CN202111604778 A CN 202111604778A CN 114461537 A CN114461537 A CN 114461537A
- Authority
- CN
- China
- Prior art keywords
- data
- flash memory
- unit
- erasing
- error count
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 144
- 238000000034 method Methods 0.000 title claims abstract description 87
- 238000013500 data storage Methods 0.000 claims abstract description 28
- 238000001514 detection method Methods 0.000 claims abstract description 10
- 230000006870 function Effects 0.000 claims description 41
- 230000008569 process Effects 0.000 claims description 24
- 238000012795 verification Methods 0.000 claims description 8
- 239000002699 waste material Substances 0.000 abstract description 4
- 230000009471 action Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 230000009286 beneficial effect Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000725 suspension Substances 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请是关于一种Flash存储器的数据读写方法。该方法包括:获取待存储数据;读取第m单元的校验位数据,m为大于或等于零的整数;根据第m单元的校验位数据判断第m单元的数据存储情况,若第m单元中无存储数据,则在第m单元写入待存储数据后判断待存储数据是否写入成功,若是,则将m加一并将写错计数清零后执行获取待存储数据的步骤;若否,则将写错计数加一后,判断写错计数是否大于或等于第一写错计数阈值,若是,则对Flash存储器进行数据擦除并将m和写错计数清零后,结束数据存储程序并发出使用寿命检测提醒。本申请提供的方案,能够提高Flash存储器的读写速度并避免其使用寿命被浪费。
Description
技术领域
本申请涉及存储器技术领域,尤其涉及Flash存储器的数据读写方法。
背景技术
目前单片机常用的存储器有EEPROM和Flash两种,其中,内置EEPROM的成本较高,而外置EEPROM需要增加外围电路,相对于采用EEPROM,采用内置Flash存储器能够有效地解决成本问题。Flash存储器的存储方式通常都是先擦除后写入,由于单次的擦除时间较长,若频繁擦除操作则会导致定时不准以及通讯异常等状况,从而影响整个系统的稳定性。
相关技术中,公开号为CN112286452A的专利文件公开了一种STM32单片机FLASH存储器存储、读取算法,该方案是通过将Flash分成若干个小单元,设置第一个单元为初始地址,从初始地址依次读取每个单元里面的数据,当单元内所有数据为空时才执行存储、读写操作,若每个单元都写满了再进行擦除操作。虽然该方案有效地减少了擦写的次数,但每次写入数据时需要排查每一个小单元内的数据内容,随着已存数据的单元数量的增加,该方案进行单元查空的时间也会相应增加,不利于Flash存储器的快速读写。
现有技术中,公开号为CN105426317B的专利文件还提供了一种往Flash中存放用户数据的存储方法及读取方法,其对新的数据包进行存储前先对存储块a按区来查“空”,查到第一个首地址最接近存储块a的首地址的“空”区后,开始写入打包好的数据包,待写数据的动作结束后,对写入的数据进行验证是否已经写入成功,如果没有写入成功,执行再次写入动作;如果写入动作执行了M次仍未成功,则查找下一个“空”区,再执行上述写入操作,如果X个区都无法写入成功,则认为存储块a损坏并退出存储操作。该方案在X个区都无法写入成功直接认定该Flash存储器损坏,存在误判操作,实际上Flash存储器在使用过程中存在擦写一定次数后出现若干次读写失败的情况,但在若干次读写失败后经过再次擦除,Flash存储器又可以重新读写成功,而上述方案直接判定该Flash存储器损坏,长期以往会导致可用的存储区域越来越少,导致Flash存储器的使用寿命被浪费。
发明内容
为克服相关技术中存在的问题,本申请提供一种Flash存储器的数据读写方法,能够提高Flash存储器的读写速度并避免其使用寿命被浪费。
本申请提供一种Flash存储器的数据读写方法,包括:
获取待存储数据;
读取第m单元的校验位数据,所述m为大于或等于零的整数;
根据所述第m单元的校验位数据判断所述第m单元的数据存储情况,若第m单元中无存储数据,则在所述第m单元写入待存储数据后判断所述待存储数据是否写入成功,若是,则将所述m加一并将写错计数清零后执行获取待存储数据的步骤;
若否,则将所述写错计数加一后,判断所述写错计数是否大于或等于第一写错计数阈值,若是,则对所述Flash存储器进行数据擦除并将所述m和所述写错计数清零后,结束数据存储程序并发出使用寿命检测提醒。
在一种实施方式中,所述判断所述写错计数是否大于或等于第一写错计数阈值之后,包括:
若所述写错计数小于第一写错计数阈值,则判断所述写错计数是否大于或等于第二写错计数阈值,若是,则对所述Flash存储器进行数据读取后再进行数据擦除,并将所述m清零后执行在所述第m单元写入待存储数据的步骤;
所述第一写错计数阈值大于所述第二写错计数阈值。
在一种实施方式中,所述根据所述第m单元的校验位数据判断所述第m单元的数据存储情况,包括:
若所述第m单元的校验位数据为空值,则所述第m单元中无存储数据;
若所述第m单元的校验位数据为校验信息,则所述第m单元含存储数据。
在一种实施方式中,所述根据所述第m单元的校验位数据判断所述第m单元的数据存储情况之后,包括:
若所述第m单元中含存储数据,则将所述m加一后执行读取第m单元的校验位数据的步骤。
在一种实施方式中,所述读取第m单元的校验位数据之前,包括:
将所述Flash存储器按照预设字节长度划分为n个单元,所述n为大于一的正整数。
6.根据权利要求5所述的Flash存储器的数据读写方法,其特征在于,
所述Flash存储器中设有满载标记位,当第n个单元的校验位数据不为空值时,所述满载标记位的状态记作满载,否则所述满载标记位的状态记作非满载。
在一种实施方式中,所述对所述Flash存储器进行数据擦除,包括:
从所述Flash存储器的起始区域开始进行擦除,并在擦除完成后将所述满载标记位的状态更新为非满载,退出数据擦除程序;
在擦除过程中,若获取到系统功能指令,则维持所述满载标记位不变,并在退出数据擦除程序后执行所述系统功能指令,并在所述系统功能指令执行完成后重新检测所述满载标记位的状态。
在一种实施方式中,所述Flash存储器的数据读写方法,还包括:
当获取到数据擦除指令时,检测所述满载标记位的状态,当所述满载标记位的状态为满载时,调用一次擦除函数,并在擦除完成后将所述满载标记位的状态更新为非满载,退出数据擦除程序;
在擦除过程中,若获取到系统功能指令,则维持所述满载标记位不变,并在退出数据擦除程序后执行所述系统功能指令,并在所述系统功能指令执行完成后重新检测所述满载标记位的状态。
在一种实施方式中,所述对所述Flash存储器进行数据读取,包括:
将所述m清零;
读取所述第m单元的校验位数据;
根据所述第m单元的校验位数据判断所述第m单元的数据存储情况,若第m单元中含存储数据,则读取第m单元中存储的数据并将所述m加一后,执行读取第m单元的校验位数据的步骤;
若第m单元中无存储数据,则判断所述m是否大于零,若是,则结束数据读取程序。
在一种实施方式中,所述判断所述m是否大于零之后,包括:
若所述m等于零,则发出所述Flash存储器为空的提示后结束数据读取程序。
本申请提供的技术方案可以包括以下有益效果:
本申请提供的方案将Flash存储器划分为若干个单元,并且在每个单元内设有校验位,根据校验位数据判断所述第m单元的数据存储情况,当确定当前单元,即第m单元,无存储数据时,方才执行在第m单元写入待存储数据的动作,并将m加一,以令指针指向Flash存储器中当前单元的下一个单元,使得在下一次进行数据存储操作时,无需从初始单元开始从头进行单元查空,直接即可到达新单元进行查空和数据存储操作,节省了大量的单元查空时间;而本申请所述方案中,在当前待存储数据写入失败时,则对写错计数进行加一以对当前待存储数据写入失败的次数进行计数,在当前待存储数据的写错计数大于或等于第一写错计数阈值时,对Flash存储器进行擦除并将m和写错计数清零,同时结束数据存储程序并发出使用寿命检测提醒,以提醒操作人员对该Flash存储器的使用寿命进行检测,以辨别写入失败的原因是Flash存储器的使用时长超过其使用寿命导致的损坏,还是仅是Flash存储器的使用过程中出现的读写BUG,防止损坏误判导致的浪费。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
通过结合附图对本申请示例性实施方式进行更详细的描述,本申请的上述以及其它目的、特征和优势将变得更加明显,其中,在本申请示例性实施方式中,相同的参考标号通常代表相同部件。
图1是本申请实施例示出的Flash存储器的数据读写方法的流程示意图;
图2是本申请实施例示出的Flash存储器的数据读取方法的流程示意图;
图3是本申请实施例示出的Flash存储器的数据擦除方法的流程示意图。
具体实施方式
下面将参照附图更详细地描述本申请的优选实施方式。虽然附图中显示了本申请的优选实施方式,然而应该理解,可以以各种形式实现本申请而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本申请更加透彻和完整,并且能够将本申请的范围完整地传达给本领域的技术人员。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语“第一”、“第二”、“第三”等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
现有技术中提供的方案从初始地址依次读取每个单元里面的数据,当单元内所有数据为空时才执行存储、读写操作,若每个单元都写满了再进行擦除操作。虽然该方案有效地减少了擦写的次数,但每次写入数据时需要排查每一个小单元内的数据内容,随着已存数据的单元数量的增加,该方案进行单元查空的时间也会相应增加,不利于Flash存储器的快速读写。
实施例一
现有技术还提供了另一方案,其在X个区都无法写入成功直接认定该Flash存储器损坏,存在误判操作,实际上Flash存储器在使用过程中存在擦写一定次数后出现若干次读写失败的情况,但在若干次读写失败后经过再次擦除,Flash存储器又可以重新读写成功,而上述方案直接判定该Flash存储器损坏,长期以往会导致可用的存储区域越来越少,导致Flash存储器的使用寿命被浪费。
针对上述问题,本申请实施例提供一种Flash存储器的数据读写方法。
以下结合附图详细描述本申请实施例的技术方案。
图1是本申请实施例示出的Flash存储器的数据读写方法的流程示意图。
参见图1,所述Flash存储器的数据存储方法,包括:
101、获取待存储数据;
在本申请实施例中,当产生待存储数据时,即说明具有数据存储需求,即启动数据存储程序并获取待存储数据。
进一步地,目前市面上用作数据存储的FLASH存储器,其块区域地址连续,通常是以字节为单位存储数据,以块为单位进行数据擦除。在本申请实施例中,由于每次写入的数据都是固定的字节长度,故在进行待存储数据的存储前,将Flash存储器按照预设字节长度划分为n个单元,n为大于一的正整数。
在实际应用过程中,预设字节长度可以依据实际需求进行设置,此处不作限定。
在实际应用中,在对Flash存储器按照预设字节长度执行过一次划分动作后,若划分后的单元的存储长度不需要变更,则可以对Flash存储器重复擦除、存储,而无需再次执行划分动作;若单元的存储长度需要进行调整,也可在完成Flash存储器的擦除后,重新按照另一预设字节长度对Flash存储器进行划分。
进一步地,所述Flash存储器中设有满载标记位,当第n个单元的校验位数据不为空值时,所述满载标记位的状态记作满载,否则所述满载标记位的状态记作非满载。
102、读取第m单元的校验位数据;
其中,m为大于或等于零的整数。
在本申请实施例中,在存储数据中增加一个校验位,当第m单元内含有存储数据时,读取第m单元的校验位数据,则能够读取到第m单元内的数据的校验信息;而当第m单元内无存储数据时,则读取第m单元的校验位数据得到的结果为空值。
103、根据第m单元的校验位数据判断第m单元是否含存储数据;
当第m单元含存储数据,则执行步骤104后返回步骤102;
当第m单元中无存储数据,则依次执行步骤105和步骤106。
示例性的,根据第m单元的校验位数据判断第m单元是否含存储数据的判断过程如下:
若所述第m单元的校验位数据为空值,则所述第m单元中无存储数据;
若所述第m单元的校验位数据为校验信息,则所述第m单元含存储数据。
在实际应用过程中,根据读取到第m单元的校验位数据,即可知道该第m单元内是否存在数据。假设校验信息为0xA5,当第m单元的校验位数据为0xA5,则说明该单元内存有数据,相应地,当第m单元的校验位数据为0xFF,则说明该单元内为空。
需要说明的是,上述对于校验信息的说明仅是本申请实施例中举出的一个示例,在实际应用过程中,校验信息的具体内容可以根据需求进行设置。
104、将m加一;
在判断到当前单元内含有存储数据时,将m的数值加一,即可令指针指向Flash存储器中当前单元的下一个单元,即第m单元为变更为当前单元的下一单元,以此类推,存储位置由起始单元按照划分的单元逐个往后挪动,从而避免产生跳过的、未执行写入操作的单元。
105、在第m单元写入待存储数据;
106、判断待存储数据是否写入成功;
若是,则执行步骤107后返回执行步骤101;
若否,则执行步骤108和步骤109。
107、将m加一并将写错计数清零;
当待存储数据写入成功后,将m加一以令指针指向Flash存储器中当前单元的下一个单元,从而当再次产生数据存储需求时,能够直接对上一次数据存储位置的下一单元进行查空,而无需从起始位置开始,节省了大量的单元查空时间;并将写错计数清零,以便于重新对当次数据存储操作的写入失败次数进行计数。
108、将写错计数加一;
当待存储数据写入失败时,则将写错计数加一,当写错计数达到一定数值时,说明Flash存储器出现了问题,不同写错计数对应的Flash存储器问题不同,根据不同的写错计数来执行不同的处理方法。
例如:在当前的写错计数为0时,则Flash存储器写入失败可能是偶发性的,再次执行写入动作即可写入成功,此时,则将写错计数更新为1,并重新执行步骤105中的写入动作。
109、判断写错计数是否大于或等于第一写错计数阈值;
若是,则执行步骤110和步骤111;
若否,则执行步骤112。
在实际应用过程中,第一写错计数阈值可以根据实际情况进行设定,例如,设定第一写错计数阈值为3,则当写错计数大于或等于3时,说明Flash存储器在当次数据存储中,频繁写入失败,则需要检测Flash存储器是否使用时长超出其使用寿命,是否需要进行更换。
110、对Flash存储器进行数据擦除,并将m和写错计数清零;
当写错计数大于或等于第一写错计数阈值时,说明Flash存储器在当次数据存储中,写入失败频繁,因此,需要对该Flash存储器进行擦除,并将m和写错计数清零。
若检测得Flash存储器的使用时长已经超出其规定的使用寿命,则对Flash存储器进行更换;若Flash存储器的使用时长未达到其规定的使用寿命,则将初始化的Flash存储器重新投入使用,即对该Flash存储器进行擦除,将m和写错计数清零,并在下一次产生数据存储需求时,从起始单元写入待存储数据。
111、结束数据存储程序并发出使用寿命检测提醒;
在本申请实施例中,使用寿命检测提醒可以采用语音播报、指示灯或文本信息的方式进行提醒,例如,在系统的交互终端显示使用寿命检测的文本提示信息,或采用LED灯,在系统发出使用寿命检测提醒时,LED灯亮起以提醒用户对Flash存储器的使用时长进行检查。
112、判断写错计数是否大于或等于第二写错计数阈值,
若是,则执行步骤113后返回执行步骤105;
若否,则返回执行步骤105。
在本申请实施例中,所述第一写错计数阈值大于所述第二写错计数阈值;当写错计数大于或等于第二写错计数阈值时,说明Flash存储器写入失败可能是因为系统芯片内部的元器件运行出现冲突导致电平输出处于1和0的临界值,此时,对Flash存储器进行数据读取后再进行数据擦除,并将m清零,即重新指向Flash存储器的起始单元,并重新将待存储数据写入起始单元。
113、对Flash存储器进行数据读取后再进行数据擦除,并将m清零。
将原本存储在该Flash存储器中的数据读取后,防止已存储的数据丢失后,擦除Flash存储器中的数据,并将指针重新指向该Flash存储器的起始单元执行写入操作。
本申请提供的方案将Flash存储器划分为若干个单元,并且在每个单元内设有校验位,根据校验位数据判断所述第m单元的数据存储情况,当确定当前单元,即第m单元,无存储数据时,方才执行在第m单元写入待存储数据的动作,并将m加一,以令指针指向Flash存储器中当前单元的下一个单元,使得在下一次进行数据存储操作时,无需从初始单元开始从头进行单元查空,直接即可到达新单元进行查空和数据存储操作,节省了大量的单元查空时间;而本申请所述方案中,在当前待存储数据写入失败时,则对写错计数进行加一以对当前待存储数据写入失败的次数进行计数,在当前待存储数据的写错计数大于或等于第一写错计数阈值时,对Flash存储器进行擦除并将m和写错计数清零,同时结束数据存储程序并发出使用寿命检测提醒,以提醒操作人员对该Flash存储器的使用寿命进行检测,以辨别写入失败的原因是Flash存储器的使用时长超过其使用寿命导致的损坏,还是仅是Flash存储器的使用过程中出现的读写BUG,防止损坏误判导致的浪费。
实施例二
基于上述Flash存储器读写方法,本申请实施例为其中步骤113的数据读取提供一种Flash存储器的数据读取方法。
以下结合附图详细描述本申请实施例的技术方案。
图2是本申请实施例示出的Flash存储器的数据读取方法的流程示意图。
参见图2,所述Flash存储器的数据读取方法,包括:
201、将m清零;
在本申请实施例中,设置m=0,使得系统中指针指向Flash存储器的起始单元,即从Flash存储器的起始单元开始进行数据读取。
202、读取第m单元的校验位数据;
在本申请实施例中,步骤202与上述实施例一中的步骤102内容一致,此处不再赘述。
203、根据第m单元的校验位数据判断第m单元是否含存储数据,
若第m单元中含存储数据,则执行步骤204后返回执行步骤202;
若第m单元中无存储数据,则执行步骤205。
在本申请实施例中,步骤203与上述实施例一中的步骤103内容一致,此处不再赘述。
204、读取第m单元中存储的数据并将m加一;
在本申请实施例中,当确定第m单元中含存储数据时,则读取该单元中存储的数据,并将m加一使得指针指向下一单元,从而逐个单元地将存储在Flash存储器中的数据读取出来,有效地防止了数据读取过程中漏读取数据。
205、判断m是否大于零,
若是,则执行步骤207;
若否,则依次执行步骤206和步骤207。
在本申请实施例中,当确定第m单元中无存储数据时,若m大于0,则说明当前指针不是指向起始单元的,也即是说,数据读取过程已经存在读取成功的数据,由于本申请实施例中,数据写入过程中,是由起始单元开始逐个单元进行写入的,因此,当指针不指向起始单元且当前指向的单元为空时,说明Flash存储器的存储数据已经读取完毕,则执行步骤207,即结束数据读取程序。
206、发出所述Flash存储器为空的提示;
在本申请实施例中,当确定第m单元中无存储数据时,若m等于0,则说明当前指针指向起始单元,则说明Flash存储器的起始单元即为空,则说明Flash存储器中无存储的数据,则发出所述Flash存储器为空的提示。
207、结束数据读取程序。
本申请实施例基于上述实施例一的Flash存储器的数据读写方法,提供了一种Flash存储器的数据读取方法,当需要进行数据读取操作时,将m置零,以使得指针指向起始单元,从起始单元开始对Flash存储器中的存储数据进行读取,并通过校验位数据判断第m单元的数据存储情况,待含存储数据的单元读取完毕则将m加一以令指针指向下一单元,由于数据写入过程是由起始单元开始逐个单元进行写入的,因此,当判断得第m单元中无存储数据时,说明Flash存储器中的存储数据已经读取完毕,有效地防止了数据读取过程中漏读取数据;
而通过判断单元无存储数据时m的取值,则可以确定无存储数据单元是否为起始单元,从而可以判断出当前Flash存储器是否为空存储器。
实施例三
现有技术中,Flash存储器通常是以字节为单位存储数据,以块为单位进行数据擦除,并且在每次数据存储时都会先擦除再写入。由于擦除时间较长,若出现频繁的写入操作,整个数据存储、擦除的时间会相应地拉长,从而对于系统来说产生定时不准、通讯异常等状况,进而影响整个系统的稳定性。
针对现有技术中存在的问题,基于上述实施例一所示出的Flash存储器的数据读写方法,本申请实施例提出一种Flash存储器的数据擦除方法。
以下结合附图详细描述本申请实施例的技术方案。
图3是本申请实施例示出的Flash存储器的数据擦除方法的流程示意图。
参见图3,所述Flash存储器的数据擦除方法,包括:
301、获取数据擦除指令;
302、检测满载标记位的状态;
在本申请实施例中,所述Flash存储器中设有满载标记位,当第n个单元的校验位数据不为空值时,所述满载标记位的状态记作满载,否则所述满载标记位的状态记作非满载。
303、当满载标记位的状态为满载时,调用一次擦除函数;
在步骤303中,若获取到系统功能指令,则维持满载标记位不变,并在退出数据擦除程序后执行系统功能指令,并在系统功能指令执行完成后再一次执行步骤302。
在本申请实施例中,Flash存储器的数据擦除操作的执行时间较长,在擦除过程中,若产生了系统功能指令,则暂停数据擦除操作,由于此时数据擦除操作未完成,因此,满载标记位维持不变,所述数据擦除操作暂停期间,执行系统功能指令,以优先完成系统的其它功能逻辑,避免由于单次擦除时间过长而影响系统定时、通讯的等功能,有利于提高系统的稳定性;待所述系统功能指令执行完成后重新检测所述满载标记位的状态。
在本申请实施例中,上述系统功能指令为除数据擦除指令之外的其他指令。
304、当擦除完成后将满载标记位的状态更新为非满载;
当擦除完成后,将满载标记位的状态更新为非满载说明Flash存储器的存储数据已经擦除完成,Flash存储器已清空,可用于从起始单元进行数据写入。
305、退出数据擦除程序。
本申请实施例提供的数据擦除方法,在擦除的时间内中其他系统程序不用一直等待擦除完成,系统可以在数据擦除过程中暂停擦除去执行其他的功能逻辑,这样将数据擦除的时间拆分开来,相当于擦除需要等待的时间用来执行系统其它功能逻辑,避免由于单次擦除时间过长而影响系统定时、通讯的等功能,有利于提高系统的稳定性。
实施例四
本申请实施例对上述实施例一中步骤110和/或步骤113的数据擦除过程进行了设计。
所述数据擦除过程,包括:
从所述Flash存储器的起始区域开始进行擦除,并在擦除完成后将所述满载标记位的状态更新为非满载,退出数据擦除程序;
在擦除过程中,若获取到系统功能指令,则维持所述满载标记位不变,并在退出数据擦除程序后执行所述系统功能指令,并在所述系统功能指令执行完成后重新检测所述满载标记位的状态。
在本申请实施例中,Flash存储器的数据擦除操作的执行时间较长,在擦除过程中,若产生了系统功能指令,则暂停数据擦除操作,由于此时数据擦除操作未完成,因此,满载标记位维持不变,所述数据擦除操作暂停期间,执行系统功能指令,以优先完成系统的其它功能逻辑,避免由于单次擦除时间过长而影响系统定时、通讯的等功能,有利于提高系统的稳定性;待所述系统功能指令执行完成后重新检测所述满载标记位的状态。
该操作上实际是将擦除函数放在主循环中,将数据擦除的时间进行拆分,每执行一遍主循环就执行一遍擦除函数,当Flash存储器中的数据较多时,擦除时间较长,而将擦除暂停的时间用来执行系统其它功能逻辑,待完成了系统功能指令后重新回到主循环中。
在本申请实施例中,上述系统功能指令为除数据擦除指令之外的其他指令。
本申请实施例提供的数据擦除方法,在擦除的时间内中其他系统程序不用一直等待擦除完成,系统可以在数据擦除过程中暂停擦除去执行其他的功能逻辑,这样将数据擦除的时间拆分开来,相当于擦除需要等待的时间用来执行系统其它功能逻辑,避免由于单次擦除时间过长而影响系统定时、通讯的等功能,有利于提高系统的稳定性。
实施例五
与前述应用功能实现方法实施例相对应,本申请还提供了一种Flash存储器及相应的实施例。
所述Flash存储器,其存储区域被划分为n个单元,所述n为大于一的正整数,其基于如实施例一所述的Flash存储器的数据存储方法进行数据存储,基于如实施例二所述的Flash存储器的数据读取方法进行数据读取,以及基于如实施例三以及实施例四的方法进行数据擦除。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不再做详细阐述说明。
上文中已经参考附图详细描述了本申请的方案。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。本领域技术人员也应该知悉,说明书中所涉及的动作和模块并不一定是本申请所必须的。另外,可以理解,本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减,本申请实施例装置中的模块可以根据实际需要进行合并、划分和删减。
此外,根据本申请的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本申请的上述方法中部分或全部步骤的计算机程序代码指令。
或者,本申请还可以实施为一种非暂时性机器可读存储介质(或计算机可读存储介质、或机器可读存储介质),其上存储有可执行代码(或计算机程序、或计算机指令代码),当所述可执行代码(或计算机程序、或计算机指令代码)被电子设备(或电子设备、服务器等)的处理器执行时,使所述处理器执行根据本申请的上述方法的各个步骤的部分或全部。
本领域技术人员还将明白的是,结合这里的申请所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。
附图中的流程图和框图显示了根据本申请的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本申请的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (10)
1.一种Flash存储器的数据读写方法,其特征在于,包括:
获取待存储数据;
读取第m单元的校验位数据,所述m为大于或等于零的整数;
根据所述第m单元的校验位数据判断所述第m单元的数据存储情况,若第m单元中无存储数据,则在所述第m单元写入待存储数据后判断所述待存储数据是否写入成功,若是,则将所述m加一并将写错计数清零后执行获取待存储数据的步骤;
若否,则将所述写错计数加一后,判断所述写错计数是否大于或等于第一写错计数阈值,若是,则对所述Flash存储器进行数据擦除并将所述m和所述写错计数清零后,结束数据存储程序并发出使用寿命检测提醒。
2.根据权利要求1所述的Flash存储器的数据读写方法,其特征在于,所述判断所述写错计数是否大于或等于第一写错计数阈值之后,包括:
若所述写错计数小于第一写错计数阈值,则判断所述写错计数是否大于或等于第二写错计数阈值,若是,则对所述Flash存储器进行数据读取后再进行数据擦除,并将所述m清零后执行在所述第m单元写入待存储数据的步骤;
所述第一写错计数阈值大于所述第二写错计数阈值。
3.根据权利要求1所述的Flash存储器的数据读写方法,其特征在于,所述根据所述第m单元的校验位数据判断所述第m单元的数据存储情况,包括:
若所述第m单元的校验位数据为空值,则所述第m单元中无存储数据;
若所述第m单元的校验位数据为校验信息,则所述第m单元含存储数据。
4.根据权利要求3所述的Flash存储器的数据读写方法,其特征在于,所述根据所述第m单元的校验位数据判断所述第m单元的数据存储情况之后,包括:
若所述第m单元中含存储数据,则将所述m加一后执行读取第m单元的校验位数据的步骤。
5.根据权利要求1所述的Flash存储器的数据读写方法,其特征在于,所述读取第m单元的校验位数据之前,包括:
将所述Flash存储器按照预设字节长度划分为n个单元,所述n为大于一的正整数。
6.根据权利要求5所述的Flash存储器的数据读写方法,其特征在于,
所述Flash存储器中设有满载标记位,当第n个单元的校验位数据不为空值时,所述满载标记位的状态记作满载,否则所述满载标记位的状态记作非满载。
7.根据权利要求6所述的Flash存储器的数据读写方法,其特征在于,所述对所述Flash存储器进行数据擦除,包括:
从所述Flash存储器的起始区域开始进行擦除,并在擦除完成后将所述满载标记位的状态更新为非满载,退出数据擦除程序;
在擦除过程中,若获取到系统功能指令,则维持所述满载标记位不变,并在退出数据擦除程序后执行所述系统功能指令,并在所述系统功能指令执行完成后重新检测所述满载标记位的状态。
8.根据权利要求6所述的Flash存储器的数据读写方法,其特征在于,还包括:
当获取到数据擦除指令时,检测所述满载标记位的状态,当所述满载标记位的状态为满载时,调用一次擦除函数,并在擦除完成后将所述满载标记位的状态更新为非满载,退出数据擦除程序;
在擦除过程中,若获取到系统功能指令,则维持所述满载标记位不变,并在退出数据擦除程序后执行所述系统功能指令,并在所述系统功能指令执行完成后重新检测所述满载标记位的状态。
9.根据权利要求2所述的Flash存储器的数据读写方法,其特征在于,所述对所述Flash存储器进行数据读取,包括:
将所述m清零;
读取所述第m单元的校验位数据;
根据所述第m单元的校验位数据判断所述第m单元的数据存储情况,若第m单元中含存储数据,则读取第m单元中存储的数据并将所述m加一后,执行读取第m单元的校验位数据的步骤;
若第m单元中无存储数据,则判断所述m是否大于零,若是,则结束数据读取程序。
10.根据权利要求9所述的Flash存储器的数据读写方法,其特征在于,所述判断所述m是否大于零之后,包括:
若所述m等于零,则发出所述Flash存储器为空的提示后结束数据读取程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111604778.XA CN114461537A (zh) | 2021-12-24 | 2021-12-24 | Flash存储器的数据读写方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111604778.XA CN114461537A (zh) | 2021-12-24 | 2021-12-24 | Flash存储器的数据读写方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114461537A true CN114461537A (zh) | 2022-05-10 |
Family
ID=81407933
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111604778.XA Pending CN114461537A (zh) | 2021-12-24 | 2021-12-24 | Flash存储器的数据读写方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114461537A (zh) |
-
2021
- 2021-12-24 CN CN202111604778.XA patent/CN114461537A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6601132B2 (en) | Nonvolatile memory and method of writing data thereto | |
US7197613B2 (en) | Nonvolatile memory | |
US9471435B2 (en) | Information processing device, information processing method, and computer program | |
US20060224841A1 (en) | Information processing device and information processing method | |
CN102135927B (zh) | 一种基于nand flash的系统引导方法和装置 | |
KR20070024624A (ko) | 플래시 메모리 장치에서 내부 프로그래밍 동안 동시적으로외부 판독 동작을 수행하기 위한 방법 및 시스템 | |
US20110283051A1 (en) | Moving executable code from a first region of a non-volatile memory to a second region of the non-volatile memory | |
JPWO2004031966A1 (ja) | 不揮発性記憶装置の制御方法 | |
CN110286853B (zh) | 一种数据写入方法和装置、计算机可读存储介质 | |
CN103425589A (zh) | 控制装置、存储装置以及存储控制方法 | |
US20080016415A1 (en) | Evaluation system and method | |
US9524212B2 (en) | Method, device and operating system for processing and using burn data of NAND flash | |
CN112015447B (zh) | 电子设备的系统更新方法及装置、电子设备及存储介质 | |
CN112540725A (zh) | 非易失性数据存储方法、嵌入式系统以及存储介质 | |
CN114721602B (zh) | 一种基于FreeRTOS的Nor Flash滚动存储方法及装置 | |
CN108664208B (zh) | 基于flash存储器的文件追加写操作方法及装置 | |
US7657795B2 (en) | Method and apparatus for writing to a target memory page of a memory | |
CN116880782A (zh) | 一种内嵌式存储器及其测试方法 | |
US7496822B2 (en) | Apparatus and method for responding to data retention loss in a non-volatile memory unit using error checking and correction techniques | |
US20050060690A1 (en) | Microprocessor system with software emulation processed by auxiliary hardware | |
CN114461537A (zh) | Flash存储器的数据读写方法 | |
CN113918485B (zh) | 一种闪存资料防丢失方法、装置、设备及存储介质 | |
CN112908390B (zh) | 数据存储方法、装置、电子设备及存储介质 | |
CN116185299A (zh) | 闪存控制器及相关装置和方法 | |
CN114400037B (zh) | Nand擦除方法、装置及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |