CN117591138A - 一种数据刷写实现方法、系统及存储介质 - Google Patents

一种数据刷写实现方法、系统及存储介质 Download PDF

Info

Publication number
CN117591138A
CN117591138A CN202311630246.2A CN202311630246A CN117591138A CN 117591138 A CN117591138 A CN 117591138A CN 202311630246 A CN202311630246 A CN 202311630246A CN 117591138 A CN117591138 A CN 117591138A
Authority
CN
China
Prior art keywords
sector
data
target data
processing unit
writing
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
Application number
CN202311630246.2A
Other languages
English (en)
Inventor
徐凯
崔功强
蔡宇洪
戴鹏飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huizhou Desay SV Automotive Co Ltd
Original Assignee
Huizhou Desay SV Automotive Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huizhou Desay SV Automotive Co Ltd filed Critical Huizhou Desay SV Automotive Co Ltd
Priority to CN202311630246.2A priority Critical patent/CN117591138A/zh
Publication of CN117591138A publication Critical patent/CN117591138A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本申请提供了一种数据刷写实现方法、系统及存储介质,所述方法主要包括:依次对每写入一个扇区的目标数据进行回读,并同时比对回读数据与所述目标数据;仅擦除比对错误时回读数据所在的错误扇区;对所述错误扇区在预设阈值次数内重新刷写入目标数据,并进行回读和比对;若比对结果为错误,则标记所述错误扇区为坏块;否则,按预设排列顺序向下一个扇区写入目标数据,并迭代上述步骤,直至所有扇区的目标数据写入并比对正确。本申请通过扇区级别和局部重试的技术手段,实现了最小粒度的错误检测和重写。仅擦除并重写错误扇区,不影响其他扇区,避免大量重复劳动,提高了刷写效率和可靠性。

Description

一种数据刷写实现方法、系统及存储介质
技术领域
本申请涉及数据处理技术领域,特别涉及一种数据刷写实现方法、系统及存储介质。
背景技术
在现有Flash数据刷写中,整块数据比对错误时需要整块擦除重写,效率低下且容易重复失败。Flash的一般写入流程如下:写入所有数据后回读flash数据,与写入数据进行对比,若出现错误则重新写入,重试N次后退出刷写流程。其中,NOR Flash为非易失性存储器,一般的写入流程为全部内容写入后再回读内容进行比对是否正确,如有一个bit错误则擦写所有内容再次从头写入,若信号存在干扰的情况下,因写入固件一般有成千上万个比特位,中间因数据通道或flash受干扰的情况下,只要出现一个比特位数据错误便判定失败,虽可以进行多次重试,但再次写入依然可能失败,成功率并不高。
发明内容
针对以上现有技术中的缺陷,本申请旨在提供一种数据刷写实现方法、系统及存储介质,通过扇区级别和局部重试的技术手段,实现了最小粒度的错误检测和重写。仅擦除并重写错误扇区,不影响其他扇区,避免大量重复劳动,提高了刷写效率和可靠性。
本申请提出的固件更新刷写场景可以是:如路由器、打印机等嵌入式设备固件的刷写,可以提高刷写成功率;存储介质格式化场景:如固态硬盘、U盘等存储设备的低级格式化,可以更快速可靠;大容量非易失性存储的写入场景:如基于NAND Flash的SSD固态硬盘写入数据时,可以提高效率;可以是需要高可靠性数据存储的场景:如关键系统参数的保存、重要数据的冗余存储等场景;可以是对刷写效率和稳定性要求高的场景:如自动化生产设备的固件刷写、关键程序的烧录等场景;还可以是资源受限且对刷写可靠性要求高的嵌入式系统。
在第一方面中,本发明提供了一种数据刷写实现方法,所述方法主要包括:
S1:依次对每写入一个扇区的目标数据进行回读,并同时比对回读数据与所述目标数据。
S2:仅擦除比对错误时回读数据所在的错误扇区。
S3:对所述错误扇区在预设阈值次数内重新刷写入目标数据,并进行回读和比对。
S4:若比对结果为错误,则标记所述错误扇区为坏块;否则,按预设排列顺序向下一个扇区写入目标数据。
S5:并迭代所述步骤S1~S4,直至所有扇区的目标数据写入并比对正确。
在本申请中,在所述步骤S1之前,还包括:
在进入数据刷写之前擦除整块存储单元;其中,所述存储单元包括多个独立的扇区,且所述扇区按预设写入目标数据的顺序排列,每个扇区可单独擦除。
在本申请中,所述依次对每写入一个扇区的目标数据进行回读,具体为:
在每次向一个扇区写入目标数据后,向所述扇区发送回读指令,并从扇区地址读取所述目标数据。
在本申请中,所述同时比对回读数据与所述目标数据,具体为:
设置一个与扇区存储容量相同大小的缓冲区;在向扇区写入目标数据的同时,将数据复制备份到该缓冲区中;回读扇区中的数据后,将其暂存到另一个缓冲区。
逐位比较两个缓冲区中的数据,判断每个位是否一致。如果全部位比较结果相同,则判定为比对成功;如果有任意一位不同,则判定为比对错误。
在本申请中,所述步骤S2,还包括:
排列在所述错误扇区之前且已成功刷写入目标数据的扇区内容不变。
在当前扇区成功刷写入目标数据后,输出确认指令,并记录当前扇区刷写成功的状态。
在本申请中,所述步骤S4,还包括:
当当前扇区被标记为坏块时,向扇区管理模块发送标记坏块的信号指令,记录当前坏块扇区的地址信息,并将所述地址信息加入坏块表中。
在第二方面中,本发明还提供了一种数据刷写系统,所述系统主要包括:
第一处理单元、第二处理单元、第三处理单元和第四处理单元。
所述第一处理单元用于依次对每写入一个扇区的目标数据进行回读,并同时比对回读数据与所述目标数据。
第二处理单元用于仅擦除比对错误时回读数据所在的错误扇区。
第三处理单元用于对所述错误扇区在预设阈值次数内重新刷写入目标数据,并进行回读和比对。
以及,第四处理单元用于若比对结果为错误,则标记所述错误扇区为坏块;否则,按预设排列顺序向下一个扇区写入目标数据。
在本申请中,所述第一处理单元至少包括:擦除模块。
所述擦除模块用于在进入数据刷写之前擦除整块存储单元;其中,所述存储单元包括多个独立的扇区,且所述扇区按预设写入目标数据的顺序排列,每个扇区可单独擦除。
在本申请中,所述第四处理单元:扇区管理模块。
所述扇区管理模块用于接收当当前扇区被标记为坏块时标记坏块的信号指令,记录当前坏块扇区的地址信息,并将所述地址信息加入坏块表中。
在第三方面中,本发明还提供了一种存储介质,为计算机可读存储介质中的一种,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如上任一所述的一种数据刷写实现方法。
与现有技术相比,本申请至少存在以下有益效果:
本申请提出的一种数据刷写实现方法、系统及存储介质,所述方法解决了现有存储芯片,如:Flash中数据刷写时,整块数据比对错误时需要整块擦除重写,效率低下且容易重复失败的技术问题。通过将整块存储单元按序排列分成多个独立的扇区来进行分段刷写,实现了最小粒度的错误检测和重写。通过仅擦除并重写错误扇区,不影响其他扇区,避免大量重复劳动。通过设置错误扇区重试阈值,避免无限重试死循环。还通过标记坏块扇区,有利于后续存储管理。本申请在整体流程实现了扇区级校验、仅重写错误扇区、设置重试上限等机制,大大提高了存储芯片,如Flash的一次刷写的成功率和代码鲁棒性,增强了产品稳定,以及提高了刷写效率和可靠性。
附图说明
图1为本申请实施例中一种数据刷写实现方法的流程示意图。
图2为本申请实施例中一种数据刷写实现方法的分析流程图。
图3为本申请实施例中一种数据刷写系统的结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
实施例一:
为解决上述技术问题,本申请实施例提供了一种数据刷写实现方法。在本实施例中,所述方法可以应用在普遍固件更新刷写场景,例如:如路由器、打印机等嵌入式设备固件的刷写,可以提高刷写成功率;存储介质格式化场景:如固态硬盘、U盘等存储设备的低级格式化,可以更快速可靠;大容量非易失性存储的写入场景:如基于NAND Flash的SSD固态硬盘写入数据时,可以提高效率;可以是需要高可靠性数据存储的场景:如关键系统参数的保存、重要数据的冗余存储等场景;可以是对刷写效率和稳定性要求高的场景:如自动化生产设备的固件刷写、关键程序的烧录等场景;还可以是资源受限且对刷写可靠性要求高的嵌入式系统,均不限于此。
如附图1所示,为本实施例一中一种数据刷写实现方法的流程示意图。该方法主要包括:
S1:依次对每写入一个扇区的目标数据进行回读,并同时比对回读数据与所述目标数据。
需要说明的是,在现有技术中,写入固件一般有成千上万个比特位,中间因数据通道或flash受干扰的情况下,只要出现一个比特位数据错误便判定失败,虽可以进行多次重试,但成功率不高。而一般的写入流程为全部内容写入后再回读内容进行比对是否正确,如有一个bit错误则擦写所有内容再次从头写入,若信号存在干扰的情况下,再次写入依然可能失败。在现有技术的基础上,本申请是依次对每写入一个扇区的目标数据就立即进行回读,而不是全部内容写入后再回读,并同时对回读的数据与写入的数据作对比,这样即使出现比特位数据错误,也能立即发现并进行后续的处理,大大提高了数据刷写成功的概率和进一步细化了刷写流程的效率。
在本申请中,在所述步骤S1之前,还包括:
在进入数据刷写之前擦除整块存储单元;其中,所述存储单元包括多个独立的扇区,且所述扇区按预设写入目标数据的顺序排列,每个扇区可单独擦除。
优选地,例如一块NOR Flash存储器作为存储单元,它具有以下结构:
整块Flash可划分为多个扇区(Sector),每个扇区可独立擦除。
其中,定义扇区为可以操作的最小的储存单元,包含数据区和备用区。
那么在进入刷写流程时,控制器先发送擦除命令,擦除整块Flash的所有扇区。按照预设顺序,先向扇区1按数据顺序写入目标数据,并立即回读校验,如果错误则重写该扇区的数据。当扇区1成功写入完目标数据后,再写扇区2,以此类推。
如果某扇区出现错误,只擦除该扇区后重写。直到所有扇区中的数据写入并验证成功。
通过将存储单元-扇区的结构,实现了扇区最小单元级别的独立擦写,从而可以只擦除和重写错误扇区。
在本申请中,所述依次对每写入一个扇区的目标数据进行回读,具体为:
在每次向一个扇区写入目标数据后,向所述扇区发送回读指令,并从扇区地址读取所述目标数据。
优选地,假设采用一块NOR Flash作为存储介质,定义了扇区大小,例如4KB。
当擦除了整块NOR Flash后,按预设顺序,已向扇区1写入了4KB的数据。
现在进行扇区1的数据回读验证:
主控制器向Flash存储器发送读命令,指定扇区1的起始地址。Flash存储器从指定地址开始,依次读出4KB的数据,发送给主控制器。主控制器将读出的4KB数据与原始写入的数据进行比对。
如果完全相同,则验证成功;如果有任何差异,则验证失败。验证失败则对扇区1重新擦除并重写数据。
通过上述从指定扇区地址读出固定长度数据的方式,读取刚刚写入的目标数据,以实现对写入数据的验证。
在本申请中,所述同时比对回读数据与所述目标数据,具体为:
设置一个与扇区存储容量相同大小的缓冲区;在向扇区写入目标数据的同时,将数据复制备份到该缓冲区中;回读扇区中的数据后,将其暂存到另一个缓冲区。
逐位比较两个缓冲区中的数据,判断每个位是否一致。如果全部位比较结果相同,则判定为比对成功;如果有任意一位不同,则判定为比对错误。
优选地,在另一实施例中,假设扇区大小为4KB,则准备两个大小为4KB的缓冲区buffer1和buffer2。将要写入扇区1的数据先复制到buffer1中备份,然后将buffer1的数据写入扇区1。从扇区1读回刚写入的数据到buffer2中。在回读的同时,比较buffer1和buffer2中的每一个字节。逐个字节比较,如果全部相等,则比对成功;如果任意一个字节不同,则比对失败。对比成功的则继续按顺序写入下一扇区的数据;失败则擦除当前扇区,重新写入并比对,均不限于此。
通过设置两个缓冲区保存写入数据和读回数据,可以实现逐字节准确地比对两份数据,从而判断写入是否正确。
S2:仅擦除比对错误时回读数据所在的错误扇区。
如附图2所示,需要说明的是,在执行数据刷写时,每写入一个扇区后立即回读校验。如果比对错误,则仅擦除这个回读数据错误的扇区,而不擦除其他扇区。
在本实施例中,在进行写后读校验,可以立即检测到刷写错误。仅擦除错误扇区,而不影响其他扇区的已写入数据。不需要像传统方式那样整块擦除重写,避免了大量重复工作。只重点修正错误扇区,可以大大提高刷写效率。也避免了错误扩散影响其他扇区,提高了刷写精确性。本申请通过区别对待错误扇区和正确扇区,精确定位并修正了错误位置。
在本申请中,所述步骤S2,还包括:
排列在所述错误扇区之前且已成功刷写入目标数据的扇区内容不变。
在当前扇区成功刷写入目标数据后,输出确认指令,并记录当前扇区刷写成功的状态。
优选地,假设有4个扇区,刷写顺序为扇区1、扇区2、扇区3、扇区4。如果在写入扇区2后校验发现错误,那么,这时扇区1的数据已经成功写入,不需要擦除,内容保持不变。主控制器向扇区1发送确认指令,记录扇区1刷写成功。仅擦除扇区2准备重写,不影响扇区1。直到扇区2重写成功后,继续向扇区3写入。
在本实施例中,保护已成功刷写的扇区数据,不受后续重写影响。记录已成功扇区的刷写状态,方便后续管理。而且仅擦除错误扇区重写,不重复劳动。还通过分段记录刷写状态,便于定位错误。整个刷写过程可继续顺利写入下个扇区,不会因局部错误而中断整个过程。
S3:对所述错误扇区在预设阈值次数内重新刷写入目标数据,并进行回读和比对。
优选地,设置错误扇区的重写次数阈值为3次。
在一实施例中,如果扇区2在写入后校验错误:
第1次,擦除扇区2,重新写入原目标数据,回读校验依然错误。
第2次,重复步骤1,扇区2重写校验还是错误。
第3次,再次擦除重写扇区2,且校验通过。
记录扇区2重写3次成功,继续写入下个扇区。
需要说明的是,在本申请中通过设置重试次数阈值,避免重试无限循环。多次重写校验可提高写入成功率。记录重试次数,便于分析故障扇区。若重试达阈值仍失败则标记坏块,不再写入,而是继续刷写其他正常扇区,不因个别故障扇区耽误整体进度。
S4:若比对结果为错误,则标记所述错误扇区为坏块;否则,按预设排列顺序向下一个扇区写入目标数据。
S5:迭代所述步骤S1~S4,直至所有扇区的目标数据写入并比对正确。
优选地,例如,扇区3写入后多次比对依然错误,连续重写扇区3已达预设的阈值次数,比对仍失败。那么,主控制器判断扇区3为坏块,在坏块表中标记扇区3。不再尝试重写扇区3,而是直接按顺序写入扇区4。
当扇区4写入成功后,迭代上述步骤S1-S4,依次处理后续的扇区。直到所有好块扇区数据写入并比对正确后,完成刷写过程。
在另一实施例中,设置一个扇区错误重试的次数上限N,比如10次。如果某扇区数据重写达到N次后仍然错误,可以采取以下几种处理方案:
(1)标记这个扇区为坏块,放弃再次重写,继续写入下一个扇区的数据。
(2)记录下这个坏扇区的地址,在以后使用该Flash时避免存储重要数据在这个扇区地址。
(3)如果坏块扇区数量达到一定数目,则判定该Flash芯片已损坏,需要更换新芯片。
(4)在写入数据时增加冗余码校验,在读出时使用误差更正码算法,提高数据恢复能力。
(5)在写入前先对Flash芯片进行全面扫描,检测并标记已有的坏块扇区。
在本申请中,通过标记坏块,避免反复读写浪费时间。还可以通过记录坏块位置,便于后续管理。不再在坏块写入数据,防止数据损坏。继续刷写其他正常扇区,保证最大限度数据正确写入。迭代验证过程,直到所有扇区验证通过。
在本申请中,所述步骤S4,还包括:
当当前扇区被标记为坏块时,向扇区管理模块发送标记坏块的信号指令,记录当前坏块扇区的地址信息,并将所述地址信息加入坏块表中。
优选地,例如扇区5在多次重写后,依然写入数据错误。主控制器判断扇区5为坏块。主控制器发送信号给扇区管理模块,表示需要标记坏块。扇区管理模块接收到信号指令,记录下扇区5的地址信息。将扇区5的地址加入坏块表中,作为已标记的坏块。后续在扇区管理时,根据坏块表知晓需要避开扇区5。
在本申请中,主控制器与扇区管理模块协同标记坏块。通过记录坏块地址,便于管理模块控制。坏块表集中管理已标记的所有坏块。扇区管理时可避开坏块,不再写入数据,从而防止数据写入已损坏的扇区。
综上,本申请提出的实施例一通过扇区级别的分段刷写,进行写后读校验,可以精确定位错误扇区。通过仅擦除错误扇区重写,不影响其他扇区,避免大量重复劳动,提高了效率。通过设置了错误扇区重试次数阈值,避免无限重试死循环。通过标记并记录坏块扇区,便于后续存储管理。数据写入与校验的迭代处理流程,可以持续刷写正常扇区,不因局部故障而中断。分段记录刷写状态,便于定位与分析错误。另外,主控制器与扇区管理模块的协同工作,可准确标记和记录坏块。本申请从整体上实现了扇区级校验、仅重写错误扇区、设置重试上限等机制。相比传统整块刷写方式,大大提高了刷写效率和可靠性。使固件更新、存储格式化等操作更快速可靠。本申请实现了对Flash存储器优化的刷写策略,能够提高刷写的精确性、效率和可靠性。
实施例二:
请参照图3,本申请实施例二还根据上述监测处理方法的方案提供了一种数据刷写系统,所述系统主要包括:
第一处理单元、第二处理单元、第三处理单元和第四处理单元。
所述第一处理单元用于依次对每写入一个扇区的目标数据进行回读,并同时比对回读数据与所述目标数据。
需要说明的是,第一处理单元具体可以是一个嵌入式处理器或专用硬件电路。
优选地,在写入每个扇区的数据后,第一处理单元立即发送读命令回读该扇区的数据。然后将回读的数据和写入的目标数据在内存中进行逐位比较。比较结果会送到第二处理单元进行解析。如果比对不一致,第一处理单元还要通知第四处理单元擦除该扇区。
通过上述写入后立即读回校验的处理,第一处理单元实现了对每扇区刷写的即时验证。
在本实施例中,第一处理单元能及时发现刷写错误,并定位错误扇区,协调擦除重写错误扇区。还可以与其他单元配合完成分段刷写与校验。
第二处理单元用于仅擦除比对错误时回读数据所在的错误扇区。
需要说明的是,第二处理单元可以是一个控制器或状态机。它会接收第一处理单元的比对结果。当比对结果是错误时,第二处理单元会确认该扇区为错误扇区。然后指令第四处理单元仅擦除这个错误扇区,而不会擦除其他扇区。
优选地,如果扇区2比对错误,第二处理单元确定仅擦除扇区2,已经写入成功的扇区1不受影响。
在本实施例中,第二处理单元通过解析比对结果,确定错误扇区;并响应指令仅擦除错误扇区,保护其他扇区数据。避免了不必要的重复劳动,提高效率。另外,还可以协调控制擦写错误扇区的重写流程。
第三处理单元用于对所述错误扇区在预设阈值次数内重新刷写入目标数据,并进行回读和比对。
需要说明的是,第三处理单元可以是一块控制逻辑电路。当第二处理单元确认了错误扇区后。第三处理单元会指令重写该错误扇区。它会统计重写次数,如果超过预设阈值则停止重写。
优选地,扇区3重写失败,第二处理单元确认了该扇区错误。第三处理单元指令重写扇区3,最多重试3次。如果3次重写后扇区3仍错误,第三处理单元会停止重试,均不限于此。
在本实施例中,第三处理单元通过控制对错误扇区的重写重试流程;统计重试次数,与阈值比较;在预设阈值内完成有限次重试,避免了无限重试浪费时间。
以及,第四处理单元用于若比对结果为错误,则标记所述错误扇区为坏块;否则,按预设排列顺序向下一个扇区写入目标数据,并迭代所述步骤S1~S4,直至所有扇区的目标数据写入并比对正确。
需要说明的是,第四处理单元可以是一个扇区管理控制器。它接收其他处理单元的擦写指令和比对结果。当收到擦除错误扇区的指令时,第四处理单元会执行擦写。在比对失败时,如果重试超过阈值,第四处理单元会标记该扇区为坏块。
优选地,扇区4连续重写失败,第四处理单元标记扇区4为坏块。第四处理单元会跳过坏块,向扇区5写入数据。迭代地执行后续的扇区写入、校验、重试等流程。
在本实施例中,第四处理单元通过执行对错误扇区的擦写,标记无法修复的坏块,控制写入顺序的迭代流程;还通过协调各处理单元,最终完成所有扇区的刷写。
在本申请中,所述第一处理单元至少包括:擦除模块。
所述擦除模块用于在进入数据刷写之前擦除整块存储单元;其中,所述存储单元包括多个独立的扇区,且所述扇区按预设写入目标数据的顺序排列,每个扇区可单独擦除。
在本实施例中,第一处理单元在正式刷写前,会发送整块擦除命令,擦除整个Flash存储单元的所有扇区。
优选地,如果Flash有4个扇区,第一处理单元会依次擦除扇区1、扇区2、扇区3、扇区4,直到整块Flash被擦成全0状态。
这样可以清空Flash,确保刷写前没有旧数据影响。并且由于Flash的扇区可以单独擦除,第一处理单元可以仅擦除有误的扇区。
在本实施例中,存储单元由独立的扇区组成,可单独擦除,便于后续仅擦除错误扇区。第一处理单元负责整块擦除,为后续的扇区级刷写准备好存储环境。
在本申请中,所述第四处理单元至少包括扇区管理模块;
所述扇区管理模块用于接收当当前扇区被标记为坏块时标记坏块的信号指令,记录当前坏块扇区的地址信息,并将所述地址信息加入坏块表中。
在本实施例中,当第四处理单元确认某扇区为坏块后,会发送信号给扇区管理模块。
优选地,例如扇区3被确认为坏块,第四处理单元发送标记坏块信号,并附带扇区3的地址信息。扇区管理模块接收到信号后,将扇区3的地址记录到坏块表中。后续扇区管理时就知道扇区3已损坏,不再将数据写入该扇区。
综上,第四处理单元与扇区管理模块之间协同标记坏块。第四处理单元提供坏块地址,扇区管理模块记录和维护坏块表,防止了数据再写入已损坏的坏块扇区。另外,在本实施例中,坏块表集中管理已知的所有坏块位置。
综上,本申请实施例二提供的一种数据刷写系统,该系统分别通过第一、第二、第三和第四处理单元实现分工协作,共同完成了刷写校验、仅擦除错误扇区、重试控制、坏块管理等功能,实现了整体的分段刷写与校验流程控制,大大提高了刷写效率和刷写的成功率。具体的实现过程和原理在实施例一中已经详细介绍,在本实施例中不再赘述。
实施例三:
本申请还提供了一种存储介质,为计算机可读存储介质中的一种,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如上任一所述的数据刷写实现方法。
需要说明的是,存储介质可以是ROM、RAM、Flash存储芯片等。它们可以内置在计算机或嵌入式设备中,由处理器访问。在存储介质上预先存储了计算机程序,实现了数据刷写方法的算法逻辑。
优选地,当设备启动时,处理器会加载并执行该程序。其中,程序包含刷写主控制、扇区读写、比对校验、仅擦除错误扇区、重试控制等函数模块。
处理器按程序逻辑执行这些函数,即实现了扇区级别的分段刷写与校验流程。
在本实施例中的存储介质固化了刷写算法,使其可以持久存储在设备中。处理器只需直接调用刷写程序即可完成刷写操作。不需要每次都重新编写刷写流程,提高了使用效率。
所述计算机可读存储介质可为配置于任意计算机设备,可以是智能手机、平板电脑、桌上型计算机和云端服务器等计算设备,还以可以是车载终端或控制系统,例如还可以包括输入输出设备、网络接入设备等。
所称处理器可以是中央处理单元(CPU),该处理器还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。所述存储器用于存储操作系统、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,例如所述计算机程序的程序代码等。所述存储器还可以用于暂时地存储已经输出或者将要输出的数据。
在本申请所提供的几个实施例中,可以理解的是,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意的是,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述的具体实施例,对本申请的目的、技术方案和有益效果进行了进一步的详细说明,应当理解,以上所述仅为本申请的具体实施例而已,并不用于限定本申请的保护范围。特别指出,对于本领域技术人员来说,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种数据刷写实现方法,其特征在于,包括:
S1:依次对每写入一个扇区的目标数据进行回读,并同时比对回读数据与所述目标数据;
S2:仅擦除比对错误时回读数据所在的错误扇区;
S3:对所述错误扇区在预设阈值次数内重新刷写入目标数据,并进行回读和比对;
S4:若比对结果为错误,则标记所述错误扇区为坏块;否则,按预设排列顺序向下一个扇区写入目标数据;
S5:迭代所述步骤S1~S4,直至所有扇区的目标数据写入并比对正确。
2.根据权利要求1所述的一种数据刷写实现方法,其特征在于,在所述步骤S1之前,还包括:
在进入数据刷写之前擦除整块存储单元;其中,所述存储单元包括多个独立的扇区,且所述扇区按预设写入目标数据的顺序排列,每个扇区可单独擦除。
3.根据权利要求2所述的一种数据刷写实现方法,其特征在于,所述依次对每写入一个扇区的目标数据进行回读,具体为:
在每次向一个扇区写入目标数据后,向所述扇区发送回读指令,并从扇区地址读取所述目标数据。
4.根据权利要求3所述的一种数据刷写实现方法,其特征在于,所述同时比对回读数据与所述目标数据,具体为:
设置一个与扇区存储容量相同大小的缓冲区;
在向扇区写入目标数据的同时,将数据复制备份到该缓冲区中;
回读扇区中的数据后,将其暂存到另一个缓冲区;
逐位比较两个缓冲区中的数据,判断每个位是否一致;
如果全部位比较结果相同,则判定为比对成功;如果有任意一位不同,则判定为比对错误。
5.根据权利要求4所述的一种数据刷写实现方法,其特征在于,所述步骤S2,还包括:
排列在所述错误扇区之前且已成功刷写入目标数据的扇区内容不变;
在当前扇区成功刷写入目标数据后,输出确认指令,并记录当前扇区刷写成功的状态。
6.根据权利要求5所述的一种数据刷写实现方法,其特征在于,所述步骤S4,还包括:
当当前扇区被标记为坏块时,向扇区管理模块发送标记坏块的信号指令,记录当前坏块扇区的地址信息,并将所述地址信息加入坏块表中。
7.一种数据刷写系统,其特征在于,包括:
第一处理单元、第二处理单元、第三处理单元和第四处理单元;
所述第一处理单元用于依次对每写入一个扇区的目标数据进行回读,并同时比对回读数据与所述目标数据;
第二处理单元用于仅擦除比对错误时回读数据所在的错误扇区;
第三处理单元用于对所述错误扇区在预设阈值次数内重新刷写入目标数据,并进行回读和比对;
以及,第四处理单元用于若比对结果为错误,则标记所述错误扇区为坏块;否则,按预设排列顺序向下一个扇区写入目标数据。
8.根据权利要求7所述的一种数据刷写系统,其特征在于,所述第一处理单元至少包括:擦除模块,所述刷写模块用于在进入数据刷写之前擦除整块存储单元;
其中,所述存储单元包括多个独立的扇区,且所述扇区按预设写入目标数据的顺序排列,每个扇区可单独擦除。
9.根据权利要求8所述的一种数据刷写系统,其特征在于,所述第四处理单元至少包括:扇区管理模块,所述扇区管理模块用于接收当当前扇区被标记为坏块时标记坏块的信号指令,记录当前坏块扇区的地址信息,并将所述地址信息加入坏块表中。
10.一种存储介质,其特征在于,为计算机可读存储介质中的一种,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如权利要求1-6任一所述的一种数据刷写实现方法。
CN202311630246.2A 2023-11-30 2023-11-30 一种数据刷写实现方法、系统及存储介质 Pending CN117591138A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311630246.2A CN117591138A (zh) 2023-11-30 2023-11-30 一种数据刷写实现方法、系统及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311630246.2A CN117591138A (zh) 2023-11-30 2023-11-30 一种数据刷写实现方法、系统及存储介质

Publications (1)

Publication Number Publication Date
CN117591138A true CN117591138A (zh) 2024-02-23

Family

ID=89919818

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311630246.2A Pending CN117591138A (zh) 2023-11-30 2023-11-30 一种数据刷写实现方法、系统及存储介质

Country Status (1)

Country Link
CN (1) CN117591138A (zh)

Similar Documents

Publication Publication Date Title
US6625096B1 (en) Optical disk recording and reproduction method and apparatus as well as medium on which optical disk recording and reproduction program is recorded
KR100850515B1 (ko) 멀티레벨 셀 플래시 메모리를 갖는 메모리 시스템 및그것의 프로그램 방법
US7921339B2 (en) Flash storage device with data correction function
US6112314A (en) Apparatus and method for detecting over-programming condition in multistate memory device
US9501356B2 (en) Fast data back-up and restore between volatile and flash memory
US10635527B2 (en) Method for processing data stored in a memory device and a data storage device utilizing the same
TWI512742B (zh) 非揮發性快閃記憶體擦除異常存儲塊修復方法和裝置
TWI490876B (zh) 系統啟動引導處理方法及裝置
WO2005111812A1 (ja) 不揮発性記憶装置のためのエラー訂正方法
JP2000112831A (ja) ディスク記録再生方法および装置
JP2002351685A (ja) 不揮発性メモリのデータ更新方法及び制御装置
KR20130069364A (ko) 비휘발성 반도체 기억 장치 및 그 관리 방법
JP2009187049A (ja) 装置
CN113220221B (zh) 存储器控制器与数据处理方法
CN112802530B (zh) Nand测试方法、装置、可读存储介质及电子设备
US10261721B2 (en) Memory system and operating method thereof
US10528348B2 (en) Data management method for storage media
CN117591138A (zh) 一种数据刷写实现方法、系统及存储介质
WO2020062797A1 (zh) 一种数据存储方法及存储器
US6229743B1 (en) Method of a reassign block processing time determination test for storage device
US20210257024A1 (en) Storage control device, storage device, and storage control method
US10379972B1 (en) Minimizing reads for reallocated sectors
US11550710B2 (en) Data processing method and memory controller utilizing the same
US10073735B1 (en) Seeding mechanism for error detection codes
JPH09212429A (ja) 不揮発性半導体ディスク装置

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