数据恢复与硬盘修理
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

6.6 Quantum驱动器固件

Quantum驱动器盘体印刷标贴上有两行字,如图6-58所示。第一行包含驱动器属系码,第二行是固件版本号,配置页CP#4中也有同样的行,但两者并不完全相同。例如,配置页CP#4中记录的读取结果为“AIY.1312”,而盘体标贴的第二行是“1310”。注意,盘体标贴第二行的最后一个字符总是“0”,而不管配置页CP#4中保存的是什么。

图6-58 盘体标签

虽然通过PCB没有办法确定ROM的版本,但是版本不兼容的情况笔者只在AS属系和D740X-6L属系的驱动器中遇到过。

6.6.1 固件的结构

Quantum驱动器控制固件由两部分组成。主要初始化固件部分存储在与处理器和磁盘控制器集成在单一芯片中的ROM中,有些出厂测试的样品驱动器也可能装备外部串行ROM。固件的另一部分以一组模块的方式存储在磁盘固件区,这些模块除了代码,还包含一些数据,如缺陷表、S.M.A.R.T表等。

检查固件结构命令成功执行后将输出固件内容和设置报告,报告的开始部分是配置参数值,然后是一些配置页的通用信息,后跟部分配置页的详细信息,最后是组成固件区的模块信息。即使是功能正常的驱动器,也会出现一些模块校验和错误或读取错误。报告实例如下。

        Configuration params. table :
          DisCache parameters :
        Prefetch enable                               : Yes
        Cache    enable                               : Yes

          Recovery errors parameters :
        Automatic Write Reallocation Enabled          : Yes
        Automatic Read  Reallocation                  : Yes
        Read Continuous                               : No
        Enable Early Correction                       : No
        Disable Correction                            : No
        Number of Retries                             : 8
        ECC Correction Span                           : 32

          HDD parameters :
        Write Cache Enable                            : No
        Reallocate Uncorrectable Error Enables        : Yes

        Configuration pages   (Config Pages)
          #    CP#  Length, bytes   Condition
        -------------------------------------
          0        0           1          OK
          1        1           2          OK
          2        2          16          OK
          3        3          16          OK
          4        4           8          OK
          5        5          12          OK
          6        6          32          OK
          7        7          16          OK
          8        8           1          OK
          9        9          16          OK
         10       10         140          OK
         11       11           4          OK
         12       12           1          OK
         13       13           2          OK
         14       14           6          OK
         15       15         167          OK
         16       16           2          OK
         17       17        3090          OK
         18       18        1742          OK
         19       19          28          OK
         20       20           1          OK
         21       21         400          OK
         22       22           1          OK
         23       23         144          OK
         24       24         258          OK
         25       25         284          OK

        CP 02
        Page about manufacturer
        QUANTUM
        CP 03
        Model name page
        DSJ FB EX6.4A
        CP 04
        Firmware version page
        A0A.0414
        CP 05
        Serial number page
        276825233298
        CP 07
        Logical parameters page
        Cyl: 13328  Heads: 15  Sectors: 63
        Detailed COM log : No
        CP 08
        Physical heads number page
        Number of physical heads : 4
        CP 10
        Zone reallocation table page
          #  Beg. c.  SPT0   SPC
        ------------------------
          0        0        189         756
          1        0        349        1396
          2      770        345        1380
          3     1540        339        1356
          4     2310        333        1332
          5     3080        327        1308
          6     3850        324        1296
          7     4620        310        1240
          8     5390        298        1192
          9     6160        291        1164
         10     6930        280        1120
         11     7700        270        1080
         12     8470        254        1016
         13     9240        240         960
         14    10010        225         900
         15    10780        208         832
        Physical cylinders: 11550
        Max LBA            : 12594959

        CP 11
        Max LBA stopper page
        Max LBA: 12594960 (00C02F10h)

        CP 14
        Heads control page
        Amount of heads   : 4
        Utilized heads    :
          0   1   2   3
        Road Map page
          #    ID    Cyl   Head    Sec   Length FamCod     Rev    Condition
        ----------------------------------------------------------
          1    0E    -2       0       0        1        2B       A0A        OK
                     -2       1       0        1        2B       A0A        OK
                     -3       0       0        1        2B       A0A        OK
                     -3       1       0        1        2B       A0A        OK

          2  65      -2       0       1        1        2B       A0A        OK
                     -2       1       1        1        2B       A0A        OK
                     -3       0       1        1        2B       A0A        OK
                     -3       1       1        1        2B       A0A        OK

          3  06      -2       0       2        2        2B       A0A        OK
                     -2       1       2        2        2B       A0A        OK
                     -3       0       2        2        2B       A0A        OK
                     -3       1       2        2        2B       A0A        OK

          4  05      -2       0       4        1        2B       A0A        OK
                     -2       1       4        1        2B       A0A        OK
                     -3       0       4        1        2B       A0A        OK
                     -3       1       4        1        2B       A0A        OK

          5  61      -2       0       5       28        2B       A0A        OK
                     -7       1       5       28        2B       A0A        OK
                     -4       1       5       28        2B       A0A        OK
                     -9       0       5       28        2B       A0A        OK

          6  66      -2       0      33        5        2B       A0A        OK
                     -7       1      33        5        2B       A0A        OK
                     -4       1      33        5        2B       A0A        OK
                     -9       0      33        5        2B       A0A        OK

          7  60      -2       0      38       60        2B       A0A        OK
                     -7       1      38       60        2B       A0A        OK
                     -4       1      38       60        2B       A0A        OK
                     -9       0      38       60        2B       A0A        OK

          8  62      -2       0      98        6        2B       A0A        OK
                     -7       1      98        6        2B       A0A        OK
                     -4       1      98        6        2B       A0A        OK
                     -9       0      98        6        2B       A0A        OK

          9  07      -2       0    104        13        2B       A0A        OK
                     -7       1    104        13        2B       A0A        OK
                     -4       1    104        13        2B       A0A        OK
                     -9       0    104        13        2B       A0A        OK

         10  08      -2       0    117        13        2B       A0A        OK
                     -7       1    117        13        2B       A0A        OK
                     -4       1    117        13        2B       A0A        OK
                     -9       0    117        13        2B       A0A        OK

         11  09      -2       0    130         2        2B       A0A        OK
                     -7       1    130         2        2B       A0A        OK
                     -4       1    130         2        2B       A0A        OK
                     -9       0    130         2        2B       A0A        OK

         12  D7      -2       0    132        13        00         "    Chk S.ERR
                     -7       1    132        13        00         "    Chk S.ERR
                     -4       1    132        13        00         "    Chk S.ERR
                     -9       0    132        13        00         "    Chk S.ERR

         13  D9      -2       0    145         2        00         "    Chk S.ERR
                     -7       1    145         2        00         "    Chk S.ERR
                     -4       1    145         2        00         "    Chk S.ERR
                     -9       0    145         2        00         "    Chk S.ERR

         14  D3      -2       0    147        11        2B       A0A        OK
                     -7       1    147        11        2B       A0A        OK
                     -4       1    147        11        2B       A0A        OK
                     -9       0    147        11        2B       A0A        OK

         15  31      -2       0    158        16        2B       A0A        OK
                     -7       1    158        16        2B       A0A        OK
                     -4       1    158        16        2B       A0A        OK
                     -9       0    158        16        2B       A0A        OK

         16  33      -3       1      5        16        2B       A0A        OK
                     -8       0      5        16        2B       A0A        OK
                     -5       0      5        16        2B       A0A        OK
                    -10       1      5        16        2B       A0A        OK

         17  3E      -3       1     21         5        2B       A0A        OK
                     -8       0     21         5        2B       A0A        OK
                     -5       0     21         5        2B       A0A        OK
                    -10       1     21         5        2B       A0A        OK

         18  34      -3       1     26        98        2B       A0A        OK
                     -8       0     26        98        2B       A0A        OK
                     -5       0     26        98        2B       A0A        OK
                    -10       1     26        98        2B       A0A        OK

         19  40      -3       1    124         8        2B       A0A        OK
                     -8       0    124         8        2B       A0A        OK
                     -5       0    124         8        2B       A0A        OK
                    -10       1    124         8        2B       A0A        OK

         20  36      -3       1    132         8        2B       A0A        OK
                     -8       0    132         8        2B       A0A        OK
                     -5       0    132         8        2B       A0A        OK
                    -10       1    132         8        2B       A0A        OK

         21  3F      -3       1    140         8        2B       A0A        OK
                     -8       0    140         8        2B       A0A        OK
                     -5       0    140         8        2B       A0A        OK
                    -10       1    140         8        2B       A0A        OK

         22  3D      -3       1    148         8        2B       A0A        OK
                     -8       0    148         8        2B       A0A        OK
                     -5       0    148         8        2B       A0A        OK
                    -10       1    148         8        2B       A0A        OK

         23  41      -3       1    156         5        2B       A0A        OK
                     -8       0    156         5        2B       A0A        OK
                     -5       0    156         5        2B       A0A        OK
                    -10       1    156         5        2B       A0A        OK

         24  42      -3       1    161         8        00        "       Chk S.ERR
                     -8       0    161         8        00        "       Chk S.ERR
                     -5       0    161         8        00        "       Chk S.ERR
                    -10       1    161         8        00        "       Chk S.ERR

         25  35      -3       1    169         4        2B       A0A        OK
                     -8       0    169         4        2B       A0A        OK
                     -5       0    169         4        2B       A0A        OK
                    -10       1    169         4        2B       A0A        OK

         26  37      -3       1    173         2        2B       A0A        OK
                     -8       0    173         2        2B       A0A        OK
                     -5       0    173         2        2B       A0A        OK
                    -10       1    173         2        2B       A0A        OK

         27  43      -3       1    175         1        2B       A0A        OK
                     -8       0    175         1        2B       A0A        OK
                     -5       0    175         1        2B       A0A        OK
                    -10       1    175         1        2B       A0A        OK

         28  21      -3       1    176         1        2B       A0A        OK
                     -8       0    176         1        2B       A0A        OK
                     -5       0    176         1        2B       A0A        OK
                    -10       1    176         1        2B       A0A        OK

         29  32      -4       0      5         6        2B       A0A        OK
                     -9       1      5         6        2B       A0A        OK
                     -6       1      5         6        2B       A0A        OK
                    -11       0      5         6        2B       A0A        OK

         30  5F      -4       0     11        20        00        "       Chk S.ERR
                     -9       1     11        20        00        "       Chk S.ERR
                     -6       1     11        20        00        "       Chk S.ERR
                    -11       0     11        20        00        "       Chk S.ERR

         31  24      -4       0     31        32        2B       A0A        OK
                     -9       1     31        32        2B       A0A        OK
                     -6       1     31        32        2B       A0A        OK
                    -11       0     31        32        2B       A0A        OK

         32  25      -4       0     63        32        2B       A0A        OK
                     -9       1     63        32        2B       A0A        OK
                     -6       1     63        32        2B       A0A        OK
                    -11       0     63        32        2B       A0A        OK

         33  26      -4       0     95        32        2B       A0A        OK
                     -9       1     95        32        2B       A0A        OK
                     -6       1     95        32        2B       A0A        OK
                    -11       0     95        32        2B       A0A        OK

         34  27      -4       0    127        32        2B       A0A        OK
                     -9       1    127        32        2B       A0A        OK
                     -6       1    127        32        2B       A0A        OK
                    -11       0    127        32        2B       A0A        OK

         35  20      -4       0    159        19        2B       A0A        OK
                     -9       1    159        19        2B       A0A        OK
                     -6       1    159        19        2B       A0A        OK
                    -11       0    159        19        2B       A0A        OK

         36  22      -4       0    178         2        2B       A0A        OK
                     -9       1    178         2        2B       A0A        OK
                     -6       1    178         2        2B       A0A        OK
                    -11       0    178         2        2B       A0A        OK

         37  28      -5       1      5        32        2B       A0A        OK
                    -10       0      5        32        2B       A0A        OK
                     -7       0      5        32        2B       A0A        OK
                     -2       1      5        32        2B       A0A        OK

         38  30      -5       1     37         8        2B       A0A        OK
                    -10       0     37         8        2B       A0A        OK
                     -7       0     37         8        2B       A0A        OK
                     -2       1     37         8        2B       A0A        OK

         39  73      -5       1     45         1        2B       A0A        OK
                    -10       0     45         1        2B       A0A        OK
                     -7       0     45         1        2B       A0A        OK
                     -2       1     45         1        2B       A0A        OK

         40  71      -5       1     46         1        2B       A0A        OK
                    -10       0     46         1        2B       A0A        OK
                     -7       0     46         1        2B       A0A        OK
                     -2       1     46         1        2B       A0A        OK

         41  01      -5       1     47        85        2B       A0A        OK
                    -10       0     47        85        2B       A0A        OK
                     -7       0     47        85        2B       A0A        OK
                     -2       1     47        85        2B       A0A        OK

         42  00      -5       1    132         4        2B       A0A        OK
                    -10       0    132         4        2B       A0A        OK
                     -7       0    132         4        2B       A0A        OK
                     -2       1    132         4        2B       A0A        OK

         43  11      -5       1    136         8        2B       A0A        OK
                    -10       0    136         8        2B       A0A        OK
                     -7       0    136         8        2B       A0A        OK
                     -2       1    136         8        2B       A0A        OK

         44  12      -5       1    144         8        2B       A0A        OK
                    -10       0    144         8        2B       A0A        OK
                     -7       0    144         8        2B       A0A        OK
                     -2       1    144         8        2B       A0A        OK

         45  13      -5       1    152         8        2B       A0A        OK
                    -10       0    152         8        2B       A0A        OK
                     -7       0    152         8        2B       A0A        OK
                     -2       1    152         8        2B       A0A        OK

         46  14      -5       1    160         8        2B       A0A        OK
                    -10       0    160         8        2B       A0A        OK
                     -7       0    160         8        2B       A0A        OK
                     -2       1    160         8        2B       A0A        OK

         47  15      -5       1    168         8        2B       A0A        OK
                    -10       0    168         8        2B       A0A        OK
                     -7       0    168         8        2B       A0A        OK
                     -2       1    168         8        2B       A0A        OK

模块报告格式见表6-6。

表6-6 模块报告格式

FamCod(Family code,属系码)可能的值如表6-7所示。

表6-7 属系码

Quantum驱动器运行必须的模块大致如下。

ID=0Eh:读出服务区的设置模块(服务区适配器)。

ID=65h:服务区缺陷表。

ID=06h:承载overlay。

ID=05h:包含数据模块。

ID=00h:包含数据模块。

ID=01h/11h/12h/13h/14h/15h/16h/17h:承载overlay。

ID=61h:译码表模块,包含隐含缺陷表。

ID=66h/62h:服务区缺陷扇区重定位模块。

ID=08h:全部配置页模块。

ID=09h:数据模块。

ID=7xh:S.M.A.R.T服务表模块。

ID=2xh/3xh/4xh:Self-Test程序,属于SELFSCAN模块,这些模块的功能一般不使用。

ID=0Eh/05h/08h/6xh:对数据安全至关重要,不能从其他驱动器复制。

6.6.2 固件的保存

固件保存命令包括添加固件到数据库、读配置页和读模块。

添加固件到资源数据库命令能够将服务区全部模块和配置页保存到资源文件中。对EL、CR和CX属系,资源文件与程序自带的早期版本兼容,但它们带有早期没有添加到数据库中的配置页。当把资源添加到数据库中时,最好指出驱动器的型号和固件版本,如“lct10 5GB A03.093A”。

读配置页命令用于读取驱动器CP配置页,读出的配置页保存在“QU xx_MOD”子目录下,“xx”是属系名称。读取CP配置页之前,屏幕上会显示可以读取的CP列表。按【Space】键选择需要读取的项,或者选择“SELECT ALL”选项以选择全部CP配置页。按下【Enter】键,选中的配置页就分别被读到各自的子目录下。如果目录中已经存在同名CP文件,程序不会进行提示,而是直接覆盖。

读模块命令用于读取驱动器的固件程序模块,读取过程与存放目录和读配置页的过程相同,如果模块不能读出,那么它所对应的文件的长度为0。

由于驱动器使用的是一次性编程ROM,所以不需要建立数据库保存ROM程序。

6.6.3 固件的转用

通过将先前保存的固件写入驱动器可以实现固件的转用。修复工具有两种转用固件的方法,分别是整体转用和独立模块转用。只有在驱动器大部分模块损坏时才有理由使用整体转用方法,但经常是如果适配数据模块损坏就不可能写入固件。当损坏模块较少时(例如ID=61h和ID=71h),只要从固件复本中写入相应模块就足够了。

执行从数据库提取固件命令并选择要写入的驱动器,所有模块和配置页将被写入驱动器固件区,写入过程按照写入之前从驱动器读取的驱动器模块的物理映射位置执行,如果由于某种原因造成没有输出映射或输出的映射不正确,那么前者将不能写入,而后者写入的位置会不正确,驱动器重启动时找不到它们。在写入时,无论是模块还是配置页,都没有机会选择写入的模块或配置页。

写配置页命令用于选择把配置页写入驱动器固件区或RAM中。执行此项操作前,屏幕上会显示“QU xx_MOD”子目录中全部可供写入的CP列表。用【Space】键选择需要的配置页,或者用“SELECT ALL”(选取全部)命令选择所有配置页,然后按下【Enter】键,就可以依据选择从“QU xx_MOD”子目录把所选配置页写入驱动器固件区或RAM中了。

写模块命令用于把模块写入固件区。在执行此项操作前,屏幕上会显示“QU xx_MOD”子目录中全部可供写入的程序模块列表,用【Space】键选择相应的模块,或者用“SELECT ALL”命令选择所有模块,然后按下【Enter】键,选择的模块就从“QU xx_MOD”子目录写入驱动器固件区了。

6.6.4 安全模式

Quantum驱动器主要控制将固件及其数据存储在驱动器盘片上,并在驱动器初始化时将它们加载到驱动器RAM中。当发生故障时(固件数据错误或模块不可读取),驱动器固件将不能启动,因而就不能访问磁盘表面(读或写)。这时,对任何ATA标准命令都将返回ABRT错误或错误的数据。

如果读取固件时出错,Quantum驱动器就自动进入保护模式(这与TM、ST、SE及更早属系需要设置跳线进入初始化安全模式不同)。这样的驱动器进入就绪状态后,可以通过加载LDR文件或使用热交换法来完成固件的初始化,从而进入可操作状态。

6.6.5 恢复固件数据

PC3000能够发现错误的固件功能。如果固件功能不正确,启动PC-3000AT后,驱动器将返回ABRT错误,即DSC、DRDY、ERR和ABRT灯亮,其余均灯不亮。

修复固件数据就是重写不正确(不能读出)的驱动器固件模块或其中不正确的数据。根据修复方法不同,驱动器模块可以再分成如下两类。

可以通过从其他驱动器写入修复的:包括可加载的代码overlay和与驱动器设置不相关的表,如包含S.M.A.R.T参数表的模块。

可以通过其内容生成修复的:包括缺陷表、译码表(有时组合在一个模块中)以及表面访问的适配数据表。

第一类模块的恢复方法非常简单,具体如下。

第1步 磁头离开启停区后,驱动器立即切换到安全模式,只要检测COM端口的输出信息,就能够确定是哪一个模块出错引起的问题。

第2步 通过“Load LDR file to drive RAM”命令将LDR文件加载到RAM,驱动器将发出类似重校准的声音,如果加载过程带错完成,那么很有可能是驱动器电路板故障或者1个或几个磁头的伺服域故障。

第3步 加载配置页CP#10,驱动器型号相同则效果较好。这一步是调整固件区每磁道扇区数所必需的。

第4步 检查固件数据结构,找出损坏的模块(checksum不正确或读取错误的模块)。只有1个复本不可读而其他复本可读且检验和正确的模块视为功能正常的模块。

第5步 从型号相同的驱动器写入正确的模块,以覆盖出错的模块。

注意:只有损坏的模块需要覆盖写入驱动器,其余正确的模块应保留不动。

有些模块不能使用上述方法进行处理,包括ID=0Eh模块、ID=65h模块、ID=08h模块和ID=61h模块。此外,如果将其他驱动器的ID=0Eh模块或ID=08h模块写入待修驱动器中,适配设置将被擦除,ID=0Eh模块或ID=08h模块也将被擦除,从而导致通过上述恢复机制将不能向固件区写入任何数据。

ID=65h模块是固件区缺陷表,而大多数常用模块中不会有隐藏的缺陷,因此从其他驱动器复制的成功概率非常高。

ID=08h模块包含所有的配置页,不可能通过写模块的方法进行写入操作,需要向固件区写入所有的CP配置页来进行恢复。

对译码表模块ID=61h,可以使用完整的ID=60h模块再生。再生时,缺陷列表能够输出并保存到一个*.qdt文件中,然后可以再使用输入缺陷表命令重写ID=61h模块。

注意:如果想保留工厂缺陷表,应该记住,对缺陷表的操作将自动清除工厂缺陷表。因此,在对缺陷表进行操作之前,应该输出ID=60h模块,或者直接把该模块保存到一个文件中,需要时再将其写回驱动器。

另外要注意:热交换操作可能导致转接器/前置放大器芯片失效。