CN114637469A - Flash存储器的数据读写方法、系统以及介质、设备 - Google Patents
Flash存储器的数据读写方法、系统以及介质、设备 Download PDFInfo
- Publication number
- CN114637469A CN114637469A CN202210283860.5A CN202210283860A CN114637469A CN 114637469 A CN114637469 A CN 114637469A CN 202210283860 A CN202210283860 A CN 202210283860A CN 114637469 A CN114637469 A CN 114637469A
- Authority
- CN
- China
- Prior art keywords
- data
- current
- write
- flash memory
- area
- 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
Images
Classifications
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种Flash存储器的数据读写方法、系统以及介质、设备,方法包括:确定向Flash存储器写入数据,获取当前写入片区;检测到当前写入片区的存储空间不满足待写入数据的存储需求,根据当前写入片区确定目标写入片区,并将当前写入片区的状态值从使用中调整为已满;将待写入数据写入目标写入片区;检测到需要擦除状态值为已满的片区,擦除状态值为已满的片区中的数据。该数据读写方法可大大减少Flash存储器的擦除次数,提高了Flash存储器的使用寿命。
Description
技术领域
本发明涉及到存储器技术领域,尤其涉及到一种Flash存储器的数据读写方法、系统以及介质、设备。
背景技术
Flash存储器是Intel公司于1988年推出的一种新型半导体存储器,具有非挥发存储特性,简称闪存,该类只读存储器具有集成度高、读取速度快、单一供电、再编程次数多等显著优点,Flash存储器作为非易失数据存储设备,被广泛地应用于嵌入式系统中。单片机片内的Flash存储器可以在线编程,也可以存储程序运行时的数据。
Flash存储器的存储单元组织为片区阵列,片区是擦除操作的最小单位,擦除操作将片区内所有的位置为“1”。每个片区可包含多个页,页是读、写操作的基本单位,在对页进行写操作(也叫编程操作)之前需要判断该页内所有的位是否为“1”。如果全部为“1”,则可以进行写操作;否则,需要先对整个片区进行擦除操作。因此,Flash存储器在使用时,需要进行多次擦除,但是,Flash存储器的寿命是有限的,其擦除次数也有限制,现在大多数Flash存储器可承受的擦除次数为10万次,那么,当擦写次数过多时,会导致整个Flash存储器损坏掉,进而降低Flash存储器的使用寿命。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本发明的一个目的在于提出一种Flash存储器的数据读写方法,以减少Flash存储器的擦除次数,延长Flash存储器的使用寿命。
本发明的第二个目的在于提出一种计算机可读存储介质。
本发明的第三个目的在于提出一种电子设备。
本发明的第四个目的在于提出一种Flash存储器的数据读写系统。
为达到上述目的,本发明第一方面实施例提出了一种Flash存储器的数据读写方法,所述Flash存储器包括多个片区,所述方法包括:确定向所述Flash存储器写入数据,获取当前写入片区;检测到所述当前写入片区的存储空间不满足待写入数据的存储需求,根据所述当前写入片区确定目标写入片区,并将所述当前写入片区的状态值从使用中调整为已满;将所述待写入数据写入所述目标写入片区;检测到需要擦除状态值为已满的片区,擦除状态值为已满的片区中的数据。
根据本发明的一个实施例,所述的Flash存储器的数据读写方法,在擦除状态值为已满的片区中的数据之前,所述方法还包括:检测到状态值为已满的片区中存在需要搬运至所述目标写入片区的待搬运数据,将所述待搬运数据搬运至所述目标写入片区。
根据本发明的一个实施例,所述的Flash存储器的数据读写方法,所述判断确定需要擦除状态值为已满的片区中的数据,包括:统计状态值为已满的片区的数量;检测到所述数量达到预设阈值,确定需要擦除状态值为已满的片区中的数据。
根据本发明的一个实施例,所述的Flash存储器的数据读写方法,所述多个片区包括静态片区和动态片区,所述方法还包括:检测到所述当前写入片区为动态片区,执行对所述当前写入片区的存储空间进行检测的步骤;检测到所述当前写入片区为静态片区,擦除所述当前写入片区中的数据,并在擦除后将所述待写入数据写入所述当前写入片区。
根据本发明的一个实施例,所述的Flash存储器的数据读写方法,所述方法还包括:确定读取所述Flash存储器中的数据,获取当前读取片区;对所述当前读取片区中的数据进行校验;检测到校验通过,将所述当前读取片区中的数据存入缓存器。
根据本发明的一个实施例,所述的Flash存储器的数据读写方法,所述对当前读取片区中的数据进行校验,包括:检测到所述当前读取片区为静态片区,对所述当前读取片区中数据的校验码进行校验;检测到所述当前读取片区为动态片区,对所述当前读取片区的ID长度、读取地址,以及所述当前读取片区中数据的校验码进行校验。
根据本发明的一个实施例,所述的Flash存储器的数据读写方法,所述方法还包括:确定所述Flash存储器所在系统初始化,获取到各所述片区的标记值和状态值;根据各所述片区的标记值和状态值,确定所述当前写入地址和所述当前读取地址并存储。
根据本发明的一个实施例,所述的Flash存储器的数据读写方法,所述根据各所述片区的标记值和状态值,确定所述当前写入地址和所述当前读取地址,包括:根据所述标记值确定所述Flash存储器首次使用,得到所述当前写入地址为预设写入地址、所述当前读取地址为预设读取地址;根据所述标记值确定所述Flash存储器非首次使用,且根据所述状态值确定各所述片区的状态均正常,根据所述状态值索引当前写入片区,并根据所述当前写入片区确定所述当前写入地址和所述当前读取地址;根据所述标记值确定所述Flash存储器非首次使用,且根据所述状态值确定存在状态异常的片区,得到所述当前写入地址为预设写入地址、所述当前读取地址为预设读取地址。
根据本发明的一个实施例,所述的Flash存储器的数据读写方法,所述获取当前写入片区,包括:根据所述当前写入地址得到所述当前写入片区;所述获取当前读取片区,包括:根据所述当前读取地址得到所述当前读取片区。
根据本发明的一个实施例,所述的Flash存储器的数据读写方法,所述将所述待写入数据写入所述目标写入片区之后,所述方法还包括:更新所述当前写入地址和所述当前读取地址。
为达到上述目的,本发明第二实施例提出了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如上述的Flash存储器的数据读写方法。
为达到上述目的,本发明第三实施例提出了一种电子设备,包括存储器、处理器和存储在所述存储器上的计算机程序,所述计算机程序被所述处理器执行时,实现如上述的Flash存储器的数据读写方法。
为达到上述目的,本发明的第四实施例提出了一种Flash存储器的数据读写系统,包括:Flash存储器和所述的电子设备。
本发明实施例的Flash存储器的数据读写方法、系统以及介质、设备,通过确定向Flash存储器写入数据,获取当前写入片区,检测到当前写入片区的存储空间不满足待写入数据的存储需求,根据当前写入片区确定目标写入片区,并将当前写入片区的状态值从使用中调整为已满,将待写入数据写入目标写入片区,检测到需要擦除状态值为已满的片区,擦除状态值为已满的片区中的数据的方法。由此,可减少Flash存储器的擦除次数,延长Flash存储器的使用寿命。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
图1是本发明实施例的Flash存储器数据读写方法的流程图;
图2是本发明的一个示例的擦除状态值为已满片区的流程图;
图3是本发明的一个示例的判断是否擦除已满片区的流程图;
图4是本发明的一个示例的判断当前写入片区的流程图;
图5是本发明的一个实施例的Flash存储器数据写入的流程图;
图6是本发明的一个实施例的Flash存储器数据读取的流程图;
图7是本发明的一个实施例的判断Flash存储器首次使用的流程图;
图8是本发明的一个实施例的Flash初始化的流程图;
图9是本发明的实施例的Flash存储器数据读写方法系统的结构框图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
为了更好地理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
在实际应用中,用Flash存储器保存一些参数(N个字节)时,一般都是直接将这N个字节从Flash存储器的首地址开始保存,每次改写也是直接修改这部分内容,那这样参数刷新的次数和Flash存储器擦除的寿命一样。为提高数据刷新次数,本发明采用循环写入的方式以降低擦除的次数。
为方便以下详细阐述,首先对需要写入的每帧数据进行定义,如下表1所示:
表1
DataID | DataLen | Data1 | … | DataN | CheckSum | EOP |
其中,DataID是数据ID,用来区分不同的参数;DataLen是数据长度,DataN是数据,Checksum是校验和,EOP是结束符。
Flash存储器中每个片区的数据结构如下表2所示:
表2
其中,SectorLabel表示片区是否使用标记,也用来区分是否为首次操作Flash存储器;SectorStatus表示片区当前的状态,片区当前状态可包括已满、使用中和空三个状态;Data*Len,即上述的数据Data1-N。
图1是本发明实施例的Flash存储器数据读写方法的流程图。
如图1所示,Flash存储器包含多个片区,Flash存储器的数据读写方法包括:
S101,确定向Flash存储器写入数据,获取当前写入片区。
向Flash存储器写入数据时,因Flash存储器包含多个片区,每一个片区的状态都不同,片区状态分为已满、使用中以及空三个状态,获取的当前写入片区有可能满足待写入数据的存储要求,也有可能不满足待写入数据的存储要求,所以获取到当前写入片区之后需对当前写入片区的存储空间进行检测。若当前写入片区的状态为已满状态,则该当前写入片区不满足待写入数据的存储需求,也就无法写入待写入数据;若当前写入片区的状态为使用中,且剩余空间不足以存储待写入数据,则该当前写入片区也不满足待写入数据的存储需求,也就无法写入待写入数据。
具体地,待写入数据有动态数据和静态数据之分,其可通过数据ID区分;对应地,多个片区也可分为动态片区和静态片区。根据数据的不同类型,可得到的当前写入片区的类型也不相同,不同类型的片区对其进行擦除和写入数据的方式也不同。
作为一个可行的实施方式,如图4所示,获取当前写入片区之后,需要判断待写入数据的类型,从而判断当前写入片区的类型从而执行不同的命令。开始命令后,根据待写入数据的ID判断待写入数据的类型,即判断数据是动态数据还是静态数据。当根据数据类型判断当前写入片区为动态片区时,判断当前写入片区的存储空间是否满足待写入数据的存储需求,当根据数据类型判定当前写入片区为静态片区时,擦除当前写入片区中的数据,并在擦除后将待写入数据写入当前写入片区中。
S102,检测到当前写入片区的存储空间不满足待写入数据的存储要求,根据当前写入片区确定目标写入片区,并将当前写入片区的状态值从使用中调整为已满。
具体地,可通过当前写入地址确定当前写入片区,若当前写入地址指向的当前写入片区没有空间写入数据时,可将当前写入地址(CurWrAddress)指向下一个片区Sector(即目标写入片区),并将当前写入片区的状态值(SectorStatus)从使用中调整为已满(即从ACTIVE调整为FULLED),还可将目标写入片区的状态值调整为使用中,此时的CurWrAddress已经指向了目标写入片区。若目标写入片区有空间写入待写入数据,则将数据写入到目标写入片区。若目标写入片区的空间不足以写入待写入数据,则再次更换写入地址CurWrAddress到下一个写入片区,并标记上一个片区状态值为已满,直至找到满足待写入数据写入需求的写入片区,将该写入片区作为目标写入片区,并将待写入数据写入到目标写入片区。需要说明的是,若每个片区的存储空间相同,则可仅查找一次得到目标写入片区。
S103,将待写入数据写入目标写入片区。
将待写入数据写入到目标写入片区时,检索到的状态值为已满的片区的数量可能较多,若要满足之后的数据写入需求,则需擦除已满的片区,所以将待写入数据写入目标片区后还需检测是否需要擦除状态值为已满的片区。例如,Flash存储器有5个片区,当状态值为已满的片区数量达到3个时,需擦除状态值为已满的片区。需要说明的是,在数据写入时,片区是循环写入的,例如,5个片区分别记为片区1、片区2、片区3、片区4、片区5,当片区1写满时,写片区2;当片区2写满时,写片区3;依此类推,当片区5写满时,写片区1。
具体地,如图3所示,判断是否需要擦除状态值为已满的片区中的数据时,首先统计状态值为已满的片区的数量,判断状态值为已满的片区数量是否达到了预设阈值,若达到了预设阈值则判定需要擦除状态值为已满的片区中的数据,此时可设置拷贝标识CopyFlag为1;若没有达到预设阈值则判定为不需要擦除状态值为已满的片区中的数据,此时拷贝标识CopyFlag可为0。其中,预设阈值小于片区的总数量。随着数据的写入,状态值为已满的片区越来越少,若不及时擦除,再有数据写入时,可能会影响运行效率,所以设定预设阈值,当前数据写入完成,且已满片区的数量达到预设阈值时,擦除已满片区中的数据,这样能够及时擦除片区,提高之后数据的写入效率,且无需每次写入数据时,均进行数据擦除,减少了擦除次数。
S104,检测到需要擦除状态值为已满的片区,擦除状态值为已满的片区中的数据。
当已满片区的数量达到预设阈值时,此时就需要擦除状态值标记为已满的片区,在擦除状态值为已满的片区的数据前,为避免一些重要数据被擦除,还需要判断即将被擦除的片区数据中是否存在需要搬运至目标写入片区的待搬运数据;同时,还可将即将被擦除的片区数据拷贝至其他存储器。
具体地,如图2所示,图2是本发明的一个示例的擦除状态值为已满片区的流程图。
S1041,检测到状态值为已满的片区中存在需要搬运至目标片区的代搬运数据。
若检测到需要擦除状态值为已满的片区中的数据,则再次判断已满的片区中是否存在需要搬运至目标写入片区的待搬运数据,若不存在需要搬运至目标片区中的数据,则执行步骤S1043中擦除状态值为已满的片区数据即可,但若检测到存在需要搬运至目标片区中的数据,则不能简单执行擦除状态值为已满的片区,这样会损失和破坏数据,需执行步骤S1042中将待搬运数据搬运至目标写入片区。
S1042,将待搬运数据搬运至目标写入片区。
将待搬运数据搬运至目标写入片区后,即将被擦除的片区中的数据均为无用数据,这样操作既保护了有用数据,也扩大了存储空间。
S1043,擦除状态值为已满的片区中的数据。
需要说明的是,在擦除状态值为已满的片区后,需将状态值调整为空,以便之后的数据写入。
图5是本发明的一个实施例的Flash存储器数据写入的流程图。
如图5所示,对当前片区写入数据时,首先输入待写入数据的ID、数据长度Len以及缓存器Buff,根据ID属性断当前写入片区的类型,若为静态片区,则擦除当前固定地址指向的当前写入片区中的数据,并且将数据填充进去(数据格式为数据ID、数据长度Len、数据Data、校验和CheckSum、结束符EOP)。数据填充成功则返回写入成功Success,填充失败则返回写入失败Fail。
若为动态片区,则判断ID是否有效,在ID有效的情况下,从CurWrAddress获得数据的当前写入地址,其次判断当前地址指向的当前写入片区是否有空间写入,若当前写入片区没有空间写入时,将写入地址(CurWrAddress)指向下一个片区(即目标写入片区),将当前的写入片区的状态值(SectorStatus)从使用中调整为已满(即从ACTIVE调整为FULLED),此时的CurWrAddress已经指向了目标写入片区对应的地址。当前写入片区有空间写入时,填充数据格式(数据格式为数据ID、数据长度Len、数据Data、校验和CheckSum、结束符EOP),后判断当前写入片区是否写入成功,若写入成功,则记录当前写入地址CurWrAddress,并将其作为下次的读取地址和写入地址,若当前写入片区写入不成功,则更新写入地址CurWrAddress指向下一次写入地址,作为下一次写入时的当前写入地址,并返回写入失败Fail。
在目标写入片区写入成功时,需要判断已满的片区中是否存在需要搬运至目标写入片区的数据,若存在则需要搬运数据后才能擦除状态值为已满的片区。搬运数据至目标片区后,更新写入地址和读取地址,并在擦除后将片区的状态值调整为空(EMPTY)。若不存在待板运数据,则直接擦除状态值为已满的片区,并在擦除后将片区的状态值调整为空(EMPTY)),最后返回写入成功Success。
本发明实施例的Flash存储器的数据读写方法,在向Flash存储器写入数据时,通过片区的循环写入,可无需在每次写入前均擦除Flash存储器,从而可减少Flash存储器的擦除次数,提升Flash存储器的使用寿命。
在本发明的一个实施例中,Flash存储器的数据读写方法还包括:确认读取Flash存储器中的数据,获取当前读取片区,对当前读取片区中的数据进行校验;检测到校验通过,将当前读取片区中的数据存入缓存器。
其中,获取当前读取片区,是由当前读取地址得到的,对当前读取片区中的数据进行校验,可包括:检测到当前读取片区为静态片区,对当前读取片区中数据的校验码进行校验;检测到当前读取片区为动态片区,对当前读取片区的ID长度、读取地址,以及当前读取片区中数据的校验码进行校验。
具体地,当前读取片区为静态片区时,对当前读取片区中数据的校验码(如上述的校验和)进行校验;当前读取片区为动态片区时,对当前读取片区的ID长度、读取地址,以及当前读取片区中数据的校验码(如上述的校验和)进行校验,具体可依次校验,在任一个校验不通过时,可结束读取流程。
图6是本发明的一个实施例Flash存储器数据读取的流程图。
具体地,如图6所示,执行开始命令Start,输入数据ID和Buff,Buff为数据缓存器。判断数据ID的属性,若输入的数据ID表示静态数据,则从固定地址指向的当前读取片区中获取数据ID,然后判断数据是否有效。判断当前数据是否有效的方法是对当前读取片区中的数据进行校验,即判断当前读取片区的校验和CheckSum。当校验通过时将当前读取片区中的数据存入缓存器Buff,然后返回读取成功Success,若校验不通过则返回读取失败Fail。
若输入的数据ID表示动态数据,则先判断数据ID长度是否有效,若无效则返回读取失败Fail,若数据ID长度有效,则从ID数据中读取ID数据偏移地址并判断读取的偏移地址是否有效,若读取偏移地址无效则返回读取失败Fail。若读取偏移地址有效则对当前读取片区中数据的校验码进行校验(即判断CheckSum是否有效),若校验码无效即校验不通过则返回读取失败Fail,若校验通过则当前片区读取的数据存入缓存器Buff,后成功返回读取成功Success。
对当前片区的数据读取的流程,因为有之前的数据写入的地址索引操作,所以当前片区的数据读取的操作相对简单,只需要使用校验码来确保数据是否正确,大大提高了Flash的数据读取效率。
在本发明的一个实施例中,Flash存储器的数据读写方法还包括:确定Flash存储器所在系统初始化,获取各片区的标记值和状态值;根据各片区的标记值和状态值,确定当前写入地址和当前读取读取地址并存储。
具体地,如图7所示,当Flash存储器所在系统初始化时,获取各片区的标记值和状态值,根据各片区的标记值和状态值,确定当前写入地址和当前读取地址,其中,所述标记值包括使用和未使用,所述状态值包括已满、使用中和空。如果Flash存储器是第一次使用,则需要初始化各片区的标签(即标记值),如果Flash存储器已有数据存储,则需要索引到当前写入片区,以及当前写入地址CurWrAddress和最新的ID数据偏移地址(即当前读取地址),并将这些数据存入SRAM(Static Random-Access Memory,静态随机存取存储器),其中,当前读取地址存储在IdOffsetAddr[]中。
根据标记值确定确定Flash存储器首次使用,则当前写入地址为预设写入地址、所述当前读取地址为预设读取地址,若Flash存储器不是首次使用,则还需根据状态值判断状态值是否正常,若根据状态值确定各片区的状态均正常,则根据状态值索引当前写入片区,并根据当前写入片区确定当前写入地址和当前读取地址,若状态值不正常,即存在异常的片区,则返回执行当前写入地址为预设写入地址、当前读取地址为预设读取地址的步骤。
在本发明的一个实施例中,在将待写入数据写入目标写入片区之后,可更新当前写入地址,以便下次写入时获取当前写入片区。
图8是本发明的一个实施例的Flash存储器初始化的流程图。
具体地,如图8所示,开始命令后,先配置Flash操作时钟然后检查当前写入片区的标记值SectorLabel,标记值有使用和未使用两种。若当前写入片区有标签则表示当前写入片区有数据写入即标记值为使用,若当前写入片区没有标签则表示当前写入片区未使用。当当前写入片区没有标签时,则对各片区的标签进行初始化操作,操作成功则继续对各片区的状态值进行初始化,若操作失败则返回初始化失败Fail,对各片区的状态值进行初始化操作若失败也返回初始化失败Fail。若对各片区的状态值进行初始化操作成功,则初始化当前写入地址(Sector0+4)以及初始化ID数据偏移地址(将偏移地址设为0,即当前读取地址)。
当当前写入片区有标签时,代表当前写入片区已经使用过,也就是存储了数据,此时查找当前各片区时使用状态即状态值SectorStatus,若状态异常则初始化各片区的状态值,后执行和无标签初始化各片区的状态一样的操作,在此不再赘述。若状态正常,则索引当前写入地址并将写入地址存入SRAM和索引当前最新ID数据存放偏移地址(即当前读取地址)并存入SRAM,最后返回初始化成功Success,执行上述操作在使用前将Flash初始化完成以方便后续的数据写入和读取操作。
本发明提出的Flash存储器的数据读写方法,通过循环写入的方式,弥补了每写入一次数据就要擦除一次Flash存储器的缺陷,从而大大地减少了Flash存储器的擦除次数,提高了Flash存储器的使用寿命。
基于上述的Flash存储器的数据读写方法,本发明提出了一种计算机可读存储介质。
在本发明的实施例中,计算机程序被处理器执行时,实现上述实施例的Flash存储器的数据读写方法。
基于上述的Flash存储器数据读取方法,本发明提出了一种电子设备。
在该实施例中,电子设备包括存储器、处理器和存储在存储器上的计算机程序,计算机程序被所述处理器执行时,实现如上述实施例的Flash存储器的数据读写方法。
基于上述的电子设备,本发明还提出了一种Flash存储器的数据读写系统。
如图9所示,Flash存储器的数据读写系统100包括电子设备10和Flash存储器20。
本发明实施例的Flash存储器的数据读写系统以及计算机可读存储介质、电子设备,通过上述的Flash存储器的数据读写方法,可减少Flash存储器的擦除次数,提高Flash存储器的使用寿命。
需要说明的是,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”、“顺时针”、“逆时针”、“轴向”、“径向”、“周向”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
在本发明中,除非另有明确的规定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接触,或第一和第二特征通过中间媒介间接接触。而且,第一特征在第二特征“之上”、“上方”和“上面”可是第一特征在第二特征正上方或斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”可以是第一特征在第二特征正下方或斜下方,或仅仅表示第一特征水平高度小于第二特征。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (13)
1.一种Flash存储器的数据读写方法,其特征在于,所述Flash存储器包括多个片区,所述方法包括:
确定向所述Flash存储器写入数据,获取当前写入片区;
检测到所述当前写入片区的存储空间不满足待写入数据的存储需求,根据所述当前写入片区确定目标写入片区,并将所述当前写入片区的状态值从使用中调整为已满;
将所述待写入数据写入所述目标写入片区;
检测到需要擦除状态值为已满的片区,擦除状态值为已满的片区中的数据。
2.根据权利要求1所述的Flash存储器的数据读写方法,其特征在于,在擦除状态值为已满的片区中的数据之前,所述方法还包括:
检测到状态值为已满的片区中存在需要搬运至所述目标写入片区的待搬运数据,将所述待搬运数据搬运至所述目标写入片区。
3.根据权利要求1或2所述的Flash存储器的数据读写方法,其特征在于,所述确定需要擦除状态值为已满的片区中的数据,包括:
统计状态值为已满的片区的数量;
检测到所述数量达到预设阈值,确定需要擦除状态值为已满的片区中的数据。
4.根据权利要求1所述的Flash存储器的数据读写方法,其特征在于,所述多个片区包括静态片区和动态片区,所述方法还包括:
检测到所述当前写入片区为动态片区,执行对所述当前写入片区的存储空间进行检测的步骤;
检测到所述当前写入片区为静态片区,擦除所述当前写入片区中的数据,并在擦除后将所述待写入数据写入所述当前写入片区。
5.根据权利要求4所述的Flash存储器的数据读写方法,其特征在于,所述方法还包括:
确定读取所述Flash存储器中的数据,获取当前读取片区;
对所述当前读取片区中的数据进行校验;
检测到校验通过,将所述当前读取片区中的数据存入缓存器。
6.根据权利要求5所述的Flash存储器的数据读写方法,其特征在于,所述对当前读取片区中的数据进行校验,包括:
检测到所述当前读取片区为静态片区,对所述当前读取片区中数据的校验码进行校验;
检测到所述当前读取片区为动态片区,对所述当前读取片区的ID长度、读取地址,以及所述当前读取片区中数据的校验码进行校验。
7.根据权利要求5所述的Flash存储器的数据读写方法,其特征在于,所述方法还包括:
确定所述Flash存储器所在系统初始化,获取各所述片区的标记值和状态值;
根据各所述片区的标记值和状态值,确定当前写入地址和当前读取读取地址并存储。
8.根据权利要求7所述的Flash存储器的数据读写方法,其特征在于,所述根据各所述片区的标记值和状态值,确定所述当前写入地址和所述当前读取地址,包括:
根据所述标记值确定所述Flash存储器首次使用,得到所述当前写入地址为预设写入地址、所述当前读取地址为预设读取地址;
根据所述标记值确定所述Flash存储器非首次使用,且根据所述状态值确定各所述片区的状态均正常,根据所述状态值索引当前写入片区,并根据所述当前写入片区确定所述当前写入地址和所述当前读取地址;
根据所述标记值确定所述Flash存储器非首次使用,且根据所述状态值确定存在状态异常的片区,得到所述当前写入地址为预设写入地址、所述当前读取地址为预设读取地址。
9.根据权利要求7所述的Flash存储器的数据读写方法,其特征在于,
所述获取当前写入片区,包括:
根据所述当前写入地址得到所述当前写入片区;
所述获取当前读取片区,包括:
根据所述当前读取地址得到所述当前读取片区。
10.根据权利要求7所述的Flash存储器的数据读写方法,其特征在于,所述将所述待写入数据写入所述目标写入片区之后,所述方法还包括:
更新所述当前写入地址和所述当前读取地址。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1-10中任一项所述的Flash存储器的数据读写方法。
12.一种电子设备,包括存储器、处理器和存储在所述存储器上的计算机程序,其特征在于,所述计算机程序被所述处理器执行时,实现如权利要求1-10中任一项所述的Flash存储器的数据读写方法。
13.一种Flash存储器的数据读写系统,其特征在于,包括:Flash存储器和如权利要求12所述的电子设备。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210283860.5A CN114637469A (zh) | 2022-03-21 | 2022-03-21 | Flash存储器的数据读写方法、系统以及介质、设备 |
PCT/CN2023/075837 WO2023179243A1 (zh) | 2022-03-21 | 2023-02-14 | 数据读写方法、系统及介质、设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210283860.5A CN114637469A (zh) | 2022-03-21 | 2022-03-21 | Flash存储器的数据读写方法、系统以及介质、设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114637469A true CN114637469A (zh) | 2022-06-17 |
Family
ID=81950488
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210283860.5A Pending CN114637469A (zh) | 2022-03-21 | 2022-03-21 | Flash存储器的数据读写方法、系统以及介质、设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114637469A (zh) |
WO (1) | WO2023179243A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023179243A1 (zh) * | 2022-03-21 | 2023-09-28 | 上海美仁半导体有限公司 | 数据读写方法、系统及介质、设备 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117742588B (zh) * | 2023-11-30 | 2024-06-04 | 武汉芯必达微电子有限公司 | 使用Flash模拟EEPROM的数据存储方法及系统 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7190617B1 (en) * | 1989-04-13 | 2007-03-13 | Sandisk Corporation | Flash EEprom system |
JP4647010B2 (ja) * | 2009-01-28 | 2011-03-09 | 三菱電機株式会社 | 電子制御装置 |
CN103268201B (zh) * | 2013-04-19 | 2016-02-17 | 北京经纬恒润科技有限公司 | 一种数据存储方法、存储装置及读取方法 |
CN107608639A (zh) * | 2017-10-20 | 2018-01-19 | 深圳益邦阳光有限公司 | 基于闪存的队列式循环存储方法、电子设备和存储介质 |
CN110764704B (zh) * | 2019-10-18 | 2023-09-05 | 浙江大华技术股份有限公司 | 一种环境变量写入方法、存储介质及电子装置 |
CN112181303A (zh) * | 2020-09-29 | 2021-01-05 | 广东艾科技术股份有限公司 | 数据存储方法、装置、计算机设备和存储介质 |
CN114637469A (zh) * | 2022-03-21 | 2022-06-17 | 上海美仁半导体有限公司 | Flash存储器的数据读写方法、系统以及介质、设备 |
-
2022
- 2022-03-21 CN CN202210283860.5A patent/CN114637469A/zh active Pending
-
2023
- 2023-02-14 WO PCT/CN2023/075837 patent/WO2023179243A1/zh unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023179243A1 (zh) * | 2022-03-21 | 2023-09-28 | 上海美仁半导体有限公司 | 数据读写方法、系统及介质、设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2023179243A1 (zh) | 2023-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11914481B2 (en) | Hybrid memory system with configurable error thresholds and failure analysis capability | |
US7054991B2 (en) | Method for controlling non-volatile semiconductor memory system | |
US8732519B2 (en) | Method for using bad blocks of flash memory | |
US20120324277A1 (en) | System and method for detecting copyback programming problems | |
US10936391B2 (en) | Memory management method and storage controller | |
CN114637469A (zh) | Flash存储器的数据读写方法、系统以及介质、设备 | |
CN102750191B (zh) | 用于启动固态非易失性存储设备内的刷新操作的方法 | |
US8051339B2 (en) | Data preserving method and data accessing method for non-volatile memory | |
CN102171659A (zh) | 非易失性存储器中的数据错误恢复 | |
CN110286853B (zh) | 一种数据写入方法和装置、计算机可读存储介质 | |
US7979737B2 (en) | Method for accessing a Flash memory, and associated memory device and controller thereof | |
CN105723344A (zh) | 用于非易失性ram差错重映射的方法和装置 | |
US20120260148A1 (en) | System and method for handling bad bit errors | |
US20160011930A1 (en) | Method for preventing read-disturb errors, memory control circuit unit and memory storage apparatus | |
US20190347006A1 (en) | Method of system information programming for a data storage apparatus and a corresponding method of system information re-building | |
US9552287B2 (en) | Data management method, memory controller and embedded memory storage apparatus using the same | |
CN114721602A (zh) | 一种基于FreeRTOS的Nor Flash滚动存储方法及装置 | |
US20180052635A1 (en) | Electronic control apparatus and information storage method for the same | |
CN112908390B (zh) | 数据存储方法、装置、电子设备及存储介质 | |
CN114203252A (zh) | 非易失存储器的坏块检测方法、装置、设备及存储介质 | |
CN110633056B (zh) | 在操作系统层面的Flash芯片的页面管理方法及存储设备 | |
KR102072351B1 (ko) | 플래시 메모리를 관리하기 위한 방법 | |
CN112433959A (zh) | 实现数据存储处理的方法、装置、计算机存储介质及终端 | |
CN111949198A (zh) | 一种坏块管理方法、装置和存储设备 | |
CN112711378B (zh) | 数据储存方法及读写设备 |
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 |