数据恢复高级技术——MAXTOR硬盘的固件和模块 Maxtor驱动器的固件分为两部分,第一部分微代码存储在PCB上 处理器芯片内部的掩膜ROM和外部扩展Flash ROM中,第二部分 存储在磁盘的固件区中。Maxtor硬盘专门划定了一些扇区用于 存储固件,并且可以使用“UBA”寻址方式来访问。
PCB上的固件又包含两部分:处理器内部的掩膜ROM和扩展的并 行或串行Flash ROM。之所以这样安排可能是由于处理器中的 掩膜ROM不容易修改(Flash ROM可以容易的修改)。处理器 由扩展的Flash ROM中的微代码初始化,如果扩展Flash ROM 初始化失败,固件代码就会从处理器内部的ROM启动。
有这么一种情况,处理器内部ROM中的代码可能使用的是另一 系列的驱动器的代码,例如,如果CALIPSO驱动器的扩展ROM 失败后会标识为“N40P”。Maxtor 驱动器有一个“安全模 式”跳线,当“安全模式”有效时,只有存储在PCB上的固件 被载入,而用于启动电机的程序和初始化磁盘上固件的过程 被忽略了。将跳线设置为“安全模式”然后运行相应程序, 在“MODEL”行驱动器型号后面就会显示出ROM的版本号。
驱动器初始化操作需要完全复位PCB固件和磁盘上的固件。 如果因某种原因导致磁盘上的固件不能运行,可以通过加 载LDR文件来启动驱动器处理器。记住LDR文件只包括微 代码而不包括驱动器运转所需的数据:缺陷表、校准参 数和设置数据等。这些对数据恢复都很有用。
PCB微代码和磁盘固件有不同的版本,这种差异有助于 了解处理器正在运行的是哪个版本。Poker/Ardent系 列驱动器固件包括两种:一种是正式版,一种是测试版。
通过标签来识别Maxtor驱动器固件的版本是很复杂的, 因为他们并不遵循严格的版本号规则,很多不兼容的固 件版本拥有相同的识别标签。兼容性问题也可能由存储 在固件微代码中的磁头读/写校正参数不同引起。尽管 如此,即使不能保证100%兼容,还是可以通过下面的 规则来确定固件版本:
1、简写 MODEL+HDA+PCB+UNIQUE,例:2B020H1110500。
2、标志字母,由逗号隔开,例:K,M,B,E。
3、在IDE接口的大写标签,例如A4FBA。
Maxtor驱动器中的模块不包括名字,尽管其中一些模块 确实有名字,他们的名字包含在模块头里,因此如果不读 模块内容就不可能知道他们的名字。但是可以给他们编号, 也就是所谓的位置码(以下称为PN),通过位置码可以 方便的识别特定模块的功用。表3-2列出了Maxtor硬盘 中的模块及其功能:
表3-2 Maxtor硬盘中的模块及其功能
位置号(PN),Hex 模块功能 重要性
1E SRV-校准参数 A
21 RCT-磁盘表面数据区的校正信息 A
37 U_List-固件区译码表 A
78 RZTBL-Zone表 A
18 AT_PDL(P-List)-P表相应的译码表 A
1F DISK-驱动器ID B
1B AT_POL(G-List)-增长的缺陷表 B
39 ROM拷贝 B
38 微代码的第一部分(Overlays) B
4F 微代码的第二部分 (Overlays) B
95 用于某些Poker/Ardent驱动器中可选的DISK B
1D DMCS-缓存的相应的译码 C
2F S.M.A.R.T入口 D
1A SECU-安全系统模块(ATA密码) D
30 S.M.A.R.T属性 D
70 S.M.A.R.T摘要LOG D
71 S.M.A.R.T自测LOG D
63 S.M.A.R.T属性的拷贝 D
33 HUTIL&HUSR-pivot缺陷表 E
72 S.M.A.R.T HOST VENDOR LOG E
34 RAER_H00 E
64 MAXATG E
5E EVTLG_00 E
7B FWA E
11 MX_ST_CFG1 E
43 MX_ST_CFG2 E
0D MX_ST_CFG3 E
0E MX_ST_SCRIPT E
22 Various settings(flags) E
7A U_LIST-固件区译码表的拷贝 E
83 驱动器部分的信息 E
31 DISK-驱动器ID的第二个拷贝 E
14 STRS E
35 AT_XAL E
46 OPTI-自测设置 E
47 STRS E
48 驱动器部分的信息 E
表3-2中“重要性”列代码的含义如下:
A:关键的,版本必须与特定的HDA(不可替代)相匹配;
B:必须的,但是可以使用其他驱动器上的拷贝代替;
C:必须的,即使部分模块损坏驱动器仍然可以启动;
D:如果缺失其中一个模块,驱动器也可正常启动,但是会变慢;
E:即使没有此模块驱动器也可以正常运转
转载请注明出处!北京信息工程学院数据恢复 |