西數(shù)硬盤加載指定模塊進(jìn)行硬盤修復(fù)的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及硬盤數(shù)據(jù)恢復(fù)領(lǐng)域,特別涉及一種西數(shù)硬盤加載指定模塊進(jìn)行硬盤修復(fù)的方法。
【背景技術(shù)】
[0002]西數(shù)硬盤出現(xiàn)故障的情況,通常情況都是因?yàn)槲⒋a出現(xiàn)故障、無法被加載,導(dǎo)致系統(tǒng)無法識(shí)別硬盤。然而,西數(shù)硬盤固件中的微代碼模塊需要加載到硬盤緩存中并且校驗(yàn)通過才能使硬盤運(yùn)行正常。
[0003]隨著硬盤容量和技術(shù)的發(fā)展,固件的組織架構(gòu)已經(jīng)發(fā)生了變化。固件內(nèi)部結(jié)構(gòu)越發(fā)復(fù)雜和多變。硬盤正常工作所需要的微代碼越來越多,需要加載到硬盤緩存的固件內(nèi)容也越來越多。
[0004]因此,針對(duì)目前最新的硬盤型號(hào),在數(shù)據(jù)恢復(fù)過程中僅僅加載11號(hào)ATA微碼模塊,是不能讓硬盤正常工作的,需要一種更好更合適的方法來處理此問題。
【發(fā)明內(nèi)容】
[0005]本發(fā)明針對(duì)現(xiàn)有技術(shù)的不足,提供一種西數(shù)硬盤加載指定模塊進(jìn)行硬盤修復(fù)的方法,解決隨著硬盤容量和技術(shù)的發(fā)展,固件內(nèi)部結(jié)構(gòu)越發(fā)復(fù)雜,硬盤正常工作所需要的微代碼越來越多,需要加載到硬盤緩存的固件內(nèi)容也越來越多的問題。
[0006]為解決以上問題,本發(fā)明采用的技術(shù)方案如下:一種西數(shù)硬盤加載指定模塊進(jìn)行硬盤修復(fù)的方法,包括如下步驟:SI進(jìn)入硬盤安全模式;S2加載ATA指定模塊;S3恢復(fù)數(shù)據(jù);其中,S2的具體方法如下:S21開啟硬盤固件讀寫區(qū)域;S22smartl0g方式寫入需要加載的文件大小參數(shù)信息;S23讀取準(zhǔn)備好的模塊文件數(shù)據(jù)到buffer; S24將buffer分成0X100*Y個(gè)段,其中Y的取值為O到FFFF,未分配滿的單獨(dú)為一個(gè)buffer段;S25采用smartlog方式依次寫入數(shù)據(jù)內(nèi)容;S26獲取硬盤參數(shù)信息。
[0007]作為優(yōu)選,SI的具體方法如下:
[0008]Sll將3個(gè)短跳線依次插入靠近硬盤接口左邊的針頭處;
[0009]S12將硬盤通電后,硬盤進(jìn)入安全模式;
[0010]S13獲取硬盤參數(shù)信息,直到硬盤狀態(tài)顯示就緒。
[0011]作為優(yōu)選,S3的具體方法如下:
[0012]S31等待硬盤狀態(tài)重新就緒后,從ROM中搜索OB和20B模塊;
[0013]S32從OB和20B模塊中搜索OI模塊在硬盤固件區(qū)的存儲(chǔ)地址;
[0014]S33通過查找OI的存放地址,找到OI固件區(qū)地圖模塊;
[0015]S34通過01固件區(qū)地圖模塊中記錄的固件區(qū)信息找到所有其他固件模塊的存放位置;
[0016]S35通過01記錄的固件區(qū)其他固件存放地址,搜索出此故障盤的所有固件區(qū)模塊;
[0017]S36將最開始插入硬盤的3個(gè)跳線全部移除,并將搜索到的所有固件區(qū)模塊,以ABA方式回寫到硬盤的2個(gè)主要磁頭O和I;
[0018]S37回寫完成之后,斷電起電一次,再次獲取硬盤參數(shù)即可認(rèn)盤。
[0019]本發(fā)明的有益效果如下:本發(fā)明通過上述方法可以減少需要加載的模塊,并且準(zhǔn)確的加載所需模塊,以達(dá)到快速準(zhǔn)確的恢復(fù)微代碼出現(xiàn)故障、無法被加載,導(dǎo)致系統(tǒng)無法識(shí)別硬盤的故障。
【具體實(shí)施方式】
[0020]為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下舉實(shí)施例,對(duì)本發(fā)明做進(jìn)一步詳細(xì)說明。
[0021]—種西數(shù)硬盤加載指定模塊進(jìn)行硬盤修復(fù)的方法,SI進(jìn)入硬盤安全模式;S2加載ATA指定模塊;S3恢復(fù)數(shù)據(jù);其中,S2的具體方法如下:S21開啟硬盤固件讀寫區(qū)域;S22smartl0g方式寫入需要加載的文件大小參數(shù)信息;S23讀取準(zhǔn)備好的模塊文件數(shù)據(jù)到buffer ;S24將buffer分成0X100*Y個(gè)段,其中Y的取值為O到FFFF,未分配滿的單獨(dú)為一個(gè)buff er段;S25采用smart I og方式依次寫入數(shù)據(jù)內(nèi)容;S26獲取硬盤參數(shù)信息。
[0022]進(jìn)一步地,S2模塊加載具體情況如下:
[0023]1、西數(shù)固件訪問指令,在對(duì)固件區(qū)操作前必須發(fā)送該ATA指令到硬盤中,否者訪問無效;開啟指令如下
[0024]0x45,OxOb,0x00,0x44,0x57,OxaO,0x80;
[0025]2、Smartlog操作參數(shù):是西數(shù)硬盤訪問固件區(qū)加載數(shù)據(jù)到緩存操作等數(shù)據(jù)的處理接口,該接口是ATA指令及參數(shù)內(nèi)容組成,ATA指令內(nèi)容為固定內(nèi)容0xd6,0x01, Oxbe,0x4f,0XC2,0Xa0,0Xb0,參數(shù)內(nèi)容為512字節(jié)的內(nèi)容,參數(shù)內(nèi)容中確定了固件區(qū)操作的區(qū)域和數(shù)量及讀寫方式:
[0026]例如:固件區(qū)寫入:寫入的buffer前16個(gè)字節(jié)內(nèi)容是,其余為O
[0027]0x13,0x00,0x02,0x00,uba&Oxff,(uba>>8)&0xff,(uba>>16)&0xff,(uba>>24)&Oxff,0x00,0x00,length&Oxff,(length>>8)&0xff,0,0
[0028]UBA:需要訪問的固件區(qū)地址;Iength:需要寫入的長(zhǎng)度。
[0029]3、讀取準(zhǔn)備好的模塊文件數(shù)據(jù)到buffer;
[0030]4、SmartLog實(shí)現(xiàn)內(nèi)容寫入:在發(fā)送完參數(shù)操作以后,才能寫入內(nèi)容,內(nèi)容的長(zhǎng)度必須同參數(shù)長(zhǎng)度一致,寫入的內(nèi)容就會(huì)寫入到參數(shù)信息設(shè)置的固件區(qū)區(qū)域位置:
[0031]內(nèi)容寫入由ATA指令與數(shù)據(jù)內(nèi)容構(gòu)成:
[0032]ATA指令0xd6, length, Oxbf, 0x4f, 0xc2, OxaO, OxbO,length是一次性寫入的長(zhǎng)度
[0033]內(nèi)容就是需要加載ATA的內(nèi)容,原則上將buffer分成0X100*Y個(gè)段,其中Y的取值為O到FFFF,未分配滿的單獨(dú)為一個(gè)buffer段,比如一共有520個(gè)扇區(qū),將buffer分成0X100*5個(gè)段,未分配滿的20個(gè)單獨(dú)為一個(gè)buffer段;
[0034]5、獲取硬盤參數(shù)信息
[0035]11號(hào)模塊= ATAOverlay模塊??梢约虞d11號(hào)ATA模塊到硬盤緩存,對(duì)于已經(jīng)不認(rèn)盤或無法讀寫固件的硬盤,運(yùn)用加載OVLAY功能是非常行之有效并且非常必要。加載OVLAY后,硬盤即可起轉(zhuǎn),方可讀寫磁道和固件區(qū)。同樣也可以先寫入01到硬盤,然后重新上電,硬盤即可根據(jù)固件區(qū)地圖全部回寫模塊。
[0036]13號(hào)模塊= CacheOverlay模塊:1698及18XX等更新家族盤要操作固件模塊之前,必須先加載11模塊,才能正確加載13號(hào)模塊,之后才可以讀寫固件區(qū)。否則直接加載13號(hào)模塊,是無法成功讓硬盤有讀寫固件區(qū)的。
[0037]5C號(hào)模塊:ServoOverlay模塊,沒有13號(hào)模塊的新型家族的硬盤,則需要通過先加載5C模塊,在加載11模塊,從而能夠讓硬盤起轉(zhuǎn)并訪問硬盤固件區(qū),操作固件。
[0038]進(jìn)一步地,加載5C、11、10和13等模塊的方法如下:
[0039]隨著西數(shù)廠家越來越多的ROYL新系列的硬盤出廠,固件架構(gòu)也隨之變化,固件模塊不同家族,會(huì)有不同的差別。如果硬盤的ATA模塊損壞,硬盤是無法正常工作的。只有加載了 ATA模塊之后,硬盤才能正常訪問SA區(qū)域。
[0040]電路板編號(hào)1640及以上版本ATA加載原則:
[0041]1、有13沒5c 加載11后加13;
[0042]2、有5c沒13 加載5c后加11;
[0043]3、沒13沒5c加載11即可;
[0044]4、有13又有5c 加載11后加13;
[0045]5、有10有5C有11加載10后,加載5C,再加載11;
[0046]進(jìn)一步地,加載5C模塊方法如下:
[0047]45 OB 00 44 57 AO 80
[0048]45 OB 00 44 57 AO 80
[0049]D6 01 BE 4F C2 AO BO (14 00 08 00 00 00 00 00 15 01 00 00……長(zhǎng)度
512)//15 01表不5C的總扇區(qū)數(shù)01表不一個(gè)扇區(qū)
[0050]D6 00 BF 4F C2 AO BO//傳送5C模塊前0x100個(gè)扇區(qū)00表示0x100個(gè)扇區(qū)
[0051]D6 15 BF 4F C2 AO BO//傳送5C剩余的0x15個(gè)扇區(qū)
[0052]00 01 00 00 00 AO EC
[0053]進(jìn)一步地,加載11模塊方法如下:
[0054]45 OB 00 44 57 AO 80
[0055]45 OB 00 44 57 AO 80
[0056]D6 01 BE 4F C2 AO B0(14 00 08 00 00 00 00 00 B9 04 00 00……長(zhǎng)度512
【后面500個(gè)O】)//B9 04表不11的總扇區(qū)數(shù)01表不一個(gè)扇區(qū)
[0057]D6 00 BF 4F C2 AO BO//傳送11模塊第一個(gè)0x100個(gè)扇區(qū)00表示0x100個(gè)扇區(qū)
[0058]D6 00 BF 4F C2 AO BO//傳送11模塊第二個(gè)0x100個(gè)扇區(qū)00表示0x100個(gè)扇區(qū)
[0059]D6 00 BF 4F C2 AO BO//傳送11模塊第三個(gè)0x100個(gè)扇區(qū)00表示0x100個(gè)扇區(qū)
[0060]D6 00 BF 4F C2 AO BO//傳送11模塊第四個(gè)0x100個(gè)扇區(qū)00表示0x100個(gè)扇區(qū)[0061 ] D6 B9 BF 4F C2 AO BO//傳送11模塊剩余的0xB9個(gè)扇區(qū)
[0062]00 01 00 00 00 AO EC
[0063]加載10和13等模塊的方式原理相同,均為常規(guī)技術(shù)手段,不再贅述。
[0064]進(jìn)一步地,恢復(fù)數(shù)據(jù)具體如下:
[0065]S31等待硬盤狀態(tài)重新就緒后,從ROM中搜索OB和20B模塊。
[0066]S32從OB和20B模塊中搜索OI模塊在硬盤固件區(qū)的存儲(chǔ)地址。
[0067 ] S33通過查找OI的存放地址,找到OI固件區(qū)地圖模塊。
[0068]S34通過01固件區(qū)地圖模塊中記錄的固件區(qū)信息找到所有其他固件模塊的存放位置。
[0069]S35通過01記錄的固件區(qū)其他固件存放地址,搜索出此故障盤的所有固件區(qū)模塊。
[0070]S36將最開始插入硬盤的3個(gè)跳線全部移除,并將搜索到的所有固件區(qū)模塊,以ABA方式回寫回到硬盤的2個(gè)主要磁頭(O和I)。
[0071]S37回寫完成之后,斷電起電一次,再次獲取硬盤參數(shù)即可認(rèn)盤。
【主權(quán)項(xiàng)】
1.一種西數(shù)硬盤加載指定模塊進(jìn)行硬盤修復(fù)的方法,其特征在于,包括如下步驟: SI進(jìn)入硬盤安全模式;S2加載ATA指定模塊;S3恢復(fù)數(shù)據(jù);其中,S2的具體方法如下:S21開啟硬盤固件讀寫區(qū)域;S22smartl0g方式寫入需要加載的文件大小參數(shù)信息;S23讀取準(zhǔn)備好的模塊文件數(shù)據(jù)到buf f er; S24將buf f er分成0X100*Y個(gè)段,其中Y的取值為O到FFFF,未分配滿的單獨(dú)為一個(gè)buf f er段;S25采用smartlog方式依次寫入數(shù)據(jù)內(nèi)容;S26獲取硬盤參數(shù)信息。2.根據(jù)權(quán)利要求1所述的西數(shù)硬盤加載指定模塊進(jìn)行硬盤修復(fù)的方法,其特征在于,SI的具體方法如下:Sll將3個(gè)短跳線依次插入靠近硬盤接口左邊的針頭處;S12將硬盤通電后,硬盤進(jìn)入安全模式;SI 3獲取硬盤參數(shù)信息,直到硬盤狀態(tài)顯示就緒。3.根據(jù)權(quán)利要求1或2所述的西數(shù)硬盤加載指定模塊進(jìn)行硬盤修復(fù)的方法,其特征在于,S3的具體方法如下: S31等待硬盤狀態(tài)重新就緒后,從ROM中搜索OB和20B模塊; S32從OB和20B模塊中搜索01模塊在硬盤固件區(qū)的存儲(chǔ)地址; S33通過查找01的存放地址,找到01固件區(qū)地圖模塊; S34通過01固件區(qū)地圖模塊中記錄的固件區(qū)信息找到所有其他固件模塊的存放位置; S35通過01記錄的固件區(qū)其他固件存放地址,搜索出此故障盤的所有固件區(qū)模塊; S36將最開始插入硬盤的3個(gè)跳線全部移除,并將搜索到的所有固件區(qū)模塊,以ABA方式回寫到硬盤的2個(gè)主要磁頭O和I ; S37回寫完成之后,斷電起電一次,再次獲取硬盤參數(shù)即可認(rèn)盤。
【專利摘要】本發(fā)明公開了一種西數(shù)硬盤加載指定模塊進(jìn)行硬盤修復(fù)的方法,屬于硬盤數(shù)據(jù)恢復(fù)領(lǐng)域,包括以下步驟:S1進(jìn)入硬盤安全模式;S2加載ATA指定模塊;S3恢復(fù)數(shù)據(jù),其中,S2的具體方法如下:S21開啟硬盤固件讀寫區(qū)域;S22smartlog方式寫入需要加載的文件大小參數(shù)信息;S23讀取準(zhǔn)備好的模塊文件數(shù)據(jù)到buffer;S24將buffer分成0X100*Y個(gè)段,其中Y的取值為0到FFFF,未分配滿的單獨(dú)為一個(gè)buffer段;S25采用smartlog方式依次寫入數(shù)據(jù)內(nèi)容;S26獲取硬盤參數(shù)信息。本發(fā)明通過上述方法可以快速準(zhǔn)確的恢復(fù)微代碼出現(xiàn)故障、無法被加載,導(dǎo)致系統(tǒng)無法識(shí)別硬盤的故障。
【IPC分類】G06F11/07
【公開號(hào)】CN105653382
【申請(qǐng)?zhí)枴?br>【發(fā)明人】黃旭, 張佳強(qiáng), 董超
【申請(qǐng)人】四川秘?zé)o痕信息安全技術(shù)有限責(zé)任公司
【公開日】2016年6月8日
【申請(qǐng)日】2015年12月31日