Flash存储介质上的数据纠错方法和装置制造方法及图纸

技术编号:8682607 阅读:398 留言:0更新日期:2013-05-09 02:38
本发明专利技术实施例公开了一种Flash存储介质上的数据纠错方法和装置,涉及数据存储领域,用于提高Flash存储介质上的数据的纠错准确。本发明专利技术中,将用户数据对应的元数据同时写入物理主扇区和物理备份扇区,在读取用户数据时,将物理主扇区和物理备份扇区中的元数据进行自纠错处理,使用自纠错处理得到的元数据对用户数据进行纠错。采用本发明专利技术可以提高Flash存储介质上的数据的纠错准确率。

【技术实现步骤摘要】

本专利技术涉及数据存储领域,尤其涉及一种Flash存储介质上的数据纠错方法和装置
技术介绍
目前Flash芯片被广泛应用在各类嵌入式设备中,一般用途包括存储软件版本、记录运行日志等。由于Flash芯片的存储介质长期、频繁使用过程中存在一定的出错概率,出错表现为Flash芯片出现比特(bit)位翻转,因此需要针对使用需求进行必要的保护。对于不同应用场景下的数据容错方法也有差别,下面介绍三种方案:第一,对于存储软件版本并且有高可靠性要求的应用场景,现有方案大多直接在Flash芯片上存储两份软件,通过算法流程来判断使用哪个版本的软件,流程如图1所示。系统启动后,对版本一的软件进行有效性计算,根据计算结果判断版本一的软件是否可用,如果可用,则加载并运行版本一的软件,否则,对版本二的软件进行有效性计算,根据计算结果判断版本二的软件是否可用,如果可用,则加载并运行版本二的软件,否则,本流程结束。其中,版本软件的有效性判断具体可以使用针对版本软件的循环冗余校验(Cyclic Redundancy Check, CRC)方法,这种方法是纯粹的应用层保护机制。第二,对于简单的日志存储应用,由于Flash芯片的写入、读取操作非常频繁,对Flash芯片的磨损程度较高,为了应对错误,现有的Flash芯片驱动程序一般都将Flash芯片划分为若干个标准尺寸的物理单元,常见为512字节,将该物理单元称为物理扇区(sector),针对存储用户数据的物理sector计算纠错(Error Checking and Correcting,ECC)码,将ECC码保存在单独的物理sector中。用户写入数据时计算ECC码并保存到专用物理sector,用户读取数据时使用保存的ECC码对需要读取的数据进行ECC纠错,将纠错后的数据返回给用户。写入用户数据的流程如图2A所示,在需要写入用户数据时,根据用户数据的大小分配物理sector,根据物理sector的大小计算ECC码,将用户数据写入到分配的物理sector中,并将计算出的ECC码写入到专用sector中。读取用户数据的流程如图2B所示,在需要读取用户数据时,从物理sector中读取用户数据,并从专用sector中读取ECC码,使用读取到的ECC码对读取出的用户数据进行ECC纠错,并将纠错后的用户数据提交给用户。第三,对于使用文件系统等复杂sector管理算法的应用场景,文件系统层面使用逻辑扇区(逻辑sector)编号,底层驱动层面使用物理扇区(物理sector)编号,为了实现良好的磨损均衡等算法,需要建立索引关系,当文件系统读取指定的逻辑sector时,底层驱动软件需要通过查表将逻辑sector所对应的物理sector地址计算出来,从而读取数据,同时需要保存每个物理sector当前对应的逻辑sector编号以及使用状态,便于系统重启后恢复出逻辑sector和物理sector的对应关系,将保存物理sector所对应逻辑sector编号、物理sector状态以及物理sector的ECC码等信息的数据称为元数据,而物理sector上需要保存的用户传入的数据称为用户数据。从图3可以看出,每个用于存储用户数据的物理sector (I N)都有对应的元数据(I N),元数据用于描述存储用户数据的物理sector的当前使用情况、对应的逻辑sector编号以及物理sector的ECC码。其中元数据本身也要占用物理sector进行存储。在系统启动过程中,通过扫描物理sector上的元数据,从而能建立物理sector和逻辑sector的对应关系,在使用过程中,逻辑sector和物理sector的关系可以随着数据存储位置的变化不断更新。在实现本专利技术的过程中,专利技术人发现现有技术中存在以下技术问题:现有的方案一要求用户开发软件流程参与选择版本,对用户不透明,完全由应用层保证数据正确性,增加用户代码复杂度,并且只能判错不能纠错。现有方案二和方案三在元数据部分本质相同,只是方案三中由于包含更多元数据信息可以支持更加灵活的sector管理机制,但是它们在数据安全方案都存在严重缺陷:首先是对于关键的元数据本身没有纠错机制,当元数据出现错误后会造成数据混乱等严重后果,其次是ECC码本身纠错能力有限,每个物理sector的大小为512字节(byte ),只能纠错有限的bit数,纠错比例很低。
技术实现思路
本专利技术实施例提供一种Flash存储介质上的数据纠错方法和装置,用于提高Flash存储介质上的数据的纠错准确率。一种Flash存储介质上的数据纠错方法,所述Flash存储介质包含物理主扇区和物理备份扇区,每个物理主扇区对应一个物理备份扇区,该方法包括:为需要写入的用户数据分配物理主扇区,并确定所述用户数据对应的元数据,该元数据包括对所述用户数据进行纠错时使用的数据;将所述用户数据写入分配的物理主扇区,将所述元数据写入用于保存元数据的物理主扇区作为第一元数据、并将所述元数据写入该物理主扇区对应的物理备份扇区作为第二元数据;从用于保存元数据的物理主扇区中读取第一元数据,从该物理主扇区对应的物理备份扇区中读取第二元数据;将读取到的第一元数据和第二元数据进行自纠错处理,得到第三元数据;从保存用户数据的物理主扇区中读取用户数据,使用第三元数据对读取到的用户数据进行纠错。一种包含Flash存储介质的装置,所述Flash存储介质包含物理主扇区和物理备份扇区,每个物理主扇区对应一个物理备份扇区,该装置还包括:数据写入单元,用于为需要写入的用户数据分配物理主扇区,并确定所述用户数据对应的元数据,该元数据包括对所述用户数据进行纠错时使用的数据;将所述用户数据写入分配的物理主扇区,将所述元数据写入用于保存元数据的物理主扇区作为第一元数据、并将所述元数据写入该物理主扇区对应的物理备份扇区作为第二元数据;数据读取单元,用于从用于保存元数据的物理主扇区中读取第一元数据,从该物理主扇区对应的物理备份扇区中读取第二元数据;将读取到的第一元数据和第二元数据进行自纠错处理,得到第三元数据;从保存用户数据的物理主扇区中读取用户数据,使用第三元数据对读取到的用户数据进行纠错。本专利技术实施例提供的方案中,为需要写入的用户数据分配物理主扇区,并确定该用户数据对应的元数据,该元数据包括对该用户数据进行纠错时使用的数据;将该用户数据写入分配的物理主扇区,将该元数据写入用于保存元数据的物理主扇区作为第一元数据、并将所述元数据写入该物理主扇区对应的物理备份扇区作为第二元数据;从用于保存元数据的物理主扇区中读取第一元数据,从该物理主扇区对应的物理备份扇区中读取第二元数据;将读取到的第一元数据和第二元数据进行自纠错处理,得到第三元数据;从保存用户数据的物理主扇区中读取用户数据,使用第三元数据对读取到的用户数据进行纠错。由于元数据也可能出现错误,因此本方案中通过将元数据同时写入物理主扇区和物理备份扇区,在读取用户数据时,可以将物理主扇区和物理备份扇区中的元数据进行自纠错处理,以尽量还原正确的元数据,再使用自纠错处理后的元数据对读取到的用户数据进行纠错,能够尽量避免由于元数据错误导致用户数据出错的后果,从而提高了 Flash存储介质上的数据的纠错准确率。附图说明图1为现有技术中的本文档来自技高网
...

【技术保护点】
一种Flash存储介质上的数据纠错方法,其特征在于,所述Flash存储介质包含物理主扇区和物理备份扇区,每个物理主扇区对应一个物理备份扇区,该方法包括:为需要写入的用户数据分配物理主扇区,并确定所述用户数据对应的元数据,该元数据包括对所述用户数据进行纠错时使用的数据;将所述用户数据写入分配的物理主扇区,将所述元数据写入用于保存元数据的物理主扇区作为第一元数据、并将所述元数据写入该物理主扇区对应的物理备份扇区作为第二元数据;从用于保存元数据的物理主扇区中读取第一元数据,从该物理主扇区对应的物理备份扇区中读取第二元数据;将读取到的第一元数据和第二元数据进行自纠错处理,得到第三元数据;从保存用户数据的物理主扇区中读取用户数据,使用第三元数据对读取到的用户数据进行纠错。

【技术特征摘要】

【专利技术属性】
技术研发人员:笪禹李侠刘博强贺鑫
申请(专利权)人:大唐移动通信设备有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1