CN105988722B - 数据储存方法及嵌入式系统 - Google Patents
数据储存方法及嵌入式系统 Download PDFInfo
- Publication number
- CN105988722B CN105988722B CN201510071871.7A CN201510071871A CN105988722B CN 105988722 B CN105988722 B CN 105988722B CN 201510071871 A CN201510071871 A CN 201510071871A CN 105988722 B CN105988722 B CN 105988722B
- Authority
- CN
- China
- Prior art keywords
- sector
- data
- storing state
- label
- block
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 32
- 238000013500 data storage Methods 0.000 title claims abstract description 24
- 238000010586 diagram Methods 0.000 description 8
- 230000009471 action Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005034 decoration Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
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
- 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/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- 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/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1072—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7209—Validity control, e.g. using flags, time stamps or sequence numbers
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
Abstract
一种数据储存方法及嵌入式系统。数据储存方法用于将更新数据写入闪存模块以更新原始数据,闪存模块至少包括区块,区块包括多个扇区,每一扇区包括多个位,每一位可被识别为第一储存状态或第二储存状态,每一扇区记录一标记,数据储存方法包括:获取扇区之中的第一扇区,其中第一扇区的标记的所有位为第二储存状态;将更新数据写入至第一扇区,并将第一扇区的标记的至少一位程序化为第一储存状态且至少一位程序化为第二储存状态;识别扇区之中储存原始数据的第二扇区,其中第二扇区的标记的至少一位为第一储存状态且至少一其他位为第二储存状态;以及将第二扇区的所有位程序化为第一储存状态。本发明可延长闪存的寿命。
Description
技术领域
本发明涉及一种数据储存方法及嵌入式系统,且特别涉及一种具有高写入次数的数据储存方法及嵌入式系统。
背景技术
一般来说,传统的嵌入式系统通常使用电可擦除只读存储器(EEPROM,Electrically Erasable Programmable Read Only Memory)作为小量数据的储存媒体,其具有可以字节为单位写入及清除的优势,因此在写入多笔小量数据时十分的方便。但随着闪存的容量越来越大及价格越来越便宜,EEPROM变得相对昂贵并在嵌入式系统中逐渐地被便宜的闪存所取代。
然而,由于闪存在执行清除指令时必须一次清除(erase)一整个区块(block),无法像EERPOM以字节为单位进行清除。若将一个数据量较小的文件,例如系统的引导装载程序(bootloader)或是网络设定配置等,储存于闪存的区块中,当更新此文件时,系统必须清除文件所在的整个区块,再将更新的文件储存于原本的区块中,这使得闪存的重新写入次数远小于EEPROM。
因此,需要提供一种数据储存方法及嵌入式系统来解决上述问题。
发明内容
本公开提出一种数据储存方法及嵌入式系统,其能有效地延长闪存的寿命。
本公开提出一种数据储存方法,该数据储存方法用于将一更新数据写入一闪存模块以更新一原始数据,该闪存模块至少包括一区块,该区块包括多个扇区,每一该些扇区包括多个位,每一该些位可被识别为一第一储存状态或一第二储存状态,每一该些扇区记录一标记,该数据储存方法包括:获取该些扇区之中的一第一扇区,其中该第一扇区的该标记的所有位为该第二储存状态;将该更新数据写入至该第一扇区,并将该第一扇区的该标记的至少一位程序化为该第一储存状态且至少一位程序化为该第二储存状态;识别该些扇区之中储存该原始数据的一第二扇区,其中该第二扇区的该标记的至少一位为该第一储存状态且该第二扇区的该标记的至少一其他位为该第二储存状态;以及将该第二扇区的所有位程序化为该第一储存状态。
在本公开的一范例实施例中,上述数据储存方法还包括若在上述区块中不存在所有位为第二储存状态的标记,将上述区块的所有位程序化为第二储存状态。
在本公开的一范例实施例中,上述数据储存方法还包括为储存于第一扇区的更新数据产生对应错误校正码。
在本公开的一范例实施例中,其中若储存于第一扇区的更新数据的所有位为第一储存状态时,对应错误校正码的所有位为第一储存状态。
在本公开的一范例实施例中,上述数据储存方法还包括根据更新数据及原始数据的大小决定这些扇区的大小。
在本公开的一范例实施例中,其中第一储存状态为0且第二储存状态为1。
本公开提出一种嵌入式系统,该嵌入式系统包括:一闪存模块以及一微控制单元;该闪存模块储存一原始数据且至少包括一区块,该区块包括多个扇区,每一该些扇区包括多个位,每一该些位可被识别为一第一储存状态或一第二储存状态,每一该些扇区记录一标记;该微控制单元耦接于该闪存模块,其中该微控制单元执行一程序代码以执行下列步骤:获取该些扇区之中的一第一扇区,其中该第一扇区的该标记的所有位为该第二储存状态;将一更新数据写入至该第一扇区,并将该第一扇区的该标记的至少一位程序化为该第一储存状态且至少一位程序化为该第二储存状态;识别该些扇区之中储存该原始数据的一第二扇区,其中该第二扇区的该标记的至少一位为该第一储存状态且该第二扇区的该标记的至少一其他位为该第二储存状态;以及将该第二扇区的所有位程序化为该第一储存状态。
在本公开的一范例实施例中,其中若在上述区块中不存在所有位为第二储存状态的标记,微控制单元将上述区块的所有位程序化为第二储存状态。
在本公开的一范例实施例中,上述微控制单元还为储存于该第一扇区的该更新数据产生一对应错误校正码。
在本公开的一范例实施例中,其中若储存于第一扇区的更新数据的所有位为第一储存状态时,对应错误校正码的所有位为第一储存状态。
在本公开的一范例实施例中,其中上述微控制单元根据更新数据及原始数据的大小决定这些扇区的大小。
在本发明的一范例实施例中,其中第一储存状态为0且第二储存状态为1。
基于上述,本公开的数据写入方法及嵌入式系统可以根据标记寻找未写入的扇区写入更新数据,并将储存原始数据的扇区的所有位(bit)设定为第一储存状态。如此一来,在每次更新数据时可逐一使用区块中的扇区写入更新数据,只有当所有扇区都被使用过,也就是上述区块不具有未写入的扇区时,才需要清除整个区块,从而延长闪存的寿命。
为让本公开的上述特征和优点能更明显易懂,下文特举实施例,并配合所附附图作详细说明如下。
附图说明
图1为根据本公开范例实施例所绘示的嵌入式系统的方框图。
图2A-图2C为根据本公开范例实施例的存取闪存模块扇区的示意图。
图3为根据本公开一范例实施例所绘示的数据储存方法的流程图。
图4为根据本公开一范例实施例所绘示的数据读取的流程图。
图5为根据本公开另一范例实施例的存取闪存模块扇区的示意图。
图6为根据本公开另一范例实施例的存取闪存模块扇区的示意图。
主要组件符号说明:
100 嵌入式系统
102 控制器
104 闪存模块
201、202 区块
211a、211b、…、211h、211i 数据
221 数据区
231 带外区
241、242、…、247、248 标记
S302、S304、S306、S308、S310、S312 数据储存方法的步骤
S402、S404、S406 读取数据的步骤
具体实施方式
为了使本公开的范例实施例更容易理解,以下将使用一个大小为256MB的与非门闪存(NAND flash)作为范例说明。此闪存可包括2048个区块,每一区块可包括64个页面(page),因此每一区块的大小为128KB,且每一页面的大小为2KB。
闪存会将错误校正码(ECC,Error Correction Code)储存在每一个页面的带外(OOB,Out Of Band)区域,并利用错误校正码来修正数据错误。一个页面还可以分成四个512字节(Byte)的小块(chunk),错误校正码的计算是以小块为单位,因此每次修改一小块的数据时,系统会计算对应该小块的错误校正码(其大小为16字节),并储存于该小块所属页面的带外区域。由于一个2KB页面包括四小块,因此一个2KB页面会包含64字节的带外区域。因此,一个页面的实际大小可为(2K+64)字节,也就是数据区域加上带外区域,而一个区块的实际大小可为64x(2K+64)字节=(128K+4K)字节。值得一提的是,带外区域是系统用来存取对应页面的错误校正码,因此使用者并无法存取带外区域。另外,在写入数据时,闪存的最小写入单位为一个字节,而在清除数据时,闪存的最小清除单位为一个区块。
以上所述的闪存的区块、页面、小块、带外区域的数量及大小仅用于使本公开的范例实施例更加容易理解。必须了解的是,本公开并不以此为限。本公开的闪存的区块、页面、小块、带外区域的数量及大小也可具有其他配置,而闪存也可为或非门闪存(NOR flash)或其他种类的闪存。
图1为根据本公开范例实施例所绘示的嵌入式系统的方框图并且图2A-图2C为根据本公开范例实施例的存取闪存模块扇区的示意图。
请参照图1及图2A,本公开范例实施例的嵌入式系统100包括控制器102及闪存模块104,其中控制器102耦接于闪存模块104且用以执行写入操作以将数据写入至闪存模块104或者执行读取操作以从闪存模块104中读取数据。
假设目前要将一个16KB的数据211a存入闪存模块104的区块201中,控制器102会先判断数据211a的大小,也就是说,控制器102会判断出16KB的数据211a可储存于8个大小为2KB的页面中,因此控制器102会将区块201的页面1到页面64分成八个扇区(sector),其中扇区1对应页面1到页面8,扇区2对应页面9到页面16,以此类推。在此,数据可为嵌入式系统100的引导装载程序、网络设定配置(例如IP地址、网络屏蔽、网关器地址)、嵌入式系统100的系统配置文件等。
在此假设区块201从未被写入数据,因此所有的页面的字节皆记录为0xFF。在此,控制器102会将扇区1的第一个字节,也就是页面1的第一个字节辨识为标记241。由于区块201所有页面的字节皆为0xFF,因此标记241当然也为0xFF。在本范例实施例中,标记241为0xFF代表对应标记的扇区1为未写入扇区。同理可知,扇区2到扇区8的标记,也就是扇区2到扇区8的第一个字节在此时也都为0xFF。虽然以上说明了使用每个扇区的第一个字节作为标记,但本发明并不以此为限。在另一范例实施例中,也可利用扇区中的任一字节作为标记,或者也可利用扇区中的任意多个字节作为标记。
当控制器102将数据211a写入区块201之前,控制器102会根据区块201中所有扇区的标记寻找扇区中未写入的扇区。也就是说,控制器102会寻找标记241到标记248中数值为0xFF的标记,并把数据211a写入此标记对应的扇区中。由于此时标记241到标记248的数值都是0xFF,因此控制器102会选择第一个扇区1(或第一扇区)写入数据211a。
在控制器102将数据211a写入扇区1时,控制器102会将扇区1的标记241,也就是扇区1的第一个字节(或是页面1的第一个字节),修改为0x01,以表示目前扇区1存有有效数据(valid data)。此时,数据211a是储存于页面1到页面8的数据区221中。虽然以上说明了将标记241修改为0x01以表示其对应扇区存有有效数据,但本公开并不以此为限。标记241也可修改为0x02、0x03、…、0xFE等0x00及0xFF以外的值,用以表示其对应的扇区存有有效数据。
值得一提的是,将数据211a写入至页面1到页面8的数据区221时,控制器102会分别计算页面1到页面8的错误校正码ECC1到ECC8,并将ECC1到ECC8分别写入到对应页面1到页面8的带外区231中。在此,ECC1到ECC8可利用BCH、RS或汉明码等错误校正算法产生。值得注意的是,在一个完全未写入的区块中,其所有页面对应的ECC值都是0xFF。
请继续参照图2B,数据211b可为数据211a的更新文件或其他类型的文件。当控制器102要将数据211b写入区块201之前,控制器102会根据区块201中所有扇区的标记寻找扇区中未写入的扇区。也就是说,控制器102会寻找标记241到标记248中数值为0xFF的标记,并把数据211a写入此标记对应的扇区中。由于此时标记241的数值为0x01,而标记242到标记248的数值都是0xFF,因此控制器102会选择扇区2到扇区8的第一个扇区2(或第一扇区)写入数据211b。
在控制器102将数据211b写入扇区2时,控制器102会将扇区2的标记242,也就是扇区2的第一个字节(或是页面9的第一个字节),修改为0x01,以表示目前扇区2存有有效数据。此时,数据211b是储存于页面9到页面16的数据区221中。
同样地,在将数据211b写入页面9到页面16的数据区221时,控制器102会分别计算页面9到页面16的错误校正码ECC9到ECC16,并将ECC9到ECC16分别写入到对应页面9到页面16的带外区231中。
除了将ECC9到ECC16分别写入到对应页面9到页面16的带外区231中,由于扇区2的上一个扇区,也就是扇区1中的数据211a已属于无效数据,控制器102还会将扇区1(或第二扇区)的数据区221的所有字节修改为0x00,这也包含了将扇区1的标记241修改为0x00,表示此扇区1处于被写入过且目前不具有有效数据。
在控制器102将扇区1(或第二扇区)的数据区221的所有字节修改为0x00时,控制器102会分别计算页面1到页面8的错误校正码ECC1到ECC8,由于所有字节皆为0x00的数据所产生的错误校正码也是所有字节皆为0x00,控制器102会将页面1到页面8的带外区231全部的字节写入0x00。
请继续参照图2C,当数据利用图2A及图2B的方法写入数次,使得区块201的扇区8存有数据时,此时扇区1到扇区7的数据区221的全部字节已都被修改为0x00,且扇区1到扇区7的标记241到标记247也都被修改为0x00。若此时控制器102要将数据211i写入至区块201时,控制器102会先检查区块201中扇区1到扇区8的标记241到标记248。由于标记241到标记247的数值皆为0x00且标记248的数值为0x01,所以控制器102找不到标记值为0xFF的扇区,其代表区块201中已经没有未写入的扇区。此时,控制器102便需要擦除整个区块201,也就是把扇区1到扇区8的所有字节擦除为0xFF。接着再利用与图2A的相同方法,就可将数据211i写入扇区1,也就是页面1到页面8的数据区221中。
由于本公开只有在区块201所有扇区都进行过写入操作之后才会擦除整个区块201,也就是在区块201的八个扇区都储存过数据之后才会擦除区块201,因此相比于一般在闪存中更新一个扇区就必须清除整个区块的状况,本发明的写入方法在同样次数的扇区数据更新中,擦除区块201的次数只有一般闪存的八分之一,因此闪存写入数据的次数也可提升为原本的八倍,从而延长闪存的寿命。
值得注意的是,本范例实施例中控制器102可为逻辑运算电路,以在写入数据时进行扇区分配、寻找未写入扇区及设定扇区标记等运算。然而,本公开并不以此为限,在另一实施例中,上述控制器102所执行的功能亦可以固件或软件的程序代码来实际操作,并且当嵌入式系统100上电时,这些程序代码会被载入至存储器中,由微控制器单元(MCU,MircoController Unit)来执行以完成上述控制器102所执行的功能。
图3为根据本公开一范例实施例所绘示的数据储存方法的流程图。
在步骤S302中,控制器102会依序检查区块中每一扇区的标记,寻找具有标记数值为0xFF的未写入扇区,也就是在区块被擦除之后尚未被写入过的扇区。
若区块中没有标记数值为0xFF的未写入扇区,则在步骤S304中,控制器102会擦除区块,将区块中所有字节修改为0xFF。
若区块中具有标记数值为0xFF的未写入扇区时,则在步骤S306中,控制器102会将更新数据写入标记数值为0xFF的未写入扇区,并且将对应的标记设定为有效状态,例如0x01。同时,在写入更新数据到扇区时,控制器102会更新对应页面的错误校正码。
在步骤S308中,控制器102会判断写入是否成功。
若写入不成功时,则在步骤S310中,控制器102会将目前扇区的所有字节填入0x00,并产生对应的错误校正码(其中错误校正码的所有字节也都会是0x00),接着执行步骤S302,以寻找未写入的扇区重新写入数据。
若写入成功时,则控制器102会将储存原始数据(亦称为旧数据)扇区的所有字节填入0x00(包含扇区的标记),并产生对应的错误校正码(也全为0x00)。如此一来,控制器102可以藉由标记0x00判断先前的扇区所储存的数据已变成无效数据。
图4为根据本公开一范例实施例所绘示的数据读取的流程图。
在步骤S402中,若控制器102要读取数据,控制器102会在区块中寻找有效扇区,也就是标记不为0x00及0xFF的扇区。若区块中没有有效扇区时,则在步骤S404中,控制器102会传送读取失败的信息。
若区块中具有有效扇区时,则控制器102会从有效扇区的数据区读取数据,例如读取嵌入式系统100的引导装载程序、网络设定配置(例如IP地址、网络屏蔽、网关器地址)、嵌入式系统100的系统配置文件等。
图5为根据本公开另一范例实施例的存取闪存模块扇区的示意图。
请参照图5,相比于在图2A到图2C中使用单个区块201储存数据,在图5中,也可使用两个区块,也就是区块201及区块202来储存数据。
相同于图2A的第一步骤,在区块201及区块202都无数据储存时,扇区1到扇区16的数据区跟带外区的所有字节都是0xFF,当然每个扇区的标记也都是0xFF,代表了每个扇区在目前都处于未写入状态。当有第一笔数据要写入之前,控制器102会根据扇区1到扇区16的标记寻找出处于未写入状态的扇区1,把数据写入扇区1并将扇区1的标记修改为0x01,代表扇区1目前储存了有效数据。在写入数据到扇区1时,控制器102也会计算扇区1每个页面的ECC并将其储存于扇区1的带外区,此操作相同于图2A的第2步骤。
当要写入更新数据时,控制器102会将数据写入扇区2,并重新程序化扇区1的数据区及带外区,也就是,将扇区1的数据区及带外区的所有字节重新程序化为0x00。
以此类推,每一笔更新数据会依序写入到扇区3至扇区16,且控制器102会分别重新程序化扇区2到扇区15的数据区及带外区。之后,若要写入下一笔更新数据且控制器102目前具有标记值为0x01的扇区16的下一个扇区(即,扇区1)的标记值为0x00时,控制器102会擦除区块201,以将区块201的所有字节设定为0xFF。同理,当扇区8的标记值为0x01且其他所有扇区的标记值均为0x00时,控制器102会擦除区块202,以将区块202的所有字节设定为0xFF。
在另一范例实施例中,控制器102也可在写完每一笔数据之后检查区块的所有标记值,若一区块所有标记值皆为0x00,则清除该区块。也就是说,控制器102亦可在更新数据写入扇区9之后识别区块201的所有标记值都为0x00,并擦除区块201。
虽然以上说明了使用两个区块来储存数据,但本公开并不以此为限。本公开也可使用三个或更多个区块来储存数据,以防止运行时间坏区块的产生,或是用于满足更大数据量的储存需求。
图6为根据本公开另一范例实施例的存取闪存模块扇区的示意图。
请参照图6,相比于在以上范例实施例中,扇区大小都是页面大小的倍数,然而,扇区大小亦可被设定为页面大小2KB的四分之一,也就是小块的大小512字节。
相同于以上范例实施例,当有第一笔数据要写入之前,控制器102会寻找出处于未写入状态的扇区1,把数据写入扇区1并将扇区1的标记修改为0x01,以代表扇区1目前储存了有效数据。在写入数据到扇区1时,控制器102也会计算扇区1的ECC1并将其储存于扇区1的带外区。由于目前扇区1的大小是相当于小块的大小,因此其ECC1的大小为一个页面ECC大小64字节的四分之一,也就是16字节。
接着,可重复图5的操作,直到扇区256储存了有效数据,也就是扇区256的标记为0x01。此时,扇区1到扇区255的所有字节都为0x00,若有新的数据要写入时,控制器102会将区块201清除,并将新的数据写入扇区1。
在本公开的闪存中,小块的大小为512字节,而小块是执行ECC运算的最小单位,因此扇区大小必须以小块的大小512字节为单位。虽然以上说明了以一个小块作为扇区大小,但本公开并不以此为限。本公开也可使用两个或更多小块作为扇区大小。
综上所述,上述范例实施例提出了一种数据储存方法,将闪存的区块分为多个扇区,每个扇区具有一个标记,标记值为0xFF代表扇区为未写入状态、0x00代表扇区为空白状态、0xFF及0x00以外的数值代表扇区具有有效数据。由于在闪存中1到0的操作可以字节为单位进行,但0到1的操作需要以区块为单位进行,因此本范例实施例以0x00来表示此扇区曾经具有有效数据,但目前属于擦除状态。在本范例实施例中,数据可以依序储存于区块的未写入扇区中,并在数据成功储存之后将之前储存有效数据的扇区重新程序化为0x00。只有当整个区块中已经没有标记为0xFF的扇区时,才必须擦除区块。相比于传统使用闪存储存系统的引导装载程序或是网络设定配置时,在每次更新数据时都要擦除整个区块,本范例实施例可在一个区块的全部扇区都使用过后才擦除区块,因此可大幅增进使用于嵌入式系统中的闪存的使用寿命。
虽然本公开已以实施例公开如上,然而其并非用以限定本公开,任何所属技术领域中的普通技术人员,在不脱离本公开的精神和范围的情况下,应当可作些许的更动与润饰,故本公开的保护范围应当视所附的权利要求书的范围所界定者为准。
Claims (12)
1.一种数据储存方法,该数据储存方法用于将一更新数据写入一闪存模块以更新一原始数据,该闪存模块至少包括一区块,该区块包括多个扇区,每一该些扇区包括多个位,每一该些位可被识别为一第一储存状态或一第二储存状态,每一该些扇区记录一标记,该数据储存方法包括:
获取该些扇区之中的一第一扇区,其中该第一扇区的该标记的所有位为该第二储存状态;
将该更新数据写入至该第一扇区,并将该第一扇区的该标记的至少一位程序化为该第一储存状态且至少一其他位程序化为该第二储存状态;
识别该些扇区之中储存该原始数据的一第二扇区,其中该第二扇区的该标记的至少一位为该第一储存状态且该第二扇区的该标记的至少一其他位为该第二储存状态;以及
将该第二扇区的所有位程序化为该第一储存状态。
2.如权利要求1所述的数据储存方法,还包括:
若在该区块中不存在所有位为该第二储存状态的该标记,将该区块的所有位程序化为该第二储存状态。
3.如权利要求1所述的数据储存方法,还包括:
为储存于该第一扇区的该更新数据产生一对应错误校正码。
4.如权利要求3所述的数据储存方法,其中若储存于该第一扇区的该更新数据的所有位为该第一储存状态时,该对应错误校正码的所有位为该第一储存状态。
5.如权利要求1所述的数据储存方法,还包括:
根据该更新数据及该原始数据的大小决定该些扇区的大小。
6.如权利要求1所述的数据储存方法,其中该第一储存状态为0且该第二储存状态为1。
7.一种嵌入式系统,该嵌入式系统包括:
一闪存模块,该闪存模块储存一原始数据且至少包括一区块,该区块包括多个扇区,每一该些扇区包括多个位,每一该些位可被识别为一第一储存状态或一第二储存状态,每一该些扇区记录一标记;以及
一微控制单元,该微控制单元耦接于该闪存模块,
其中该微控制单元执行一程序代码以执行下列步骤:
获取该些扇区之中的一第一扇区,其中该第一扇区的该标记的所有位为该第二储存状态;
将一更新数据写入至该第一扇区,并将该第一扇区的该标记的至少一位程序化为该第一储存状态且至少一其他位程序化为该第二储存状态;
识别该些扇区之中储存该原始数据的一第二扇区,其中该第二扇区的该标记的至少一位为该第一储存状态且该第二扇区的该标记的至少一其他位为该第二储存状态;以及
将该第二扇区的所有位程序化为该第一储存状态。
8.如权利要求7所述的嵌入式系统,其中若在该区块中不存在所有位为该第二储存状态的该标记,该微控制单元将该区块的所有位程序化为该第二储存状态。
9.如权利要求7所述的嵌入式系统,其中该微控制单元还为储存于该第一扇区的该更新数据产生一对应错误校正码。
10.如权利要求9所述的嵌入式系统,其中若储存于该第一扇区的该更新数据的所有位为该第一储存状态时,该对应错误校正码的所有位为该第一储存状态。
11.如权利要求7所述的嵌入式系统,其中该微控制单元根据该更新数据及该原始数据的大小决定该些扇区的大小。
12.如权利要求7所述的嵌入式系统,其中该第一储存状态为0且该第二储存状态为1。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW104102675A TWI557744B (zh) | 2015-01-27 | 2015-01-27 | 資料儲存方法及嵌入式系統 |
TW104102675 | 2015-01-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105988722A CN105988722A (zh) | 2016-10-05 |
CN105988722B true CN105988722B (zh) | 2019-05-10 |
Family
ID=56434106
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510071871.7A Active CN105988722B (zh) | 2015-01-27 | 2015-02-11 | 数据储存方法及嵌入式系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9563553B2 (zh) |
CN (1) | CN105988722B (zh) |
TW (1) | TWI557744B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106648751B (zh) * | 2016-11-22 | 2020-04-21 | 深圳市元征软件开发有限公司 | 一种嵌入式软件快速升级的方法及嵌入式设备 |
CN107132995A (zh) * | 2017-03-20 | 2017-09-05 | 北京握奇智能科技有限公司 | 一种延长可擦写芯片寿命的方法和装置 |
CN107132994A (zh) * | 2017-03-20 | 2017-09-05 | 北京握奇智能科技有限公司 | 一种延长可擦写芯片寿命的方法和装置 |
CN107037986A (zh) * | 2017-03-20 | 2017-08-11 | 北京握奇智能科技有限公司 | 一种延长可擦写芯片寿命的方法和装置 |
CN107039076A (zh) * | 2017-03-20 | 2017-08-11 | 北京握奇智能科技有限公司 | 一种延长可擦写芯片寿命的方法和装置 |
CN107122129A (zh) * | 2017-03-20 | 2017-09-01 | 北京握奇智能科技有限公司 | 一种延长可擦写芯片寿命的方法和装置 |
JP7089423B2 (ja) * | 2018-07-12 | 2022-06-22 | ルネサスエレクトロニクス株式会社 | 情報処理装置及び制御方法 |
CN112347002B (zh) * | 2020-11-13 | 2023-07-28 | 杭州芯炬视人工智能科技有限公司 | flash数据的保存方法、系统、计算机设备及存储介质 |
CN113053451B (zh) * | 2021-03-05 | 2022-05-10 | 深圳三地一芯电子有限责任公司 | Nandflash内生成softbit的方法、系统、主机以及储存介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7631162B2 (en) * | 2005-10-27 | 2009-12-08 | Sandisck Corporation | Non-volatile memory with adaptive handling of data writes |
CN102915273A (zh) * | 2011-08-02 | 2013-02-06 | 群联电子股份有限公司 | 数据写入方法、存储器控制器与存储器储存装置 |
CN103514096A (zh) * | 2012-06-18 | 2014-01-15 | 群联电子股份有限公司 | 数据储存方法、存储器控制器与存储器储存装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7155559B1 (en) * | 2000-08-25 | 2006-12-26 | Lexar Media, Inc. | Flash memory architecture with separate storage of overhead and user data |
JP2003242788A (ja) * | 2003-02-10 | 2003-08-29 | Toshiba Corp | 不揮発性半導体メモリ装置及びその制御方法 |
US8694869B2 (en) * | 2003-08-21 | 2014-04-08 | QUALCIMM Incorporated | Methods for forward error correction coding above a radio link control layer and related apparatus |
US8504798B2 (en) * | 2003-12-30 | 2013-08-06 | Sandisk Technologies Inc. | Management of non-volatile memory systems having large erase blocks |
US7752381B2 (en) * | 2005-05-24 | 2010-07-06 | Micron Technology, Inc. | Version based non-volatile memory translation layer |
US7551492B2 (en) | 2006-03-29 | 2009-06-23 | Mosaid Technologies, Inc. | Non-volatile semiconductor memory with page erase |
EP2023637A4 (en) * | 2006-05-24 | 2010-06-16 | Panasonic Corp | IMAGE DECODING DEVICE |
KR100908637B1 (ko) * | 2007-10-10 | 2009-07-21 | 한양대학교 산학협력단 | 플래시 메모리의 데이터 관리방법 |
JP2011129192A (ja) * | 2009-12-16 | 2011-06-30 | Samsung Electronics Co Ltd | 半導体記憶装置 |
TWI463495B (zh) * | 2010-12-10 | 2014-12-01 | Phison Electronics Corp | 資料寫入方法、記憶體控制器與儲存裝置 |
TWI475385B (zh) * | 2012-03-14 | 2015-03-01 | Phison Electronics Corp | 程式化記憶胞與資料讀取方法、記憶體控制器與儲存裝置 |
US9009565B1 (en) * | 2013-03-15 | 2015-04-14 | Pmc-Sierra, Inc. | Systems and methods for mapping for solid-state memory |
US9009568B2 (en) * | 2013-08-09 | 2015-04-14 | Sandisk Technologies Inc. | Sensing parameter management in non-volatile memory storage system to compensate for broken word lines |
-
2015
- 2015-01-27 TW TW104102675A patent/TWI557744B/zh active
- 2015-02-11 CN CN201510071871.7A patent/CN105988722B/zh active Active
- 2015-04-08 US US14/681,095 patent/US9563553B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7631162B2 (en) * | 2005-10-27 | 2009-12-08 | Sandisck Corporation | Non-volatile memory with adaptive handling of data writes |
CN102915273A (zh) * | 2011-08-02 | 2013-02-06 | 群联电子股份有限公司 | 数据写入方法、存储器控制器与存储器储存装置 |
CN103514096A (zh) * | 2012-06-18 | 2014-01-15 | 群联电子股份有限公司 | 数据储存方法、存储器控制器与存储器储存装置 |
Also Published As
Publication number | Publication date |
---|---|
TWI557744B (zh) | 2016-11-11 |
TW201628009A (zh) | 2016-08-01 |
CN105988722A (zh) | 2016-10-05 |
US9563553B2 (en) | 2017-02-07 |
US20160217068A1 (en) | 2016-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105988722B (zh) | 数据储存方法及嵌入式系统 | |
CN105740157B (zh) | 数据储存装置以及快闪存储器控制方法 | |
TWI551991B (zh) | 記憶體管理方法與系統及其記憶體儲存裝置 | |
US9176865B2 (en) | Data writing method, memory controller, and memory storage device | |
US20110231597A1 (en) | Data access method, memory controller and memory storage system | |
TWI480733B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
US7725646B2 (en) | Method of using a flash memory for a circular buffer | |
US9213629B2 (en) | Block management method, memory controller and memory stoarge apparatus | |
US8516184B2 (en) | Data updating using mark count threshold in non-volatile memory | |
US9058256B2 (en) | Data writing method, memory controller and memory storage apparatus | |
US20120030411A1 (en) | Data protecting method, memory controller and portable memory storage apparatus | |
US8667234B2 (en) | Data writing method, memory controller, and memory storage apparatus | |
US9268688B2 (en) | Data management method, memory controller and memory storage apparatus | |
TWI554886B (zh) | 資料保護方法、記憶體控制電路單元及記憶體儲存裝置 | |
CN109582216B (zh) | 数据储存装置与存储器装置的数据处理方法 | |
US8667348B2 (en) | Data writing method for non-volatile memory module and memory controller and memory storage apparatus using the same | |
US8819387B2 (en) | Memory storage device, memory controller, and method for identifying valid data | |
US9465538B2 (en) | Flash memory control chip and data storage device and flash memory control method | |
CN101727401A (zh) | 连接表的回复方法 | |
US20140040534A1 (en) | Data storing method and memory controller and memory storage device using the same | |
CN102541753B (zh) | 一种嵌入式存储器的读写优化方法 | |
US9501397B2 (en) | Data writing method, memory controller, and memory storage apparatus | |
CN116185563B (zh) | 一种基于车规级微控制器数据闪存的软件模拟算法 | |
CN102109965B (zh) | 闪存储存系统、闪存控制器、电脑系统及模拟方法 | |
CN104008020A (zh) | 用于追踪死扇区以自动搜索和誊写的鲁棒扇区id方案 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |