MAXTOR(邁拓)
*硬盤的固件結構:
·麥拓的固件運行在RAM中,可以從三個資源進行加載:1。內部ROM;2。F-ROM;3。硬盤服務區。核對硬盤的ID號以及使用邏輯扇區進一步的工作是通過執行保存在PCB板上的代碼來實現的,而初始化代碼部分是保存在SA服務區上。
·PCB固件包含兩部分:處理器內嵌ROM和外部的并行或串行F-ROM。一般外部ROM初始化處理器,如果外部ROM損壞,內嵌ROM才可以代替外部ROM,并且內部ROM可能屬于另一系列硬盤的ROM,例如CALIPSO內部ROM就有可能是N40P的。ROM里面包含硬盤的主頭的定義,在ROM里面的00 80 A9 33 4D 80 A9前面。
·SA:HALF-SIZE的硬盤SA在碟面的外緣而FULL-SIZE 的硬盤SA在內緣。固件包含ROM和OVERLAYS。
在服務區中POKER/ARDENT系列的硬盤包含兩個控制硬盤的程序:1。38,39,4F;2。97,96,98。
·硬盤固件版本的ID號記錄在HDA標簽:6E030L0510202C(MODEL+HDA+PCBA+UNIQUE)在第九位可以看出磁頭數1個。(在舊版的硬盤中他們的固件版本號如下:MODEL:5T030H3;HDA:23A;PCBA:04A;Unique:11A;CODE:TAH71DP0;)
·在我們換磁頭的時候我們應該看標簽上的四個大寫字母,例如:K,M,B,E。這四個字母中第一位是磁頭放大器的類型,第二位是使用的磁頭的型號,如果兩個字母一樣的磁頭是最好的,不然第一個一樣也可以。
·服務區模塊:服務區的層次結構如下:服務區的物理柱面定位〈--有效的服務區〈--模塊集合〈---1:數據模塊;2:固件模塊;3:伺服模塊〈--模塊的工作楨包括報頭和校驗和。
·重要的模塊:按模塊的重要性可分為四種:A,B,C,D。
A-特定硬盤的基本模塊:As-調節因子設定,AD-譯碼器表。用相同的模塊替換硬盤模塊會導致讀/寫設置的丟失和數據的丟失(例如重寫調節因子模塊);
B-這個模塊是必須的,不過可以用相同型號和版本且匹配的模塊來替換;
C-這些模塊是必須的,不過部分的模塊出錯不會導致硬盤的運行。硬盤在當前的CIRCUMSTANCES下可以獨立的修正模塊的內容(在重置缺陷的過程中自動校準)。
D-這些模塊不影響硬盤的正常的工作,他們經常包含信息模塊。Dr-代表伺復自檢模塊;Dd-原始的缺陷表用于生成硬盤的譯碼器。
Maxtor固件選擇的匹配方法:1.MODEL系列要一樣;2.系列分類要分清,如BW0還是VW0等;3.要知道磁頭數,看1F模塊;4.要求主頭一樣,看37模塊;5.盡量保持CRC校驗一樣,如果不一樣,需要做自校準才可以匹配。查看電路板是否一樣,看83模塊的PCBA_PN。
下面介紹幾個重要模塊:
1、U-LIST=37 服務區譯碼器: 硬盤使用這個模塊來辨別有效的服務區。它有8個備份,不過只有兩個可以在模塊表中顯示。這個模塊有獨立的結構來表示每一個磁頭,這個結構包含磁頭數量和對應每一個磁頭的服務區缺陷。這個模塊也同時包含缺陷的在SA中的數量和地址,同時它也顯示了P-List表的實際使用的扇區數。如果用別的硬盤的P-List模塊重寫硬盤的P-List模塊,固件將會接到不正確的模塊長度并且不可以使用這個模塊(出現校驗和出錯)。如果SA的缺陷表隱藏了缺陷那么在U-LIST的數據被認為是獨立的(如果從別個硬盤覆蓋它,就會導致SA移位,從而是硬盤修復更加困難。如果沒有隱藏的缺陷那么可以保留有用的P-LIST部分并重寫模塊,最后修改校驗和。這個模塊可以通過重建譯碼器來自動恢復P-LIST的長度。表示主頭的位置為0X13。
2、DISK(pn=1F)配置模塊:這個模塊包含了型號,系列號,最大的邏輯塊地址,物理磁頭示意圖和磁頭數。用于建立譯碼器的磁頭示意圖保存在硬盤固件內。我們查看磁頭示意圖和磁頭個數,容量的方法如下:0X04-0X05:0200;0X06-0X07:0300——表示硬盤有兩個磁頭:2頭,3頭;0X14-0X17:為硬盤物理最大容量;0X18-0X1B:表示磁頭個數;0X1C-0X1F為當前硬盤容量;0X20-0X223表示硬盤磁頭的校驗碼(方法為以2為底數,以磁頭號為指數的代數和的十六進制表示):2^2+2^3=12->0X0C;0X1FA-0X1FB跟0C是對應的。
3、RZTBL(PN=78)模塊:這個模塊是硬盤譯碼器的一部分。它包含分區定位表每一個分區都相應的把自己的缺陷隊列存放在P-LIST模塊中。這個模塊包括了建立譯碼器的磁頭數。
4、AT_PDL(PN=18H)模塊:P-LIST模塊,是譯碼器的組成部分。這個模塊包含了用戶區的缺陷扇區的工廠表格。缺陷信息以格式化的形式記錄并跟RZTBL描述的分區一一對應。
5、AT_POL(PN=1B)模塊和它的備份A7模塊:G-LIST表,它是硬盤在工作時建立的缺陷的表。A7只可以在N40P,CALYSPO的2004版本以及SABRE系列中找到。
6、FMTI(PN=93)模塊:這個模塊只可以在全尺寸的硬盤中找到。它包含分區定位表每一個分區的調節因子設置。所以這個模塊是存取數據的基本模塊。
7、RCT(21)模塊:結構和目的未知,這個模塊用別的硬盤模塊覆蓋時不會引起嚴重的功能性丟失(不過會使增加壞塊數量),這個模塊是在硬盤自檢的時候生成,不過用于生成這個模塊的數據仍是未知的,因此,如果模塊損壞將使硬盤不可以修改模塊。
8、SRV(1E)模塊:結構和目的未知,如果用別的硬盤模塊寫該模塊將是硬盤讀取表面時出現許多壞扇區并且完全不可以記錄任何東西到硬盤上。在硬盤自檢時從伺服系統的校準子程序生成。
9、ROM_SA(PN=39)模塊:這個模塊是正常工作模式下加載的一部分固件--ROM信息。
10、ATA overlays(OVL ATA)PN=38模塊:在正常模式下overlays的設置起這擴展固件的作用。如果所有的overlays不能讀取,那么所有的ATA命令將不能正常工作,一個overlays是程序代碼的一部分,它可以從RAM的緩沖區連接到處理器代碼。并且一次只可以連接一個overlays。
11、overlays執行伺服命令(OVL-TECH)4F:由在伺服模式下固件操作決定了overlays的設定。
12、95模塊:這個模塊決定了該選程序1或程序2,如果該模塊損壞將使硬盤不能運行。只有在沒有可變SA的硬盤模塊表中才可以看到該模塊。
13、AT_XAL(35)模塊:有時會使硬盤工作但不能使用LBA進行工作;它被用作添加缺陷到G-LIST表的臨時表。
14、HLUTL&HUSR(PN=33)模塊(或HLISTS )包含了一個表格設置。HLUTL(長16384字節且包含一個8比特的HEADER和CHECKSUM)。這是SA的缺陷列表。接著出現一個HUSR****的表格,****代表系列號,它的長度為8192字節。它是由用戶區的缺陷數量它所增加的表格。
15、18,37,78模塊是一組,如果其中有一個損壞,要同時寫三個,必須是同一個硬盤的模塊。38,39,4F跟上面的一樣。
·調節因子:
包含有讀取用戶區數據的調節因子的模塊有:SRV-1E,RCT-20,FMTI-93以及overlays-4F.我們可以需要進行數據恢復的硬盤的這些模塊寫到一個貢獻盤上然后進行熱交換。不過這種情況下可能不能把貢獻盤的原模塊寫回。調節因子會隨著記錄數據的增加而增長。ATHENA系列的硬盤可以通過熱交換方法來修復存取數據的功能,但是,這種方式會使N40P和CALYSPO的硬盤不能寫和讀取任何數據。調節因子可以通過SELFSCAN來重新校準。
·備用的SA:在MAXTOR品牌中只有在N40P,CALYSPO和SABRE系列中才有備用的SA。我們為了判斷硬盤是否有備用的SA,可以查看一下模塊表。如果里面有95模塊,那就表示該硬盤沒有備用的SA。使用備用的SA的目的就是為了生成主要的SA和隱藏缺陷。在備用的SA中擁有相同的模塊但里面的內容是不同。在一個擁有備用SA的硬盤中,硬盤中啟動之后ROM從主SA中讀程序代碼和譯碼器并核對他們的結構,如果他們結構因為模塊出錯而出錯,ROM將從備用的SA加載。一個硬盤在該情況下自己使用備用的SA進行初始化。這意味著要返回主SA就要恢復的譯碼器和程序模塊。下面的這種方法還沒研究過:把另一個硬盤的主SA模塊寫到一個備用的SA上。我們只能做如下可能的假設:盡管從備用的SA運行但是主SA的程序還是被建立以用來與它的物理定位器工作。BOOT ROM將運行備用的SA區的程序A的代碼,但是數據模塊仍是從主SA讀取。如果你使用程序A來執行一個LOADER,那么主SA將連接到UBA SPACE;如果我們從程序A開始加載,那么備用的SA將連接到UBA SPACE。★程序A和程序B有一個重要的區別:程序A的overlays在自檢過程中將被修改,而程序C就不會且他它的校驗和不變。
程序C不可以運行用戶區的譯碼器和它的調節因子模塊不適合讀那個分區。這樣的硬盤就將不能在LBA上使用。
有兩種方法可以進備用的SA:
1:運行一個備用的LOADER,然后使用它的備用SA初始化。
2:也可以打開PN=18的模塊修改HEADER里面的一個字節并保存模塊到HDD。
在一些硬盤中在備用的SA中的程序2包含了程序1(在未進行自檢之前),在里面包含了與主SA一樣的ROM版本,這個是非常有用的,我們可以通過如下步驟運行一個硬盤:
。進行跳線;
。使用一個備用的LOADER;
。運行《RESTART USING INTERNAL HDD SA》,并選《PROGRAM》。
·譯碼器:譯碼器是一個復雜的程序和表格,它可以在操作系統的LBA和物理扇區之間進行轉換。譯碼器被保存在如下的模塊中:U-LIST37,AT_PDL18,RZTBL78,這些譯碼器表都是基于缺陷表(PN=33)建立的。我們可以在模塊損壞的情況下重寫模塊,然后進行重建譯碼器就可以修復譯碼器表,使它的值變為原來的實際值。
·運行應用程序:在打開運行程序時,就會發送一個命令對硬盤ID辨別狀態。如果處于安全模式狀態下,在對話框就會出現一條信息:硬盤安全模式尋找。當應用程序接到上一條命令的回應時就會自動的選擇所連接的硬盤的系列。當然如果硬盤不能正確的辨別硬盤ID或不支持該硬盤時就不能自動選擇。在安全模式下的對話框有許多命令來初始化硬盤PCB存貯器的固件。運行步驟:LOADING LDR->選相應的LDR->READING ID->如果ID全部顯示就表示這是正常的硬盤行為,如果固件改變但系列號不顯示,在這種情況下就要核對記錄到SA或初始化SRV->讀模塊,如果出錯就要從"Read resources from DB"選項運行程序。