一种嵌入式设备安全格式化磁盘的系统及方法

文档序号:6508002阅读:158来源:国知局
一种嵌入式设备安全格式化磁盘的系统及方法
【专利摘要】本发明提出了一种嵌入式设备安全格式化磁盘的系统,系统包括判断CPU是否有掉电仍然保存数据能力的寄存器的判断单元、进行内置磁盘划定的处理单元、进行数据值读取的读取单元以及设置数据值的设置单元;判断单元、处理单元、读取单元以及设置单元依次连接。本发明嵌入式设备安全格式化磁盘的系统及方法,有效的避免嵌入式系统内置磁盘格式化中途掉电。
【专利说明】一种嵌入式设备安全格式化磁盘的系统及方法
【技术领域】
[0001]本发明涉及嵌入式设备领域,尤其涉及一种嵌入式设备不怕格式化中途掉电的安全格式化磁盘的系统及方法。
【背景技术】
[0002]随着嵌入式设备的存储设备生产工艺设备改良,如:19纳米MLC(多阶储存单元)NAND颗粒甚至已经成为了闪存主流;卡片存储容量越来越大,售价越来越便宜,当然考虑到性价比,成本和售价也尽量低廉,在能满足基本的擦除寿命的前提(牺牲了写入次数的使用寿命,或者是写入速度等指标),换回来的是更具性价比的存储介质的产品(卡片)。但一个问题是写入速度的降低。写入速度的性能下降,总容量增大,这样格式化的过程占据的时间会加长。
[0003]嵌入式设备使用文件系统,格式化的时候一般要求用户不要中断,否则会出现格式化未完成,而导致磁盘不可用。现行通用文件文件系统格式有(FAT12/16/32、exFAT【FAT64】、NTFS、EXT2、EXT3、YAFFIS (YetAnotherFlashFileSystem)、YAFFIS2 等。
[0004]格式化这些文件系统格式的过程中,如果中途低电关机(掉电)等异常发生,则极为可能导致磁盘格式化未完成。但对于通用文件系统,并非所有的情况加载的时候都能准确判断出来为格式化未完成,进而虽然可以有机会加载使用,但再后续使用中会因为文件系统格式化未完成遗留的数据,导致出现磁盘数据损毁的情况,进而影响用户的使用(如出现多文件存储物理地址重叠,文件数据不完整等)。
[0005]对于具体文件系统FAT16/32文件系统而言,FAT entry第二项记录FAT [I]被定义为” EOCmark”,用来作为 “dirty volume flags”,
[0006]如果FAT16/32 文件系统有数据尚未回写(write-back)到磁盘(存储器),则FATentry 第二项记录 FAT [I]的值 FAT16 会是 0x7FFF,FAT32 会是 0x07FFFFFF ;如果 FAT16/32文件系统无任何回写数据(如只读,或者写入的数据都已经成功回写到磁盘),则该FATentry 第二项记录 FAT [I]的值 FAT16 会是 OxFFFF,FAT32 会是 OxOFFFFFFF。
[0007]微软Windows 系统则利用 FAT16/32 的改 FAT[1]的 “dirty volume flags”用来标注USB Mass storage是否安全移除磁盘(即是否所有的磁盘缓冲区均回写到磁盘);而对于格式化如果未完整,在FAT16/FAT32中并没有其它标记位做标记区分。
[0008]具体不同文件系统定义各有差异,虽然一些文件系统(NTFS)内设计有操作事务实施的机制,但也存在一些文件系统在其类型的文件系统的规范(Spec)中就设计有此类别的标示位设计和约定。如果试图利用文件系统事务完整的设计避免格式化中途断电后的自动回复,则因为一些文件系统并无事务处理机制而无法实施,且对于支持事务处理的文件系统,也是需要分别对事务完整性和回退部分做实现细节,这些无疑都是工作量。
[0009]嵌入式系统考虑CPU运算能力,以及实际装载的不是很充裕的内存资源,并考虑磁盘扫描和修复算法的复杂度和耗时,一般并不具备磁盘文件系统错误修复能力。(即便PC上的修复工具,也非常多,而目前也没有说能有100%的修复能力,只是可能一些情况可以修复,但修复之后也可能损失一些文件)。
[0010]尤其一些嵌入式设备的应用程序或者OS非常依赖内嵌磁盘文件操作的系统,如利用DB数据访问和保存一些数据的应用类的嵌入式设备产品。一旦内置文件系统损毁,就无法使用。而对于使用电池的设备,格式化过程中如果有震动或者电池低迅速电压下降,都有机会让格式化内置磁盘的时候未能完成而对后续使用产生文件损毁的隐患(多文件重叠、索引絮乱等)。

【发明内容】

[0011]为了解决【背景技术】中所存在的技术问题,本发明提出了一种嵌入式设备安全格式化磁盘的系统及方法,有效的避免嵌入式系统内置磁盘格式化中途掉电。
[0012]本发明的技术解决方案是:一种嵌入式设备安全格式化磁盘的系统,其特征在于:所述系统包括判断CPU是否有掉电仍然保存数据能力的寄存器的判断单元、进行内置磁盘划定的处理单元、进行数据值读取的读取单元以及设置数据值的设置单元;所述判断单元、处理单元、读取单元以及设置单元依次连接。
[0013]一种嵌入式设备安全格式化磁盘的系统,其特征在于:所述系统包括判断CPU是否有掉电仍然保存数据能力的寄存器的判断单元、进行内置磁盘划定的处理单元、进行数据值读取的读取单元以及设置数据值的设置单元;所述判断单元、处理单元、读取单元以及设置单元依次连接。
[0014]一种嵌入式设备安全格式化磁盘的方法,其特征在于:所述方法包括以下步骤:
[0015]I)判断CPU是否有掉电仍然保存数据能力的寄存器,若否,进行步骤2);
[0016]2)格式化和加载内置磁盘,在内置磁盘划定一块格式化不会被擦除的区域;
[0017]3)读取/设置磁碟预留约定位置的数据值,作为格式化进行中否的标记。
[0018]上述步骤I)中若CPU有掉电仍然保存数据能力的寄存器,则进行以下步骤:
[0019]4)选定寄存器的座位标记位;
[0020]5)读取/设置选定的寄存器相关位,作为格式化进行中否的标记。
[0021]上述加载内置磁盘的具体步骤是:
[0022]2.1)判断是否格式化内置磁盘;若否,进行步骤2.2);
[0023]2.2)读取“格式化是否进行中”的标记;
[0024]2.3)判断是否读取的标记值为I ;若是,进行步骤2.4);
[0025]2.4)设置格式化进行中标记值为I ;
[0026]2.5)格式化磁碟并加载;
[0027]2.6)清除格式化进行中标记值。
[0028]上述步骤2.1)中若有格式化内置磁盘,则直接进行步骤2.4)。
[0029]上述步骤2.5)若格式化磁碟过程中中途断电,则程序终止,“格式化是否进行中”的标记保持为I。
[0030]本发明嵌入式设备安全格式化磁盘的系统及方法针对嵌入式设备内置磁盘容量越来越大,并考虑成本(性价比),格式化耗时稍微有些长的使用文件系统的系统,当格式化过程中(已经开始格式化但又未能完成格式化)中间的时段内如果嵌入式设备断电而会导致磁盘文件系统未能格式化完成而后续使用中出现磁盘文件系统数据损毁(文件使用异常)。特别设计一种格式化的防止掉电损毁文件系统的系统,不需要依赖和改变文件系统的内部实现细节(规则),避免修改不同文件系统的实现细节而带来的额外工作量,并能保持原来支持的任何类型的文件系统的功能,巧妙的设计了一种利用格式化不会抹到的标记位,来记录文件系统是否格式化完整。档文件系统格式化中途断电而能下次开机加载内置文件系统的时候自动是被到上次失败的格式化事件并重新自动完成格式化,进而有效的避免嵌入式系统内置磁盘格式化中途掉电,导致一些依靠内置磁盘中需要保存和读取文件系统的应用程序(APP)正常运行,并避免内置磁盘格式化中途断电导致文件系统后续使用中出现资料损毁(内容叠盖)的问题。
【专利附图】

【附图说明】
[0031]图1是本发明的结构示意图;
[0032]图2是本发明的方法流程图;
[0033]图3是本发明【具体实施方式】流程图;
【具体实施方式】
[0034]参见图1,一种嵌入式设备安全格式化磁盘的系统,其特征在于:所述系统包括判断CPU是否有掉电仍然保存数据能力的寄存器的判断单元、进行内置磁盘划定的处理单元、进行数据值读取的读取单元以及设置数据值的设置单元;所述判断单元、处理单元、读取单元以及设置单元依次连接。
[0035]参见图2,图3,一种嵌入式设备安全格式化磁盘的方法,其特征在于:所述方法包括以下步骤:
[0036]I)判断CPU是否有掉电仍然保存`数据能力的寄存器,若否,进行步骤2);通过查看CPU 的 Data Sheet (SPEC)就可以知道是否有 persistent 的 register ;
[0037]2)格式化和加载内置磁盘,在内置磁盘划定一块格式化不会被擦除的区域;
[0038]通过修改内置磁盘设备起始或最大允许访问Sector数,即约定设备运行内置磁盘的开始和最大允许访问的sector数进行划定。如后面段落描述的“最后预留一个Reserved(预留)的分区”;
[0039]还有一种方式是通过修正MBS的值,在MBS表中记录的第一个PBS其实sector数略作调整,即预留一些Sector作为reserved的区域。这些reserved的区域,只要构建MBS的数据表项算法是固定的,就不会有数据写到MBS和PBS之间预留reserved sector中。【MBS】【PBS】 —【MBS】【Reserved sectors]【PBS】
[0040]内置磁盘加载(正常加载、带有格式化的加载两种)步骤:
[0041]加载内置磁盘分两种情况,正常加载;格式化加载;2.1)的判断判断是不是“格式化”加载。如是格式化加载跳转到步骤2.4,若不是格式化加载,而是正常加载,进行布置
2.2)。特别是在内置磁碟正常加载的时候,因为会判断‘格式化是否进行中’的标记,所以如果上次发生了格式化过程中中断,那么这次的加载就能检测到“没有格式化完成”的咨询,而能自动出发再次格式化,以(步骤2.3)继续完成格式化。
[0042]3)读取/设置磁碟预留约定位置的数据值,作为格式化进行中否的标记。
[0043]若CPU有掉电仍然保存数据能力的寄存器,则进行以下步骤:[0044]4)选定寄存器的座位标记位;
[0045]5)读取/设置选定的寄存器相关位,作为格式化进行中否的标记。
[0046]本发明的【具体实施方式】:
[0047]以FAT16、FAT32文件系统而言,格式化内置磁盘会有好几个动作分批完成:a)格式化 MBS/PBS ;
[0048]b)格式化 FAT entry 区域;
[0049]c)格式化 root directory 区域;
[0050]如果上述a,b,c三个步骤有部分没有完成的时候,嵌入式系统掉电(如电池移除等),导致文件系统内部会有数据错误,进而需要磁盘修复工具修复。而嵌入式设备考虑程序复杂程度以及运行内存运行的内存大小需求,且磁盘修复工具运行会耗费相当长的时间。所以基本嵌入式设备很多都具备损毁的磁盘修复功能。
[0051]参见图2,针对嵌入式设备使用的CPU是否有掉电依然能保存数据的Persist寄存器。利用此类寄存器即便CPU掉电依然能保存数据的,用来存储嵌入式设备是否有内置磁盘正在被格式化中的标记位。
[0052]选定的Persist寄存器标记位Ibit允许设置的2种状态,如I表示正在进行格式化(格式化执行中);0表示非格式化中(格式化未执行或已经执行完毕)。
[0053]当开始格式化的时候,将改标记设置为1,格式化完成之后将改标记归置为O。
[0054]如果嵌入式设备的CPU无此类Persist寄存器,则在内置磁盘内划分一块格式化不会抹掉的区域(约定位置),来保存改标记为。
[0055]如图2 “在内置磁盘划定一块格式化不会被擦除的区域”步骤描述:
[0056]格式化MBS (master boot sector主引导扇区)的时候故意添加一些reservedsector,这些预留的区域后面才填写PBS(Partition Boot Sector)信息。
[0057]又或者在磁盘最后预留一个Reserved(预留)的分区,在这个预留分区中约定位置用来存储磁盘是否正在被格式化的过程中。
[0058]格式化和加载内置磁盘的流程如图3所示。
[0059]加载内置磁盘文件系统的时候,判别改标记;如果为1,则自动重新格式化内置磁盘成功后归置改标记为O ;如果为0,则不进行格式化,仅仅正常加载改内置磁盘。
【权利要求】
1.一种嵌入式设备安全格式化磁盘的系统,其特征在于:所述系统包括判断CPU是否有掉电仍然保存数据能力的寄存器的判断单元、进行内置磁盘划定的处理单元、进行数据值读取的读取单元以及设置数据值的设置单元;所述判断单元、处理单元、读取单元以及设置单元依次连接。
2.一种嵌入式设备安全格式化磁盘的方法,其特征在于:所述方法包括以下步骤: .1)判断CPU是否有掉电仍然保存数据能力的寄存器,若否,进行步骤2); .2)格式化和加载内置磁盘,在内置磁盘划定一块格式化不会被擦除的区域; .3)读取/设置磁碟预留约定位置的数据值,作为格式化进行中否的标记。
3.根据权利要求2所述的嵌入式设备安全格式化磁盘的方法,其特征在于:所述步骤I)中若CPU有掉电仍然保存数据能力的寄存器,则进行以下步骤: .4)选定寄存器的座位标记位; .5)读取/设置选定的寄存器相关位,作为格式化进行中否的标记。
4.根据权利要求3所述的嵌入式设备安全格式化磁盘的方法,其特征在于:所述加载内置磁盘的具体步骤是: .2.1)判断是否格式化内置磁盘;若否,进行步骤2.2); .2.2)读取“格式化是否进行中”的标记; .2.3)判断是否读取的标记值为I ;若是,进行步骤2.4); . 2.4)设置格式化进行中标记值为I ; .2.5)格式化磁碟并加载; .2.6)清除格式化进行中标记值。
5.根据权利要求4所述的嵌入式设备安全格式化磁盘的方法,其特征在于:所述步骤2.1)中若有格式化内置磁盘,则直接进行步骤2.4)。
6.根据权利要求5所述的嵌入式设备安全格式化磁盘的方法,其特征在于:所述步骤2.5)若格式化磁碟过程中中途断电,则程序终止,“格式化是否进行中”的标记保持为I。
【文档编号】G06F21/80GK103455769SQ201310359714
【公开日】2013年12月18日 申请日期:2013年8月16日 优先权日:2013年8月16日
【发明者】陈淮琰, 钟辉 申请人:无敌科技(西安)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1