1.一種針對西數(shù)硬盤停轉(zhuǎn)故障的修復(fù)方法,包括以下步驟:
S1:讀取ROM中0B和20B模塊;
S2:若沒有20B模塊且0B模塊中沒有“0x12020100”標(biāo)記則執(zhí)行S3,若有0B和20B模塊則執(zhí)行S4;
S3:將“0x20”作為屏蔽地址記錄,執(zhí)行S6;
S4:判斷0B和20B中0x1B位置的值的大小,若0B大于20B,則認(rèn)為硬盤啟用0B模塊中01模塊的UBA地址,提取0B中01模塊的UBA地址和01模塊長度;反之提取20B中01模塊的UBA地址和01模塊長度;
S5:設(shè)屏蔽地址=01模塊UBA地址+01模塊的長度;
S6:在硬盤的30模塊中填入S5中的屏蔽地址;
S7:校驗(yàn)30模塊,并將校驗(yàn)值填入校驗(yàn)位,回寫數(shù)據(jù)到ROM中;
S8:硬盤斷電起電,這時(shí)硬盤直接就緒,不會停轉(zhuǎn)并可正常讀取01模塊;
S9:從01模塊中解析12模塊的UBA地址“0x00013545”;
S10:設(shè)屏蔽地址=12模塊的UBA地址+1;
S11:在硬盤的30模塊中填入S10中的屏蔽地址;
S12:斷電再起電,再次讀取01模塊;
S13:把12模塊信息從01地圖模塊中抹去,12號模塊的條目標(biāo)記后兩個(gè)字節(jié)修改為0x0000;
S14:同時(shí)把修改的30模塊還原到初始形態(tài);
S15:再次斷電起點(diǎn),所有模塊能夠正常訪問,提取COPY1的重要模塊信息,回寫到COPY0,此時(shí)可提取硬盤中數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的一種針對西數(shù)硬盤停轉(zhuǎn)故障的修復(fù)方法,其特征在于S4中獲取01模塊UBA地址和01模塊長度的具體步驟如下:
S41:搜索01號模塊的條目標(biāo)記“0x12020100”或“0x1A020100”,并找到01模塊長度;若找到“0x12020100”則執(zhí)行S42,若找到“0x1A020100”則執(zhí)行S43;
S42:在條目標(biāo)記后偏移6個(gè)字節(jié),將此后的8個(gè)字節(jié)以4個(gè)字節(jié)為一組,判斷兩組的值是否相同,若相同則執(zhí)行S5,若不相同則結(jié)束;
S43:在條目標(biāo)記后偏移6個(gè)字節(jié),將此后的16個(gè)字節(jié)以4個(gè)字節(jié)為一組,首先判斷前兩組的值是否都為“0x00000000”,若是執(zhí)行S44;若不相同則執(zhí)行S45;
S44:判斷后兩組的值是否相同,若相同則表明是UBA地址,執(zhí)行S5;若不相同則結(jié)束;
S45:判斷前兩組的值是否相同,若相同則表明是UBA地址,執(zhí)行S5;若不相同則結(jié)束。
3.根據(jù)權(quán)利要求2所述的一種針對西數(shù)硬盤停轉(zhuǎn)故障的修復(fù)方法,其特征在于S6和S11具體包括以下步驟:
S61:找30模塊缺陷條目總數(shù)并記錄;
S62:30模塊中缺陷條目總數(shù)加1;
S63:若30模塊的缺陷條目總數(shù)為0則執(zhí)行S64,若大于0則執(zhí)行S65;
S64:30模塊的當(dāng)前UBA缺陷條目數(shù)+1,并將屏蔽地址填入到0x40至0x43;
S65:判斷30模塊中原始缺陷條目地址是否大于屏蔽地址,若大于則執(zhí)行S66,若小于則執(zhí)行S67;
S66:取原始缺陷條目,將原始缺陷條目數(shù)+1,再將原始缺陷條目填入原地址的后8個(gè)字節(jié)中,再將“0x01000000”填入0x3C至0x3F位置,并將屏蔽地址填入到0x40至0x43位置,執(zhí)行S7;
S67:在原始缺陷條目后8個(gè)字節(jié)填入原始缺陷條目數(shù)+1和屏蔽地址,執(zhí)行S7。
4.根據(jù)權(quán)利要求3所述的一種針對西數(shù)硬盤停轉(zhuǎn)故障的修復(fù)方法,其特征在于S9中獲取12模塊UBA地址的具體步驟如下:
S91:搜索12號模塊的條目標(biāo)記“0x12021200”或“0x1A021200”;若找到“0x12021200”則執(zhí)行S42,若找到“0x1A021200”則執(zhí)行S43;
S92:在條目標(biāo)記后偏移6個(gè)字節(jié),將此后的8個(gè)字節(jié)以4個(gè)字節(jié)為一組,判斷兩組的值是否相同,若相同則執(zhí)行S5,若不相同則結(jié)束;
S93:在條目標(biāo)記后偏移6個(gè)字節(jié),將此后的16個(gè)字節(jié)以4個(gè)字節(jié)為一組,首先判斷前兩組的值是否都為“0x00000000”,若是執(zhí)行S94;若不相同則執(zhí)行S95;
S94:判斷后兩組的值是否相同,若相同則表明是UBA地址,執(zhí)行S10;若不相同則結(jié)束;
S95:判斷前兩組的值是否相同,若相同則表明是UBA地址,執(zhí)行S10;若不相同則結(jié)束。