CN113885791A - Flash存储器的数据写入方法、读取方法和装置 - Google Patents
Flash存储器的数据写入方法、读取方法和装置 Download PDFInfo
- Publication number
- CN113885791A CN113885791A CN202111050881.4A CN202111050881A CN113885791A CN 113885791 A CN113885791 A CN 113885791A CN 202111050881 A CN202111050881 A CN 202111050881A CN 113885791 A CN113885791 A CN 113885791A
- Authority
- CN
- China
- Prior art keywords
- page
- data
- written
- target page
- determining
- 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
- 238000000034 method Methods 0.000 title claims abstract description 37
- 230000009191 jumping Effects 0.000 claims abstract description 10
- 238000010586 diagram Methods 0.000 description 4
- 230000002035 prolonged effect Effects 0.000 description 3
- 239000000872 buffer Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
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
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/0623—Address space extension for memory modules
-
- 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/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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
-
- 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)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本发明公开了一种Flash存储器的数据写入方法、读取方法和装置。该方法包括以下步骤:步骤S1,读取第一目标页的数据;步骤S2,根据包含的第一信息,确定第一目标页是否被写入过:若第一目标页未被写入过,则将第一目标页的前一页确定为第一目标页,跳转到步骤S1;若第一目标页被写入过,则执行步骤S3;步骤S3,根据第一目标页的数据和要写入的数据,确定写入页;步骤S4,向写入页写入要写入的数据。本发明能够通过标志信息找出未被写入的空白页,每次写入都将数据写在相邻的空白页上,能够充分利用扇区中的页,减少了擦除的次数,提高了Flash存储器的使用寿命,并且即使本次写入时断电,也可以在其他页找到上一次写入的数据,对数据的保护更有效。
Description
技术领域
本发明涉及一种Flash存储器的数据写入方法,同时涉及Flash存储器的数据读取方法,还涉及相应的数据写入装置和数据读取装置,属于数据存储技术领域。
背景技术
Flash存储器又称闪存,它结合了ROM(Read-Only Memory,只读存储器)和RAM(Random Access Memory,随机存取存储器)的长处,不仅具备EEPROM(ElectricallyErasable Programmable read only memory,带电可擦可编程只读存储器)的性能,还具有NVRAM(Non-Volatile Random Access Memory,非易失性随机访问存储器)可以快速读取数据以及使数据不会因为断电而丢失的优点。
Flash存储器通常包括一个或多个扇区,每个扇区分为多页。实际应用中,有这样一种应用场景,写入较为频繁,每次写入的数据较小(小于一页),每次写入的数据都是在上一次写入的数据的基础上进行一定的更改。现有技术中,若要对Flash存储器某个扇区的一页的数据进行更改,需要先将这页的扇区的所有数据都擦除掉,然后再写入新的数据。这种方式的缺点是若写入过程中断电,则这页数据是不完整的,且无法追溯回未写入之前的数据,并且Flash每次写入都需要擦除整个扇区的数据(Flash每次擦除数据最少擦除一个扇区),频繁写入数据的效率较低。
发明内容
本发明所要解决的首要技术问题在于提供一种Flash存储器的数据写入方法。
本发明所要解决的另一技术问题在于提供一种Flash存储器的数据读取方法。
本发明所要解决的又一技术问题在于提供一种Flash存储器的数据写入装置。
本发明所要解决的又一技术问题在于提供一种Flash存储器的数据读取装置。
为了实现上述目的,本发明采用以下的技术方案:
根据本发明实施例的第一方面,提供一种Flash存储器的数据写入方法,包括以下步骤:
步骤S1,读取第一目标页的数据;
步骤S2,根据第一目标页的数据中包含的第一信息,确定第一目标页是否被写入过:若第一目标页未被写入过,则将第一目标页的前一页确定为第一目标页,跳转到步骤S1;若第一目标页被写入过,则执行步骤S3;
步骤S3,根据第一目标页的数据和要写入的数据,确定写入页;
步骤S4,向写入页写入要写入的数据;
其中,第一信息储存在每页数据的特定位置,用于判断第一信息所在的页是否被写入过数据;初始时,步骤S1的第一目标页为Flash存储器的所有扇区的最后一页。
其中较优地,步骤S3,根据第一目标页的数据和要写入的数据,确定写入页,包括以下步骤:
步骤S31,若确定要写入的数据是在第一目标页包含数据的基础上加添数据,则将第一目标页确定为写入页;若确定要写入的数据是在第一目标页包含数据的基础上更改数据,则将第一目标页的下一页确定为写入页。
其中较优地,步骤S31,若确定要写入的数据是在第一目标页包含数据的基础上加添数据,则将第一目标页确定为写入页;若确定要写入的数据是在第一目标页包含数据的基础上更改数据,则将第一目标页的下一页确定为写入页,包括以下步骤:
步骤S311,将要写入的数据与第一目标页的数据做“逻辑与”运算得到运算结果,若运算结果等于要写入的数据,则将第一目标页确定为写入页;若不等于,则将第一目标页的下一页确定为写入页。
其中较优地,Flash存储器包括第一扇区和第二扇区,步骤S3,根据第一目标页的数据和要写入的数据,确定写入页,还包括以下步骤:
步骤S32,若确定第一扇区的最后一页被写入过数据,第二扇区的第一页未被写入过数据,则将第二扇区的第一页确定为写入页;若确定第二扇区的最后一页被写入过数据,第一扇区的第一页未被写入过数据,则将第一扇区的第一页确定为写入页。
根据本发明实施例的第二方面,提供一种Flash存储器的数据读取的方法,包括以下步骤:
步骤S1,读取第二目标页的数据;
步骤S2,根据第二目标页的数据中包含的第一信息,确定第二目标页是否被写入过:若第二目标页未被写入过,则将第二目标页的前一页确定为第二目标页,跳转到步骤S1;若第二目标页被写入过,则将第二目标页确定为读取页;
步骤S3,将读取页的数据确定为读取到的数据;
其中,第一信息储存在每页数据的特定位置,用于判断第一信息所在的页是否被写入过数据;初始时,步骤S1的第一目标页为Flash存储器的所有扇区的最后一页。
根据本发明实施例的第三方面,提供一种Flash存储器的数据写入装置,包括以下模块:
第一读取模块,用于读取第一目标页的数据;
第一确定模块,用于根据第一目标页的数据中包含的第一信息,确定第一目标页是否被写入过:若第一目标页未被写入过,则将第一目标页的前一页确定为第一目标页,转至读取模块;若第一目标页被写入过,则转至第二确定模块;
第二确定模块,用于根据第一目标页的数据和要写入的数据,确定写入页;
写入模块,向写入页写入要写入的数据;
其中,第一信息储存在每页数据的特定位置,用于判断第一信息所在的页是否被写入过数据;初始时,读取模块的第一目标页为Flash存储器的所有扇区的最后一页。。
其中较优地,第二确定模块,包括以下子模块:
第一确定子模块,用于若确定要写入的数据是在第一目标页包含数据的基础上加添数据,则将第一目标页确定为写入页;若确定要写入的数据是在第一目标页包含数据的基础上更改数据,则将第一目标页的下一页确定为写入页。
其中较优地,第一确定子模块,包括以下子模块:
第二确定子模块,用于将要写入的数据与第一目标页的数据做“逻辑与”运算得到运算结果,若运算结果等于要写入的数据,则将第一目标页确定为写入页;若不等于,则将第一目标页的下一页确定为写入页。
其中较优地,Flash存储器包括第一扇区和第二扇区,第二确定模块,还包括以下子模块:
第三确定子模块,用于若确定第一扇区的最后一页被写入过数据,第二扇区的第一页未被写入过数据,则将第二扇区的第一页确定为写入页;若确定第二扇区的最后一页被写入过数据,第一扇区的第一页未被写入过数据,则将第一扇区的第一页确定为写入页。
根据本发明实施例的第四方面,提供一种Flash存储器的数据读取装置,包括以下模块:
第二读取模块,用于读取第二目标页的数据;
第三确定模块,用于根据第二目标页的数据中包含的第一信息,确定第二目标页是否被写入过:若第二目标页未被写入过,则将第二目标页的前一页确定为第二目标页,跳转到步骤S1;若第二目标页被写入过,则将第二目标页确定为读取页;
第四确定模块,用于将读取页的数据确定为读取到的数据;
其中,第一信息储存在每页数据的特定位置,用于判断第一信息所在的页是否被写入过数据;初始时,步骤S1的第一目标页为Flash存储器的所有扇区的最后一页。
本发明具有以下技术效果:由于Flash所有扇区的每页都带有用于判断该页是否曾经被写入过的标志信息,每次写入数据时,能够通过标志信息找出未被写入的空白页,因而在需要多次更改同一页的数据时每次写入都将更改的数据写在相邻的空白页上,能够充分利用扇区中其他的页,写满扇区所有的页,再进行一次擦除,减少了擦除的次数,提高了Flash存储器的使用寿命,并且若每次写入的数据是基于上次写入的数据,即使本次写入时断电,也可以在其他页找到上一次写入的数据,对数据的保护更有效。
附图说明
图1为本发明实施例提供的Flash存储器的数据写入方法流程图;
图2为本发明实施例中,两个扇区写入数据的流程示意图;
图3为本发明实施例提供的Flash存储器的数据读取方法流程图;
图4是本发明实施例提供的Flash存储器的数据写入装置的示意图;
图5是本发明实施例提供的Flash存储器的数据读取装置的示意图。
具体实施方式
下面结合附图和具体实施例对本发明的技术内容进行详细具体的说明。
图1为本发明实施例提供的Flash存储器的数据写入方法的流程图。该数据写入方法至少包括以下步骤:
步骤S1,读取第一目标页的数据;
步骤S2,根据第一目标页的数据中包含的第一信息,确定第一目标页是否被写入过:若第一目标页未被写入过,则将第一目标页的前一页确定为第一目标页,跳转到步骤S1;若第一目标页被写入过,则执行步骤S3;
步骤S3,根据第一目标页的数据和要写入的数据,确定写入页;
步骤S4,向写入页写入要写入的数据。
其中,第一信息储存在每页数据的特定位置,用于判断第一信息所在的页是否被写入过数据;初始时,步骤S1的第一目标页为Flash存储器的所有扇区的最后一页。
本发明实施例的应用场景是:频繁写入少量数据(少于一页,一页可以是256个字节),且每次写入的数据是与上一次写入的数据相关的。本发明的执行主体是控制器,例如CPU或MPU等。实际应用中,上位机(PC)可以向控制器发送写入数据的信号和要写入的数据,由控制器执行步骤S1-S4自行确定要写入数据的页是扇区中的哪页,并对该页写入要写入的数据。因为页数与该页的首地址是相对应的,跟据首地址可以向首地址对应的一页写入要写入的数据。例如Flash存储器包括两个扇区,扇区0和扇区1,每个扇区可以包括16页,则扇区0的第一页对应的地址范围为0x0000~0x00ff,扇区1的最后一页对应的地址范围为0x1f00~0x1fff。确定写入扇区0,可以在地址0x0000写入要写入的数据。
因而控制器确定适合写入数据的页(即写入页),就可以确定该页对应的地址,进而对该页写入要写入的数据。本发明写入数据可以按照从前往后的顺序,每次写入空白的一页,例如第一次写第一页,第二次写入第二页。根据第一目标页的数据和要写入的数据,确定写入页,可以是将写入前最后一次写入的页的次页作为要写入的写入页。因为写入时按照从前往后的顺序,因此写入前最后一次写入的页之前所有的页都写入过数据,写入前最后一次写入的页之后所有的页都没有写入过数据。例如,第五页是本次写入前最后写入的页,则前四页必然都写入过数据,第五页以后都没写入过数据。
第一信息的作用是用于判断某一页是否写入过数据,进而确定哪页是写入前最后一次写入的页。第一信息位于每页的特定位置可以是每页的第一个字节,若一页包含256个字节,则其他255个字节用于写入数据。当一页完全是空白的,该页所有字节的数据都是0xff,因而未写入状态的第一信息可以是0xff,已写入状态的第一信息可以是0xaa。向一个空白页写入数据的同时也将该页的第一信息从未写入状态更改为已写入状态。可以按照从后往前的顺序,从最后一页开始依次判断每页的第一信息,直到找到第一个被写入过的页。
具体地说,Flash存储器的扇区可以包括5页,确定写入页,需要确定每页的第一信息,可以按照54321的顺序读取各个页的第一信息,若第5页的第一信息为未写入状态,第4页的第一信息为已写入状态。可以确定第五页为第一目标页,无需再读取前三页的第一信息,节省时间。写入数据可以按照页码从少到多的顺序写入。例如,Flash存储器的扇区包括5页,每次写入一页或小于一页数据,写入5次,依次按照12345的顺序确定写入页。
在本发明实施例中,每次写入一页数据,若一个扇区包含16页,则写入16次后,所有的页都被写入过,若想再利用该扇区写入数据,需要将该扇区所有的数据擦除,即写16次再擦除1次。若采用传统方法,每次写入都需要把整个扇区的数据备份到RAM中,擦除整个扇区,把更新过的数据从RAM写回Flash存储器,这样效率很低,而且会将对未利用过的页进行擦除,Flash存储器的擦除次数是有限的,反复擦除会大大减少Flash存储器的寿命。
在本发明实施例中,Flash存储器的所有扇区的每页都带有用于判断该页是否曾经被写入过的标志信息,每次写入数据时,能够通过标志信息找出未被写入的空白页,因而在需要多次更改同一页的数据时每次写入都将更改的数据写在相邻的空白页上,能够充分利用扇区中其他的页,写满扇区所有的页,再进行一次擦除,减少了擦除的次数,提高了Flash存储器的使用寿命,并且若每次写入的数据是基于上次写入的数据,即使本次写入时断电,也可以在其他页找到上一次写入的数据,对数据的保护更有效。
其中较优地,步骤S3,根据第一目标页的数据和要写入的数据,确定写入页,包括以下步骤:
步骤S31,若确定要写入的数据是在第一目标页包含数据的基础上加添数据,则将第一目标页确定为写入页;若确定要写入的数据是在第一目标页包含数据的基础上更改数据,则将第一目标页的下一页确定为写入页。
实际应用中,要写入的数据与上一次写入的数据的关系可以分为两种:
1.要写入的数据是在上一次数据的基础上加添数据,加添数据的意思是上次写入的页中一部分字节是经过写入的,另一部分是未经过写入的,不修改已经写入的部分,在未写入过的字节写入数据。例如,上一次写入第二个字节的数据是0x00,要写入的数据的第二个字节的数据是0x00,第三个字节的数据是0x11,因为上一次写入0x00数据的页在0x00之后的部分未写入过数据,可以用于写入,因此若只是在原来的基础上加添数据,可以直接在上一次写入的页写入,无需使用新的一页,这样可以减少写入占用的页的数量,进而减少擦除的次数,提高多次写入的效率,提升Flash存储器可用于写入的次数。
2.要写入的数据是在原来数据的基础上修改数据,修改数据的意思是,修改已经写入的部分。例如上一次写入的数据是0x00,本次写入的数据是0x01,这样若不擦除上一次写入的页中的数据,无法在上一次写入数据的页写入要写入的数据,因此在其他空白页写入要写入的数据。
本发明实施例提供的Flash存储器的数据写入方法,若写入的数据是在上一次写入的数据的基础上是加添数据,可重复利用上一次写入的页进行写入,相较每次写入都换页的方法,每次擦除数据后能写入更多的次数,减少了擦除的次数,有更高的写入效率,支持更多的写入次数。
其中较优地,步骤S31,若确定要写入的数据是在第一目标页包含数据的基础上加添数据,则将第一目标页确定为写入页;若确定要写入的数据是在第一目标页包含数据的基础上更改数据,则将第一目标页的下一页确定为写入页,包括以下步骤:
步骤S311,将要写入的数据与第一目标页的数据做“逻辑与”运算得到运算结果,若运算结果等于要写入的数据,则将第一目标页确定为写入页;若不等于,则将第一目标页的下一页确定为写入页。
实际应用中,本发明实施例将要写入的数据缓存在RAM中,然后再从上一次写入的页的地址读取上一次写入的数据,将要写入的数据与上一次写入的数据做”逻辑与”运算,用逻辑运算的结果与要写入的数据对比,用对比结果判断是否可以利用上一次写入的页写入要写入的数据。
“逻辑与”运算的作用以一位数据为例:
1.上一次写入该位未写入过数据
上一次写入的页中某位的值(原数据)为1,物理上该位可以用于写入,与要写入的数据中对应该位的数值(新数据)a做“逻辑与”运算a&1=a,“逻辑与”运算的运算结果与要写入的数据(新数据)相等,根据对比结果可以在上一次写入的页的该位进行写入,与物理上特性相符合,对比结果是正确的。
2.上一次写入该位写入过数据
若原数据b=1的情况下,“逻辑与”运算的运算结果a&1=a,对比结果同上文,根据对比结果可以在上一次写入的页的该位进行写入,与物理上特性相符合,对比结果是正确的。
若原数据b=0,则,新数据a=0,物理上不可以写入新数据,但新数据与原数据相等,可以继续利用上一次写入的页的该位,运算结果a&b=0=a,对比结果是正确的。
若原数据b=0,则,新数据a=1,则物理上不可以写入新数据,且新数据与原数据不相等,需要用新的一页进行写入,运算结果a&b=0≠a,根据对比结果需要用新的一页写入该位,对比结果是正确的。
因此,上述方法对一位是否需要在新的一页写入的判断是准确的。进而对整页的多位数据的判断也是准确的。
本发明实施例提供的一种利用上一次写入数据的页中包含的数据和要写入的数据来判断是否适合继续在上一次写入的页数据写入方法,能够提高页的利用率,提高写入数据的效率。
其中较优地,Flash存储器包括第一扇区和第二扇区,步骤S3,根据第一目标页的数据和要写入的数据,确定写入页,还包括以下步骤:
步骤S32,若确定第一扇区的最后一页被写入过数据,第二扇区的第一页未被写入过数据,则将第二扇区的第一页确定为写入页;若确定第二扇区的最后一页被写入过数据,第一扇区的第一页未被写入过数据,则将第一扇区的第一页确定为写入页。
实际应用中,Flash存储器可以包括两个或多个扇区。图2为本发明两个扇区写入数据的流程示意图。如图2所示,写入数据的顺序可以是,先从第一扇区(Sector 1)的第一页(Page 1)开始写,之后是写第一扇区(Sector 1)第二页(Page 2)…写第一扇区(Sector1)最后一页(Page N),写第二扇区(Sector 2)的第一页(Page 1),第二扇区(Sector 2)的第二页(Page 2)…写第二扇区(Sector 2)最后一页(Page N),写第一扇区(Sector 1)的第一页(Page 1)。可以如此无限循环下去。
当第一扇区写满后,对第二扇区写入,在第二扇区也写满后,需要对第一扇区写入,在写入前需要擦除第一扇区的所有数据。擦除第一扇区的时机可以是在对第二个扇区的第一页完成写入之后,
实际应用中,若第一扇区所有的页都被写入过,若要再次再第一扇区写入数据,需要把第一扇区的所有数据都擦除。擦除的时机,用户可以自定义,第二扇区同理。例如,在第一扇区所有页都被写入过数据后,可以在第二扇区完成对第一页的写入后,对第一扇区的第一页写入之前。这样可以保证,Flash存储器中保存有上一次写入的数据。相应的,擦除第二扇区的时机可以是在对第一个扇区的第一页完成写入之后,在对第一扇区的第一页写入之前。
本发明实施例提供的数据写入方法,能够交替使用两个扇区写入数据。若只使用一个扇区,有在数据写满后,需要专门留时间擦除扇区内所有数据的缺点。两个扇区交替使用,能够在一个扇区正在使用的过程中,擦除另外一个扇区内的数据,无需专门留擦除数据的时间,写入数据效率更高。
图3为本发明实施例提供的Flash存储器的数据读取方法的流程图。该数据读取方法至少包括以下步骤:
步骤S1,读取第二目标页的数据;
步骤S2,根据第二目标页的数据中包含的第一信息,确定第二目标页是否被写入过:若第二目标页未被写入过,则将第二目标页的前一页确定为第二目标页,跳转到步骤S1;若第二目标页被写入过,则将第二目标页确定为读取页;
步骤S3,将读取页的数据确定为读取到的数据。
其中,第一信息储存在每页数据的特定位置,用于判断第一信息所在的页是否被写入过数据;初始时,步骤S1的第一目标页为Flash存储器的所有扇区的最后一页。
本发明实施例配合从前往后写入的写入方法使用,因为写入数据时是从前往后写入的,因此从后往前读取数据时,读到的第一个带数据的页即为最新写入数据的页,能够更有效地自动确定最新写入数据的页,将从其读取的数据确定为读取的数据上传给上位机。
本发明实施例在写入数据前,需要确定已写入数据页的次页空白页,由于数据写入方法为从前往后,因此扇区中一定有之前刚被写入数据的一页,这页之前所有的页都是被写入过数据的,这页之后所有的页都是未被写入过数据的。从后往前依次确定每页是否被写入过数据,只需要确定所有的空白页和之前刚被写入数据的这页是否被写入过数据,就能够确定出用于写入新数据的空白页,不需要确定所有的页是否写入过数据,确定空白页的效率更高,进而写入数据的效率更高。
图4是本发明实施例提供的Flash存储器的数据写入装置的示意图。该数据写入装置至少包括以下模块:
第一读取模块,用于读取第一目标页的数据;
第一确定模块,用于根据第一目标页的数据中包含的第一信息,确定第一目标页是否被写入过:若第一目标页未被写入过,则将第一目标页的前一页确定为第一目标页,转至读取模块;若第一目标页被写入过,则转至第二确定模块;
第二确定模块,用于根据第一目标页的数据和要写入的数据,确定写入页;
写入模块,向写入页写入要写入的数据。
其中,第一信息储存在每页数据的特定位置,用于判断第一信息所在的页是否被写入过数据;初始时,读取模块的第一目标页为Flash存储器的所有扇区的最后一页。
本发明实施例提供的数据写入装置可以应用于Flash存储器内部或外部的其它控制芯片(例如单片机、嵌入式处理器或其他类似控制芯片)。
其中较优地,第二确定模块,包括以下子模块:
第一确定子模块,用于若确定要写入的数据是在第一目标页包含数据的基础上加添数据,则将第一目标页确定为写入页;若确定要写入的数据是在第一目标页包含数据的基础上更改数据,则将第一目标页的下一页确定为写入页。
其中较优地,第一确定子模块,包括以下子模块:
第二确定子模块,用于将要写入的数据与第一目标页的数据做“逻辑与”运算得到运算结果,若运算结果等于要写入的数据,则将第一目标页确定为写入页;若不等于,则将第一目标页的下一页确定为写入页。
其中较优地,Flash存储器包括第一扇区和第二扇区,第二确定模块,还包括以下子模块:
第三确定子模块,用于若确定第一扇区的最后一页被写入过数据,第二扇区的第一页未被写入过数据,则将第二扇区的第一页确定为写入页;若确定第二扇区的最后一页被写入过数据,第一扇区的第一页未被写入过数据,则将第一扇区的第一页确定为写入页。
图5是本发明实施例提供的Flash存储器的数据读取装置的示意图。该数据读取装置至少包括以下模块:
第二读取模块,用于读取第二目标页的数据;
第三确定模块,用于根据第二目标页的数据中包含的第一信息,确定第二目标页是否被写入过:若第二目标页未被写入过,则将第二目标页的前一页确定为第二目标页,跳转到步骤S1;若第二目标页被写入过,则将第二目标页确定为读取页;
第四确定模块,用于将读取页的数据确定为读取到的数据。
其中,第一信息储存在每页数据的特定位置,用于判断第一信息所在的页是否被写入过数据;初始时,步骤S1的第一目标页为Flash存储器的所有扇区的最后一页。
在本发明中,由于Flash所有扇区的每页都带有用于判断该页是否曾经被写入过的标志信息,每次写入数据时,能够通过标志信息找出未被写入的空白页,因而在需要多次更改同一页的数据时每次写入都将更改的数据写在相邻的空白页上,能够充分利用扇区中其他的页,写满扇区所有的页,再进行一次擦除,减少了擦除的次数,提高了Flash存储器的使用寿命,并且若每次写入的数据是基于上次写入的数据,即使本次写入时断电,也可以在其他页找到上一次写入的数据,对数据的保护更有效。
上面对本发明所提供的Flash存储器的数据写入方法、读取方法和装置进行了详细的说明。对本领域的一般技术人员而言,在不背离本发明实质内容的前提下对它所做的任何显而易见的改动,都将构成对本发明专利权的侵犯,将承担相应的法律责任。
Claims (10)
1.一种Flash存储器的数据写入方法,其特征在于包括以下步骤:
步骤S1,读取第一目标页的数据;
步骤S2,根据所述第一目标页的数据中包含的第一信息,确定所述第一目标页是否被写入过:若所述第一目标页未被写入过,则将所述第一目标页的前一页确定为所述第一目标页,跳转到步骤S1;若所述第一目标页被写入过,则执行步骤S3;
步骤S3,根据所述第一目标页的数据和要写入的数据,确定写入页;
步骤S4,向所述写入页写入所述要写入的数据;
其中,所述第一信息储存在每页数据的特定位置,用于判断所述第一信息所在的页是否被写入过数据;初始时,所述步骤S1的第一目标页为Flash存储器的所有扇区的最后一页。
2.如权利要求1所述的数据写入方法,其特征在于,所述步骤S3,根据所述第一目标页的数据和要写入的数据,确定写入页,包括以下步骤:
步骤S31,若确定所述要写入的数据是在所述第一目标页包含数据的基础上加添数据,则将所述第一目标页确定为所述写入页;若确定所述要写入的数据是在所述第一目标页包含数据的基础上更改数据,则将所述第一目标页的下一页确定为所述写入页。
3.如权利要求2所述的数据写入方法,其特征在于,所述步骤S31,若确定所述要写入的数据是在所述第一目标页包含数据的基础上加添数据,则将所述第一目标页确定为所述写入页;若确定所述要写入的数据是在所述第一目标页包含数据的基础上更改数据,则将所述第一目标页的下一页确定为所述写入页,包括以下步骤:
步骤S311,将所述要写入的数据与所述第一目标页的数据做“逻辑与”运算得到运算结果,若所述运算结果等于所述要写入的数据,则将所述第一目标页确定为所述写入页;若不等于,则将所述第一目标页的下一页确定为所述写入页。
4.如权利要求1所述的数据写入方法,其特征在于,Flash存储器包括第一扇区和第二扇区,所述步骤S3,根据所述第一目标页的数据和要写入的数据,确定写入页,还包括以下步骤:
步骤S32,若确定所述第一扇区的最后一页被写入过数据,所述第二扇区的第一页未被写入过数据,则将所述第二扇区的第一页确定为所述写入页;若确定所述第二扇区的最后一页被写入过数据,所述第一扇区的第一页未被写入过数据,则将所述第一扇区的第一页确定为所述写入页。
5.一种Flash存储器的数据读取方法,其特征在于包括以下步骤:
步骤S1,读取第二目标页的数据;
步骤S2,根据所述第二目标页的数据中包含的第一信息,确定所述第二目标页是否被写入过:若所述第二目标页未被写入过,则将所述第二目标页的前一页确定为所述第二目标页,跳转到步骤S1;若所述第二目标页被写入过,则将所述第二目标页确定为读取页;
步骤S3,将所述读取页的数据确定为读取到的数据;
其中,所述第一信息储存在每页数据的特定位置,用于判断所述第一信息所在的页是否被写入过数据;初始时,所述步骤S1的第一目标页为Flash存储器的所有扇区的最后一页。
6.一种Flash存储器的数据写入装置,其特征在于包括以下模块:
第一读取模块,用于读取第一目标页的数据;
第一确定模块,用于根据所述第一目标页的数据中包含的第一信息,确定所述第一目标页是否被写入过:若所述第一目标页未被写入过,则将所述第一目标页的前一页确定为所述第一目标页,转至所述读取模块;若所述第一目标页被写入过,则转至第二确定模块;
第二确定模块,用于根据所述第一目标页的数据和要写入的数据,确定写入页;
写入模块,向所述写入页写入所述要写入的数据;
其中,所述第一信息储存在每页数据的特定位置,用于判断所述第一信息所在的页是否被写入过数据;初始时,所述读取模块的第一目标页为Flash存储器的所有扇区的最后一页。
7.如权利要求6所述的数据写入装置,其特征在于所述第二确定模块,包括以下子模块:
第一确定子模块,用于若确定所述要写入的数据是在所述第一目标页包含数据的基础上加添数据,则将所述第一目标页确定为所述写入页;若确定所述要写入的数据是在所述第一目标页包含数据的基础上更改数据,则将所述第一目标页的下一页确定为所述写入页。
8.如权利要求7所述的数据写入装置,其特征在于所述第一确定子模块,包括以下子模块:
第二确定子模块,用于将所述要写入的数据与所述第一目标页的数据做“逻辑与”运算得到运算结果,若所述运算结果等于所述要写入的数据,则将所述第一目标页确定为所述写入页;若不等于,则将所述第一目标页的下一页确定为所述写入页。
9.如权利要求7所述的数据写入装置,其特征在于,若所述Flash存储器包括第一扇区和第二扇区,则所述第二确定模块,包括以下子模块:
第三确定子模块,用于若确定所述第一扇区的最后一页被写入过数据,所述第二扇区的第一页未被写入过数据,则将所述第二扇区的第一页确定为所述写入页;若确定所述第二扇区的最后一页被写入过数据,所述第一扇区的第一页未被写入过数据,则将所述第一扇区的第一页确定为所述写入页。
10.一种Flash存储器的数据读取装置,其特征在于包括以下模块:
第二读取模块,用于读取第二目标页的数据;
第三确定模块,用于根据所述第二目标页的数据中包含的第一信息,确定所述第二目标页是否被写入过:若所述第二目标页未被写入过,则将所述第二目标页的前一页确定为所述第二目标页,跳转到步骤S1;若所述第二目标页被写入过,则将所述第二目标页确定为读取页;
第四确定模块,用于将所述读取页的数据确定为读取到的数据;
其中,所述第一信息储存在每页数据的特定位置,用于判断所述第一信息所在的页是否被写入过数据;初始时,所述步骤S1的第一目标页为Flash存储器的所有扇区的最后一页。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111050881.4A CN113885791A (zh) | 2021-09-08 | 2021-09-08 | Flash存储器的数据写入方法、读取方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111050881.4A CN113885791A (zh) | 2021-09-08 | 2021-09-08 | Flash存储器的数据写入方法、读取方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113885791A true CN113885791A (zh) | 2022-01-04 |
Family
ID=79008693
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111050881.4A Pending CN113885791A (zh) | 2021-09-08 | 2021-09-08 | Flash存储器的数据写入方法、读取方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113885791A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116627354A (zh) * | 2023-07-20 | 2023-08-22 | 湖南博匠信息科技有限公司 | 一种固态硬盘的高性能数据写入方法和数据记录设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101770809A (zh) * | 2008-12-31 | 2010-07-07 | J·埃金顿 | 非易失性存储器掉电后的恢复 |
CN105740157A (zh) * | 2014-11-03 | 2016-07-06 | 慧荣科技股份有限公司 | 数据储存装置以及快闪存储器控制方法 |
US20170010833A1 (en) * | 2013-12-24 | 2017-01-12 | Feitian Technologies Co., Ltd. | Data writing and reading methods for flash |
CN107168647A (zh) * | 2017-04-17 | 2017-09-15 | 武汉永力科技股份有限公司 | Flash数据读写方法及系统 |
CN110489053A (zh) * | 2018-05-14 | 2019-11-22 | 慧荣科技股份有限公司 | 管理闪存模块的方法、相关的闪存控制器和电子装置 |
CN111324549A (zh) * | 2018-12-14 | 2020-06-23 | 北京兆易创新科技股份有限公司 | 一种存储器及其控制方法和装置 |
CN113051184A (zh) * | 2019-12-27 | 2021-06-29 | 北京兆易创新科技股份有限公司 | 一种数据读取的方法、装置、电子设备及存储介质 |
-
2021
- 2021-09-08 CN CN202111050881.4A patent/CN113885791A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101770809A (zh) * | 2008-12-31 | 2010-07-07 | J·埃金顿 | 非易失性存储器掉电后的恢复 |
US20170010833A1 (en) * | 2013-12-24 | 2017-01-12 | Feitian Technologies Co., Ltd. | Data writing and reading methods for flash |
CN105740157A (zh) * | 2014-11-03 | 2016-07-06 | 慧荣科技股份有限公司 | 数据储存装置以及快闪存储器控制方法 |
CN107168647A (zh) * | 2017-04-17 | 2017-09-15 | 武汉永力科技股份有限公司 | Flash数据读写方法及系统 |
CN110489053A (zh) * | 2018-05-14 | 2019-11-22 | 慧荣科技股份有限公司 | 管理闪存模块的方法、相关的闪存控制器和电子装置 |
CN111324549A (zh) * | 2018-12-14 | 2020-06-23 | 北京兆易创新科技股份有限公司 | 一种存储器及其控制方法和装置 |
CN113051184A (zh) * | 2019-12-27 | 2021-06-29 | 北京兆易创新科技股份有限公司 | 一种数据读取的方法、装置、电子设备及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116627354A (zh) * | 2023-07-20 | 2023-08-22 | 湖南博匠信息科技有限公司 | 一种固态硬盘的高性能数据写入方法和数据记录设备 |
CN116627354B (zh) * | 2023-07-20 | 2023-09-15 | 湖南博匠信息科技有限公司 | 一种固态硬盘的高性能数据写入方法和数据记录设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8086787B2 (en) | Wear leveling method, and storage system and controller using the same | |
US9213629B2 (en) | Block management method, memory controller and memory stoarge apparatus | |
JP2008226254A (ja) | 不揮発性メモリにおける部分的ブロックデータのプログラミング動作および読出し動作 | |
US8516184B2 (en) | Data updating using mark count threshold in non-volatile memory | |
WO2009110630A1 (en) | Memory system | |
US9141476B2 (en) | Method of storing system data, and memory controller and memory storage apparatus using the same | |
KR20040076589A (ko) | 메모리 카드 | |
US9383929B2 (en) | Data storing method and memory controller and memory storage device using the same | |
CN104765569A (zh) | 数据写入方法、存储器控制电路单元与存储器储存装置 | |
US7543104B2 (en) | Non-volatile semiconductor device for use in memory card and memory system | |
CN107045423B (zh) | 存储器装置及其数据存取方法 | |
US20130332653A1 (en) | Memory management method, and memory controller and memory storage device using the same | |
JP2007094921A (ja) | メモリカードとその制御方法 | |
EP3057100B1 (en) | Memory device and operating method of same | |
CN113885791A (zh) | Flash存储器的数据写入方法、读取方法和装置 | |
CN113885808A (zh) | 映射信息记录方法以及存储器控制电路单元与存储装置 | |
US9778862B2 (en) | Data storing method for preventing data losing during flush operation, memory control circuit unit and memory storage apparatus | |
JP2007293917A (ja) | メモリシステムの制御方法 | |
JP4661369B2 (ja) | メモリコントローラ | |
CN106354651B (zh) | 平均磨损方法、存储器控制电路单元及存储器储存装置 | |
KR100692982B1 (ko) | 배드 블럭 정보가 기록된 난드 타입의 플래시 메모리 | |
CN108108118B (zh) | 数据写入方法以及存储控制器 | |
CN112988069B (zh) | 存储器管理方法、存储器存储装置及存储器控制器 | |
CN106469019B (zh) | 存储器管理方法、存储器控制电路单元及存储器储存装置 | |
CN102591738A (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 |