3.5 Sparatan、Protégé、Caviar驱动器的修复(PC3000 v14)
本节介绍Sparatan、Protégé、Caviar属系驱动器的修复。
3.5.1 设计目的
PC3000 v14程序可以修理Western Digital生产的Arch-V架构的Spartan、Caviar、Protégé和Arch-VI架构的Caviar驱动器,包括WD xxxDA、WD xxxAB、WDxxxBB、WD xxxEB和WD xxxJB等属系,见表3-17。
表3-17 支持情况
3.5.2 基本操作
参见第3.2.2节。
3.5.3 准备工作
参见第3.2.3节。
检测程序有许多参数,建议初学者使用默认参数。
3.5.4 程序的使用
启动程序,屏幕上将显示工作模式选项,如图3-18所示。
图3-18 模式选择
“Standard mode”为标准模式。标准模式是常规操作模式,在驱动器能够初始化时使用。“Safe mode”为安全模式,提供对PCB的单独操作。当跳线同时设置成CS、SLAVE和MASTER 3种模式时,驱动器进入安全模式。
同样为了方便叙述,这里也将对标准模式和安全模式的介绍向上提一级。
3.5.5 标准模式
在标准模式下,与早期版本不同,程序启动时并不检查所连接的驱动器属于哪个属系,取而代之的是依据所选择的程序显示一个入口菜单(Spartan、Protégé或Caviar)。操作者必须自行检查所连接的驱动器的型号。按下【Enter】键,将强制读取驱动器的配置模块,并显示操作模式主菜单,如图3-19所示。
图3-19 主菜单
1.固件区
固件区用于格式化和测试驱动器服务区、查看和检查固件结构、完全重写固件、重新配置驱动器等操作。选择此模式后的子菜单如图3-20所示,各项意义如下。
图3-20 固件区操作子菜单
Work with ROM:ROM操作。
Operations with firmware zone:固件区操作。
Work with translator:译码表操作。
Spindle stop:主轴停转。
Time scale modification:更改响应时间。
· ROM操作
ROM操作可用于查看、读、写驱动器ROM,还可以实现软件停用/启用磁头,其菜单如图3-21所示。
图3-21 ROM操作子菜单
Viewing ROM information:查看ROM信息。执行该命令将在屏幕上显示固件版本、ROM版本(可能是属系代码)、链表版本、支持的型号列表以及磁头映射信息,查看结果如图3-22所示。这些信息对更换PCB时判断ROM的兼容性非常有用。
图3-22 查看ROM信息
Changing heads map in ROM:改变ROM中的磁头映射(WD Spartan属系没有这一项)。用于通过软件方法停用或启用先应前停用的磁头。选定此命令后,光标定位在改变当前磁头映射方式上,有“by mapping”(按映射)和“by default”(按默认)两个选项,可按【Space】键切换。
当选择磁头映射方式为“by default”(按默认)时,HDD的磁头映射将根据初始化时探测到的磁头与前置放大器/转换器的连接情况来设置。当选择磁头映射方式为“by mapping”(按映射)时,将禁止使用轮流测试得到的实际磁头映射关系,而是使用ROM中的映射数据。这种情况下必须指定“Full heads amount”(完整映射磁头数,也就是最大磁头数)参数,例如此系列驱动器允许的最大磁头数(通常是6)。接下来就可以使用【Space】键选择停用或启用相应磁头。按【Enter】键可以使高亮度矩形选择框移向下一个磁头。完成这些操作后,程序会提供是将这些更改生成ROM文件还是直接写入Flash ROM中的选项。
如果定义驱动器的这个标志为“by default”,而在此之前选择的磁头映射方式是“by mapping”,那么最大磁头数和激活磁头数就会为0,所有的磁头都被配置成禁止使用,如图3-23所示。这时应该先设置最大磁头数为6(即等于该系列驱动器的最大磁头数),并根据建议启用相应磁头,例如对于两个磁头的型号启用0和1。如果配置后驱动器发出敲盘声,说明磁头配置有误,需要在安全模式下尝试选择另外两个磁头,如1和2。
图3-23 改变ROM中的磁头映射
Read ROM:读ROM。用于将ROM中的内容读出后保存在*.bin文件中。进行此项操作需要输入文件名,但不需要输入扩展名,读出的文件保存在PC3000的当前目录下。
Write ROM:写ROM。用于把文件中的内容写入ROM(只有使用Flash ROM的驱动器才可进行此项操作)。操作过程中先要选择加载器(61h模块或扩展名为*.lmc的外部引导程序),然后选择要写入的*.bin文件(必须位于PC3000目录下)。文件选定后开始实际写入过程。写ROM的详细描述请参考第3.5.10节。
· 固件区操作
固件区操作可用于对驱动器固件区-10柱面~-1柱面、磁头0~磁头1进行操作,其子菜单如图3-24所示。
图3-24 固件区操作子菜单
Disc firmware surface test:驱动器固件表面测试。该命令用于启动一个检测驱动器固件区(-10柱面~-1柱面,磁头0~磁头1)缺陷的过程,检测到的缺陷将显示在屏幕上。固件区没有缺陷,驱动器才能正常工作。但是,PC3000目前还不能重定位固件区检测到的缺陷,开发者们正在不断努力以实现这一功能。
Disc firmware structure test:驱动器固件结构测试。执行该命令可在屏幕上显示一个固件模块列表。这个命令与之前的命令相似,这里简要说明一下它的新特性。首先,程序在列出模块目录时,给出了一个实际代表驱动器固件存储在磁盘上的那一部分固件的版本号。同时,在报告中还增加了两个新的数据表,分别是DCM信息和VER信息(WD Spartan属系没有这两个表)。实际上,它们是由程序输出的包括特定ASCII信息的日志,DCM信息存储在C5H模块,VER信息存储在4EH模块。
✧ DCM信息:用处目前还不清楚,可能在将来通过更换磁头组件恢复数据时选择的匹配的施主驱动器会使用它(参见第3.5.7节“磁头组件HA的兼容”部分的介绍)。
✧ VER信息:包含ROM版本、链表版本和驱动器固件版本。这些信息对选择匹配的PCB非常有用。
程序输出的C5H模块、4EH模块的DCM信息和VER信息是可选的,并被记录在日志中,因此这些表中有信息缺失或垃圾信息的情况出现并不代表驱动器存在故障。
“Disc firmware structure test”命令的输出结果示例如图3-25所示,其内容包括磁道目录、区表、扇区配置、P-List、G-List、固件模块等,可以保存到文件中。
图3-25 “Disc firmware structure test”命令的输出结果
Disc firmware data read/write:读/写驱动器固件数据。该命令可从*.rsc资源文件写入固件数据映象(-1磁道~-8磁道,但不含-7磁道),或将固件数据映象读出到*.rsc资源文件。PC3000从区域分配表中获取固件区使用的扇区数,如果区域分配表不能读取,必须在程序启动时手工输入此型号驱动器固件区每磁道的扇区数。此命令的使用和之前介绍的驱动器相同,这里不再详述。但要注意,固件区占用-1柱面~-32柱面,但是程序保存的是-1柱面~-8柱面(不包括-7柱面),因为开发者相信这些已经足够使用了。同时,程序在将固件区写入资源文件时,也保存了这些磁道的空闲空间,并在写入时将这些空闲空间一并写回固件区。但几乎可以肯定的是,驱动器被更改了,因为不是全部固件数据都被读取和写入。该操作项的子菜单如图3-26所示,含义如下。
图3-26 读/写驱动器固件数据
✧ Write FW to the DISK:将数据库中的固件写入驱动器。
✧ Add FW to the DATABASE:增加固件到数据库。
✧ Remove FW from the DATABASE:删除数据库中的固件。
Read modules:读模块,用于将磁盘服务区的固件模块读出并保存至“WD xxxMOD”模块目录。“xxx”的含义为:“DA_”代表WD Spartan, “EB_”代表WD Protégé, “ABJ”代表WD Caviar。读出的模块命名为“~id xx.rpm”,其中“xx”表示模块标识,例如~id20.rpm代表译码表模块20h。在执行读模块命令之前,屏幕上会显示一个可读模块列表。从中选择需要读取的模块或者全部模块,后者会将所有模块保存到“WDxxxMOD”目录下。如果该目录下已经有同名文件,将直接覆盖而不进行提示。但不是固件区的所有模块都在模块目录中有所指示,只有驱动器工作所必需的模块才会被记录在模块目录中。一些辅助模块,如SelfScan(自检)、SelfScan result(自检结果)等,可能包含在模块目录中。因此,如果要完整地保存固件,建议使用前述的读/写驱动器固件数据命令。该方式采用读/写固件数据映象的方式,可以得到相对完整的固件数据。
Write modules:写模块。与读模块类似,该命令可将“WD xxxMOD”目录下的模块写入固件区。在操作之前会显示一个列表,其中包括可以获取的“WD xxxMOD”目录下的所有模块。可以选择需要的模块或者全部模块,后者将把“WDxxxMOD”目录下的所有模块都写入固件区。最后,对每个模块写入重新计算得到的校验和。由于程序在写之前不检查模块结构,因此必须十分注意,以免造成不可挽救的损坏。
Read Service Area tracks / Write Service Area tracks:读服务区磁道/写服务区磁道,提供了对驱动器服务区的其他操作方式。
Erase Service Area:擦除服务区。该命令使用磁头0和磁头1将服务区的所有扇区写成“7777H”,服务区中的所有数据将被删除。在执行这一命令之前可以输入起始柱面和结束柱面,默认数值从区域分配表中读出(-32~-1),如图3-27所示。当服务区含有垃圾数据致使驱动器不能正常工作时可以使用这一命令进行处理。执行该命令将清除服务区中的所有信息,因此必须预先保存固件数据模块或固件区映象。
图3-27 选择范围
Change Serice area SPT:更改服务区每磁道扇区数SPT。该命令用于定义对服务区操作时每磁道的扇区数(-32柱面~-1柱面),默认值来自区域分配表,允许的最大值是1 361。在读区域分配表返回无效信息时(负值、垃圾数据或错误),必须改变SPT值,并明确给出每磁道使用的扇区数。固件区的SPT值可以通过运行驱动器固件区表面测试命令获取。进行驱动器固件区表面测试时,扇区数从1开始递增。在固件区所有柱面上产生连续错误的值就是其最大值。
Security subsystem:安全子系统,用于查看和设置驱动器的主密码和用户密码。
· 译码表操作
译码表操作可根据P-List和(或)G-List重新生成译码表模块20h和25h。当20h模块和(或)25h模块损坏时需要执行这一命令。
· 主轴停转
主轴停转操作表示发出休眠命令,用于热交换操作。
· 更改响应时间
更改响应时间的方法与早期属系相同。
2.驱动器类型
驱动器类型用于在屏幕上显示驱动器信息,无法显示的ASCII字符用空格代替。驱动器描述的逻辑结构参数和序列号可以更改。在需要更改型号名称时,应该首先按【Space】键,设置参数“MODEL FROM ROM”为“NO”,然后按【ENTER】键输入参数或继续进行下一个参数的修改。如果不想将所做修改写入驱动器类型区,可按【Esc】键退出。
其他操作项与早期属系的驱动器一致。
3.5.6 安全模式
安全模式提供对驱动器的有限特性的访问能力。在安全模式下可以不需要通过HDA单独对PCB进行测试,不过在将驱动器转换至安全模式后要将PCB保留在HDA上。进入安全模式的方法是同时设置跳线为CS、SLAVE、MASTER 3种模式然后加电。在安全模式下,驱动器的状态寄存器不处理D6位(DRDY)和D4位(DSC)。进入此模式后显示的菜单及含义如下。
PCB testing:PCB测试。
Work with ROM:对ROM操作,包括读、写和查看驱动器ROM。
Viewing ROM information、Changing heads map in ROM、Reading ROM、Writing ROM:与标准模式下的含义相同。
PCB test:PCB测试,用于对PCB的部分部件进行测试,即扇区缓存测试(Sector Buffer Test)和初始化时的内部自诊断(Self-Diagnostic)。
3.5.7 技术简述
WD Arch-V架构的Spartan、Caviar、Protégé属系和Arch-VI架构的Caviar属系驱动器的电路板外观图分别如图3-28、图3-29、图3-30和图3-31所示。
图3-28 Spartan属系驱动器PCB外观
图3-29 Protégé属系驱动器PCB外观
图3-30 Arch-V架构Caviar属系驱动器PCB外观
图3-31 Arch-VI架构Caviar属系驱动器PCB外观
1.驱动器固件结构
WD驱动器的固件包括存储在ROM中的微程序、配置链表和存储在驱动器服务区(驱动器固件)中可加载的部分固件和数据。固件的特性由其修订号(F/W Rev,固件修订号)进行区分。修订号定义了固件的开发过程和兼容性。一个典型的固件结构如表3-18所示。
表3-18 典型固件结构
可以通过“Viewing ROM information”(查看ROM信息)命令得到微代码的版本和ROM链表的版本。可加载固件部分(Disk F/W,驱动器固件)的版本可以通过在标准模式下运行驱动器固件结构测试命令得到。模块目录中显示的版本号就是驱动器固件的版本号。
运行“Identify DRV”(识别驱动器)命令,将在固件版本行显示驱动器的固件版本号。查看驱动器类型时,会显示由驱动器固件版本的3个部分所形成的集合值,示例如下。
ROM firmware:06.40G ROM links table:04.27 DISK F/W:06.C0G
以上信息会被组织成“06.04G06”。在这个例子中,版本号由各部分固件版本号的首字节组成,其中的字母来自ROM微代码版本号。如果在安全模式下读取微程序版本,则驱动器固件部分的版本号就会丢失,因为在安全模式下对驱动器固件的所有操作都是无法进行的。
2.电路板的兼容
与以前属系的WD驱动器不同,Spartan、Caviar和Protégé属系驱动器的ROM芯片标签上不再标明固件代码,这使替换PCB时的选择变得相当复杂。更“过分”的是,WD驱动器不再严格区分Caviar和Protégé商标,不同名字的驱动器常常是完全相同的或兼容的。另外还要注意的是头盘组件,特别是PCB的结构特性,也就是PCB马达连接器附近的装配孔的位置。在有些PCB上,它位于连接器的中心线上,而在有些PCB上,它却又偏离中心线。这一点可从图3-27、图3-28、图3-29和图3-30中看出。
下面提供一些判断PCB是否兼容的有用的标准,见表3-19。
表3-19 部分驱动器的属系代码
首先,这里的属系代码是由位于HDA标签的MDL行表示的。其次,注意ROM的固件版本号和链表版本号(可以通过在安全模式下运行查看ROM信息命令来查看)。第三,要注意磁头映射关系(也可以在查看ROM信息时显示出来,包括使用的或关闭的磁头)。如果驱动器发出敲击声,很可能是由于更换了兼容的PCB而磁头映射发生错误造成的。
3.磁头组件的兼容(加电时发出敲击声)
磁头组件(Head Assembly, HA)很容易损坏。如果前置放大器/转接器顺序错乱(更常出现的是磁阻磁头故障),就需要更换HA。在这种情况下,驱动器加电后会因磁头敲击限位器而发出敲击声。发生此类故障的驱动器可以通过关闭故障磁头来修复(如果磁头没有划伤磁盘片),虽然驱动器的容量会减小,不过还是可以正常使用。如果驱动器的修复是次要的,而驱动器上的数据非常重要,必须恢复,那么只有一种方法——从同型号的驱动器上更换损坏的HA。
从Arch-V架构(Spartan、Caviar和Protégé属系)开始,WD驱动器的HA的可更换性变得混乱起来。相似型号(MDL行的标志码相同)的驱动器可能使用不同数量的磁头,或者磁头位于不同的位置。根据笔者的观察和研究,HDA标签上的DCM行包含的信息对判断兼容性非常有价值,如图3-31所示。如果HA中使用了相同的前置放大器/转换器,那么至少DCM行靠近尾部的字符是匹配的(见图3-32中的数字“2”)。推荐用MDL行完全匹配、DCM行最后2~3个字符/数字匹配以及生产日期最接近的施主驱动器(提供好的HA用于更换的驱动器)的HA进行替换。
图3-32 WD驱动器的标签
查看固件区结构时程序输出的DCM信息是特定驱动器的DCM信息,但是对于选择施主驱动器而言,这些信息还是不够清楚和明确。这些信息可能在将来派上用场。
4.可加载部分的固件结构
WD驱动器有32个服务柱面(-32柱面~-1柱面),用于存储分别位于磁头0和磁头1的固件的两份复本,不过实际只使用了前8个柱面(-1柱面~-8柱面)来存储固件模块。固件数据保存成独立的模块表,这些模块表共同组成驱动器的控制和操作系统,通过包含每个模块的地址、标识和长度的模块目录来完成对模块的导航。每个模块都有一个标准头,标准头中按顺序包含日期、校验、标识、版本号和以扇区为单位的模块长度。主要的驱动器固件模块如表3-20所示。
表3-20 主要的驱动器固件模块
5.与数据相关的关键模块
对Spartan、Caviar和Protégé属系的驱动器来说,译码表模块(20h~25h)和适配参数模块(46h~49h)对数据完整性而言是传统上的不可缺少的关键模块。可能还有其他重要模块,但是目前还没有研究清楚。此外,适配参数模块的重要程度和原始适配参数模块损坏后的替换方法也仍是未知数。
如果译码表模块损坏,可以基于P-List和(或)G-List重新计算,然后覆盖它们。
6.Caviar和Protégé属系驱动器Flash ROM的数据结构
与之前属系的驱动器不同,WD Caviar和Protégé属系的驱动器使用了并行Flash ROM,最明显的一点是出现了一个磁头表。之前属系的驱动器(如Spartan、WDxxxAA等)没有此表。
表3-21给出了并行Flash ROM的结构。更新属系的驱动器使用的串行Flash ROM,其数据结构也有变化。
表3-21 并行Flash ROM数据结构
ROM数据包括可执行的微处理器代码和跳转表在内的各种表,它们没有固定的地址,位置随ROM版本的不同而变化,因此对它们进行索引是很困难的,只能根据关键字和偏移量来搜索。
7.更改驱动器配置,用软件方法关闭磁头
加电后,驱动器在初始化过程中将自己配置成属系中的特定型号。从Protégé和Caviar属系开始,WD使用了新的调整MHA类型的运算法则。它们在ROM(从地址1FFD0h开始)里写入磁头映射数据,包括总磁头数和激活的磁头。磁头映射占用1字节,作为微处理器是根据实际检测到的磁头进行配置还是根据ROM里的映射数据进行配置的一个转换标志使用。驱动器初始化时,微处理器在检测完磁头后读取磁头映射字节,如果没有设置标志,处理器就使用MHA检测返回的信息,如果设置了标志,就使用ROM里设置的磁头映射关系。然后,驱动器将自己配置为特定的型号,并读取驱动器固件数据。
可以利用这一机制使用软件方法来停用磁头或启用以前停用的磁头。由于驱动器厂商经常停用一些驱动器的磁头然后将其出售,所以我们完全可以通过软件方法将停用的磁头启用,而且驱动器的功能绝对完全正常。不过,当磁头损坏或者HDA中包含这种停用的磁头时,也需要调整PCB以适应HDA。
注意,如果以前磁头映射使用的是默认方式,在将驱动器的标志设置为“by mapping”时,磁头总数和活动磁头数会变为0,所有的磁头都会被配置为停用。这时可以设置“Full heads amount”(全部配置磁头数)的值为6(此系列驱动器支持的最大磁头数),然后启用磁头0和磁头1(对应于使用的两个磁头的型号)。如果驱动器发出敲击声,说明启用的磁头不正确,可以尝试选择启用另外两个磁头(如磁头1和磁头2或磁头2和磁头3)。此外,还可以逐个磁头进行尝试,以设定所有可用磁头。
如果在修改磁头映射后驱动器发出敲击声,说明进行了错误的操作。这时应该切换到安全模式,恢复原始ROM数据——要永远记住,是在修改磁头映射之前保存的原始ROM数据。
3.5.8 用软件方法修复驱动器
用软件方法修复驱动器的操作步骤应根据待修驱动器的状况确定,可能需要进行一些特定的操作。如果驱动器加电后马达不转或者转了又停,可能是由电路板故障造成的,需要修理电路板。如果驱动器启动马达时发出单调的敲击限位器的声音,表明驱动器的伺服系统有故障,可能由以下原因引起。
电路板的ROM版本与盘体不兼容。
磁头映射错误。
盘体内磁头组件的前置放大器/转换器芯片故障。
磁头组件自身故障。
伺服数据严重损坏或者磁盘盘片组遭到撞击后发生移位(通常马达运转时噪音增加和盘体振动表明驱动器遭到撞击)。
除上述第一项和第二项外,由其他原因引起的故障是不能通过软件方法修复的。
如果加电后电机启动,释放磁头,但是进入PC-3000AT程序时产生ABRT(04H)错误,或者读取磁盘表面时不断出错,或者花费很长时间才报告就绪,则说明驱动器不能从磁盘中读取固件数据,可能由以下问题引起。
数据读取/转换通道故障。
固件模块损坏。
记录在电路板ROM中的固件代码与驱动器固件区的固件版本不兼容。
在这种情况下,首先要确保电路板正常(最好更换电路板)以及ROM和驱动器固件版本兼容,然后从以下第1步开始恢复固件数据。如果加电后驱动器能够初始化和重校准,且可以读取驱动器类型,但测试时出现坏扇区,则从以下第2步开始恢复。
第1步 恢复固件数据(FW),操作步骤如下。
a.执行固件结构测试以确定损坏的模块。如果只是部分模块损坏,其他模块正常,可按照第3.5.9节介绍的方法覆写损坏的模块。
b.如果多数模块损坏,可选择驱动器固件区菜单,运行驱动器固件区表面测试命令,以确定固件区没有需要考虑的损坏。如果需要,应先通过读模块或创建固件区映象保存模块,然后清除固件区的内容。
c.选择读/写驱动器固件数据命令和将固件写入磁盘命令,遵守微处理器微代码版本的兼容性原则,将兼容的固件数据写入驱动器。成功写入固件后重启驱动器。
d.如有必要,更正驱动器逻辑参数。
第2步 清空G-List,复位S.M.A.R.T。如果执行了关闭磁头操作,或者向磁盘写入了外部固件数据,或者从其他驱动器复制了P-List,还必须清除P-List。
第3步 根据P-List进行低级格式化,这一步应该成功完成。如果格式化出错结束,则某个磁盘的表面伺服信息可能损坏,可以通过归并缺陷磁道或者隔离缺陷过多的柱面的方法修复。
第4步 执行逻辑结构扫描,命令以LBA寻址方式进行。磁盘表面扫描完成后,会在屏幕上输出LBA格式的逻辑缺陷列表。按【Enter】键将逻辑缺陷转换成物理地址并添加至G-List。
第5步 根据第3步和第4步的结果,得出是否需要隔离缺陷磁面的结论。如果关闭了缺陷表面,必须从第2步开始重新修复驱动器。
第6步 使用P-List和G-List进行低级格式化。
第7步 若有必要,将磁盘序列号重新写入磁盘类型域。
第8步 运行PC-3000AT综合测试,检测到错误时重复第3步~第6步或者运行通用缺陷重定位工具。
第9步 再次运行PC-3000AT综合测试,确保驱动器功能正常。
3.5.9 修复固件模块
固件模块损坏是最常遇到的问题。此类故障的表现是:马达启动,但是经过很长时间(超过1分钟)才报告就绪,对任何命令都给出ABRT错误。
诊断这种故障需要依次运行驱动器固件区、驱动器固件区、驱动器固件结构测试命令,检查固件模块表中哪些模块已经损坏。模块20h、21h、25h(译码表)和2Ah、2Dh(S.M.A.R.T)等是最容易损坏的模块。
恢复固件模块和重建译码表的具体操作与其他属系完全一致。
3.5.10 重写Flash ROM
Spartan、Caviar和Protégé驱动器使用了Flash ROM(尽管某些型号使用了一次性写入芯片),它们可以在普通模式(驱动器报告就绪后)或者安全模式下(在分离的PCB上)被重写。只有覆盖写入ROM是可行的,因为安全模式是在ROM中的固件程序的控制下实现的一种软件模式。如果ROM中的部分数据损坏或者被擦除,那么在电路板上覆写ROM芯片的内容是不可能实现的,这时就不得不把ROM芯片拆焊下来,用编程器写入后再焊上。
在标准模式下重写Flash ROM,首先需要驱动器报告就绪并读出固件数据(至少可以读取一份复本),然后依次选择固件区、ROM操作、写ROM命令,之后将显示如下菜单。
Drive module 61h:驱动器模块61h。
External *.LMC module:外部*.LMC模块。
如果选择第一项,程序将使用从磁盘服务区复制的本地61h模块进行ROM操作,它是包含ROM类型识别、擦除和写入子例程的最正确的选择。如果选择第二项,程序将使用与61h模块并没有任何区别的外部*.lmc可加载程序进行ROM操作,它是先前从正常的驱动器中复制出来并存储为*.lmc文件的61h模块(这样做是很有必要的,例如从本地复制的61h模块可能损坏或者根本复制不了该模块)。
在安全模式下擦写ROM,只需要对PCB进行操作(不需要使用HDA)。进入安全模式的方法是通过将跳线同时设置为CS、SLAVE、MASTER 3种模式后打开电源开关。依次选择安全模式、ROM操作、写ROM命令,将显示如下菜单。
Select an *.lmc loader file:选择*.lmc可加载文件。
选择相应的可加载程序文件供程序使用,如spartan.lmc(Spartan属系)、Protege.lmc(Protégé属系)或者caviar.lmc(Caviar属系)。
有可能存在这样的情形:厂商更改了PCB上使用的Flash ROM的类型,而提供的引导程序不支持此种Flash ROM,致使在安全模式下不能重写ROM。这时可以从同一属系中选择支持该ROM类型的驱动器将61h模块读出,将其存储为*.lmc文件,然后再次尝试覆写ROM。选择好可加载程序后,还需要选择包含ROM固件数据的*.bin文件。可加载程序和ROM固件数据文件应位于PC3000的当前目录下。
写完ROM后需要读出ROM进行比较。
为了创建外部引导程序文件,应从拥有所需Flash ROM芯片类型的正常的驱动器中复制~id61.rpm模块,将其扩展名更改为可接受的引导微代码。
PC3000标准包中附带的各属系驱动器的相应引导程序见表3-22。
表3-22 PC3000包中附带的引导程序
3.5.11 命令树
为方便使用,将WD驱动器标准模式命令归纳为如表3-23所示的命令树,以供查阅。
表3-23 WD驱动器标准模式命令树
3.5.12 电路
Spartan、Protégé、Caviar Arch-V和Caviar Arch-VI驱动器使用了不同的电路板和电路图,但是PCB上的标签元素大多是匹配的,这有助于我们分析基本电路(即使并不是完全匹配)。
1.电源电路
要诊断驱动器故障电路板,第一件要做的事就是检查所有的电源电路(参见本节“电路图”部分)。Spartan、Protégé和Caviar驱动器使用6种电压,分别是+12V、+5V(由PC电源供给)、+3.3V、+2.6V(由U6 IRU1329SC稳压芯片产生)、+1.8V(由U7芯片产生,由外部调整器Q4控制)和-5V(为前置放大器/转接器供电,由ST755直流-直流电源转换器的U8芯片产生)。在采用Arch-VI架构的Caviar驱动器中,-5V电压由FG2M芯片产生,由外部调整器Q3实现转换。可直接检查J1的4脚和2脚是否分别为+5V和-5V。稳压芯片损坏、三极管电压调整管损坏或者电压控制回路损坏都会引起电压故障。另外,要检查过滤电感L2、L4、L5和L6,它们损坏后也会引起电压问题。
可以使用数字毫伏表和示波器测量电源电压。毫伏表用于检查电压,示波器用于检查脉冲。
2.马达控制和定位电路
WD驱动器使用L6278 1.2或L6278AC/AH芯片作为马达控制电路。这两种芯片有不同的封装和引脚,所以尽管功能相同却并不兼容。芯片使用+12V、+5V和+3.3V 3种电压,由软件通过串行总线控制。驱动器的微处理器使用SHUT-DOWN线发送信号,以激活马达控制芯片、-5V电压转换电路和读通道芯片。加电、系统重置、微控制器初始化时,SHUT-DOWN线必须维持高电平“1”,同时,马达会被加上12V的相位切换脉冲。如果此时将PCB与HDA的连接断开,可以观察到L6278的三相输出为6V和12V方波。“中点”的静态电压为6V(相位切换瞬间会出现尖峰脉冲)。
注意,在安全模式下驱动器马达不会启动,因此需要在普通模式下测试马达控制芯片。如果L6278芯片损坏,会有过热或者其他征兆。在更换之前,应该先检查输入电压和负载D1、D2。可以用欧姆表测量马达线圈的电阻(应该为2.2Ω)。
3.数据读取通道
数据读取通道使用的是WD生产的50G6474芯片。此芯片非常稳定,实践证明很少损坏。检测该芯片时需要检查3.3V输入电压和电压调整管Q4的输出电压是否为1.8V,并检查Y1晶振。
4.电路图