CN111124742B - Flash数据校验方法及Flash控制器、存储介质、设备 - Google Patents
Flash数据校验方法及Flash控制器、存储介质、设备 Download PDFInfo
- Publication number
- CN111124742B CN111124742B CN201911309883.3A CN201911309883A CN111124742B CN 111124742 B CN111124742 B CN 111124742B CN 201911309883 A CN201911309883 A CN 201911309883A CN 111124742 B CN111124742 B CN 111124742B
- Authority
- CN
- China
- Prior art keywords
- flash
- data
- instruction
- verification
- correctness
- 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
Classifications
-
- 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
- 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/1012—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 using codes or arrangements adapted for a specific type of error
- G06F11/102—Error in check bits
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种Flash数据校验方法及Flash控制器、存储介质、设备,所述方法包括:确定Flash中的静态程序通过完整性校验;在Flash中的静态程序通过完整性校验之后,对Flash中的数据分组进行正确性校验运算,获取全部分组的正确性校验值并存储至预设的正确性校验结果存储器中;接收中央处理器输出的指令;当中央处理器输出的指令为读取指令时,获取读取指令对应的目标数据,并从正确性校验结果存储器中选取出目标数据对应的目标校验值;采用目标校验值对目标数据进行校验,并在校验成功后,将目标数据输出至所述中央处理器。上述方案能够对读取到的数据进行实时校验,提高使用Flash的系统的可靠性。
Description
技术领域
本发明涉及Flash技术领域,尤其涉及一种Flash数据校验方法及Flash控制器、存储介质、设备。
背景技术
Flash(闪存)具有成本低、擦写次数多且数据存储时间久的优点,已经广泛应用在嵌入式系统或设备中,用来存储程序和数据。Flash的稳定性和可靠性是嵌入式系统或设备稳定可靠工作的一个重要条件。
在实际系统中,Flash对工作条件的要求较高,例如Flash需要较高的工作电压。在实际应用过程中,在一些恶劣的工作环境下,Flash的工作条件可能无法满足,导致在从Flash中读取数据时会发生数据读取错误,造成系统可靠性较差。
目前市面上有部分嵌入式Flash支持专门的校验位,即每次读数据包含了校验位,如ECC校验位进行实时检验;但大部分嵌入式Flash不支持专门的校验位,即每次读数据不包含校验位,若将校验位存储在Flash其他区域,则每次读数据需要进行2次,即先读数据,再读检验位,这种方式性能慢,同时当运行过程中修改Flash上数据时,需同时修改对应校验位,因为Flash一般不能直接写数据,需要先擦除在编程写数据,这种方式显然也效率低下。
现有的Flash可靠性方案较多,但总体上看,现有的Flash可靠性方案均存在成本较高、效率偏低或实时性较差的问题。
发明内容
本发明实施例解决的是从Flash中读取数据时会发生数据读取错误,造成系统可靠性较差、效率较低的技术问题。
为解决上述技术问题,本发明实施例提供一种Flash数据校验方法,包括:在Flash上电或Flash重置时,确定所述Flash中的静态程序通过完整性校验;在所述Flash中的静态程序通过完整性校验之后,对所述Flash中的数据分组进行正确性校验运算,获取全部分组的正确性校验结果并存储至预设的正确性校验结果存储器中;接收中央处理器输出的指令;当所述中央处理器输出的指令为读取指令时,获取所述读取指令对应的目标数据,并从所述正确性校验结果存储器中选取出所述目标数据对应的目标校验值;采用所述目标校验值对所述目标数据进行校验,并在校验成功后,将所述目标数据输出至所述中央处理器。
可选的,所述Flash数据校验方法还包括:当所述中央处理器输出的指令为擦除指令时,对所述擦除指令对应的页进行擦除操作,并对所述正确性校验结果存储器中与所述擦除指令对应的页的校验值进行实时更新。
可选的,在对所述正确性校验结果存储器中与所述擦除指令对应的页的校验值进行更新之后,还包括:对所述擦除指令对应的页进行查空检查,以确定所述擦除指令正确执行;对更新后的所述正确性校验结果存储器中与所述擦除指令对应的页的校验值进行检查,以确定更新后的校验值正确。
可选的,所述Flash数据校验方法还包括:当所述中央处理器输出的指令为编程指令时,对所述编程指令对应地址的存储单元进行编程操作,并对所述正确性校验结果存储器中与所述编程指令对应的地址的校验值进行更新。
可选的,在对所述正确性校验结果存储器中与所述编程指令对应的地址的校验值进行更新之后,还包括:对所述编程指令对应地址的存储单元的编程数据进行检查,以确定所述编程指令正确执行;对更新后的所述正确性校验结果存储器中与所述编程指令对应的地址的校验值进行检查,以确定更新后的校验值正确。
可选的,所述Flash数据校验方法还包括:在采用所述目标校验值对所述目标数据进行校验,得到的正确性校验结果为校验失败时,获取校验失败的连续次数;当校验失败的连续次数达到预设的目标阈值时,执行复位或中断操作;当校验失败的连续次数未达到所述目标阈值时,重新根据所述读取指令读取所述目标数据,并采用所述目标校验值对所述目标数据进行校验。
可选的,所述正确性校验结果存储器独立于所述Flash设置。
为解决上述技术问题,本发明实施例还提供了一种Flash控制器,包括:确定单元,用于在Flash上电或Flash重置时,确定所述Flash中的静态程序通过完整性校验;第一校验单元,用于在所述确定单元确定所述Flash中的静态程序通过完整性校验之后,对所述Flash中的数据分组进行正确性校验运算,获取全部分组的正确性校验结果并存储至预设的正确性校验结果存储器中;接收单元,用于接收中央处理器输出的指令;获取单元,用于当所述中央处理器输出的指令为读取指令时,获取所述读取指令对应的目标数据,并从所述正确性校验结果存储器中选取出所述目标数据对应的目标校验值;第二校验单元,用于采用所述目标校验值对所述目标数据进行校验;发送单元,用于在校验成功后,将所述目标数据输出至所述中央处理器。
可选的,所述Flash控制器还包括:第一更新单元,用于当所述中央处理器输出的指令为擦除指令时,对所述擦除指令对应的页进行擦除操作,并对所述正确性校验结果存储器中与所述擦除指令对应的页的校验值进行实时更新。
可选的,所述Flash控制器还包括:第一验证单元,用于对所述擦除指令对应的页进行查空检查,以确定所述擦除指令正确执行;对更新后的所述正确性校验结果存储器中与所述擦除指令对应的页的校验值进行检查,以确定更新后的校验值正确。
可选的,所述Flash控制器还包括:第二更新单元,用于当所述中央处理器输出的指令为编程指令时,对所述编程指令对应地址的存储单元进行编程操作,并对所述正确性校验结果存储器中与所述编程指令对应的地址的校验值进行更新。
可选的,所述Flash控制器还包括:第二验证单元,用于对所述编程指令对应地址的存储单元的编程数据进行检查,以确定所述编程指令正确执行;对更新后的所述正确性校验结果存储器中与所述编程指令对应的地址的校验值进行检查,以确定更新后的校验值正确。
可选的,所述Flash控制器还包括:处理单元,用于在所述第二校验单元采用所述目标校验值对所述目标数据进行校验,得到的正确性校验结果为校验失败时,获取校验失败的连续次数;当校验失败的连续次数达到预设的目标阈值时,执行复位或中断操作;当校验失败的连续次数未达到所述目标阈值时,重新根据所述读取指令读取所述目标数据,并采用所述目标校验值对所述目标数据进行校验。
可选的,所述Flash控制器包括:输出单元,用于将所述正确性校验结果输出至所述正确性校验结果存储器,且所述正确性校验结果存储器独立于所述Flash设置。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质为非易失性存储介质或非瞬态存储介质,其上存储有计算机指令,所述计算机指令运行时执行上述任一种所述的Flash数据校验方法的步骤。
本发明实施例还提供了一种数据处理设备,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行上述任一种所述的Flash数据校验方法的步骤。
与现有技术相比,本发明实施例的技术方案具有以下有益效果:
在接收到中央处理器输出的读取指令时,获取读取指令对应的目标数据以及目标数据对应的目标校验值,采用目标校验值对目标数据进行校验,若校验成功,则将目标数据输出至中央处理器。在从每一个Flash中读取数据时,均对读取到的数据进行校验,以获知读取到的数据是否正确,从而实现对从Flash中读取的数据进行实时校验,进而提高了使用Flash的系统的可靠性和效率。
进一步,将Flash中的数据对应的正确性校验结果存储在独立于Flash之外的正确性校验结果存储器上,在根据读取指令从Flash中读取目标数据的同时,可以从正确性校验结果存储器中读取目标数据对应的目标校验值,从而可以提高数据校验的速度和效率。
附图说明
图1是本发明实施例中的一种Flash数据校验方法的流程图;
图2是本发明实施例中的一种Flash处理系统的结构示意图;
图3是本发明实施例中的一种Flash控制器的结构示意图。
具体实施方式
如上述背景技术中所述,在一些恶劣的工作环境下,Flash的工作条件可能无法满足,导致在从Flash中读取数据时会发生数据读取错误,造成系统可靠性较差。
目前市面上有部分嵌入式Flash支持专门的校验位,即每次读数据包含了校验位,如ECC校验位进行实时检验;但大部分嵌入式Flash不支持专门的校验位,即每次读数据不包含校验位,若将校验位存储在Flash其他区域,则每次读数据需要进行2次,即先读数据,再读检验位,这种方式性能慢,同时当运行过程中修改Flash上数据时,需同时修改对应校验位,因为Flash一般不能直接写数据,需要先擦除在编程写数据,这种方式显然也效率低下。
在本发明实施例中,在每一个从Flash中读取数据时,均对读取到的数据进行校验,以获知读取到的数据是否正确,从而实现对从Flash中读取的数据进行实时校验,进而提高了使用Flash的系统的可靠性。
为使本发明的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。
本发明实施例提供了一种Flash数据校验方法,参照图1,以下通过具体步骤进行详细说明。
步骤S100,在Flash上电或Flash重置时,确定所述Flash中的静态程序通过完整性校验。
在实际应用中可知,Flash通常包括程序存储区和数据存储区。程序存储区用于存储静态程序部分,其中的数据通常不能够被修改;数据存储区用于存储动态数据部分,其中的数据可以被修改。具体的,程序存储区以及数据存储区的定义及各自所存储的内容可以参照现有技术,本发明实施例不做赘述。
为了便于描述,在本发明实施例中,将存储至Flash中的内容称为数据,包括程序、数据、控制字等;Flash存储器简称为Flash。
在具体实施中,在对Flash中的静态程序进行完整性校验时,可以采用循环冗余校验(Cyclic Redundancy Check,CRC)方法对静态程序进行完整性校验。
在本发明实施例中,进行完整性校验的可以仅针对程序存储区中存储的静态程序,对数据存储器中存储的动态数据可以无需执行完整性校验。
可以理解的是,还可以采用其他的校验方法对Flash中的静态程序进行完整性校验,并不仅限于上述举例中列出的CRC校验。
在本发明实施例中,在确定Flash中的静态程序通过完整性校验之后,可以执行步骤S101。
步骤S101,对所述Flash中的数据分组进行正确性校验运算,获取全部正确性校验结果并存储至正确性校验结果存储器中。
在本发明实施例中,对Flash中的数据分组进行正确性校验运算,可以是只对数据存储区中存储的数据部分进行正确性校验运算,也可以是对数据存储区中的数据部分以及程序存储区中存储的程序部分均进行正确性校验运算。对于前者而言,实质上是仅对仅对Flash中的部分数据进行正确性校验运算;对于后者而言,实质上是对Flash中存储的所有数据进行正确性校验运算,上述的所有数据包括数据部分以及程序部分。
在具体实施中,在获取了Flash中的全部分组的正确性校验结果之后,可以将得到的全部分组对应的正确性校验结果存储至预设的正确性校验结果存储器中。在本发明实施例中,正确性校验结果存储器可以为SRAM,也可以为其他类型的存储器。
在具体实施中,在对Flash中的数据进行正确性校验运算时,可以对Flash中的每个字节进行奇偶校验,生成1bit的奇偶校验位,将该bit存储在预设的正确性校验结果存储器(例如SRAM)中。
在对Flash中的数据进行正确性校验运算时,也可以对Flash中的每个半字进行奇偶校验,一个半字对应1bit的奇偶校验位,并将该bit存储在SRAM中。
在对Flash中的数据进行正确性校验运算时,可以对Flash中的每个字进行奇偶校验,一个字对应1bit的奇偶校验位,并将该bit存储在SRAM中。
在对Flash中的数据进行正确性校验运算时,也可以对Flash中的字节进行ECC校验。例如,对Flash中的每32bit进行ECC校验,生成7bit的ECC校验位,将7bit的校验位存储在正确性校验结果存储器中;或对Flash中的每64bit进行ECC校验,生成8bit的ECC校验位,将8bit的校验位存储在正确性校验结果存储器中。
综上,可以看到Flash数据分组可以按字节(8bit)、按半字(16bit)、按字(32bit)或按双字(64bit)进行,每个分组产生1bit或多bit的校验值,这些校验值按顺序全部存储到SRAM中。
可以理解的是,在对Flash中的数据进行正确性校验运算时,还可以其他的单位对Flash中的数据进行校验运算,并不仅限于上述实施例中举例的多字、字节、半字或字。进行校验的算法也并不仅限于上述实施例中举例的奇偶校验。
在具体实施中,在Flash每一次上电或者复位时,均可对Flash中的数据进行一次正确性校验运算,获取正确性校验结果,存储在正确性校验结果存储器中。正确性校验结果存储器可以相对于Flash独立设置。正确性校验结果存储器在上电或复位后对Flash上全部分组的校验值一次性存储,然后在实际运行中根据擦除指令或编程指令对应地址进行实时更新。每个分组的校验值在正确性校验结果存储器中地址是唯一对应的。
当正确性校验结果存储器为SRAM时,SRAM可以为8位、16位或32位。在本发明一实施例中,存储正确性校验结果的SRAM为8位。可以理解的是,在本发明其他实施例中,存储正确性校验结果的SRAM可以为16位或32位。
上述步骤S100和步骤S101属于上电、复位后的系统初始化过程,此过程通过图2中的Flash控制器来实现,参照图2,给出了本发明实施例中的一种Flash处理系统的结构示意图。图2中,CPU 21与Flash控制器22进行通信,Flash控制器22可以从Flash 23中读取数据,也可以向Flash 23写入数据。
芯片在上电或复位后,Flash控制器22将进行Flash数据读取操作,读取的静态数据先进行CRC完整性校验,算得对应CRC校验值,再根据预存在Flash特定地址上的CRC校验值比对,若计算出的CRC校验值与预存的CRC校验值一致,则CRC完整性检测通过,然后Flash控制器再读Flash上部分数据或全部数据进行正确性校验,即根据校验算法进行分组计算每组的校验值,将计算得到的全部校验值按顺序存储到正确性校验结果存储器中。
在具体实施中,将计算得到的全部校验值按顺序存储到正确性校验结果存储器中,具体存储方法可以参考如下(以每字节做奇偶校验为例):Flash上数据每字节产生1bit奇偶校验位,连续8个字节产生8bit奇偶校验位,该8bit奇偶校验位组成一个字节,然后Flash控制器22将该字节写入正确性校验结果存储器SRAM中,对应SRAM地址(Sram_Addr)与Flash源数据地址(Flash_Addr)关系是Sram_Addr=Flash_Addr/8。这种对应关系在系统实时运行时也同样使用。这样每次正确性校验结果存储器SRAM读取可以得到8个bit,对应Flash上8个连续字节的奇偶校验位;通常该8bit奇偶校验位会存储在Flash控制器中的寄存器R中。
步骤S102,接收中央处理器输出的指令。
在具体实施中,中央处理器(Central Processing Unit,CPU)可以根据具体的应用需求,向Flash控制器发送指令。中央处理器输出的指令可以是读取指令,也可以是擦除指令或编程指令。
当系统运行时,CPU 21需要从Flash 23中读取指令或数据,可以生成读取指令并输出至Flash控制器22,在读取指令中,可以携带有所要读取的数据对应的地址信息。相应地,当CPU 21存在对Flash 23中的数据进行擦除操作的需求时,也可以生成擦除指令并输出至Flash控制器22,在擦除指令中,可以携带有需要执行擦除操作的地址信息;当CPU 21存在对Flash 23中的数据进行编程操作的需求时,可以生成编程指令并输出至Flash控制器22,在编程指令中,可以携带有需要执行编程操作的地址信息。
步骤S103,当所述中央处理器输出的指令为读取指令时,获取所述读取指令对应的目标数据,并从所述正确性校验结果存储器中选取出所述目标数据对应的目标校验值。
在具体实施中,在Flash控制器22接收到CPU 21输出的指令后,可以获取接收到的指令对应的类型。接收到的指令可以是读取指令,也可以是擦除指令,还可以是编程指令。
当Flash控制器22接收到的指令是读取指令时,可以根据读取指令中携带的地址信息,从Flash中读取出地址信息对应的目标数据,同时,可以从正确性校验结果存储器中选取出目标数据对应的目标校验值。
在本发明实施例中,正确性校验结果存储器24可以独立于Flash 23独立存在,也即正确性校验结果存储器24不属于Flash 23,正确性校验结果存储器24与Flash 23之间并不存在隶属关系。
每次从正确性校验结果存储器24获取的校验结果与SRAM的数据位宽有关,可以是8位、16位或32位。若SRAM的数据位宽是8位,则每次读取的校验结果也是8位,可能会对应8个连续字节的奇偶校验位;在读取校验位后,Flash控制器22可将读取的数据存在单独的寄存器R中,寄存器R的位宽与SRAM的数据位宽一样,这样寄存器R就会保存最近一次正确性校验结果存储器24读到的校验结果,其中包括了若干个Flash上连续地址数据的校验位,下次读Flash数据时,若对应的校验位已保存在寄存器R中,则无需再读正确性校验结果存储器24,而可以直接在寄存器R中获取校验结果;从而减少读取正确性校验结果存储器24的次数,降低系统运行功耗。
若将正确性校验结果直接输出至Flash 23,由于通常大部分Flash没有专用的校验区,因此,需要一部分额外的存储空间来存储正确性校验结果。在从Flash 23中读取目标数据后,还要从Flash 23中读取目标数据对应的目标校验值,也即:在对目标数据进行校验时,需要执行两次读取操作,第一次读取操作为读取目标数据,第二次读取操作为读取目标校验值。因此,将正确性校验结果输出至Flash 23,由Flash 23存储正确性校验结果,存在读取正确性校验结果的速度较慢和效率较低的问题,并且若发生Flash擦除或编程操作时,需要同时更新在Flash中对应的校验位,效率很慢。
若将正确性校验结果直接输出至正确性校验结果存储器24,由独立设置的正确性校验结果存储器24存储正确性校验结果,则Flash控制器22可以从Flash 23中读取目标数据的同时,从正确性校验结果存储器24中读取目标数据对应的目标校验值,因此只需要对Flash 23执行一次读取操作即可实现对目标数据的校验,从而可以提高数据校验的速度和效率。正确性校验结果存储器24可使用SRAM,读写操作简便快速。
在具体实施中,当正确性校验结果存储在正确性校验结果存储器24中时,Flash控制器22在获取到读取指令对应的目标数据的同时,可以读取正确性校验结果存储器24中存储的正确性校验结果,从中选取出目标数据对应的目标校验值。
步骤S104,采用所述目标校验值对所述目标数据进行校验。
在具体实施中,可以根据地址信息,Flash控制器从正确性校验结果存储器24中选取出目标数据对应的目标校验值。在获取到目标数据对应的目标校验值之后,可以根据目标校验值对目标数据进行校验。校验方法可以是先计算一下目标数据的校验值,然后与从正确性校验结果存储器读取的目标校验值比对,若相等,则校验成功,否则就是校验失败。
步骤S105,在校验成功后,Flash控制器将所述目标数据输出至所述中央处理器。
在具体实施中,Flash控制器在根据目标校验值对目标数据进行校验,校验成功时,可以将目标数据输出至中央处理器。中央处理器接收到与读取指令对应的目标数据后,再输出下一条指令进行后续读写操作。
在具体实施中,在根据目标校验值对目标数据进行校验时,还可能存在校验失败的情况。当根据目标校验值对目标数据进行校验,得到校验失败的情况时,可以获取校验失败的连续次数,并将校验失败的连续次数与预设的目标阈值进行比较。当校验失败的连续次数达到预设的目标阈值时,可以执行复位或中断操作;反之,当校验失败的连续次数没有达到预设的目标阈值时,可以重新根据读取指令读取目标数据,并重新采用目标校验值对目标数据进行校验,也即重新执行步骤S103~步骤S104。
在具体实施中,可以根据实际的应用场景来设定目标阈值。例如,设定目标阈值为3。当校验失败的连续次数达到3次时,即可执行复位或中断操作;当校验失败的连续次数为2次时,重新根据读取指令读取目标数据,并重新采用目标校验值对目标数据进行校验。在校验失败过程中,CPU可以处于挂起状态,直到数据读取正确或者被复位或者进入中断操作。其中,中断操作可以是重映射机制,即从其他存储器读取数据或指令,避免反复读取失败的情形。
又如,设定目标阈值为5。可以理解的是,目标阈值还可以为其他值,本发明不再一一赘述。
在本发明实施例中,在根据目标校验值对目标数据进行校验,得到校验失败的情况时,根据校验失败的连续次数与目标阈值之间的大小关系,来确定是重新读取目标数据并重新进行校验,还是执行复位或中断操作,可以有效提高系统的安全性和稳定性。
现有技术中,Flash芯片中通常设置有低电压检测模块来用于电压异常报警,但是通常反应速度较慢,实时性较差。而在本发明实施例中,每一次读取数据都对读取到的目标数据进行校验,进行数据校验的反应速度较快且实时性更强。
在具体实施中,中央处理器输出的指令还可以为擦除指令。在实际应用中可知,对Flash进行擦除时,通常是以页为单位对Flash中的某一页或几页进行擦除。因此,在本发明实施例中,当Flash控制器接收到中央处理器输出的擦除指令时,可以对Flash对应的页进行擦除操作。在完成擦除操作之后,可以对正确性校验结果存储器中与擦除指令对应的页的校验值进行更新。
例如,擦除指令对应的页为Flash中的第1页,则在完成对Flash中的第1页的擦除操作后,对正确性校验结果存储器中,Flash中的第1页对应的校验值进行更新。
在本发明实施例中,对正确性校验结果存储器中与擦除指令对应的页的校验值进行更新,实质上是Flash控制器对正确性校验结果存储器中存储的正确性校验结果进行更新,更新的部分为擦除指令对应的页的校验值。
在本发明实施例中,对擦除指令对应的页的校验值进行更新,可以根据擦除后的页对应的数据进行校验,并根据得到的校验值对正确性校验结果进行更新。对擦除后的页对应的数据进行校验时,所采用的校验方法可以与步骤S101中使用的校验方法相同。
继续以擦除指令对应的页为Flash中的第1页为例。对Flash中的第1页进行擦除操作后,对Flash中的第1页的数据进行奇偶校验,并根据得到的校验值对正确性校验结果进行更新。
可以理解的是,在对Flash中的页进行擦除操作时,擦除后的页对应的校验值是固定的。因此,在对Flash中的某一页进行擦除后,可以根据固定的校验值对正确性校验结果中与擦除指令对应的页的校验值进行实时更新,而无需重新计算擦除指令对应的页的校验值。
在具体实施中,在对正确性校验结果中与擦除指令对应的页的校验值进行更新之后,还可以对擦除指令对应的页进行查空检查,以确定擦除指令是否正确执行;还可以对更新后的正确性校验结果中与擦除指令对应的页的校验值进行检查,以确定更新后的校验值是否正确。
在具体实施中,中央处理器输出的指令还可以为编程指令。在本发明实施例中,当Flash控制器接收到中央处理器输出的编程指令时,可以对编程指令对应地址的存储单元进行编程操作。在完成编程操作之后,可以对正确性校验结果存储器中与编程指令对应的地址的校验值进行实时更新。
例如,编程指令对应的地址为Flash中的地址A,则对地址A的存储单元进行编程操作。在完成编程操作后,对存储单元中的数据进行校验,根据得到的校验值对正确性校验结果进行更新。
在本发明实施例中,在对正确性校验结果中与编程指令对应的地址的校验值进行更新之后,还可以对编程指令对应的地址的存储单元的编程数据进行检查,以确定编程指令被正确执行;对更新后的正确性校验结果中与编程指令对应的地址的校验值进行检查,以确定更新后的校验值是否正确。
相应的,在本发明实施例中,对正确性校验结果中与编程指令对应的地址的校验值进行更新,实质上也是Flash控制器对正确性校验结果存储器中存储的正确性校验结果进行更新。
对编程后的地址对应的数据进行校验时,所采用的校验方法可以与步骤S101中使用的校验方法相同。
例如,步骤S101中采用的校验方法为奇偶校验,则对编程后的地址对应的数据同样进行奇偶校验。
综上可见,本发明实施例中,Flash控制器在接收到中央处理器输出的读取指令时,获取读取指令对应的目标数据以及目标数据对应的目标校验值,采用目标校验值对目标数据进行校验,若校验成功,则将目标数据输出至中央处理器。在每一个从Flash中读取数据时,均对读取到的数据进行校验,以获知读取到的数据是否正确,从而实现对从Flash中读取的数据进行实时校验,进而提高了使用Flash的系统的可靠性。
在本发明实施例中,当正确性校验结果存储在正确性校验结果存储器中时,从硬件实现上来说,Flash控制器对正确性校验结果所进行的操作,包括读取操作以及更新操作,均可以看作是Flash控制器对正确性校验结果存储器进行相应的读取操作以及写入操作。
在本发明实施例中,上述步骤S101~步骤S105的步骤可以由Flash控制器执行。
参照图3,给出了本发明实施例中的一种Flash控制器,包括:确定单元300、第一校验单元301、接收单元302、获取单元303、第二校验单元304以及发送单元305,其中:
确定单元300,用于在Flash上电或Flash重置时,确定所述Flash中的静态程序通过完整性校验;
第一校验单元301,用于在所述确定单元300确定所述Flash中的静态程序通过完整性校验之后,对所述Flash中的数据分组进行正确性校验运算,获取全部分组的正确性校验结果并存储至预设的正确性校验结果存储器中;
接收单元302,用于接收中央处理器输出的指令;
获取单元303,用于当所述中央处理器输出的指令为读取指令时,获取所述读取指令对应的目标数据,并从所述正确性校验结果存储器中选取出所述目标数据对应的目标校验值;
第二校验单元304,用于采用所述目标校验值对所述目标数据进行校验;
发送单元305,用于在校验成功后,将所述目标数据输出至所述中央处理器。
在具体实施中,在Flash上电或Flash重置时,确定单元300可以对Flash中的静态程序进行完整性校验。在完成完整性校验之后,确定单元300可以根据完整性校验结果确定Flash中的静态程序是否通过完整性校验。在确定Flash中的静态程序通过完整性校验之后,第一校验单元301可以对Flash中的数据分组进行正确性校验运算。
具体的,对Flash中进行完整性校验的流程和方法可以参照上述步骤S100中的具体描述。
在具体实施中,第一校验单元301可以从Flash中读取数据,对Flash中的数据分组进行正确性校验运算,进而得到正确性校验结果。第一校验单元301可以将得到的正确性校验结果输出至预设的正确性校验结果存储器中。
在具体实施中,接收单元302可以与中央处理器进行通信,接收中央处理器输出的指令。中央处理器输出的指令可以为针对Flash中的数据进行操作的指令。在本发明实施例中,中央处理器输出的指令可以为读取指令、编程指令、擦除指令等。
在具体实施中,获取单元303可以对接收单元302接收到的指令进行相应的解析。当接收单元接收到的指令为读取指令时,获取单元303可以根据读取指令获取读取指令对应的目标数据,同时,获取单元还可以从正确性校验结果存储器中读取目标数据对应的目标校验值。
在具体实施中,获取单元303可以将获取到的目标校验值输出至第二校验单元304,或者第二校验单元304可以获知获取单元303获取到的目标校验值。第二校验单元304可以采用目标校验值对获取单元303获取到的目标数据进行校验,得到校验结果。第二校验单元304可以将校验结果输出至发送单元305,或者发送单元305能够获知校验结果。
在具体实施中,发送单元305在获知第二校验单元304得到的校验结果为校验成功后,可以将目标数据发送至中央处理器,从而实现数据的读取以及对读取的数据进行的实时校验。
在具体实施中,所述Flash控制器还可以包括:第一更新单元306,用于当所述中央处理器输出的指令为擦除指令时,对所述擦除指令对应的页进行擦除操作,并对所述正确性校验结果存储器中与所述擦除指令对应的页的校验值进行更新。
在具体实施中,当中央处理器输出的指令为擦除指令时,接收单元302可以接收擦除指令,第一更新单元306可以对擦除指令对应的页进行擦除操作。第一更新单元306可以向正确性校验结果存储器写入数据,以对正确性校验结果存储器中与擦除指令对应的页的校验值进行更新。
在具体实施中,所述Flash控制器还可以包括:第一验证单元307,用于对所述擦除指令对应的页进行查空检查,以确定所述擦除指令正确执行;对更新后的所述正确性校验结果存储器中与所述擦除指令对应的页的校验值进行检查,以确定更新后的校验值正确。
在具体实施中,在完成擦除指令对应的擦除操作后,第一验证单元307可以验证擦除指令是否正确执行;以及,第一验证单元307可以从正确性校验结果存储器中读取与所述擦除指令对应的页的校验值,以判断更新后的校验值是否正确。
在具体实施中,第一验证单元307,在验证更新后的校验值是否正确之后,可以将对应的验证结果反馈至中央处理器。中央处理器根据接收到的第一验证单元307发送的验证结果,可以获知擦除操作是否执行成功,并决定后续所要进行的操作。中央处理器后续所要执行的操作可以包括复位操作或中断操作等。
在具体实施中,所述Flash控制器还可以包括:第二更新单元308,用于当所述中央处理器输出的指令为编程指令时,对所述编程指令对应地址的存储单元进行编程操作,并对所述正确性校验结果存储器中与所述编程指令对应的地址的校验值进行更新。
在具体实施中,当中央处理器输出的指令为编程指令时,接收单元302可以接收编程指令,第二更新单元308可以对编程指令对应地址的存储单元进行编程操作。第二更新单元308可以向正确性校验结果存储器写入数据,以对正确性校验结果存储器中与编程指令对应的地址的校验值进行更新。
在具体实施中,所述Flash控制器还可以包括:第二验证单元309,用于对所述编程指令对应地址的存储单元的编程数据进行检查,以确定所述编程指令正确执行;对更新后的所述正确性校验结果存储器中与所述编程指令对应的地址的校验值进行检查,以确定更新后的校验值正确。
在具体实施中,在完成擦除指令对应的编程操作后,第二验证单元309可以验证编程指令是否正确执行;以及,第二验证单元309可以从正确性校验结果存储器中读取与所述编程指令对应的地址的校验值,以判断更新后的校验值是否正确。
在具体实施中,第二验证单元309,在验证更新后的校验值是否正确之后,可以将对应的验证结果反馈至中央处理器。中央处理器根据接收到的第二验证单元309发送的验证结果,可以获知编程操作是否执行成功,并决定后续所要进行的操作。中央处理器后续所要执行的操作可以包括复位操作或中断操作等。
在具体实施中,所述Flash控制器还可以包括:处理单元310,用于在所述第二校验单元304采用所述目标校验值对所述目标数据进行校验,得到的正确性校验结果为校验失败时,获取校验失败的连续次数;当校验失败的连续次数达到预设的目标阈值时,执行复位或中断操作;当校验失败的连续次数未达到所述目标阈值时,重新根据所述读取指令读取所述目标数据,并采用所述目标校验值对所述目标数据进行校验。
在具体实施中,处理单元310可以将获取到的校验失败的连续次数是否达到目标阈值的比较结果发送至中央处理器。中央处理器可以根据比较结果判断是否发生数据异常,并决定后续所要进行的操作。中央处理器后续所要执行的操作可以包括复位操作或中断操作等。
在具体实施中,所述Flash控制器可以包括:输出单元311,用于将所述正确性校验结果输出至所述正确性校验结果存储器,且所述正确性校验结果存储器独立于所述Flash设置。
在具体实施中,第一校验单元301在生成正确性校验结果之后,可以将正确性校验结果输出至输出单元311。输出单元311可以与正确性校验结果存储器进行通信,以将正确性校验结果输出至正确性校验结果存储器中。
在本发明实施例中,图3中提供的Flash控制器实质上是对图2中的Flash控制器22的具体功能及实现的表述。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质为非易失性存储介质或非瞬态存储介质,其上存储有计算机指令,所述计算机指令运行时执行本发明上述任一实施例提供的Flash数据校验方法的步骤。
本发明实施例还提供了一种数据处理设备,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行本发明上述任一实施例提供的Flash数据校验方法的步骤。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指示相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
Claims (16)
1.一种Flash数据校验方法,其特征在于,包括:
在Flash上电或Flash重置时,确定所述Flash中的静态程序通过完整性校验;在所述Flash中的静态程序通过完整性校验之后,对所述Flash中的数据分组进行正确性校验运算,获取全部分组的正确性校验结果并存储至预设的正确性校验结果存储器中;所述数据分组包括:所述Flash中的数据存储区中存储的数据部分,或,所述Flash中的数据存储区中存储的数据部分以及程序存储区中存储的程序部分;
接收中央处理器输出的指令;当所述中央处理器输出的指令为读取指令时,根据所述读取指令中携带的地址信息,从所述Flash中获取所述读取指令对应的目标数据,并从所述正确性校验结果存储器中选取出所述目标数据对应的目标校验值;
采用所述目标校验值对所述目标数据进行校验,并在校验成功后,将所述目标数据输出至所述中央处理器。
2.如权利要求1所述的Flash数据校验方法,其特征在于,还包括:
当所述中央处理器输出的指令为擦除指令时,对所述擦除指令对应的页进行擦除操作,并对所述正确性校验结果存储器中与所述擦除指令对应的页的校验值进行更新。
3.如权利要求2所述的Flash数据校验方法,其特征在于,在对所述正确性校验结果存储器中与所述擦除指令对应的页的校验值进行实时更新之后,还包括:
对所述擦除指令对应的页进行查空检查,以确定所述擦除指令正确执行;
对更新后的所述正确性校验结果存储器中与所述擦除指令对应的页的校验值进行检查,以确定更新后的校验值正确。
4.如权利要求1所述的Flash数据校验方法,其特征在于,还包括:
当所述中央处理器输出的指令为编程指令时,对所述编程指令对应地址的存储单元进行编程操作,并对所述正确性校验结果存储器中与所述编程指令对应的地址的校验值进行更新。
5.如权利要求4所述的Flash数据校验方法,其特征在于,在对所述正确性校验结果存储器中与所述编程指令对应的地址的校验值进行更新之后,还包括:
对所述编程指令对应地址的存储单元的编程数据进行检查,以确定所述编程指令正确执行;
对更新后的所述正确性校验结果存储器中与所述编程指令对应的地址的校验值进行检查,以确定更新后的校验值正确。
6.如权利要求1所述的Flash数据校验方法,其特征在于,还包括:
在采用所述目标校验值对所述目标数据进行校验,得到的正确性校验结果为校验失败时,获取校验失败的连续次数;
当校验失败的连续次数达到预设的目标阈值时,执行复位或中断操作;
当校验失败的连续次数未达到所述目标阈值时,重新根据所述读取指令读取所述目标数据,并采用所述目标校验值对所述目标数据进行校验。
7.如权利要求1~6任一项所述的Flash数据校验方法,其特征在于,所述正确性校验结果存储器独立于所述Flash设置。
8.一种Flash控制器,其特征在于,包括:
确定单元,用于在Flash上电或Flash重置时,确定所述Flash中的静态程序通过完整性校验;
第一校验单元,用于在所述确定单元确定所述Flash中的静态程序通过完整性校验之后,对所述Flash中的数据分组进行正确性校验运算,获取全部分组的正确性校验结果并存储至预设的正确性校验结果存储器中;所述数据分组包括:所述Flash中的数据存储区中存储的数据部分,或,所述Flash中的数据存储区中存储的数据部分以及程序存储区中存储的程序部分;
接收单元,用于接收中央处理器输出的指令;
获取单元,用于当所述中央处理器输出的指令为读取指令时,根据所述读取指令中携带的地址信息,从所述Flash中获取所述读取指令对应的目标数据,并从所述正确性校验结果存储器中选取出所述目标数据对应的目标校验值;
第二校验单元,用于采用所述目标校验值对所述目标数据进行校验;
发送单元,用于在校验成功后,将所述目标数据输出至所述中央处理器。
9.如权利要求8所述的Flash控制器,其特征在于,还包括:第一更新单元,用于当所述中央处理器输出的指令为擦除指令时,对所述擦除指令对应的页进行擦除操作,并对所述正确性校验结果存储器中与所述擦除指令对应的页的校验值进行更新。
10.如权利要求9所述的Flash控制器,其特征在于,还包括:第一验证单元,用于对所述擦除指令对应的页进行查空检查,以确定所述擦除指令正确执行;对更新后的所述正确性校验结果存储器中与所述擦除指令对应的页的校验值进行检查,以确定更新后的校验值正确。
11.如权利要求8所述的Flash控制器,其特征在于,还包括:第二更新单元,用于当所述中央处理器输出的指令为编程指令时,对所述编程指令对应地址的存储单元进行编程操作,并对所述正确性校验结果存储器中与所述编程指令对应的地址的校验值进行更新。
12.如权利要求11所述的Flash控制器,其特征在于,还包括:第二验证单元,用于对所述编程指令对应地址的存储单元的编程数据进行检查,以确定所述编程指令正确执行;对更新后的所述正确性校验结果存储器中与所述编程指令对应的地址的校验值进行检查,以确定更新后的校验值正确。
13.如权利要求8所述的Flash控制器,其特征在于,还包括:处理单元,用于在所述第二校验单元采用所述目标校验值对所述目标数据进行校验,得到的正确性校验结果为校验失败时,获取校验失败的连续次数;当校验失败的连续次数达到预设的目标阈值时,执行复位或中断操作;当校验失败的连续次数未达到所述目标阈值时,重新根据所述读取指令读取所述目标数据,并采用所述目标校验值对所述目标数据进行校验。
14.如权利要求8~13任一项所述的Flash控制器,其特征在于,包括:输出单元,用于将所述正确性校验结果输出至所述正确性校验结果存储器,且所述正确性校验结果存储器独立于所述Flash设置。
15.一种计算机可读存储介质,所述计算机可读存储介质为非易失性存储介质或非瞬态存储介质,其上存储有计算机指令,其特征在于,所述计算机指令被处理器运行时执行权利要求1~7任一项所述的Flash数据校验方法的步骤。
16.一种数据处理设备,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机指令,其特征在于,所述处理器运行所述计算机指令时执行权利要求1~7任一项所述的Flash数据校验方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911309883.3A CN111124742B (zh) | 2019-12-18 | 2019-12-18 | Flash数据校验方法及Flash控制器、存储介质、设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911309883.3A CN111124742B (zh) | 2019-12-18 | 2019-12-18 | Flash数据校验方法及Flash控制器、存储介质、设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111124742A CN111124742A (zh) | 2020-05-08 |
CN111124742B true CN111124742B (zh) | 2023-07-18 |
Family
ID=70499676
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911309883.3A Active CN111124742B (zh) | 2019-12-18 | 2019-12-18 | Flash数据校验方法及Flash控制器、存储介质、设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111124742B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111966287B (zh) * | 2020-08-07 | 2024-01-19 | 深圳移航通信技术有限公司 | 数据存储方法、电子设备及存储介质 |
CN113934569A (zh) * | 2021-09-10 | 2022-01-14 | 芯海科技(深圳)股份有限公司 | 通信方法、装置、集成电路以及电子设备 |
CN114038493B (zh) * | 2021-11-05 | 2024-10-25 | 东风电子科技股份有限公司 | 用于防止校验位频繁擦写的方法、装置、处理器及其介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105280240A (zh) * | 2015-11-18 | 2016-01-27 | 致象尔微电子科技(上海)有限公司 | 一种Nand Flash参数的读取方法 |
CN109036493A (zh) * | 2018-06-11 | 2018-12-18 | 西北工业大学 | 一种具有检错纠错机制的NAND Flash控制器 |
CN109189405A (zh) * | 2018-07-19 | 2019-01-11 | 山东省科学院自动化研究所 | 一种验证程序Flash数据一致性的方法及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI473117B (zh) * | 2008-06-04 | 2015-02-11 | A Data Technology Co Ltd | 具資料修正功能之快閃記憶體儲存裝置 |
US9477549B2 (en) * | 2014-09-15 | 2016-10-25 | Sandisk Technologies Llc | Methods, systems, and computer readable media for address and data integrity checking in flash memory operations |
-
2019
- 2019-12-18 CN CN201911309883.3A patent/CN111124742B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105280240A (zh) * | 2015-11-18 | 2016-01-27 | 致象尔微电子科技(上海)有限公司 | 一种Nand Flash参数的读取方法 |
CN109036493A (zh) * | 2018-06-11 | 2018-12-18 | 西北工业大学 | 一种具有检错纠错机制的NAND Flash控制器 |
CN109189405A (zh) * | 2018-07-19 | 2019-01-11 | 山东省科学院自动化研究所 | 一种验证程序Flash数据一致性的方法及系统 |
Non-Patent Citations (2)
Title |
---|
Giuseppe Visalli.UVM-based verification of ECC module for flash memories.《2017 European Conference on Circuit Theory and Design (ECCTD)》.第1-4页. * |
孙舟 等.基于STM32F103控制的NAND Flash数据处理实现.《电子与封装》.2019,第19卷(第10期),第29-33页. * |
Also Published As
Publication number | Publication date |
---|---|
CN111124742A (zh) | 2020-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106251903B (zh) | 存储系统及其操作方法 | |
US20130185612A1 (en) | Flash memory system and read method of flash memory system | |
CN106297865B (zh) | 控制半导体存储器件的控制器及其操作方法 | |
CN106158038B (zh) | 从非易失性存储器读取数据的方法 | |
US8051339B2 (en) | Data preserving method and data accessing method for non-volatile memory | |
US7450436B2 (en) | Device recoverable purge for flash storage device | |
KR20100082710A (ko) | 데이터 메모리 디바이스 및 인터페이스 에러 검출 및 처리 논리를 갖는 제어기 | |
US9424126B2 (en) | Memory controller | |
CN111124742B (zh) | Flash数据校验方法及Flash控制器、存储介质、设备 | |
US8347183B2 (en) | Flash memory device using ECC algorithm and method of operating the same | |
US20080072119A1 (en) | Allowable bit errors per sector in memory devices | |
US7543104B2 (en) | Non-volatile semiconductor device for use in memory card and memory system | |
US10509565B2 (en) | Apparatuses, methods, and computer-readable non-transitory recording mediums for erasure in data processing | |
JP2010079856A (ja) | 記憶装置およびメモリ制御方法 | |
US9721665B2 (en) | Data writing method and system | |
US20190391874A1 (en) | Memory storage apparatus with dynamic data repair mechanism and method of dynamic data repair thereof | |
KR20080114208A (ko) | 에러 정정 기능을 갖는 불휘발성 메모리 장치의 카피투프로그램방법 | |
US10019186B2 (en) | Data maintenance method for error control and data storage device using the same | |
US20070101049A1 (en) | Redundant purge for flash storage device | |
US20070088905A1 (en) | System and method for purging a flash storage device | |
TWI779209B (zh) | 具有動態資料修復機制的記憶體存放裝置及其動態資料修復的方法 | |
CN109144409A (zh) | 数据处理方法及装置、存储介质、数据系统 | |
CN112151104B (zh) | 存储器存放装置及其动态数据修复的方法 | |
CN119829168A (zh) | 用于编程操作的数据验证方法及装置、电子设备 | |
CN117909130A (zh) | 判定Flash扇区数据写入异常的方法、装置、存储介质和终端设备 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |