PC-3000软件对Maxtor的驱动器提供的功能主要有:
*在工厂模式下对驱动器进行测试 *恢复驱动器上的固件数据 *读取并备份驱动器的ROM数据 *检查和修复固件信息 *载入固件数据访问程序(LDR文件)
*从正常的驱动器创建LDR文件 *检查用于隐藏磁盘缺陷的G表和P表 *将新发现的缺陷添加到G表和P表 *重新生成译码表 *运行驱动器自检程序
3.4.3 Maxtor硬盘的固件和模块
1. 固件
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%兼容,还是可 以通过下面的规则来确定固件版本:
① 简写 MODEL+HDA+PCB+UNIQUE,如 2B020H1110500。
② 标志字母,由逗号隔开,如K, M, B, E。
③ 在IDE接口的大写标签,如A4FBA。
2. 模块
Maxtor驱动器中的模块不包括名字,尽管其中一些模块确实有名字,它们的名字 包含在模块头里,因此如果不读模块内容就不可能知道它们的名字。但是可以给它们编 号,也就是所谓的位置码(以下称为PN),通过位置码可以方便的识别特定模块的功用。 表3-2列出了 Maxtor硬盘中的模块及其功能。
表3-2 Maxtor硬盘中的模块及其功能
位置号(PN> (十六进制) |
模块功能 |
重要性 |
1E |
SRV一校准参数 |
A |
21 |
RCT一磁盘表面数据区的校正信息 |
A |
37 |
U_List一固件K译码表 |
A |
78 |
RZTBL-Zone 表 |
A |
18 |
AT.PDL (P-List )——P表相应的译码表 |
A |
1F |
DISK——驱动器ID |
B |
1B |
AT.POL (O-Ust) —«长的缺陷表 |
B |
39 |
ROM备份 |
B |
38 |
微代码的第一部分(Overlays) |
B |
4F |
激代码的第二部分(Overlays】 |
B |
—1 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 |
HUTILAHUSR——pivot 缺陷表 |
E |
72 |
S.M.A.R.T HOST VENDOR LOG |
E |
34 |
RAER.H00 |
E |
64 |
MAXATG |
E |
5E |
EVTLX}_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:即使没有此模块驱动器也可以正常运转。