一种校验Flash存储数据的方法
技术领域
本发明涉及数据校验技术领域,尤其涉及一种校验Flash存储数据的方法。
背景技术
在传统的校验机制中,经常会对整个文件进行校验,即在对整个系统镜像升级完成之后,再回读写入的系统镜像文件,获取按照一定规则编写的校验码,并与原始的校验码进行比对,如果不一致,则表明数据写入过程中被写入的数据发生了错误,此时需要重新进行整体的数据写入操作。这样的校验方式意味着整个过程中如果有任何数据产生错误,都会导致整个数据写入过程的失败,从而需要重新开始进行数据写入操作。一方面,这种校验方法需要上层应用软件开发人员引入额外的校验程序,另一方面又在整体的重复输入数据上消耗了大量时间,而且对于普通用户来说这个过程是可以被感知到的,降低了用户体验的流畅度。
中国专利(CN102932332A)公开了一种数据校验系统和数据校验方法,包括:加载单元,用于将校验规则库加载至服务器并缓存至内存中;获取单元,用于在服务器接收到客户端的数据后,从校验规则库中获取数据对应的窗体的校验规则,以及在服务器接收到客户端的页面请求后,从校验规则库中获取所请求页面包含的窗体的校验规则;校验单元,用于按数据对应的窗体的校验规则对数据进行校验,以及按照校验脚本对客户端的数据进行校验;脚本生成单元,用于按所请求页面包含的窗口的校验规则生成校验脚本并发送至客户端。上述技术方案采用多种数据校验规则,并根据需要选择一种数据校验规则,而并未涉及到关于Flash存储数据的分段校验。
中国专利(CN101183565)公开了一种存储介质中的数据校验方法,包括:组织ECC数据矩阵;对数据编码,产生行校验码和列校验码;在对ECC数据矩阵进行数据操作时,使用行校验码和列校验码对数据进行校验。上述技术方案并未涉及在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存储数据的方法,其中,所述标识信息和所述验证信息均为MD5信息。
上述技术方案的有益效果是:在数据写入的过程中及时发现错误并及时解决,并不影响其他存储块中的数据写入;且校验过程不对使用者透明,使用者并不会感知到数据写入过程中的修复操作。
附图说明
图1是本发明的实施例中,对Flash存储数据进行校验的基础装置结构示意图;
图2是本发明的实施例中,校验Flash存储数据的流程示意图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明,但不作为本发明的限定。
Flash(闪存)存储设备是是存储芯片的一种,通过特定的程序可以修改里面的数据。Flash存储设备是一种块存储设备,即整个存储芯片的存储空间被分为若干个相同大小的存储块(Sector),对于Flash存储芯片的数据写入操作实质上是对若干个存储块的数据写入操作。因此可以针对上述特征,采用对每个存储块进行数据校验的方式校验整个数据写入操作的正确性,从而避免由于微小的错误导致的重新写入整段数据。
本发明的实施例中对Flash存储数据进行校验时,采用如图1所示的校验装置。该校验装置的核心是Flash数据读写驱动装置;驱动装置与上层的应用程序连接。驱动装置包括数据写入单元、数据读取单元和数据存储单元,其中数据写入单元和数据读取单元分别连接数据存储单元。驱动程序还包括一个数据缓存单元,数据缓存单元与数据写入单元连接。上述数据写入和数据读取单元分别负责数据的写入和读取,数据存储单元中保存有数据的验证标识,数据缓存单元中暂时保存已经写入存储块中的相应数据。
由于Flash存储设备是分块存储的,因此存入Flash存储设备中的数据也是分段的。因此相应的,对Flash存储数据进行校验的方法具体如图2所示:
下述对Flash存储数据的校验过程均在Flash存储数据写入操作过程中进行。
数据写入单元向每个存储块中写入相应的数据块;每个数据块中包括一个标识信息,一个数据块与一个标识信息一一对应,标识信息起到唯一标识该数据块完整性的作用;数据写入单元在写入每个数据块的同时,提取该数据块的标识信息并存入数据存储单元中;
同时,数据写入单元将对应写入的数据块暂时存入数据缓存单元中。
当一个存储块中的数据块全部写入后,数据读取单元读取该存储块中保存的数据,存储块中保存的数据也具有一个唯一的验证信息;驱动装置比对对应同一个存储块的上述验证信息和标识信息;若验证信息与标识信息相同,则判断保存在存储块中的数据即为刚被写入的数据块,数据写入过程未出现差错;若验证信息与标识信息不符,则判断存储块中的数据与被写入的数据块不一致,不一致的原因可能为在写入过程中发生错误,或者未擦除存储块中原本存储的数据等。
当判断出数据错误后,数据写入单元擦除出现错误的存储块中的数据,并重新写入暂存在数据缓存单元中的相应数据块;驱动装置重新对该存储块中的数据进行校验,并判断数据写入是否发生错误;若仍然发生错误,则数据写入单元继续重写数据;
上述重写数据的次数可由系统限定,或者由使用者自行设置;在本发明的实施例中,上述重写次数为3次。当重写次数达到3次后,经过数据校验仍然发现数据写入错误,则驱动装置上报该错误信息,并由上层应用进行相应处理。
数据写入单元重写数据前,首先擦除存储设备中所有存储块内保存的数据。
当数据写入单元重写数据成功后,数据写入单元擦除保存于数据缓存单元中的相应数据块。
在本发明的实施例中,当驱动装置首次向Flash存储设备中写入数据时(即不是重写过程时),由于此时Flash存储设备的相应存储块中并没有存储数据,因此无需进行擦除步骤。
本发明的实施例中,上述标识信息和验证信息可以是MD5校验码,换言之,本发明的实施例中,可以采用MD5校验方法,在对Flash存储设备进行写入操作时对所写入的Flash存储数据进行分块校验。当然,在本发明的其他实施例中,也可以采用其他校验方法进行校验,并不仅限于MD5这一种校验方法。
本发明的实施例中所述的Flash存储数据分段式校验方法,综合来讲是在普通的Flash驱动程序中添加自动的基于Flash存储块的分段式校验功能,而使上层应用软件的开发人员无需单独进行数据的校验工作,同时,由于校验过程在底层的驱动程序中进行,对于普通用户而言是隐藏的。而校验失败后进行的数据块修复仅针对个别特定的数据块,而不是整个Flash存储空间,可以节约修复时间,提高存储效率,节省上层开发人员的工作时间。
以上所述仅为本发明较佳的实施例,并非因此限制本发明的实施方式及保护范围,对于本领域技术人员而言,应当能够意识到凡运用本发明说明书及图示内容所作出的等同替换和显而易见的变化所得到的方案,均应当包含在本发明的保护范围内。