硬盘固件级数据恢复 - 文曲经典数字图书馆

322

Transcript of 硬盘固件级数据恢复 - 文曲经典数字图书馆

深度剖析 ——硬盘固件级数据恢复

刘永刚 袁建国 刘思波 等编著

内 容 简 介

本书是为数据恢复爱好者撰写的一本参考书。作者根据长期的实际工作经验,对于带有固件故障的

硬盘,如何进行数据恢复进行了深度剖析,其内容包括各个硬盘系列的固件结构及特点、故障分析、案

例讲解,以及相应工具的使用介绍。内容丰富、通俗易懂、实用性和可操作性较强,读者通过对本书的

学习,可以很快的了解和掌握一些硬盘固件级数据恢复的思路和技能,迅速成为本专业的行家里手。

未经许可,不得以任何方式复制或抄袭本书之部分或全部内容。 版权所有,侵权必究。 图书在版编目(CIP)数据

深度剖析:硬盘固件级数据恢复 / 刘永刚等编著.—北京:电子工业出版社,2013.1 ISBN 978-7-121-19164-0

Ⅰ. ①深… Ⅱ. ①刘… Ⅲ. ①硬磁盘-维修 Ⅳ.①TP333.307

中国版本图书馆 CIP 数据核字(2012)第 293254 号

策划编辑: 祁玉芹

责任编辑: 鄂卫华

印 刷: 三河市鑫金马印装有限公司

装 订: 三河市鑫金马印装有限公司

出版发行: 电子工业出版社

北京市海淀区万寿路 173 信箱 邮编 100036

开 本: 787×1092 1/16 印张:20 字数:487 千字

印 次: 2013 年 1 月第 1 次印刷

定 价: 39.80 元

凡所购买电子工业出版社图书有缺损问题,请向购买书店调换。若书店售缺,请与本社发行部联系,

联系及邮购电话:(010)88254888。

质量投诉请发邮件至 [email protected],盗版侵权举报请发邮件至 [email protected]

服务热线:(010)88258888。

·iii·

前 言

计算机的出现把人们从重复、繁琐的工作中解脱出来,现代社会各行各业都离不开计

算机,我们的思想、作品、设计、功课、方案及文档都存储在计算机硬盘(或称作磁盘)

里,硬盘的记忆辅助了人脑的记忆,帮助我们使记忆成为永恒。

随着微电子、机械、制造技术和工艺的不断进步,磁盘的容量越来越大,读写速度越

来越快,体积越来越小,样式也越来越多。人们希望不断提升计算机的性能,其中一项重

要指标就是升级或扩充硬盘容量。任何事物都有两面性,在使用计算机并从中收益的同时,

计算机也给我们带来一些问题。由于硬盘使用量的总体上升,再加上外在或硬盘内部的原

因,硬盘故障台次呈逐年上升趋势,从而直接影响到其中的数据安全。有道是,硬盘有价,

数据无价,人们不禁要问,硬盘坏了,存储到其中的数据怎么办?能否被得以抢救?所以,

数据恢复技术就应运而生。

近些年来,数据恢复行业异军突起,门面林立,各类资料也琳琅满目,但由于种种原

因,对固件级硬盘数据恢复知识涉及较少,或者是浅尝辄止。本书从各类硬盘系列的固件

结构入手,介绍了每个硬盘系列固件故障特点及其原因分析,并列举了一些故障案例,等

等。使读者能够由浅入深的了解硬盘固件知识和相关的故障处理。

全书分为三大部,第一部分是第 1 章,介绍硬盘硬件结构的基础知识、以及各硬盘系

列基本情况、硬盘固件的基础知识。第二部分包括第 2 章~第 8 章,介绍了各硬盘系列的

基础知识、固件结构特点、固件模块、固件故障表现方式、处理方法、案例分析。第三部

分包括第 9 章~第 12 章,介绍了硬盘固件级维修的一些工具、硬盘固件修复的一般方法,

以及一些硬盘系列典型故障的修复方法及案例分析。

·iv·

本书适合于从事数据恢复的工作人员、数据恢复的爱好者,也可以作为数据恢复的专

业教材。希望经过我们的努力,帮助大家更多地了解各硬盘系列的固件知识及其结构特点,

更好地使用电脑和硬盘,更有效地保护好硬盘中存储的数据。在硬盘出现固件故障或数据

丢失时,能够找到合理的解决方法并能挽救自己的数据。

·v·

Contents

目 录

第 1章 硬盘基础知识 ...................................................................................1

1.1 硬盘系列 ...................................................................................................................... 1

1.1.1 希捷硬盘 ........................................................................................................... 1

1.1.2 日立硬盘 ........................................................................................................... 1

1.1.3 迈拓硬盘 ........................................................................................................... 1

1.1.4 西部数据硬盘 ................................................................................................... 2

1.1.5 三星硬盘 ........................................................................................................... 2

1.1.6 富士通硬盘 ....................................................................................................... 2

1.1.7 东芝硬盘 ........................................................................................................... 2

1.2 硬盘物理结构 .............................................................................................................. 3

1.2.1 硬盘外部结构 ................................................................................................... 3

1.2.2 硬盘内部结构 ................................................................................................... 5

1.3 硬盘固件 ...................................................................................................................... 7

1.3.1 硬盘固件概念 ................................................................................................... 7

1.3.2 硬盘固件结构 ................................................................................................... 8

1.3.3 S.M.A.R.T.技术简介 ........................................................................................ 9

第 2章 迈拓硬盘固件特点及其故障分析...................................................... 11

2.1 迈拓硬盘基础知识 .................................................................................................... 11

2.1.1 迈拓硬盘简介 ................................................................................................. 11

2.1.2 星钻与美钻系列 ............................................................................................. 11

2.1.3 金钻系列 ......................................................................................................... 11

2.1.4 DiamondMax家族 .......................................................................................... 12

2.1.5 Atlas家族 ....................................................................................................... 13

2.2 Maxtor硬盘编号介绍识别方法 ............................................................................... 13

2.3 迈拓硬盘的跳线设置 ................................................................................................ 14

2.4 迈拓硬盘固件结构及模块 ........................................................................................ 15

2.4.1 固件版本定义 ................................................................................................. 15

2.4.2 固件区(Service Area)模块 ........................................................................ 16

2.4.3 适配数据(Adaptive Data) .......................................................................... 21

2.4.4 备用固件区(Alternate Service Area)......................................................... 21

2.4.5 译码器(Translator)..................................................................................... 22

2.5 迈拓硬盘固件故障分析 ............................................................................................ 22

2.5.1 迈拓硬盘的启动状态 ..................................................................................... 23

·vi·

Contents

2.5.2 迈拓硬盘启动失败的原因分析 ..................................................................... 23

2.6 迈拓硬盘维修案例 .................................................................................................... 30

2.6.1 迈拓硬盘的 LDR备份 ................................................................................... 30

2.6.2 迈拓硬盘的固件备份 ..................................................................................... 34

2.6.3 刷写迈拓硬盘固件 ......................................................................................... 37

第 3章 三星硬盘固件特点及其故障分析......................................................45

3.1 三星硬盘基础知识 .................................................................................................... 45

3.1.1 三星硬盘命名规则 ......................................................................................... 45

3.2 三星硬盘固件结构及模块 ........................................................................................ 48

3.2.1 固件结构特点 ................................................................................................. 48

3.2.2 硬盘空间组织 ................................................................................................. 49

3.2.3 固件区模块 ..................................................................................................... 51

3.2.4 译码器模块 ..................................................................................................... 55

3.2.5 扇区缺陷表 ..................................................................................................... 55

3.2.6 S.M.A.R.T表 .................................................................................................. 57

3.3 三星硬盘终端命令 .................................................................................................... 57

3.4 Burn Test .................................................................................................................... 58

3.4.1 选择必要的资源 ............................................................................................. 58

3.4.2 加载与执行测试 ............................................................................................. 59

3.4.3 使用 HT代码检测固件区与磁头映射图的修改 .......................................... 60

3.5 三星硬盘固件故障表现及分析 ................................................................................ 61

3.5.1 ROM模块故障 ............................................................................................... 61

3.5.2 固件区模块损坏故障 ..................................................................................... 61

3.5.3 SMART模块故障 .......................................................................................... 61

3.5.4 密码保护故障 ................................................................................................. 61

3.6 三星硬盘固件维修案例 ............................................................................................ 62

3.6.1 备件磁头与固件区不兼容 ............................................................................. 62

3.6.2 SMART出错实例 .......................................................................................... 65

第 4章 希捷硬盘固件特点及其故障分析......................................................69

4.1 希捷硬盘基础知识 .................................................................................................... 69

4.1.1 希捷硬盘的编号 ............................................................................................. 69

4.1.2 Barracuda系列................................................................................................ 70

4.1.3 希捷 U系列 .................................................................................................... 72

4.2 希捷硬盘固件结构及模块 ........................................................................................ 73

4.2.1 装配 Parallel flash的硬盘固件结构 .............................................................. 73

4.2.2 装配串行 Serial Flash的希捷硬盘固件结构 ................................................ 74

4.3 工作模式:Normal mode,Safe mode ........................................................................ 76

4.4 终端模式:COM,ATA........................................................................................... 77

4.4.1 COM和 ATA终端模式间的转换 ................................................................. 77

·vii·

Contents

4.5 希捷硬盘各级指令 .................................................................................................... 78

4.5.1 在线命令 ......................................................................................................... 79

4.5.2 公共命令(除 8级别以外的所有等级都可以使用) ................................. 82

4.5.3 T级(0级),主要测试级........................................................................... 82

4.5.4 level F启动代码 ............................................................................................. 84

4.5.5 level 1内存管理 ............................................................................................. 85

4.5.6 level 2物理参数操作 ..................................................................................... 86

4.5.7 level 7适配数据操作 ..................................................................................... 86

4.6 希捷硬盘固件故障表现及分析 ................................................................................ 87

4.6.1 希捷硬盘常见的硬件故障 ............................................................................. 87

4.6.2 固件故障的处理 ............................................................................................. 88

4.7 希捷硬盘维修案例 .................................................................................................... 96

4.7.1 用指令方式维修希捷硬盘 ............................................................................. 96

4.7.2 希捷硬盘固件备份 ....................................................................................... 100

4.7.3 希捷硬盘写固件 ........................................................................................... 104

第 5章 日立硬盘固件特点及其故障分析 ..................................................107

5.1 日立硬盘基础知识 .................................................................................................. 107

5.1.1 日立硬盘系列 ............................................................................................... 107

5.1.2 日立硬盘编号 ............................................................................................... 110

5.1.3 日立硬盘的跳线设置 ................................................................................... 111

5.2 日立硬盘固件结构及模块 ...................................................................................... 113

5.2.1 日立(Hitachi-IBM)硬盘固件数据的分布............................................... 113

5.2.2 固件兼容的条件 ........................................................................................... 113

5.2.3 硬盘电路板上的 ROM种类 ........................................................................ 113

5.2.4 NVRAM数据配置 ....................................................................................... 114

5.2.5 固件数据的特点 ........................................................................................... 114

5.2.6 固件数据模块 ............................................................................................... 114

5.3 日立硬盘固件故障表现及分析 .............................................................................. 117

5.3.1 故障判断 ....................................................................................................... 117

5.3.2 Hitachi-IBM硬盘电路板的替换.................................................................. 118

5.3.3 日立(Hitachi)硬盘“C区”介绍 ............................................................ 120

5.3.4 日立硬盘故障修复案例 ............................................................................... 121

第 6章 西数硬盘固件特点及其故障分析 ..................................................139

6.1 西数硬盘基础知识 .................................................................................................. 139

6.1.1 西数硬盘家族简介 ....................................................................................... 139

6.1.2 西数硬盘命名规则 ....................................................................................... 140

6.2 西数硬盘固件结构及模块 ...................................................................................... 144

6.2.1 固件结构特点 ............................................................................................... 144

6.2.2 经典西数架构固件 ....................................................................................... 145

·viii·

Contents

6.2.3 Marvell架构固件 ......................................................................................... 153

6.3 西数硬盘固件故障表现及分析 .............................................................................. 158

6.3.1 固件区模块损坏故障 ................................................................................... 158

6.3.2 ROM故障 ..................................................................................................... 160

6.3.3 G表模块故障 ............................................................................................... 162

6.3.4 P表模块故障................................................................................................ 162

6.3.5 SMART模块故障 ........................................................................................ 163

6.3.6 密码保护故障 ............................................................................................... 163

6.3.7 译码器故障 ................................................................................................... 163

6.3.8 其他固件故障 ............................................................................................... 164

6.4 西数硬盘固件维修案例 .......................................................................................... 164

6.4.1 备件磁头与 ROM不兼容 ............................................................................ 164

6.4.2 ATA overlay与 ROM不匹配 ...................................................................... 168

第 7章 富士通硬盘固件特点及其故障分析 ...............................................173

7.1 富士通硬盘基础知识 .............................................................................................. 173

7.1.1 富士通硬盘家族简介 ................................................................................... 173

7.1.2 富士通硬盘命名规则 ................................................................................... 173

7.2 富士通硬盘固件结构及模块 .................................................................................. 174

7.2.1 固件结构特点 ............................................................................................... 174

7.2.2 硬盘空间组织 ............................................................................................... 175

7.2.3 ROM固件 ..................................................................................................... 175

7.2.4 固件区模块 ................................................................................................... 180

7.2.5 适配数据 ....................................................................................................... 184

7.2.6 S.M.A.R.T表 ................................................................................................ 185

7.3 富士通硬盘终端命令 .............................................................................................. 185

7.4 富士通硬盘固件故障表现及分析 .......................................................................... 186

7.4.1 固件区模块损坏故障 ................................................................................... 186

7.4.2 ROM模块故障 ............................................................................................. 187

7.4.3 SMART模块故障 ........................................................................................ 188

7.4.4 密码保护故障 ............................................................................................... 188

7.4.5 译码器故障 ................................................................................................... 188

7.5 富士通硬盘固件维修案例 ...................................................................................... 189

7.5.1 硬盘解密实例 ............................................................................................... 189

7.5.2 特殊版本 ROM实例 .................................................................................... 190

第 8章 东芝硬盘固件特点及其故障分析....................................................195

8.1 东芝硬盘基础知识 .................................................................................................. 195

8.1.1 东芝硬盘家族简介 ....................................................................................... 195

8.1.2 东芝硬盘命名规则 ....................................................................................... 198

8.1.3 最新型号 ....................................................................................................... 200

·ix·

Contents

8.2 东芝硬盘固件结构及模块 ...................................................................................... 201

8.2.1 固件结构特点 ............................................................................................... 201

8.2.2 固件读取方式 ............................................................................................... 202

8.2.3 区域分配表 ................................................................................................... 202

8.2.4 配置页 CP ..................................................................................................... 203

8.2.5 RAM资源 ..................................................................................................... 205

8.2.6 固件区磁道 ................................................................................................... 205

8.2.7 S.M.A.R.T表 ................................................................................................ 206

8.2.8 扇区缺陷表 ................................................................................................... 206

8.3 东芝硬盘终端命令 .................................................................................................. 207

8.4 东芝硬盘固件故障表现及分析 .............................................................................. 208

8.4.1 G表故障 ....................................................................................................... 208

8.4.2 SMART模块故障 ........................................................................................ 208

8.4.3 密码保护故障 ............................................................................................... 208

8.4.4 其他固件故障 ............................................................................................... 208

8.5 东芝硬盘固件维修案例 .......................................................................................... 209

8.5.1 G表错误修复案例 ....................................................................................... 209

8.5.2 P表模块故障修复案例 ................................................................................ 211

第 9章 硬盘固件修复工具介绍 .................................................................215

9.1 PC-3000固件修复工具 ........................................................................................... 215

9.1.1 PC-3000工作基本原理 ................................................................................ 215

9.1.2 PC-3000主要功能 ........................................................................................ 215

9.1.3 PC-3000基本使用流程 ................................................................................ 216

9.1.4 PC-3000通用工具简介 ................................................................................ 217

9.2 效率源 compass固件修复工具 .............................................................................. 239

9.2.1 效率源 compass套件简介 ........................................................................... 239

9.2.2 PC-3000与效率源固件模块对照 ................................................................ 242

9.3 HRT固件修复工具 ................................................................................................. 243

9.3.1 HRT固件修复工具简介 .............................................................................. 243

9.3.2 HRT硬盘修复工具修复案例 ...................................................................... 244

第 10章 硬盘固件修复一般方法 ...............................................................249

10.1 清空 G表与重置 SMART .................................................................................... 249

10.2 刷新 Flash ROM .................................................................................................... 253

10.3 固件区测试与修复 ................................................................................................ 256

10.4 热交换 .................................................................................................................... 261

第 11章 硬盘修复进阶..............................................................................265

11.1 希捷硬盘 ................................................................................................................ 265

11.1.1 希捷酷鱼 10代校准中途停电的处理 ....................................................... 265

11.1.2 酷鱼 11代容量为 0的修复 ....................................................................... 267

·x·

Contents

11.2 日立硬盘 ................................................................................................................ 270

11.2.1 日立硬盘数据恢复典型故障处理 ............................................................. 270

11.2.2 不同型号日立硬盘之间的磁头兼容 ......................................................... 272

11.2.3 日立硬盘的密码解锁 ................................................................................. 273

11.3 西数硬盘 ................................................................................................................ 276

11.3.1 磁头卡死故障 ............................................................................................. 276

11.3.2 电路板故障 ................................................................................................. 276

11.3.3 电机故障 ..................................................................................................... 277

11.3.4 USB接口硬盘的维修 ................................................................................ 277

11.3.5 ROM中磁头映射图的编辑 ....................................................................... 278

11.3.6 RAM中磁头映射图的编辑 ....................................................................... 278

11.3.7 硬盘 ID识别故障 ....................................................................................... 279

11.3.8 ABR错误.................................................................................................... 280

11.4 三星硬盘 ................................................................................................................ 280

11.4.1 备件盘的选用原则 ..................................................................................... 281

11.5 富士通硬盘 ............................................................................................................ 282

11.5.1 电路板的选择 ............................................................................................. 282

11.5.2 备件板 ROM直接能用的情形 .................................................................. 283

11.6 东芝硬盘 ................................................................................................................ 283

11.6.1 电路板更换注意事项 ................................................................................. 284

11.6.2 其他电路板故障 ......................................................................................... 284

11.6.3 电机故障 ..................................................................................................... 284

11.6.4 PC-3000中添加新型号 .............................................................................. 285

第 12章 固态硬盘固件损坏的维修 ...........................................................287

12.1 固态硬盘物理结构 ................................................................................................ 287

12.1.1 固态硬盘简介 ............................................................................................. 287

12.1.2 接口类型 ..................................................................................................... 289

12.1.3 存储介质 ..................................................................................................... 289

12.1.4 Nand Flash存储管理.................................................................................. 290

12.2 固态硬盘主控固件 ................................................................................................ 293

12.2.1 固态硬盘主流主控介绍 ............................................................................. 293

12.2.2 主控体系架构 ............................................................................................. 294

12.3 固态硬盘固件故障维修 ........................................................................................ 298

12.3.1 Winhex镜像法 ........................................................................................... 299

12.3.2 主控自修复法 ............................................................................................. 299

12.3.3 PC-3000指令修复法 .................................................................................. 300

12.3.4 Flash数据重组法 ....................................................................................... 301

附录 1 术语与缩略语 ................................................................................305

附录 2 三星 Burn test完成代码总表 .........................................................307

第 1 章 硬盘基础知识

1.1 硬盘系列

硬盘的常见品牌有:希捷、日立、迈拓、西部数据、三星、富士通、东芝。每个品牌

下面又分成若干个系列,每个系列下面又分成若干个家族。

1.1.1 希捷硬盘

希捷公司成立于 1979年,总部位于美国加州,希捷在设计、制造和销售硬盘领域居全

球领先地位,提供用于企业、台式计算机、移动设备和消费电子的产品。现为全球最大的

硬盘、磁盘和读写磁头制造商。

希捷硬盘产品主要包括 SCSI与 IDE硬盘、磁带机与网络存储设备。希捷在 SCSI市场

也有相当重要的地位,独有的 3D防护技术和 Soft Sonic降噪技术是希捷产品的特色,用于

提高产品的安全性和降低工作噪声。

按照工作原理分类,可以将目前市面上的希捷硬盘分为三类,即酷鱼(Barracuda)系

列、U 系列和笔记本系列,在每一个大系列下面又包括了若干家族,各个系列的硬盘相较

其之前推出的硬盘,在技术上都有不同程度的提高。

1.1.2 日立硬盘

日立硬盘制造公司成立于 1979年,它是首家专为台式电脑制造 5.25英寸硬盘的公司,

日立硬盘的出现推动了整个 PC界的变革,世界从此发生了巨大的变化。

2003 年 1 月,日立公司收购了 IBM 的存储事业部,并正式推出全新的硬盘品牌,也

就是今天的日立硬盘。

日立存储公司生产的硬盘产品有:服务器硬盘、台式机硬盘、移动电子产品硬盘等,

另外该公司还生产磁头和盘片。

目前日立硬盘拥有四大技术:磁头载入载出(Load/Unload)、重排指令序列(Tag and

Seek)、涡流磁臂锁(Eddy current latch)以及 RVS(旋转振动保护)。这些技术对读写速度

和抗冲击能力的提升都有明显的帮助。

1.1.3 迈拓硬盘

迈拓(Maxtor)公司于 1982年成立于美国加州,曾是全球出货量最大的硬盘厂商。

20世纪 90年代中期,迈拓公司将 XT系列硬盘的制造权出售给名为 Sequel的公司,

因此退出了服务器 SCSI硬盘市场,同时 SCSI版本的 7000系列硬盘也停止生产。

该公司于 2000 年 10 月宣布以股权置换形式收购昆腾公司硬盘部门,而昆腾的 Atlas

深度剖析——硬盘固件级数据恢复

2

系列 SCSI 驱动器使得迈拓重返服务器 SCSI 硬盘市场;并推出了便携式存储产品 Maxtor

One-Touch 个人移动硬盘。另外,迈拓公司曾努力进入 2.5 英寸硬盘(用于笔记本电脑)

市场,但在 2005年初,又终止这一领域开发的决定。

2006 年 12 月,希捷公司以换股的方式收购迈拓公司,目前“Maxtor”是希捷旗下的

一个商标。

迈拓硬盘主要有金钻、美钻、星钻、DiamondMax、服务器等系列,其中只有金钻系

列是 7200 r/min,其余都是 5400 r/min。

1.1.4 西部数据硬盘

西数硬盘(WD)是美国西部数据公司生产的硬盘。公司始创于 1970 年,并于 1988

年开始设计和生产硬盘。总部在美国加州,是 IDE 接口的创始者之一。WD 公司在 1999

年退出 SCSI市场后主攻 IDE领域。

西数数据公司在为用户收集、管理与使用数字信息的组织方面具有丰富的服务经验。

目前,西部数据公司的产品线涵盖了企业服务器,桌面级 IDE 硬盘、移动存储应用及 AV

领域。

西数数据公司根据客户的群体不同,分别推出了针对个人计算机用户的 Experl专家系

列和 Caviar 鱼子酱系列,针对企业用户的 RE 系列和 VelociRaptor 猛禽系列,针对移动存

储应用的 Scorpio天蝎系列。

1.1.5 三星硬盘

1938年 3月三星公司成立于韩国大丘,起初是一家糖业厂商后来逐步转型为一家电子

公司。三星的硬盘事业起步于 1989年,当时涉猎面很广,从笔记本电脑硬盘到 SCSI硬盘

应有尽有,后来只集中精力发展 IDE硬盘。三星基本上属于技术采用者的角色,不过它针

对硬盘的噪声与可靠性也开发了自己的专用技术。

2011年三星硬盘部门被希捷并购,三星硬盘品牌也将于 2012年底成为历史。

在早期的产品中,三星硬盘各型号皆为 3.5 英寸台式机硬盘。在划归三星半导体管理

之后,三星硬盘按内置硬盘与外置硬盘分为两大门类。

1.1.6 富士通硬盘

富士通(Fujitsu)是企业级硬盘市场的领先者,拥有 SAS、FC等接口控制技术,但其

在个人消费市场一直份额不大,其产品以低功耗、低噪声为特点。2001 年富士通停产 3.5

英寸的台式机硬盘,全力充当服务器和笔记本厂商的 OEM,2009 年富士通硬盘部门被东

芝并购,企业级硬盘生产线继续发展,消费级硬盘则彻底退出历史舞台。目前数据恢复遇

到的富士通案例一般只涉及 2.5英寸笔记本硬盘。

1.1.7 东芝硬盘

东芝是笔记本硬盘研发的鼻祖之一,专注于笔记本用途的 2.5 英寸以下尺寸的硬盘研

发,东芝在小尺寸硬盘方面无可争议地处于领导者地位,相继推出了 2.5英寸、1.8英寸到

0.85英寸硬盘,东芝公司在降低硬盘功耗与提高盘面记录密度方面都有着先进的技术优势。

第 1 章 硬盘基础知识

3

东芝是业界第一家将垂直记录技术商业化的公司,而且是世界最小硬盘(0.85 英寸)的吉

尼斯纪录保持者。在并购富士通硬盘部门之后,东芝也将产品线扩展到了 3.5 英寸企业级

硬盘。目前作为三足鼎立中的一足,东芝是机械硬盘领域的最后一家日本厂商。

1.2 硬盘物理结构

硬盘是一种工艺要求精密、内部密封的专业数据存储系统。它集机、电、磁技术于一

身,对用户而言,各类硬盘之间除其品牌型号、家族系列、各类参数有所不同外,最直观

明显的区别就是硬盘接口的不同,硬盘接口是指硬盘与主机系统间的连接部件,作用是在

硬盘缓存和主机内存之间传输数据。目前常用硬盘可分为 EIDE、SATA、SCSI、光纤通道、

SAS和 USB等 6种。IDE接口硬盘多用于家用产品中,也部分应用于服务器,SCSI接口

的硬盘则主要应用于服务器市场,而光纤通道只在高端服务器上,价格昂贵。SAS是并行

SCSI接口之后开发出的全新接口。此接口的设计改善了存储系统的效能、可用性和扩充性,

并且提供与 SATA硬盘的兼容性。USB主要是省去了转接电路板,减小了移动硬盘的尺寸。

不同的硬盘接口决定着硬盘与计算机之间的连接速度也互不相同,在整个系统中,硬盘接

口的优劣直接影响着程序运行的速度和系统性能的好坏。

1.2.1 硬盘外部结构

硬盘的外部结构并不复杂,主要由盘体、电源接口、数据接口、控制电路板等几部分

构成。

1. 盘体

硬盘的外壳与底板结合成一个密封的整体,简称盘体,如图 1-1所示。

图 1-1 硬盘正面

深度剖析——硬盘固件级数据恢复

4

硬盘正面外壳起到了保证硬盘盘片和机构稳定运行的作用,在其面板上印有产品标签,

标明该产品的厂家信息和产品信息,例如:商标、型号、容量、转速、序列号、产地及生

产日期等信息,这些信息是正确使用硬盘的基本依据。

图 1-1中标示了西部数据WD2500BEVS的产品标签。从型号上判断,这是一款容量为

250GB,转速为 5400r/min的 SATA高速硬盘,产品序列号为 WXE408AX7395,产地是泰

国,出厂日期是 2008年 5月 3日。

控制电路板位于硬盘的背面,如图 1-2 所示。硬盘外部的物理结构总体可以分为外壳

和控制电路板两个部分。

图 1-2 硬盘背面

2. 电源接口

电源接口通过与主机的电源连接,为硬盘工作提供电力支持。对于 5.25英寸与 3.5英

寸的台式机硬盘,常见的接口类型有两种:一种是最为常见的 4针 D形电源接口;另一种

为 Serial-ATA硬盘使用的 SATA专用电源接口,该接口的宽度与以前的电源相当,这种接

口有 15个插针。在购买 SATA硬盘时,厂商一般会在其产品包装中提供必备的电源转接

线。

对于 2.5英寸的 PATA硬盘,可直接由数据口取电,不需要额外的电源接口。2.5英寸

的移动硬盘,由计算机外部的USB接口提供电力来源,单个USB口供电约为 4~5V 500mA,

若移动硬盘盒用电需求较高,需要外接电源供电,或接上两个 USB口才能使用。但现今多

数新型硬盘盒(使用 2.5英寸以下之硬盘)已可方便地使用单个 USB口供电。

3. 数据接口

数据接口是硬盘和主板控制器之间进行数据传输和信号交换的纽带,根据连接方式的

差异,分为 EIDE接口、SCSI接口、SATA串口、光纤通道、SAS和 USB等 6种。硬盘通

过硬盘数据线连接到硬盘数据接口。

老式的 IDE硬盘采用的是普通 40针数据线,现已不常见,目前 IDE硬盘采用的是 80

针数据线。随着 IDE接口技术不断发展,性能也在不断提高,其特点是价格低廉、兼容性强。

SCSI 硬盘数据线有 68 针接口和 80 针接口两种。SCSI 是一种广泛应用于小型机上的

高速数据传输技术。SCSI 接口具有应用范围广、多任务、带宽大、CPU 占用率低,以及

第 1 章 硬盘基础知识

5

热插拔等优点,但价格较高,因此 SCSI硬盘主要应用于中、高端服务器和高档工作站中。

SATA 硬盘采用 7 芯数据线、点对点传输协议,这样可以做到在减少数据线内部电缆

数目的情况下提高抗干扰能力。每个 SATA 线缆(或通道)只能连接一块硬盘,因此也不

必考虑主、从跳线的设置。

光纤通道硬盘是为提高多硬盘存储系统的速度和灵活性才开发的,它的出现大大提高

了多硬盘系统的通信速度。光纤通道的主要特性有:热插拔性、高速带宽、远程连接、连

接设备数量大等。

SAS(Serial Attached SCSI)即串行连接 SCSI,其技术特点是采用串行技术以获得更

高的传输速率,并通过缩短连接线改善内部空间等。是新一代的 SCSI 技术,和现在流行

的 Serial ATA(SATA)硬盘相同。SAS是并行 SCSI接口之后开发出的全新接口。此接口

的设计是为了改善存储系统的效能、可用性和扩充性,并且提供与 SATA硬盘的兼容性。

4. 控制电路板

为加强散热,控制电路板一般裸露在硬盘下表面,但是也有少数硬盘将其完全封闭以

更好地保护各种控制芯片,同时还能降低噪声。硬盘的控制电路板由主轴调速电路、磁头

驱动与伺服定位电路、高速缓存,读/写控制电路、控制与接口电路等构成,如图 1-3所示。

图 1-3 硬盘控制电路板

1.2.2 硬盘内部结构

从产品外观、产品特征及磁盘性能等方面可以认识了解硬盘,而大多数计算机的使用

者和非计算机硬件维护方面的技术人员并不关心硬盘内部的构造,因此硬盘的内部结构很

少被涉及。此外,硬盘内部对空气洁净度的要求极高,需要在极为严格的超净环境中进行

操作,不能沾染上一粒灰尘,否则立即报废,这样就使得真正了解硬盘内部结构的机会变

少了。硬盘内部如电机、磁头、盘片、接口等部件的外观是怎样的,它们又是如何工作的?

可以通过对硬盘内部结构加以剖析,使用户能够更加了解硬盘的整体构造。

打开硬盘外壳之后,能够看到硬盘内部结构,如图 1-4所示。

注意:千万不要随意打开硬盘的外壳,这样做很容易使整个硬盘报废。

深度剖析——硬盘固件级数据恢复

6

硬盘内部结构主要包括:盘片、磁头、主轴、控制电机、磁头控制器、数据转换器、

接口、缓存等几个部分。其中磁头盘片组件是构成硬盘的核心,封装在硬盘的净化腔体内,

包括浮动磁头组件、磁头驱动机构、盘片、主轴驱动装置及前置读写控制电路等几个部分,

如图 1-5所示。

图 1-4 硬盘腔体 图 1-5 硬盘内部结构

所有的盘片都固定在一个旋转轴上,这个轴即盘片主轴。而所有盘片之间是绝对平行

的,在每个盘片的存储面上都有一个磁头,磁头与盘片之间的距离比头发丝的直径还小。

所有的磁头连在一个磁头控制器上,由磁头控制器负责各个磁头的运动。磁头可沿盘片的

半径方向动作,而盘片以每分钟数千转的速度在高速旋转,这样磁头就能对盘片上的指定

位置进行数据的读写操作。硬盘是精密设备,尘埃是其大敌,所以必须完全密封。

1. 磁头组件

磁头组件(Hard Disk Assembly,HDA)负

责数据的最终存取,是硬盘中最精密的部件之

一。它由三部分组成:读/写磁头、传动手臂、

传动轴,如图 1-6所示。

磁头采用了非接触式头、盘结构,加电后

与盘片之间的间隙只有 0.1~0.3um,这样能够

获得极高的数据传输率。转速 5400 r/min的硬

盘飞高都低于 0.3um,以利于读取较大的高信

噪比信号,提供数据传输存储的可靠性。

2. 磁头驱动机构

硬盘的寻道是靠移动磁头来实现的,而移动磁头需要驱动机构才能完成。磁头驱动机

图 1-6 磁头组件

第 1 章 硬盘基础知识

7

构由电磁线圈电机、磁头驱动小车、防震动装置构成。高精度的轻型磁头驱动机构能够对

磁头进行正确的驱动和定位,并能在很短的时间内精确定位系统指令指定的磁道,保证数

据读写的可靠性。

电磁线圈电机包含着一块永久磁铁,这是磁头驱动机构对传动手臂起作用的关键,磁

铁的吸引力能够吸住并吊起拆硬盘使用的螺丝刀。另外,还有防振动保护装置,防震动装

置的作用是当硬盘受到强裂震动时,对磁头及盘片起到一定的保护使用,以避免磁头将盘

片刮伤等情况的发生。

3. 磁盘片

盘片是硬盘存储数据的载体,硬盘的盘片采

用具有高密度、高剩磁、高矫顽力的金属薄膜工

艺制成,而大家所熟悉的软盘盘片是一种不连续

颗粒载体,所以硬盘盘片较之软磁盘具有更高的

记录密度,如图 1-7所示。

4. 主轴组件

主轴组件由主轴部件、轴承和驱动电机等组

成。由于硬盘技术不断发展,为了满足用户对其

容量和转速的高要求,生产商采用了精密机械工

业的液态轴承电机技术,从而有效地降低硬盘工

作噪声,提高了主轴电机的转速。

5. 前置控制电路

前置控制电路的主要功能为以下几项:一是控制磁头感应的信号;二是用于磁头驱动;

三是用于主轴电机调速;四是用于伺服定位等。为了防止外来信号对磁头读取的微弱信号

形成干扰,所以将放大电路密封在腔体内,从而提高了操作指令的准确性。

1.3 硬盘固件

1.3.1 硬盘固件概念

固件是硬盘内部各部件之间相互作用、相互配合的一个协调者,用于控制硬盘正常启

动和运行,是硬盘不可或缺的重要组成部分。

1.3.1.1 什么是固件

固件通俗地理解就是“固化在硬件中的软件”,英文称 FIRMWARE,它担负着一个硬

盘系统最基础、最底层的工作。如果把硬盘比做一台计算机主机,固件就相当于主机中的

BIOS 和操作系统程序。它由一些汇编语言编写的引导命令、控制语句和执行语句构成。

在硬盘中,固件负责驱动、控制、解码、传送、检测等工作,如管理数据的存放位置,

记录已经损坏的缺陷扇区,记录硬盘在工作中的温度或出现的错误等。所以说固件是硬盘

图 1-7 硬盘盘片

深度剖析——硬盘固件级数据恢复

8

的灵魂,它决定着硬件设备的功能及性能,少了固件的硬盘就只是一堆机械和电子元件,

就像是一个没有灵魂的尸体。

1.3.1.2 固件的位置

由于硬盘的品牌不同,固件存放位置也有所不同。其大致可分为两种形式:

第一种形式是,一部分固件数据保存在硬盘电路板的芯片中,另一部分保存在硬盘盘

片的负磁道上,即零磁道前面的磁道。

第二种形式是,所有固件信息全部保存在硬盘的负磁道上。

如果要访问固件区,只有通过专业工具,在工厂技术状态下,才能对硬盘的固件区进

行读/写操作,从而获取固件区的相关信息,并可进行 LBA(逻辑地址)与 CHS(物理地

址)互换等操作。在硬盘的正常工作状态下,固件区是无法访问的。

1.3.2 硬盘固件结构

硬盘固件区由几个不同的工作区构成,而工作区数量,以及组成工作区的模块,不是

一个固定数值,硬盘的品牌、型号不同,其数值也有所不同。多数硬盘只有 A、B 两个工

作区,而有些硬盘有 A、B、C三个工作区。例如,迈拓硬盘在 6E系列之前只有 A区(主

固件区)和 B区(次固件区),两个工作区只要其中一个是完好的,硬盘都可以正常工作。

在 6Y 系列之后,厂家加入了自修复工作区 C区,其作用就是对固件区进行修复。而日立

硬盘包括 A区(主固件区)、B区(次固件区)和 C区(备份固件区),当 A区出故障时,

可以通过 B区读写硬盘;当 A、B区都出现故障时,可通过专门的工具调用 C区模块对 A、

B区进行回写,从而修复 A、B区。

工作区中的固件信息是用模块的形式来表示的。一个模块可能只记录一个信息,也有

可能一个模块记录多个信息,所以其大小并不一致,在固件区中每个模块都有其固定的位

置,它们并不是连续存放的。

硬盘固件的信息模块包括以下几类:管理模块、配置和设置表、缺陷列表以及工作记

录表等。

� 固件管理模块

硬盘固件的管理模块由初始诊断模块、伺服电机旋转控制模块、磁头定位模块、硬盘

控制器和缓冲存储器的信息交换模块等构成。从管理模块所包含的内容来看,不同的管理

模块出现损坏,虽然其故障的表现形式各不相同,但大致可分为两种:一是硬盘不能准备

就绪;二是硬盘的相关参数不能被正确识别,如硬盘的型号、容量等。

� 配置和设置表

硬盘的配置和设置表包含关于磁盘空间的逻辑和物理信息。如果配置和设置表发生故

障,硬盘的相关参数同样不能被正确识别,因为这些表格包含了硬盘的型号名称、最大 LBA

值等信息,涉及物理磁头的定位,Zone分配表确定等内容。

� 缺陷列表

随着硬盘盘片数据存储密度的不断提高,虽然盘片的生产过程极其精密,但也不可避

免地会产生缺陷扇区,这些缺陷扇区会威胁到硬盘数据的安全,为此,厂家会在硬盘出厂

前,对其进行全面校准,将校准过程中找出的缺陷磁道和扇区记录在 P-list 中,并且在对

第 1 章 硬盘基础知识

9

所有的磁道和扇区的编号过程中,跳过这些缺陷扇区,也就是不给这些缺陷扇区进行地址

编号,从而使用户不能发现和用到它们。

(1) P-list

P-list又称为永久缺陷列表,用于记录硬盘生产过程中产生的缺陷。是厂家使用专门的

测试工具发现的缺陷,通常情况下,用户不要对它进行任何操作。

加入 P表不会影响硬盘的容量和读写性能,因为硬盘的全部扇区可以划分为固件区、

工作区和保留扇区,而保留扇区用户是无法直接操作的,它也不包含在硬盘标称的容量中,

所以缺陷扇区被加入 P表后,由此而损失的扇区数,将会从保留扇区取出数量相等的扇区

来补充。

(2) G-list

G 表又称为增长缺陷列表,用于记录硬盘在使用过程中产生的缺陷扇区。随着大容量

硬盘的不断出现,使用中产生缺陷扇区的概率不断增大,厂商为了避免因此而与用户产生

经济纠纷和频繁保修带来的麻烦。于是,厂商在硬盘中设计了一个自动修复机制,叫做

Automatic Reallocation,其功能是:在硬盘的读写过程中,如果发现一个缺陷扇区,则自动

使用保留扇区中一个备用扇区来替换该扇区,并将缺陷扇区及其替换情况记录在 G-list中。

G-list包括两种内容:①在介质校验过程中由格式化命令产生的缺陷;②在格式化命令

之前,由硬盘内部功能和自动重新分配功能产生的缺陷。

由于保留扇区在硬盘的内道,读写速度慢,同时由于该扇区会导致硬盘的数据存储在

物理上不连续,磁头读取该扇区的数据时需要移动较远的距离,所以缺陷扇区加入 G表后

会影响硬盘的读写速度。

(3) U表

U 表即固件区缺陷列表,用于记录硬盘固件区产生的缺陷,存在于迈拓硬盘和西部数

据硬盘中。

(4) 道表

道表就是压缩后的 P表。因为固件的存储空间有限,当向其中加入的缺陷信息达到一

定程度时,将无法继续写入,这时就可将 P表进行压缩,增加 P表容量,继续写入缺陷信息。

(5) 工作记录表

硬盘工作记录表包括硬盘生产和运行过程中的一些辅助信息,如检测结果、检测程序

动作记录等。它只有在对硬盘执行“Self Scan”自检和“Calibrator”校准或进行维修等操

作时才需要。在一般用户的工作状态下,它们的损坏不会对硬盘的工作产生影响。

1.3.3 S.M.A.R.T.技术简介

S.M.A.R.T.技术的全称是 Self-Monitoring,Analysis and Reporting Technology,即“自

监测、分析及报告技术”。

1.3.3.1 S.M.A.R.T.技术的功能

S.M.A.R.T.技术是一种预警技术,由硬盘的监测电路和相应的监测软件构成,其监测

的对象包括磁头、磁盘、马达、电路等。对被监测对象的运行情况与历史记录及预设的安

全值进行分析、比较,当出现安全值范围以外的情况时,会自动向用户发出警告。一些新

深度剖析——硬盘固件级数据恢复

10

版本的 S.M.A.R.T.技术不但可以提醒网络管理员注意,自动降低硬盘的运行速度,而且可

以将重要数据文件转存到其他安全扇区,甚至把文件备份到其他硬盘或存储设备。通过采

用 S.M.A.R.T.技术,可以有效预测硬盘潜在的故障,提高数据的安全性。

硬盘的故障可以分为两种:一种是渐发性,另一种是偶发性。S.M.A.R.T.技术只能对

渐发性的故障进行监测,如硬盘的主轴马达逐渐磨损,一些硬盘部件性能的逐渐弱化等故

障。而对于一些偶发性的故障,如由于一些人为原因而造成的电路板芯片烧毁,突发的撞

击导致磁头、介质损坏等,S.M.A.R.T.技术是无能为力的。

S.M.A.R.T.技术信息保存在硬盘的固件区内,监测软件通过一个名“SMARTRETURNSTATUS”

的命令对 S.M.A.R.T信息进行读取,且不允许用户对 S.M.A.R.T 信息进行修改。若需要对

S.M.A.R.T项进行复位,必须使用专门的工具。

1.3.3.2 S.M.A.R.T.技术的参数

S.M.A.R.T.技术规定有专门的检测参数,由于硬盘结构、性能和定位上的不同,除了

ATA-3标准规定的参数外,厂家可以根据自己产品的特性提供不同的 S.M.A.R.T检测参数,

用户可以通过查看这些参数来了解自己硬盘的健康状况。

由于 ATA标准不断更新,不同型号产品也会有所不同。其中 S.M.A.R.T.技术规定的几

个主要检测属性如表 1-1所示。

表 1-1 S.M.A.R.T.技术的检测属性

ID 代码 属性描述 含 义

1 Read error rate 错误读取率

2 Through put performance 数据吞吐量性能

3 Spin up time 硬盘启动重试次数

4 Number of times the spindle motor is activated 主轴马达启动次数

5 Redistribution of the number of sectors 重新分配扇区数

7 Seek error rate 寻道出错率

8 Seek time performance 寻道时间性能

9 Power-on time count 加电累计时间

10 Number of re-activation of the spindle motor 主轴马达重新激活次数

12 Number of power-on-power-off times 开关次数

199 Ultra ATACRC error rate Ultra 模式下数据传输出错率

200 Write error rate 扇区写操作出错率

S.M.A.R.T.技术通过各项属性的 Threshold(阈值)、Attribute(属性值)、Worst(最

大错误值)、Date(实际值)和 Status(属性状态)对硬盘性能进行综合判断。但不同厂

家、不同型号的产品,其属性描述不尽相同,在应用过程中只需了解属性值的含义即可。

第 2 章 迈拓硬盘固件特点及其故障分析

2.1 迈拓硬盘基础知识

2.1.1 迈拓硬盘简介

迈拓硬盘主要有金钻、美钻、星钻、DiamondMax、服务器等系列,其中,只有金钻

系列是 7200 r/min的产品,其余都是 5400 r/min的产品。

随着新产品不断推出,迈拓硬盘命名规则也有所变化,早期的迈拓硬盘是以其单碟容

量作为硬盘名称的,如 DiamondMax Plus 5120,则表示此系列硬盘的单碟容量为 5120 MB,

即 5.12 GB;而 DiamondMax 6800,就表示此硬盘的单碟容量为 6.8 GB;但推出 DiamondMax

VL20 产品以后,迈拓公司修改了以往的命名法规,采用系列硬盘的最大容量来表示系列

名,如 DiamondMax VL20,即表示此 VL20系列中最大容量为 20 GB,而 DiamondMax 40,

即表示 DM40系列最大容量为 40 GB。

2.1.2 星钻与美钻系列

星钻与美钻系列硬盘前面的标识都为“DiamondMax”,它们是迈拓公司的低端产品,

其特点是硬盘转速低、噪声小、稳定。

星钻系列是低速硬盘中的高端产品,该系列中的星钻三代(即新火球一代,它是迈拓

公司收购昆腾硬盘后推出的基于昆腾技术的硬盘中的一个系列)还加入了 ATA133 技术,

这使得其在传输速率上具有很大的优势。

美钻系列硬盘的性能稍低于星钻系列,是迈拓低端市场的主打产品,硬盘采用单盘片、

单磁头,美钻的传输率很稳定,易于散热。

2.1.3 金钻系列

金钻系列硬盘的标识为“DiamondMax Plus”,该系列硬盘按照接口种类划分为 SATA

和 PATA 两种,高速缓存也是从 2 MB~16 MB 不等。分为金钻一代(DiamondMax Plus

4320)、金钻二代(DimaondMax Plus 5120)、金钻三代(DiamondMax Plus 6800)、金钻四代

(DiamondMax Plus 40)等。

迈拓自推出金钻七代开始,其硬盘的命名就较混乱,像金钻系列七代命名为

DiamondMax Plus D740X,而金钻六代的命名却是 DiamondMax Plus 60,到金钻八代时,

系列命名又改为 DiamondMax Plus 8,以此类推,金钻九代的命名是 DiamondMax Plus 9。

自金钻六代开始,所有金钻家族硬盘前面的标识都为“DiamondMax Plus”。

由于金钻一代、二代与三代硬盘现在已很少见,所以这里只介绍四代以后的产品。

深度剖析——硬盘固件级数据恢复

12

金钻四代:即 DiamondMax Plus 40,该家族硬盘单碟容量达 10.2GB;硬盘的内部数据

传输率达到 43.2MB/S;迈拓公司把本应在高档的 SCSI 硬盘中采用的 DualWave 双处理器

结构,应用在一般的 IDE硬盘上,使硬盘内部传输率得到很大提高;并且寻道时间小于9.0 ms,

从而提高了数据的读写速度;采用迈拓公司自主开发的数据保护系统 Max Safe and

S.M.A.R.T.与防震保护系统,使硬盘的损坏率降到最低。

金钻五代:即 DiamondMax Plus 45,它与金钻四代的相同点为:都采用了 GMR的巨

磁阻磁头;同样采用 DualWave 双处理器技术和 2M的数据缓冲(Cache Memory),用以提

供高速的数据传输数率。其不同点:单碟容量较金钻四代有了很大提高,为 15.4 GB,从

而也就相应地提高了数据读写速度;该系列硬盘支持 ATA UltraDMA 100,理论上可以以

100 MB/s 的速率传输数据;另外,该系列硬盘有一个与双重处理器匹配作业的新缓存

(buffer)管理器,配合Maxtor DualWave控制器可以提供 170MB/s以上的数据传输能力,

从而使计算机维持 100MB/s数据传输率的同时,又使硬盘数据读写的速率达到 400MB/s;

DualWave 控制器采用了可编程的控制方式,可以用软件方式来改变和调节 ATA 协议,这

确保了与多数 ATA主板的兼容。

金钻六代:即DiamondMax Plus 60,金钻六代与金钻五代相同点为:转速同样为7200 r/min、

带有 2M的缓存、Maxtor DualWave。金钻六代技术提升点为:单碟的容量上升到 20GB,

总体容量上升到 60GB,金钻六代支持当时最新的 Ultra ATA 100接口。

金钻七代:即 DiamondMax Plus D740X,由于该款硬盘是迈拓收购昆腾硬盘后推出的

第一款 7200 r/min硬盘,其采用的具体技术与传统的金钻硬盘相比有了较大的变化,这是

因为它融合了昆腾硬盘的一些技术。具体表现为:

采用超大的 40GB单碟容量,2MB缓存,支持 ATA133传输标准,使用了 2个盘片与

4个读写头,总容量为 80GB。

硬盘的电路板采用了保护外壳,而将发热量较大的几个元件裸露在外,以确保热量的

散发。

金钻七代在编号规则上有少许差别,它在原先的编号规则前面加上MX(即Maxtor),

金钻七代之前则没有。

金钻八代:即 DiamondMax Plus 8,它是一款单碟、单磁头的产品,所以金钻八代属于

超轻薄的硬盘,重量较轻。其外观看起来和金钻六代更接近。金钻八代的平均寻道时间小

于 9.7 ms(毫秒),采用 FDB(液态马达)电机、ATA/133接口。同样采用防震保护系统(SPS)。

金钻九代:即 DiamondMax Plus9,该系列硬盘的平均寻道时间小于 9.4 ms,采用 Ultra

ATA/133接口。金钻九代按照产品型号的不同内置 2MB或 8MB缓存。之所以使用大容量

缓存,是因为只有大容量的缓存才可以使 Ultra ATA/133和串行 ATA超高的数据传输能力

得到充分发挥。该系列中部分型号的硬盘也使用了 FDB电机,同样采用防震保护系统(SPS)

和数据保护系统技术。

2.1.4 DiamondMax 家族

DiamondMax是一个新的家族,它包括 DiamondMax 10与 DiamondMax 11两种,人们

习惯上称之为金钻十代、十一代,但实际上它们是一个新的家族。

DiamondMax 10是迈拓公司于2004年底推出的,同期还推出了面向企业应用的MaXLine

第 2 章 迈拓硬盘固件特点及其故障分析

13

(用于多硬盘环境和存储阵列)系列中的最新产品。

DiamondMax 11 是 2005 年底推出的应用于台式机市场的硬盘家族,同期也推出了

MaXLine 新产品,以及用于消费类电子市场的 QuickView(多用于数码摄录机、机顶盒和

DVD/HDD Combo 等设备中)系列。这里我们主要介绍面向台式机的 DiamondMax 10 与

DiamondMax 11。

DiamondMax 10:该家族的硬盘最大容量可达 300GB。包括 SATA接口与 PATA(即 IDE)

两种接口,在 250GB 及以上的容量型号中配备了 16MB 的缓存,250GB 以下容量的产品

采用 8MB缓存。SATA接口的 DiamondMax 10硬盘采用 SATA单芯片内置方案,具有本地

命令队列(Native Command Queuing,NCQ)功能,与传统的 7200 r/min硬盘系列相比,

传输速率显著提高。硬盘同时升级应用最新的固件版本,具备自动平衡系统工作负载功能,

有效提高并行多线程效率,确保系统可以同时稳定地运行多个游戏与音乐程序。该家族硬

盘是专为多媒体用户、图形设计者、系统集成商以及组装机制造商设计的。

DiamondMax 11:该家族硬盘适用于家庭和办公计算机,以及商用计算机、出版系统

和多媒体及游戏系统等。它采用了单碟容量为 125GB的盘片,内置 4片盘片,缓存为 16MB,

同样包括 SATA 接口与 PATA 两种接口,SATA 接口的 DiamondMax 11 硬盘采用 SATA II

技术,使用户可以更快地访问数据并加快系统性能,尤其适用于多线程、双硬盘/RAID PC

应用程序,该技术中的原生命令队列功能能够智能重新排序程序读取和写入命令以改善性能。

2.1.5 Atlas 家族

Atlas 家族是迈拓公司专门为服务器行业定制的 SCSI 硬盘,它主要包括 Atlas 10K 与

Atlas15K两种,而每种 Atlas系列中又包括多个类型,如 Atlas 10K就有 10K Ⅲ、10KⅣ与

10KⅤ等。该系列硬盘具有速度快、可靠性高、支持热插拔等特点。

Atlas家族硬盘采用MaxAdapt(Adaptive Active Filtration,AAF)技术,这是一种可改

善信号质量的闭环方法,该技术可使硬盘随着变动的系统状况和组件自我适应,以降低错

误率,更容易地集成与增强总线效率,从而获得最佳的系统性能。

Atlas家族硬盘有良好的向前兼容性,缩短了数据的寻道时间,也提高了硬盘的读写

性能。

Atlas家族硬盘也集成有数据保护系统,从而有效防范因错误操作所导致的问题,减少

了硬盘的返修率及降低了用户的成本。

Atlas 10KV的特点还包括有源 LVD总线热插拔、智能总线管理和自动 SCSI模式配置。

2.2 Maxtor 硬盘编号介绍识别方法

Maxtor硬盘起初的编号为 7位,但从金钻系列 DiamondMax Plus9开始,Maxtor硬盘

编号变成 13 位了。不过,前面的 7 位编号仍然用于识别硬盘。Maxtor 硬盘编号多表示为

“系列号+此系列硬盘最大容量+首位+容量+接口类型+碟头数”。

Maxtor硬盘编号将其简单表示为“XX,XXX,X,X”四个部分。

第一部分的两个“X”表示产品系列和型号:

“3”为 40 GB或以下,“9”为 40 GB以上,此系列为星钻一代;

深度剖析——硬盘固件级数据恢复

14

“2R”表示为 Fireball 531DX美钻一代;

“2B”表示为 Fireball 541DX美钻二代;

“2F”表示为 Fireball 3;

“4W”表示为 DiamondMax 536DX星钻二代;

“4D”,“4K”,“4G”都表示为 Diamondmax 540X星钻三代;

“4R”表示为 DiamondMax 16星钻四代;

“5T”表示为 DiamondMax Plus60金钻六代;

“6L”表示为 DiamondMax Plus D740X金钻七代;

“6E”表示为 DiamondMax Plus8;

“6Y”表示为 DiamondMax Plus9。

Maxtor硬盘编号第二部分的三个“X”表示容量,单位是 GB。例如“080”或者“200”

就分别表示为 80 GB或者 200 GB。

第三部分的“X”表示缓存容量、接口及主轴马达类型:

“D”表示为 Ultra ATA/33;

“U”表示为 Ultra ATA/66;

“H”表示为 Ultra ATA100接口,2 MB缓存;

“J”表示为 Ultra ATA133接口,2 MB缓存并使用滚珠轴承马达(Ball Bearing Motor);

“L”表示为 Ultra ATA133接口,2 MB缓存并使用液态轴承马达(Fluid Dynamic Bearing

Motor);

“P”表示为 Ultra ATA133接口,8 MB缓存并使用液态轴承马达;

“M”表示为 Serial ATA150接口,8 MB缓存并使用液态轴承马达。

Maxtor硬盘编号第四部分的“X”表示使用的磁头数,也就是记录面数量。

由此可根据“硬盘单碟容量=2×硬盘总容量/磁头数”这个公式来推算出单碟容量。需

要注意的是,从金钻系列的 DiamondMax Plus9开始,该数字变成了“0”,但由于金钻系列

的 DiamondMax Plus9都是单碟容量 80 GB的产品,所以这里的变化对我们辨识并不影响。

2.3 迈拓硬盘的跳线设置

在对迈拓硬盘进行固件级维修时,常常需要改变硬盘的跳线设置,为此,需要了解迈

拓硬盘的跳线设置,如表 2-1所示。

表 2-1 迈拓硬盘跳线设置

HDD Family Master Slave Safe mode

AHHENA

DSP

ATHENA

Poker

ROMULUS

PROXIMA

第 2 章 迈拓硬盘固件特点及其故障分析

15

(续表)

HDD Family Master Slave Safe mode

RIGEL

NIKE

ARES 64K

N40P

CALIPSO

IBM

2.4 迈拓硬盘固件结构及模块

迈拓硬盘的固件存放位置有二:一部分存放于电路板(PCB)上,另外一部分存放在

硬盘盘面的 Service Area(固件区,英文简称为 SA,本书在使用此名称时,将不作区分)中。

电路板(PCB)上的固件由两个部分组成,一是存储在处理器的掩膜 ROM(或内部的

引导 ROM);二是存储在 Flash ROM(或扩展的引导 ROM),前提是迈拓硬盘的电路板安

装了这样的存储器,之所以要这样布局,是由于处理器中的掩膜 ROM 及其内容不便替换

和修改。通常情况下,处理器由外部的 ROM 初始化,如果所使用的硬盘电路板(PCB)

没有安装 Flash ROM(或扩展的引导 ROM),那么固件的微代码将从处理器内置的 ROM

启动。由此看来,这两部分的内容及功能应大致相同。但也有例外,有一部分 CALIPSO

硬盘的电路板是由 N40P 电路板的升级版,所以一旦拆离这部分 CALIPSO 硬盘的外部

ROM,它就会被识别为 N40P硬盘。

N40P,CALYPSO和 SABRE硬盘家族中采用备用的固件区(也称ALT-SA)。

2.4.1 固件版本定义

固件版本号记录在盘体的主标签上,其外表特征为:MODEL+HDA+PCBA+UNIQUE,

例如:4D040H2220511C。如图 2-1所示,右上方的方框中标识的就是一个迈拓硬盘的固件

版本号。

图 2-1 迈拓硬盘的标签

深度剖析——硬盘固件级数据恢复

16

迈拓硬盘的固件版本号也可以从使用工具 PC-3000的[LABEL]PN=48h模块中读取版

本号,并在“Utility status”对话框中显示,如图 2-2所示。实际工作中,如果遇到硬盘

的盘梯标签上的固件版本号与“Utility status”对话框显示的固件版本号稍有差异,那就

以后者为准。如果读不出模块中包含的版本号,PC-3000将不能显示版本号,而显示的是

圆点。

图 2-2 Utility status 对话框

当你选择一个备件盘的磁头进行更换时,你要参考逗号分割字母标记(例如:K,M,

B,E),第一个字符表示放大器的类型,第二个字母代表所使用磁头的类型,它们完全匹

配才可以使用。

2.4.2 固件区(Service Area)模块

固件区(Service Area)是一个能看得见的硬盘物理空间,也是一个具有自己数据密度

的单独区域,其中每个磁头都对应在固件区有一个空间,每个磁头空间都以 UBA 对其扇

区进行编号(首先对第一个磁道上的扇区进行顺序编号,然后对其他有效磁道进行编号),

从而为活动的固件区构造了一个底层运行空间。

固件区的数据是以模块形式出现的,为了区分模块之间功能差异,又将模块划分为不

同的组即“模块组”,每个模块组都有副本。系统在向固件区写数据时,同时也会立即将该

数据写入到 2份副本中,当因写操作而损伤模块时,系统将阻止对第二个副本进行写操作,

否则该副本也将遭到破坏。

固件区的模块大致可分为三个组:数据模块、固件模块、技术模块。硬盘仅在正常运

转期间读取固件模块。几乎所有数据模块都用于读操作和写操作,万一出现短暂的写操作

问题,将导致模块损伤。技术模块是在工厂装配制造硬盘的过程中使用的,与正常的硬盘

功能无关。

根据以上所述,固件区层次结构如图 2-3所示。

第 2 章 迈拓硬盘固件特点及其故障分析

17

图 2-3 固件区层次结构

对于以上所述的三类模块组,下文将以表格的形式阐述,在迈拓硬盘的模块映像表中

并不包含模块的名称,但是一些模块还是有自己的名字,这些名字位于各自的模块头中。

因此,如果不读取模块的内容,就不可能发现它的名字。不同的迈拓硬盘家族的模块可以

采用一种统一的方式编号,也就是所说的位置号码(下文中的 ID 或 PN),便于识别不同

用途的模块。

2.4.2.1 数据模块

表 2-2列举的是数据模块。它们按照模块的 UBA升序进行分组,可以根据模块之间的

这种位置关系进行模块追踪。

在方括号中的模块名,是由程序开发者指定的。

表 2-2 迈拓硬盘固件区中的数据模块

PN 号,十六进制 模块用途 重 要 性

37 U_LIST-service area translator SA译码程序 Ad

1F DISK-drive ID 硬盘识别码 B

78 RZTBL-zone table(translator component)区域表(译码部分) Ad

18 AT_PDL(P-List,translator component)P-表,译码部分 Ad

21 RCT-adaptive information of data zone on disk surface

盘面数据区适配信息 As

1E SRV-cailbration adaptive data适配数据校准 As

1A SECU-security system module(ATA passwords)系统安全模块(ATA 密码) C

2F S.M.A.R.T. thresholds S.M.A.R.T.临界 C

30 S.M.A.R.T. attributes S.M.A.R.T.属性 C

63 Copy of S.M.A.R.T. attributes S.M.A.R.T.副本属性 C

22 ATAF-ATA setting flags ATA设置标志 B

深度剖析——硬盘固件级数据恢复

18

(续表)

PN 号,十六进制 模块用途 重 要 性

34 ARREH D

48 [LABEL]-drive parts information 硬盘部件信息 D

1D DMCS B

1B AT_POL(G-List)-growing table of defects增长缺陷列表 C

35 AT_XAL C

64 MAXATG D

5E EVTLG_00 connected with G-List 与 G-List连接 D

70 S.M.A.R.T. Summary Log S.M.A.R.T.日志摘要 C

71 S.M.A.R.T. Self-Test Log C

72 S.M.A.R.T. Host Vendor Log 主机商家日志 C

7B FW D

95

Additional DISK. The module is present in module map only on disks without an

alternative SA

DISK的补充,如果盘面上没有一个备用的 SA时,模块将仅在模块的 map中出现

B

93 FMTI-module containing unique zone allocation table

模块包含唯一的区域分配表 Ad

A7 AT_POL – G-List copy G-表副本 C

在表 2-2以及下文的表 2-3、表 2-4中,其重要性一栏中代码的含义如下。

A-硬盘的基本模块:As-适配设置,Ad-译码表。该模块如果用另外一个硬盘中同样的

模块来替换,将会导致硬盘中读写调整参数的丢失以及数据的丢失,比如适配数据模块。

B-必须的模块,但它可以用另外一个硬盘的模块来替换,有时要求版本和型号必须

匹配。

C-必须的模块,但部分模块的损坏不影响硬盘的启动,硬盘能够在某些条件下修正模

块的内容(在缺陷重定位期间,自动重新计算)。

D-不影响硬盘的运转和操作性能,D 类通常包含的是信息模块,Dd-用于产生硬盘译

码的原始缺陷列表。Dr-工厂技术自测试(Self Test)模块。

表 2-2中各模块的含义如下:

SA 译码程序 U_LIST(PN=37h),固件区中有无此模块,是鉴别固件区是否活动的一

个标志。该模块可以在固件区中保存多达 8个副本,在模块表中仅指出了其中的 2个副本。

U_LIST 模块是一个专门用于记录固件区缺陷的列表,它和 P-List 模块及 G-List 模块

不同,P-List模块及 G-List模块是用户区缺陷列表。

在缺陷信息的存放上,它也有自己的特点,即每个磁头都对应在 U_LIST 中有一个独

立的记录。记录包含两项内容:一是磁头号标记;二是该磁头所对应的固件区中的缺陷表。

也就是说,它将每个磁头所对应固件区中的缺陷进行分开独立存放。

U_LIST模块也包含了有关 SA中缺陷扇区数量和地址信息。

此外,U_LIST 模块也指出了 P-List(PN=18h)模块实际使用的扇区数,这就是说,

如果 P-List模块是从别的硬盘借来的,那么所借来的 P-List模块所使用的扇区数,必然与

原 P-List 模块实际使用的扇区数不同,也与原 U_LIST 模块所记录的扇区数发生矛盾,那

样将导致校验和(checksum)出现错误,这个扇区数值不能用于 U_LIST模块。

如果固件区缺陷表中包含隐藏的缺陷,U_LIST 中的数据将具有唯一性,这就是说,

第 2 章 迈拓硬盘固件特点及其故障分析

19

如果把一个从别的硬盘中借来的 U_LIST 副本覆盖现在的 U_LIST,将造成固件区的移位,

将使硬盘的修复变得非常复杂。如果没有隐藏缺陷,你可以对 U_LIST 中的 P-List 模块已

使用的扇区数值进行修正,以允许使用其他硬盘中的模块副本,这时你必须借助于 HEX

编辑器中的相应的扩展命令对模块的校验和(checksum)进行重新计算。

在硬盘运行过程中,有时会向模块中写数据,万一出现写故障,将会造成有关固件区

缺陷信息和已使用的 P-List 模块长度信息的丢失。在译码器重建期间,U_LIST 模块中的

P-List模块长度将被自动校正。

配置模块 DISK(PN=1Fh),此模块包含硬盘的配置信息,比如:型号、序列号、最

大 LBA、物理磁头映像(map)以及磁头数量。

RZTBL(PN=78h)模块,此模块是硬盘译码器的一部分,包含了用于产生译码器的

磁头号信息。另外它包也含了硬盘的区域分配表。每个区域都相应在 P-List 中有自己的缺

陷序列。

(P-List 模块)AT_PDL(PN=18h)模块,此模块包含用户区域扇区缺陷列表,是工

厂检测出的缺陷表,其缺陷信息是按照 RZTBL中对区域描述的格式记录的。

(G-List 模块)AT_POL(PN=1Bh)模块以及它的副本(PN=A7h)模块,随着硬盘

运转而增长的缺陷列表 G-List。

FMTI(PN=93h)模块,此模块用于全容量(Full-Sized)硬盘。它包含区域分配表以

及每个区域的适配调整参数;因此,此模块对于获得数据的使用权是至关重要的。

“RCT”(PN=21h)模块,这一模块是在对一些预先装置部分进行工厂自测试

(Self-Test)时生成的,其结构和用途目前还不完全清楚,但从另外的硬盘中借用同名模

块的副本,对该模块进行覆写,不会造成硬盘功能严重损失,但坏块数量会增加。多数情

况下硬盘仍然能够读写数据。因此,该模块丢失后,将不可能获得一个正确的模块。

“SRV”(PN=1Eh)模块,这一模块是在运行工厂的自测试(Self-Test)时生成的,

其数据是由伺服系统校准子程序提供的。此模块的结构和用途目前还不完全清楚,假如用

其他的副本对该模块进行置换,读取盘面时将会被告知遇到缺陷扇区,并且根本不可能对

硬盘进行写操作。

AT_XAL(PN=35h)模块,该模块是一个为了把缺陷添加到 G-List,而使用的一个过

渡表格。它能够在一些老的 DSP-based硬盘中找到(例:RIGEL)。

2.4.2.2 固件模块

固件模块构成硬盘的控制程序,如表 2-3 所示。表 2-3 列举的是固件模块。前 3 个模

块包含的是使用者的固件程序模块,后 3个是硬盘制造时使用的固件程序模块。然而,后

3个并非在所有的硬盘中存在。

在讲述固件模块功能之前,应该搞清楚一个问题,对于 Poker/Ardent 硬盘家族而言,

其硬盘固件区包含两个硬盘控制程序:

� 程序 1的模块构成:38h,39h,4FH;(表 2-3的前 3个模块)

� 程序 2的模块构成:97h,96h,98h;(表 2-3的后 3个模块)

深度剖析——硬盘固件级数据恢复

20

表 2-3 Maxtor 硬盘 SA 中的固件模块

PN 号,十六进制 模块用途 重 要 性

39 [ROM_SA]ROM copy ROM副本 B

38 [OVL ATA]First portion of firmware overlays

固件 overlay的第一部分 B

4F [OVL TECH]Second portion of firmware overlays

固件 overlay的第二部分 B

97 [ROM_ST]ROM copy E

96 [OVL ST1] First portion of firmware overlays

固件 overlay的第一部分 E

98 [OVL ST2] Second portion of firmware overlays

固件 overlay的第二部分 E

ROM 副本[ROM_SA](PN=39h)模块,该模块是 ROM 中固件内容的副本,保存在

固件区中,在常规的操作模式下,需要加载 ROM 固件部分时,加载的是该模块。该模块

和[OVL ATA]模块、[OVL TECH]模块一起构成程序 1。

ATA Overlay[OVL ATA](PN=38h)模块,一个 Overlay是程序代码(Program Code)

的一部分,它能够将缓冲器 RAM连接到处理器代码段。一次只能连接一个 Overlay。这一

组 Overlay主要用于标准模式(Normal Mode)下的固件扩展。如果任何一个 Overlay不能

被读取,那么,全部或部分 ATA命令将不能正确运行(例如:SMART命令)。

Overlay 执行技术命令模块[OVL TECH](PN=4FH),这一组 Overlay 对于固件在技

术模式下运行是必须的。

固件转换模块 PN=95h(该模块由于和固件模块关系紧,所以在此讨论)由于该模块

与硬盘借助于本模块的第 2个字(查看模块的第 4字节与第 5字节),以决定是启动程序 1,

还是启动程序 2。对于 Poker/Ardent硬盘的 Boot ROM来讲,如果硬盘没有给其提供一个

备用的 SA,那么它就会读取本模块的开头部分。如果本模块损坏了,硬盘将不能启动。请

注意,如果你在一个没有备用 SA的 N40P硬盘上,启动一个有备用 SA的 N40P硬盘中的

LDR,则应用程序(PC-3000)将指出 95h模块的模块头不正确。实际上盘上不存在此模块。

[ROM_ST] PN=96h [OVL_ST] PN=97h 和 PN=98h。这几个模块构成了程序 2。它的

功能由硬盘家族和固件区(原固件区或备用固件区)来决定。

2.4.2.3 技术模块

技术模块通常描述的是自检(Self Test)设置和它运行的记录(log),表 2-4列举的是

技术数据模块。

表 2-4 Maxtor 硬盘 SA 技术模块

PN 号,(十六进制) 模块用途 重 要 性

33 HLUTL&HUSR-defect lists缺陷表 Dd

11 MX_ST_CFG1 Dr

43 MX_ST_CFG2 Dr

OD MX_ST_CFG3 Dr

OE MX_ST_SCRIPT D

第 2 章 迈拓硬盘固件特点及其故障分析

21

(续表)

PN 号,(十六进制) 模块用途 重 要 性

7A U_LIST-copy of service area translator

固件区中的译码程序副本 D

83 Information on drive pars硬盘部件信息 D

31 DISK- second drive ID copy第二个硬盘识别码副本 D

14 STRS D

46 OPTI-self-testing setting 自检设置 Dr

47 STRS Dr

HLUTL & HUSR(PN=33h)模块(或简写为 HLists)包括一套表。第一个表始终是

HLUTL[长度为 16384 字节,并带有 8 字节的模块头和校验和(checksum)]。它包括 SA

的缺陷列表。接下来是一串 HUSRxxxx表,这里 xxxx是表格的序列号。每一个表为 8192

字节,并且和第一个表类似,它们都有模块头和校验和(checksum)。表数量的增加是由用

户数据区的缺陷总数而定的。

下文中,描述任何一个模块时,我们将使用模块名或模块名与位号。

2.4.3 适配数据(Adaptive Data)

适配数据(Adaptive Data)是由固件区中部分模块构成的,它用于对磁盘表面的读写

进行微调。访问用户数据时,所涉及的重要的适配数据模块有:SRV(PN=1Eh)模块、RCT

(PN=20h)模块、FMTI(PN=93h)模块与 Overlay(PN=4Fh)模块。

适配数据的特点如下:

� 适配数据具有唯一性,即使使用同一家族、同一型号的硬盘适配数据模块的副本,

来覆盖本盘的适配数据模块,也至少会造成访问用户数据区失败。使用硬盘的内

置工具(即 Self Test)重算适配的数据有助于硬盘的恢复,但无助于数据恢复,

因为重算适配数据将阻止硬盘使用早期的适配信息来读取已存放的数据。

� 不同的适配数据设置,其盘面的写入密度将有所不同,适配设置作用的增强,同

时也伴随着数据写入密度的提高。即使同家族、同型号的硬盘,有时其磁头的读

写间距差别大于磁道宽度的 2~3 倍。

� 完好的适配数据是对固件区进行写操作的必要条件,一个硬盘只有在加载了适配

数据模块和译码器之后,才能够向固件区写入数据。访问硬盘的固件区,既需要

读取适配数据,又需要写适配数据。尽管在没有适配数据的情况下,使用

BOOT-ROM或 LDR 仍然能够对固件区进行读操作,但在没有适配数据的情况下,

进行写操作是完全不可能的。这种情况是由于写入磁头可能没有找到相应磁道进

行写操作。因此,如果磁头与固件区之间的距离不匹配,磁头会将信息写入邻近的

磁道。

2.4.4 备用固件区(Alternate Service Area)

备用固件区(Alternate Service Area)是硬盘制造时,为创建主固件区并隐藏它的缺陷

而设立的,它包含的模块与主固件区相同,但其内容有所不同。

对于迈拓硬盘而言,具有备用固件区(也称 ALT-SA)的硬盘家族有:N40P,CALYPSO、

深度剖析——硬盘固件级数据恢复

22

SABRE和 FALCON。但并不是所有的 N40P硬盘都有一个备用固件区。为了方便起见,在

具有备用固件区硬盘的启动日志中,会显示一条用户信息:“HDD has an alternate service

area”。备用固件区是否存在,可以根据模块表中的 PN=95h模块来鉴别;如果 95h模块存

在,硬盘就没有备用固件区。这个规则对 N40P 硬盘家族例外,这是因为一个具有备用固

件区的硬盘,加载了一个来自没有备用固件区硬盘的 LDR。如果是那样的话,模块表中将

包含一个 95h模块记录,可是,如果读取它,将显示该模块是空的。

N40P系列备用服务区的固件版本类似于NCRxxxx0,CALYPSO系列备用服务区的 FW

版本类似于 YCRxxxx0,简称为 Program C,也就是大家说的 C区。主服务区的 FW,叫做

Program A,人们习惯称它为 A区;只有 FALCON系列特殊,它的 FW版本类似于 RDMxxx0

的样子。因此,FALCON系列的备用服务区也被称为 D区。

在一个具有备用服务区的驱动器引导过程中,主轴启转后,BOOT-ROM首先从主服务

区读取模块中的程序代码以及译码器,并检查它们的结构状态,如果它们的结构无效或者

无法读取,BOOT-ROM便转向装载备用固件区。也就是说,当主服务区的代码模块或者译

码器异常,BOOT-ROM便转向装载备用固件区。

将一个功能正常的硬盘切换到备用的固件区,有两种方法:

(1) 当使用 ALT-SA初始化时,启动一个在硬盘备用固件区中建立的 LDR。

(2) 你也可以在“Utility status”对话框选择“Write all module copies”,然后在

“module viewing mode”(Ctrl-Alt-2)中修改 PN=18h模块头中的一个字节并且保存模块,

从而将硬盘从主固件区切换到备用固件区。

2.4.5 译码器(Translator)

译码器(Translator)是一个程序和表格的组合,其功能是将操作系统所使用的硬盘逻

辑扇区(LBA)与硬盘物理扇区进行地址转换。迈拓硬盘所有隐藏的工厂缺陷(SA和数据

区)将排除在转换之外。

译码器(Translator)程序数据保存在以下模块中:U_LIST(PN=37h),AT_PDL(PN=18h)

和 RZTBL(PN=78h)。

硬盘以缺陷列表(PN=33h)模块为基础构建它的译码表。在这些表中,列出缺陷的一

些常规项目:柱面、磁头、扇区。因而,译码表可以在缺陷列表中使用“Translator regeneration”

命令组建。如果要覆盖译码模块(例如:当本地模块损坏时,从另外一个功能正常的硬盘

中复制一个模块进来),那么程序仍将显示和译码模块修改之前一样的缺陷列表,这样译码

表重建将恢复它的实际值。

2.5 迈拓硬盘固件故障分析

首先固件故障的定位有一定难度。这是因为不同的故障原因,所表现出的故障现象可

能是一样的,所以仅仅依靠一个故障现象来快速精准地锁定故障部位,不是一件轻而易举

的事情。

其次,处理固件故障要遵守一定的规范,也就是在修复固件故障前,一定要对硬盘固

件区进行备份。否则贸然动手会把本可以恢复的数据给销毁。

第 2 章 迈拓硬盘固件特点及其故障分析

23

一个硬盘如果存在固件故障,大多表现为启动不正常。硬盘启动状态将是迈拓硬盘的

固件故障分析突破点。

2.5.1 迈拓硬盘的启动状态

迈拓硬盘启动后有三种可能的状态:

一是启动失败(FAIL):处于此种状态时,可以执行“HDD ID reading”命令,查看固

件版本。如果该命令所显示的固件版本与硬盘的 ROM 的版本相符,说明启动时硬盘没能

读取盘面的固件区,或在启动前由 BOOT-RAM核对的来自于 SA[ROM_SA]中的模块有部

分损伤。如果 PCB正常且与 HDA 匹配,从固件区启动固件的问题仅有以下两种。

� 硬盘固件区不能被读取。

� 固件区[ROM_SA]中有部分模块损伤。

要更精确地诊断此状态,则要启动 LDR。

二是从备用固件区(ALT-SA)启动:能够从备用固件区启动,说明主固件区模块存在

问题,同时表明 Boot ROM所使用的磁头读功能正常,可以完成硬盘启动。但并不能说明

磁头写功能是正常的,验证磁头写功能是否正常,你可以试着向备用固件区扇区写数据并

读取,读出的数据不正确,则明确表明磁头的写入部分有损伤。

三是硬盘能够正常启动进入工作状态:如果硬盘能够按照 LBA 地址模式正确读取数

据,这说明硬盘固件的功能基本正常。在这种情况下,如果有恢复用户数据的需要,那就

需要禁用 Automatic relocation of defects(自动重定位缺陷)功能。另外,要注意查看硬盘

是否设置了 ATA口令。对于盘面的划伤、扇区损坏、数据写入错位、盘面积尘这些“硬伤”,

使用软件工具不能解决这些问题。但可以借助 Self Test对这些问题定址。

2.5.2 迈拓硬盘启动失败的原因分析

前文已经把硬盘启动失败原因归结为两条,即:

� 硬盘固件区不能被读取;

� 固件区[ROM_SA]中有部分模块损伤。

无论是上述哪种原因,都会使硬盘停留在一个出错状态,造成使用者无法访问硬盘的

用户区和固件区。要更精确地诊断此状态,则要启动 LDR。

2.5.2.1 什么是 LDR

简单地讲,LDR就是一个启动文件,用于启动固件初始化有问题的硬盘。固件初始化

有问题,将使硬盘逗留在一个错误状态,并且不能使用任何命令对用户数据和固件区中的

数据进行访问。在这种情况下,就需要让硬盘跳过标准的初始化,使用 LDR启动硬盘。当

然,此时很多固件的运算法则将被封锁。例如:访问用户数据区或对它的缺陷进行处理等。

此外,因为硬盘没有加载适配数据,导致访问固件区的命令运行不正常。

如果一个硬盘完全正常,或已经借助于兼容的 LDR被启动,你可以给该硬盘创建一个

自己的 LDR,这一步将防止 LDR文件和被修理的硬盘之间不兼容。

深度剖析——硬盘固件级数据恢复

24

2.5.2.2 创建 LDR

创建 LDR,可以借助 PC-3000或其他工具。本节以Maxtor 4DO4OH2为例,建立一个

该硬盘自己的 LDR,具体步骤如下:

将该硬盘连接到 ATA0接口,启动 PC-3000,进入 PC-3000的主页面,如图 2-4所示。

图 2-4 PC-3000主页面

在 HDD Vendors一栏中,选择“Maxtor”,并在工具栏中单击“Run utility”按钮,进

入下一个页面,如图 2-5所示。

图 2-5 PC-3000页面

第 2 章 迈拓硬盘固件特点及其故障分析

25

在图 2-5中的“Load resources from”一栏内,选择“HDD”,然后单击“utility start”

按钮启动程序。启动完毕后,会显示“HDD structure have been read successfully”,表示程

序启动成功。下一步进行 LDR创建,具体步骤如下:

在工具栏中依次单击“Tests”→“Service information”→“Loader”→“LDR file creation”,

如图 2-6所示。

图 2-6 选择 LDR file creation

选择“LDR file creation”后,程序开始进入 LDR创建的交互阶段,如图 2-7所示。

图 2-7 创建 LDR

在图 2-7显示的“LDR file creation”对话框的“Create LDR from”栏目中选择“HDD

深度剖析——硬盘固件级数据恢复

26

date”,并单击“Ok”按钮,进入下一个窗口,如图 2-8所示。

图 2-8 “Choose/create profile”对话框

在“Choose/create profile”对话框的“Profile name”一项中,默认给出了一个配置文

件名(profile name):4D040HZ-DAH017K0-D27GRWE。该配置文件名构成是这样的:

Model+Code+Drive S/N。即该迈拓硬盘的Model为“4D040HZ”,其 Code为“DAH017K0”,

该硬盘的 S/N号(Drive S/N)为“D27GRWE”。当然使用者可以根据习惯更改配置文件的

名字,一般情况下不需要做任何更改,直接单击“Ok”按钮确认,并进入下一个对话框,

如图 2-9所示。

图 2-9 “LDR file creation”对话框

第 2 章 迈拓硬盘固件特点及其故障分析

27

在图 2-9的对话框中,给出了配置文件保存的位置及文件名称(Loader.ldr),一般不需

要做任何更改,单击“保存”按钮即可,单击“保存”按钮后进入下一个窗口,如图 2-10

所示。

图 2-10 创建 LDR

图 2-10 窗口显示的是创建 LDR的应用程序运行过程的一个截图,此时无须人工干预,

时间很短,LDR 建成后,系统会提示“LDR file forming completed”,即 LDR文件编制完

成,如图 2-11所示。

图 2-11 LDR编制完成

深度剖析——硬盘固件级数据恢复

28

2.5.2.3 LDR 的使用

1. 加载 LDR步骤及硬盘信息诊断

(1) 加载 LDR步骤:

� 在 PC-3000启动对话框中,选择“LDR file loading”项。从数据库加载要比从文

件加载更方便,因为可用的 LDR列表有更多的信息,并且仅显示所选择的硬盘家

族。一旦你连接到数据库,PC-3000将显示一个所选择硬盘家族的固件版本列表,

指定加载 LDR 即可。

� 在可选的启动菜单中选择“ROM+Overlays”。

(2) 硬盘的 ID信息诊断

如果启动程序无缺点完成,执行“HDD ID reading”,并基于硬盘的 ID信息继续诊断:

� 显示硬盘正确的序列号,固件版本号末端为“0”,并正确识别硬盘型号。如果是

这样的话,成功完成 LDR程序初始化。

� 没有显示序列号,但固件版本以“0”结尾,并且硬盘的工厂别名能够被正确识别。

这就意味着 LDR启动固件区译码器失败,并且未能读出初始化所必须的模块数。

这可能是由于一些固件区的模块未能读出。

� 没有显示序列号,固件版本和[ROM_SA]相同,或与盘体标签上所标的版本号相

同,并且以“Z”结尾。这大概是 LDR overlay没有加载。

� 没有显示序列号,固件版本与硬盘电路板上的 ROM版本相匹配,在实际工作中,

这种情况很罕见,如果出现这种情况,很有可能是启动 ROM的 LDR出现了问题。

2. LDR加载出错的判断

(1) 加载 ROM 出错,或硬盘就绪出错。如果电路功能正常,那么问题大多是安全

模式的跳线没有设置。

(2) 加载 Overlay出错,它可能加载 ROM失败。大多是 LDR文件结构损坏或 LDR

文件来自于不同的硬盘家族。

(3) 加载 Overlay 之后,硬盘启动主轴马达失败。在这种情况下,你可以试着使用

一种不同的方法去启动 LDR。

(4) 加载 overlay以后,硬盘启动主轴电机,并开始敲盘,持续时间超过 1分钟。它

意味着从盘面没有读到任何数据。如果一个盘面的记录密度为 40GB 的硬盘,加载一个盘

面记录密度为 30GB硬盘的 LDR,就会出现这种情况,反之亦然。

2.5.2.4 固件区的检测与修复

硬盘的固件区或多或少总会有些坏块,即使对一个完全正常的硬盘而言,也不例外。

所以除非这些坏块涉及一些关键模块,否则就没必要太关注它。这是因为硬盘的正常工作

不必要读取所有模块,也不需要固件区中的所有扇区没有一点缺陷。当然,一旦一些关键

模块遭到损坏,就会直接影响到硬盘的正常使用。所以了解和掌握固件区的检测与修复很

有必要。

第 2 章 迈拓硬盘固件特点及其故障分析

29

1. 固件区检测方法

固件区检测要借助一些专门工具,本文以 PC-3000 为例来阐述固件区的检测方法。

PC-3000提供两种检测方法,即“SA testing and recovery”和“SA structure test”。通过检测

来评估固件区的实际状况。

检测时,建议首先启动“SA testing and recovery”,因为在测试期间,该命令将设法对

所读到的内容进行备份。如果测试检查出固件区有损伤,可以对它进行修复。“SA structure

test”更多用于精确诊断。

(1) 固件区的检测与恢复(SA testing and recovery)

该命令的功能是:对固件区进行结构分析,并对损伤模块实施修复。其启动顺序为:

“Tools”→“Utility extensions”→“SA testing and recovery”。

图 2-12展示的是该命令在进行了固件区测试之后 PC-3000 窗口的外观,“Modules”标

签显示的是程序开发者确定的用

于硬盘主要功能的模块表。表中

所列模块是按模块的 UBA 号码

的升序排列的。一个模块记录由

以下几部分构成:UBA 开始扇

区、ID 或 PN、扇区的长度、模

块简称、重要性等级,模块头检

查状况以及校验和(Checksum)

校验状况。在每行开始处的色块

反映了检查的结果:

� 红色 - 读模块错。

� 黄色 - 校验和错。

� 粉红色 - 模块头比对错误。

� 绿色 - 无错误。

另外,使用鼠标选择其中一模块,并单击右键,会显示一个对话框,如图 2-12所示,

可以对所选模块进行进一步检查和测试,篇幅所限,在此不再赘述。

“Defects”标签,当选择该模式时,使用激活的固件区磁头从 U_LIST 模块加载 SA

的缺陷。在 SA 测试期间,将所有发现的缺陷加进表中,并用黄色的方块做标记。工具栏

里提供了操作按钮,用于隐藏 SA 中的缺陷。单击该按钮,读取模块,将每个缺陷增加到

SA 译码器中,并将数据写回到 SA中。

(2) 固件区结构测试(SA Structure test)

测试允许用户评估写入到 SA 中数据的有效性。如果由于 SA 中数据损坏而使硬盘运

行不正常,测试将识别损坏的模块。然后你也可以使用该测试所获得信息,构思继后的硬

盘修复。该命令的大部分测试功能在“SA testing and recovery”的交互模式中同样可以使

用。因此,使用者可以综合利用 SA模块修改,以及 SA结构测试的方法。

测试使用的磁头在“Utility status”对话框中指定,对别的磁头进行此项测试,你需要

变换 SA中的磁头。

图 2-12 SA testing and recovery模式

深度剖析——硬盘固件级数据恢复

30

对固件区诊断以后,可以确定故障原因。如果没有发现模块损伤,它意味着不是译码

器模块的数据结构损伤,就是 G-List模块的结构损伤。后者可以使用“Clearing G-LIST”

命令修复,因为这种情况从其他硬盘写入模块并不总是见效。如果你要保留隐藏到 G-List

的缺陷,那么在清空前,你应该查看 G-List,保存缺陷,一旦硬盘重新启动清空 G-List,

可将先前保存的隐藏的缺陷返回到 G-List。

2. 固件区的写测试

在修复模块之前,应该确定写入 SA的扇区功能正常。事实上,LDR文件常用于启动

硬盘,不能完全初始化固件,并可能导致它的运行错误,以及写入磁头可能不能操作。我

们注意到有这样一个规律:在 LDR启动后,如果硬盘显示它的序列号,那么写入功能肯定

被初始化;如果硬盘拒绝写入数据,那就意味着写入单元被损坏(这种情况不能使用软件

解决)。

使用 PC-3000进行写入测试有 2种方法:

� 执行“SA writing test”命令。测试由两部分构成:从模块 PN=1Eh加载适配数据,

并通过向 SA中被称做“swap1”的不使用的区域的一个扇区写入随机数据,来检

查写入 SA的功能。两者择一,你也可以在 PC-3000启动对话框中选择“Initialize

SRV”。

� 在交互模式中加载 U_LIST 模块,并更改其中的任一字节。然后写入模块再读取

它。如果模块读取成功,那么说明写入功能正常,并且你应该将修改字节改回原

始值并写回。我们推荐使用 U_LIST 模块,因为它在一个 SA 中有 4 个副本,只

要能读出一个,硬盘就可以启动。

注意!在向一个硬盘写入数据之前,要保存所有模块。这样做的必要条件是,在向 SA

写入数据期间硬盘的操作性能不稳定。也就是说,一个适配数据模块有可能被改写!这将

导致固件区中的数据丢失,如果事前没有保存,将导致硬盘不可修复。

到今为止,如果写功能没有复活,那么 SA 的修复是不可能的。当然,还有一个机会

就是使用 HOT SWAP,但是较为罕见,总之,修理这样的硬盘将毫无价值,如果要做数据

恢复,可能需要更换磁头。

2.6 迈拓硬盘维修案例

2.6.1 迈拓硬盘的 LDR 备份

一些迈拓硬盘由于固件损坏往往造成硬盘不能被系统所识别,故障出现后,需要找到

相同型号的 LDR和固件,然后通过加载 LDR文件识别硬盘,并将固件刷到硬盘中。为此

对一些功能正常的硬盘,使用者要未雨绸缪,及时地备份硬盘的 LDR和固件,以备用。下

面以 4D040H2为例,叙述一下 LDR的备份过程:

步骤 1:设置硬盘跳线,将硬盘设置为Master模式,并通过 IDE线和电源线将硬盘连

接到 PC3000 卡上。

步骤 2:启动 PC-3000,进入 PC-3000主页面,在左侧的“HDD Vendors”列表框中,

第 2 章 迈拓硬盘固件特点及其故障分析

31

选择 Maxtor 选项,并接通电源,如图 2-13所示。

图 2-13 PC-3000主页面

步骤 3:在图 2-13中单击“Run utility”按钮,程序将会弹出“Utility start”对话框,

如图 2-14所示。

图 2-14 “Utility start”对话框

在图 2-14的“HDD family”组合框中可以选择硬盘型号,本例程序将自动选中“Romulus

DSP”,然后单击“Utility start”按钮,此时界面上方的“HDD”组合框中显示了硬盘型号、

版本号、固件版本以及容量等相关信息,如图 2-15所示。

深度剖析——硬盘固件级数据恢复

32

图 2-15 PC-3000界面

步骤 4:单击“Loader”按钮,然后在其级联菜单中选择“LDR file creation”菜单项,

如图 2-16所示。

图 2-16 选择“LDR file creation”菜单项

选择“LDR file creation”菜单项后,程序进入“LDR file creation”对话框,如图 2-17

所示。

在图 2-17的对话框中选择“HDD data”,然后单击“Ok”按钮。

步骤 5:在图 2-17中单击“Ok”按钮后,程序将弹出“Choose/create profile”对话框,

然后在“Profile name”文本框中输入备份的 LDR文件名,这里保持默认设置即可,如图 2-18

第 2 章 迈拓硬盘固件特点及其故障分析

33

所示。

在图 2-18的列表框中已列出了当前已备份的 LDR文件,确认后,单击“Ok”按钮。

图 2-17 “LDR File creation”对话框 图 2-18 “Choose/create profile”对话框

步骤 6:在图 2-18 中,单击“Ok”按钮

后,程序将弹出“LDR file creation”对话框,

如图 2-19所示。

然后在“保存在”下拉列表中,选择文件

的存放路径,并在“文件名”文本框中输入

LDR文件的文件名,这里保持默认的“Loader”

即可。单击“保存”按钮,程序将返回上一界

面,此时 PC-3000 将开始备份硬盘的 LDR,

如图 2-20所示。

图 2-20 备份 LDR

备份硬盘的 LDR时,在界面下方的“Current test progress”进度条上显示备份的进度。

当界面出现“LDR file forming completed”提示信息时,表明 LDR已备份成功,如图 2-21

所示。

图 2-19 “LDR file creation”对话框

深度剖析——硬盘固件级数据恢复

34

图 2-21 LDR备份成功

当硬盘无法被 PC-3000识别时,就可以使用加载 LDR备份的方法来识别硬盘。

2.6.2 迈拓硬盘的固件备份

迈拓硬盘固件出现问题后,会出现以下现象:硬盘通电后,硬盘电机正常运转,但在

计算机的 BIOS中无法识别硬盘,检测硬盘时发现满盘坏道,甚至发出敲盘声。此时只有找

到相同型号的固件,然后使用 PC-3000等专用工具,将其刷入到硬盘中,所以及时备份固件,

对硬盘固件修复而言,将显得非常重要。下面以 4D040H2为例,叙述一下 LDR的备份过程:

步骤 1:将硬盘的跳线设置为 Master 模式,并通过 IDE 线和电源线将硬盘连接到

PC3000 卡上。

步骤 2:启动 PC-3000,进入 PC-3000主页面,在左侧的“HDD Vendors”列表框中,

选择“Maxtor”选项,并接通电源,如图 2-22所示。

图 2-22 PC-3000主页面

第 2 章 迈拓硬盘固件特点及其故障分析

35

步骤 3:在图 2-22 页面中单击“Run utility”按钮,程序将会弹出“Utility start”对话

框,如图 2-23所示。

图 2-23 “Utility start”对话框

在图 2-23所示的“HDD family”组合框中可以选择硬盘所属的类别,本例程序将自动

选中“Romulus DSP”,然后单击“Utility start”按钮。

步骤 4:单击“Utility start”按钮后,在主页面中,单击“Work with service area”按

钮,从弹出的下拉菜单中选择“Reading modules”菜单项,如图 2-24所示。

图 2-24 选择“Reading modules“菜单项

选择“Reading modules”菜单项后,程序进入“Choose/create profile”对话框,如图 2-25

所示,然后在“Profile name”输入项目名称,即用于保存固件的文件夹,这里保持默认设

置即可,界面下方的列表框中列出了当前已经备份的所有固件文件。

深度剖析——硬盘固件级数据恢复

36

步骤 5:在图 2-25界面中单击“Ok”按钮,程序将弹出“Reading modules”对话框,

然后在“Read modules into”组合框中,选择“HDD profile folder”单选按钮,其下方文本

框显示固件的存放路径,也可以单击“Browse…”按钮更改固件的存放路径,在此保持默

认设置,如图 2-26所示。

图 2-25 “Choose/create profile”对话框 图 2-26 “Reading modules”对话框

此时,“Modules”列表框中列出了所有模块,此时可以对全部或部分模块进行备份,

选择完毕后,单击“Ok”按钮,程序返回主页面,此时 PC-3000开始备份指定模块,并在

窗口中显示当前已经备份的所有模块,同时“Current test progress”进度条会显示备份的进

度,如图 2-27所示。

图 2-27 备份模块

第 2 章 迈拓硬盘固件特点及其故障分析

37

备份完成后,窗口中会显示出备份的全部模块编号及其对应的文件名称。表示固件备

份完成。

2.6.3 刷写迈拓硬盘固件

故障现象:开机后出现“Master hard disk fail ”信息,硬盘无法正常启动,有可能是

硬盘固件损坏造成的。为此需要使用 PC-3000等维修工具,将同型号的固件刷到硬盘中,

即可排除故障。本案例分 3个部分来叙述迈拓硬盘固件的刷写:

� 加载 LDR。

� 刷写固件。

� 重建译码器,擦除坏道。

需要指出的是,刷固件的成功率并非 100%,下面以 4D040H2为例,叙述一下刷写迈

拓硬盘固件的过程。

1. 加载 LDR

步骤 1:在本地找到待修硬盘的 LDR和固件备份,或从网上下载同型号的硬盘固件,

并通过 IDE线和电源线将待修硬盘连接到 PC-3000 卡上。

步骤 2:启动 PC-3000,在主页面的“HDD Vendors”列表框中选择“Maxtor”,并为

PC-3000 卡接通电源,单击“Run utility”按钮,如图 2-28所示。

图 2-28 PC-3000主页面

步骤 3:在图 2-28中单击“Run utility”按钮后,程序会弹出“Utility start”对话框,

如图 2-29所示。

在“HDD family”组合框中选择硬盘所属类别,在这里选中“Romulus DSP”单选

按钮,单击“LDR file loading”按钮,从弹出的下拉框中选择“from file”,如图 2-30

所示。

深度剖析——硬盘固件级数据恢复

38

图 2-29 “Utility start”对话框

图 2-30 选择“from file”选项

步骤 4:选择“from file”之后,程序会弹出“LDR file loading”对话框,如图 2-31所示。

在图 2-31 中的“查找范围”下拉列表中选择 LDR 备份文件的存放路径,并在下方的

列表框中选择 LDR文件。

步骤 5:在图 2-31所示对话框中,单击“打开”按钮,弹出“LDR loading parameters”

对话框,如图 2-32所示。

图 2-31 “LDR file loading”对话框 图 2-32 “LDR loading parameters”对话框

第 2 章 迈拓硬盘固件特点及其故障分析

39

在图 2-32 中,选择“Auto”,单击“Ok”按钮,程序开始加载所选的 LDR 文件,成

功后程序会提示“HDD structures have been read successfully”,如图 2-33所示。

图 2-33 LDR加载成功

2. 刷写固件

在刷写固件之前,首先需要备份硬盘的原有固件,以防刷写失败时进行恢复。备份固

件与案例 2相同,在此不再赘述。在原硬盘固件备份完成后,即可开始对硬盘固件进行检

查,已确认哪些固件模块存在问题。

步骤 1:选择“Tools”→“Utility extensions”→“SA testing and recovery”菜单项,

如图 2-34所示。

图 2-34 选择“SA testing and recovery”选项

深度剖析——硬盘固件级数据恢复

40

切换到“SA testing and recovery”选项卡,此时窗口中间列出了硬盘中所有模块的位

号、大小以及重要性等信息,如图 2-35所示。

图 2-35 “SA testing and recovery”选项卡窗口

步骤 2:在图 2-35中,单击“Start SA structure test”按钮,弹出“Modules choice”对

话框,如图 2-36所示。

在“Select the modules to be checked”列表框中,选择要检查的模块。如果要检查所有

模块,保持默认设置即可。

步骤 3:在图 2-36中单击“Ok”按钮,弹出“SA structure test”对话框,如图 2-37所示。

在“Select the destination folder for modules being read”下拉列表中选择模块所在的分

区,在下方的列表框中选择模块文件的存放路径,一般情况下保持默认设置即可。

图 2-36 “Modules choice”对话框 图 2-37 “SA structure test”对话框

第 2 章 迈拓硬盘固件特点及其故障分析

41

步骤 4:在图 2-37中,单击“Ok”按钮,返回“SA testing and recovery”选项卡,此

时界面下方会显示出已经检查的所有模块,如图 2-38所示。

图 2-38 “SA testing and recovery”窗口

检查中,“Current test progress”进度条会显示检查的进度,检查完所有模块后,

“Modules”列表框中“UBA”栏中以色块的形式显示出各模块的情况,绿色和粉红色表

示模块正常,红色表示模块存在问题。确定损坏的模块后,即可重刷损坏的固件。

步骤 5:选择“Tests”→“Service information”→“Work with service area”→“Writing

modules”菜单项,如图 2-39所示。

图 2-39 选择“Writing modules”菜单项

深度剖析——硬盘固件级数据恢复

42

程序会弹出“Writing modules”对话框,如图 2-40所示。

图 2-40 “Writing modules”对话框

在“Write modules from”组合框中,选择“HDD profile files”。单击“Ok”按钮,

进入下一步。

步骤 6:单击“Ok”按钮后,程序将弹出另一个“Writing modules”的对话框,如图 2-41

所示。

图 2-41 “Writing modules”对话框

在对话框的“Choose the destination folder”下拉列表中,选择存放固件的硬盘分区,

在下方的列表中选择固件的存放路径。找到固件的存放路径后,对话框下方的“Module”

列表框中,将以复选框形式列出备份的所有模块,由于需要重刷 64号模块,所以选择“64”

复选框,然后单击“Ok”按钮即可返回图 2-27界面,此时“Current test progress”进度条

会显示固件的刷写进度,刷写完毕后,可以检查 64模块是否被修复,方法是在“Id”栏中

的“64”选项上单击右键,从弹出的快捷菜单中选择“Check on module”菜单项,此时 PC-3000

将检查 64 号模块的修复情况,界面下方会显示“Module:64………:Ok”的提示信息,

表明 64号模块已被成功修复。

第 2 章 迈拓硬盘固件特点及其故障分析

43

3. 重建译码表器

步骤 1:返回 PC-3000主页面,单击“Run utility”,程序会弹出“Utility start”对话框,

如图 2-42所示。

图 2-42 “Utility start”对话框

单击“Utility start”按钮,打开“PC-3000 UDMA-CHINA-[Maxtor Utility(PC-3000 PCI)

(ATA-0)]”窗口,然后选择“Tests”→“Service information”→“Work with service area”

→“Translator regeneration”,如图 2-43所示。

图 2-43 选择 Translator regeneration

深度剖析——硬盘固件级数据恢复

44

步骤 2:选择“Translator regeneration”后,程序将弹出“Translator regeneration”对

话框,如图 2-44所示。

在“Recalculation methods”组合框中,选择“Software”,单击“Ok”按钮,进入下一步。

步骤 3:在图 2-44中,单击“Ok”按钮后,程序将弹出“Choose/create profile”对话

框,如图 2-45所示。

图 2-44 “Translator regeneration”对话框 图 2-45 “Choose/create profile”对话框

在图 2-45 中保持默认设置,单击“Ok”按钮,此时系统开始重建该硬盘的译码器,

“Current test progress”进度条会显示译码表的重建进度,当窗口下方出现“Reassign

defects………Ok”的提示信息时,表明译码器已被重建成功,如图 2-46所示。

图 2-46 译码器创建成功

译码器创建成功后,可使用 Victoria等工具,将坏道擦除硬盘即可正常使用。

第 3 章 三星硬盘固件特点及其故障分析

3.1 三星硬盘基础知识

三星从 1988年开始制造硬盘,技术上一直处于跟随者的地位,营销上也一直走 OEM

路线,在零售市场并不为人熟知。2003年三星半导体接掌硬盘部门后,凭借技术上的领先

与制造工艺的精密,实现了较高的发展速度。在追随东芝、日立推出 1.8英寸、1.3英寸、

0.85英寸硬盘后,三星硬盘更是拥有了绝对优势的竞争力。2007年三星推出全球首款 Hybid

HDD 即混合硬盘,领先了对手几个月。但在产业整合的大势下三星也无可避免,2011 年

三星硬盘部门被希捷并购,三星硬盘品牌也将于 2012底成为历史。

3.1.1 三星硬盘命名规则

在早期的产品中,三星硬盘各型号皆为 3.5英寸台式机硬盘。名称中第 1位一般为 S,

代表三星的主流生产线 Spin Point,M则代表高端的Magma家族。第 2位表示主轴转速,

V意为 5400 r/min,P意为 7200 r/min。接下来的几位数字中前几位代表硬盘容量,最后一

位指示磁头数量。最后一位字母中 H代表 Ultra ATA-100 接口,N代表 Ultra ATA-133 接

口,C代表 SATA接口。三星硬盘部分早期型号如表 3-1所示。

表 3-1 三星硬盘部分早期型号

家 族 型 号 容量(GB) 磁 头 数

V11P

VOYAGER

11PLUS

SV1021H

SV2042H

SV3063H

SV4084H

10.2

20.4

30.6

40.8

1

2

3

4

V40

VICTOR

SV2001H

SV3012H

SV4002H

SV6003H

SV6014H

SV8004H

20

30

40

60

60

80

1

2

2

3

4

4

P40

PUMA

SP2001H

SP20A1H

SP4002H

SP40A2H

SP6003H

SP60A3H

SP8004H

SP80A4H

20

20

40

40

60

60

80

80

1

1

2

2

3

3

4

4

深度剖析——硬盘固件级数据恢复

46

(续表)

家 族 型 号 容量(GB) 磁 头 数

V40P

VICTORPLUS

SV2011H

SV4012H

20

40

1

2

V60

VERNA

SV0301H

SV0602H

SV0813H

SV0823H

SV1204H

30

60

80

80

120

1

2

3

3

4

V60

VERNALITE

SV0221H

SV0412H

20

40

1

2

VL40

VANGO

SV0211H

SV0401H

20

40

1

1

VL40P

VANGOPLUS

SV0221N

SV0411N

20

40

1

1

PL40, PL40S

PANGO

SP0411N

SP0411C

40

40

1

1

V80,V80P

V80PL

VELOCE

SV0802N

SV1203N

SV1604N

80

120

160

2

3

4

P80,P80VE

P80P,P80PL

P80S

PALO

SP0401N

SP0421N

SP0612N

SP0622N

SP0802N

SP0812N

SP0812C

SP1203N

SP1213N

SP1213C

SP1604N

SP1614N

40

40

60

60

80

80

80

120

120

120

160

160

1

1

2

2

2

2

2

3

3

3

4

4

P80H,P80VA

RUBICON

SP0421N

SP0622N

SP0822N

40

60

80

1

2

2

P80A

SP1223N

SP1624N

SP1634N

120

160

160

3

4

4

P120,P120S

POSEIDON

SP1613N

SP1603N

SP2014N

SP2004C

SP2514N

SP2504C

160

160

200

200

250

250

3

3

4

4

4

4

P80VEM

CAESAR SP0842N 80 2

P80M

SP1243N

SP1253N

SP1644N

SP1654N

120

120

160

160

3

3

4

4

第 3 章 三星硬盘固件特点及其故障分析

47

在划归三星半导体管理之后,三星硬盘按内置硬盘与外置硬盘两大门类进行型号命名。

命名规则具体如表 3-2、表 3-3所示。这些产品也是我们日常接触最多的型号。

表 3-2 内置硬盘型号

前 缀 容 量 缓 存 磁头(容量) 接口(转速)

HA = 消费型电子

HE = 企业级

HS = SFF

HX = 外置

HD = 台式机

HM = 移动

HU = Ultra SFF

×10 GB

例如:

16 = 160 GB

A = 2 MB

B = 8 MB

C = 16 MB

D = 32 MB

E = 64 MB

F = 128 MB

A-F = 1 GB,1-6个磁头

G-N = 10 GB,1-8个磁头

P-W = 100 GB,1-8个磁头

PATA

A = 3600 r/min

B = 4200 r/min

C = 5400 r/min

D = 7200 r/min

SATA 1(1.5 Gbps)

E = 4200 r/min

F = 5400 r/min

G = 7200 r/min

SATA 2(3.0 Gbps)

H = 4200 r/min

I = 5400 r/min

J = 7200 r/min

K = 10 k r/min

SATA 3(6.0 Gbps)

L = 5400 r/min

M = 7200 r/min

N = 10K r/min

OTHER

P = CE ATA/3600 r/min

Q = CE ATA/4200 r/min

R = USB/4200 r/min

S = USB/3600 r/min

T = SAS 6 Gbps/10k r/min

U = SAS 6 Gbps/15k r/min

V = FC 4 Gbps/10k r/min

W = FC 4 Gbps/15k r/min

X = USB(板载)/5400 r/min

Y = USB(板载)/5400 r/min

表 3-3 外置硬盘型号

前 缀 尺 寸 接 口 选 项 容 量 世 代 地 区

HX=外置 D=3.5英寸

M=2.5英寸

S=1.8或

1.3英寸

U=USB 2.0

E=USB 2.0&eSATA

F=USB2.0和 FireWire

400/800

P=USB 2.0&eSATA&

FireWire 400/800

D=eSATA和 FireWire

0=默认

R=RAID(0,1,5)

C= 卡 槽 ( SD ,

MMC)

A=×1 GB

B/D=x10 GB

例如:

25B=250GB

80A=80GB

A=第 1代

B=第 2代

A代

D=韩国

E=美国,欧洲

K=亚洲

T=中国台湾

B代

A=欧洲/美国

B=美国/亚洲

C=澳大利亚

D=韩国

F=欧洲

I=中国台湾

L=中国

N=阿根廷

深度剖析——硬盘固件级数据恢复

48

在三星硬盘的最后几年里,型号命名规则又有了新的调整,如表 3-4 所示。不过这些

型号在市面上并不多见。

表 3-4 最新内置硬盘型号命名

前 缀 尺 寸 容 量 单 位 接口(转速)

HN=内置 D=3.5英寸

M=2.5英寸

S=1.8英寸

0=×10 GB

1=×100 GB

2=×TB

SATA 1(1.5 Gbps)

I = 5400 r/min

J = 7200 r/min

K = 10k r/min

L = 15k r/min

SATA 2(3.0 Gbps)

M = 5400 r/min

N = 7200 r/min

P = 10k r/min

Q = 15k r/min SATA 3(6.0 Gbps)

R = 5400 r/min

S = 7200 r/min

T = 10k r/min

U = 15k r/min

表 3-5为最新的命名规则调整。

表 3-5 最新外置硬盘型号命名

前 缀 尺 寸 容 量 单 位 接 口 系 列

HX=外置

HY=NAS

HZ=媒体播放器

D=3.5英寸

M=2.5英寸

A=适配器

A=适配器

D=扩展坞

0=×10 GB

1=×100 GB

2=×TB

E=USB

2.0&eSATA

T=USB 3.0

U=USB 2.0

A=入门

B=标准

C=高级

3.2 三星硬盘固件结构及模块

3.2.1 固件结构特点

三星硬盘的固件分为两部分,即电路板 ROM 与盘面固件区 SA。ROM 固件中包含了

启动代码及调节磁头读/写盘面固件区的适配参数。每次硬盘上电以后,主控芯片首先加载

ROM代码,然后再根据 ROM固件读取并加载盘面固件区的模块。

在早期的家族中,包括 V11P、VICTOR、PUMA、VICTORPLUS、VERNA、VERNALITE

和 VANGO家族,硬盘使用的不是传统模块,其 ROM代码包含了定义模块位置的偏移量,

但这些偏移量并没有链接到任何名称或标识符。各模块的内容及作用需要在读取后进一步

判断。对于 VANGOPLUS,PANGO,VELOCE,PALO,MAGMA 以及以后家族的硬盘,

ROM 中保存着该家族的通用模块表,包含了模块的位置、编号等信息。根据固件版本的

不同,同一家族内部的模块位置及编号也会有所不同。通常当主代码加载到主控内存时,

主控将向盘面写入包含与所加载代码相同模块表的 FIT模块,然后再去操作盘面各模块。

第 3 章 三星硬盘固件特点及其故障分析

49

同时新家族的 ROM中还可能含有磁头映射图。

与其他品牌的硬盘相比,三星硬盘的固件结构特点体现在三个方面:

(1) 动态译码器。三星硬盘广泛使用动态译码器机制,即每次启动后根据各缺陷表

模块会重建一次译码器。

(2) 自适应区域分配表。对于基于区域编址的家族,其硬盘空间组织会在出厂时对

每块硬盘进行单独设计,每个区的磁道数与 SPT 均在工厂测试中根据磁头的物理参数与盘

面情况具体计算得出。

(3) 先进的自检/自恢复机制,即 Burn-in Test。向盘面固件区写入测试脚本后对硬盘

重新上电,就会进入 Burn Test模式。修复硬盘时如果需要重写固件,有一些关键性的模块

必须使用原盘的数据,如果这些模块损坏导致硬盘无法正常工作,则可以尝试通过Burn Test

修复。

3.2.2 硬盘空间组织

区域分配表保存在 ROM中。

三星硬盘的盘面划分为区域 Zones。它们的连续编号依家族不同而从 0到 16或者从 0

到 24。其中 0区位于磁盘外边缘,作为固件区。

固件区依家族不同包含 0~7,0~15或 0~23的磁道。对于 V11P,VICTOR,PUMA,

VICTORPLUS,VERNA,VERNALITE 与 VANGO 家族硬盘,固件区还包括负磁道。这

些磁道包含硬盘工作所用的模块与一些重要模块的副本。固件区还包含一些未格式化的磁

道(例如负磁道部分通常只使用-6 或-10 一个磁道)。每个家族硬盘的固件区 SPT 值均为

定值。但 PALO家族中 P80VE型号的固件区 SPT与家族其他型号的不同,为 832。

对于用户数据区的区域分配,三星硬盘采取了固定区域分配表与自适应区域分配表

(Adopted Zone Layout)两种模式。前一种模式中,区域分配表每个 Zone的磁道数、编号

以及 SPT 是在型号设计时最优化计算得出,都是固定的。同一家族的不同型号可能使

用不同厂商的磁头、盘片,则这些参数也可能是不同的,与之对应的固件版本也会各自

不同。

自适应区域分配表用在 VANGOPLUS,PANGO,VELOCE,PALO 以及 MAGMA 家

族中。表格在工厂测试时对每块硬盘单独设计。每个区的磁道数与 SPT在测试中根据磁头

的物理参数与盘面情况计算得出。表 3-6是 PALO SP0802N硬盘区域分配表的一个样例。

表 3-6 自适应区域分配表样例

#Z 头 起始柱面 结尾柱面 SPT

1 0 24 2927 1067

1 1 24 3166 1160

2 0 2928 6937 1056

2 1 3167 7505 1160

3 0 6938 11102 1044

3 1 7506 12008 1134

4 0 11103 16170 1027

4 1 12009 17485 1121

5 0 16171 19079 1015

深度剖析——硬盘固件级数据恢复

50

(续表)

#Z 头 起始柱面 结尾柱面 SPT

5 1 17486 20634 1108

6 0 19080 21988 1005

6 1 20635 23784 1093

7 0 21989 25874 986

7 1 23785 27570 1082

8 0 25875 29351 966

8 1 27571 31747 1056

9 0 29352 32366 953

9 1 31748 35754 1031

10 0 32367 36381 928

10 1 35755 38852 1015

11 0 36382 39896 928

11 1 38853 42650 994

12 0 39897 43411 894

12 1 42651 46942 966

13 0 43412 47665 870

13 1 46943 51173 928

14 0 47666 51019 850

14 1 51174 55204 928

15 0 51020 54026 828

15 1 55205 57891 899

16 0 54027 57480 799

16 1 57892 61660 870

17 0 57481 60827 773

17 1 61661 65703 835

18 0 60828 63781 747

18 1 65704 69334 812

19 0 63782 66935 721

19 1 69335 73180 773

20 0 66936 70502 696

20 1 73181 76411 747

21 0 70503 73902 662

21 1 76412 80187 696

22 0 73903 76956 638

22 1 80188 83253 696

23 0 76957 80068 609

23 1 83254 86618 662

24 0 80069 83153 580

24 1 86619 90033 638

用户数据区包含一定数量的保留磁道用于补偿缺陷空间,作为重定位扇区的区域。不

同型号对保留空间的位置及使用方法有可能不同。

对于 V11P与 VICTOR 家族,每个区每个头的末端 8个磁道作为保留区。对于 PUMA,

VICTORPLUS,VERNA,VERNALITE与 VANGO家族,每个区最后磁头的末端作为保留

空间,其大小为磁头数乘以 8个磁道。前面所说的家族(从 V11P,VICTOR到 VERNALITE,

第 3 章 三星硬盘固件特点及其故障分析

51

VANGO)中,如果某个区域产生了新的缺陷扇区或磁道,硬盘会使用部分保留空间用做这

些缺陷的重定位,相应保留空间也会变小。当该区保留空间溢出后,如果再产生缺陷就无

法再重定位,该区的扇区也无法重定位到其他区。

对于 VANGOPLUS,PANGO,VELOCE,PALO,MAGMA及以后的家族,保留空间

又可分为两个部分。首先保留空间使用每个区的每个头的后两个磁道作为缺陷扇区的重定

位源。其次在用户数据区最大 LBA 扇区之后还有一个保留区 zone。该区域大小等于逻辑

编址可用扇区的总数(可用的无缺陷扇区除去保留磁道与固件区)减去逻辑扇区数(Max

LBA+1)。此保留区在硬盘工作时不可用,在运行 Burn Test或者专用维修软件的缺陷表编

辑器时才可使用。

3.2.3 固件区模块

在早期的家族中,包括 V11P、VICTOR、PUMA、VICTORPLUS、VERNA、VERNALITE

和 VANGO家族,硬盘使用的不是传统模块,其 ROM代码包含了定义模块位置的偏移量,

但这些偏移量并没有链接到任何名称或标识符。因此获取具体模块信息始终需要从盘面固

件区读取。

对于 VANGOPLUS,PANGO,VELOCE,PALO,MAGMA 以及以后家族的硬盘,ROM

中保存着该家族的通用模块表,包含了模块的位置、编号等信息。根据固件版本的不同,

同一家族内部的模块位置及编号也会有所不同。通常当主代码加载到主控内存时,主控将

往盘面写入包含与所加载代码相同模块表的 FIT模块。写入后硬盘将不再操作此模块。硬

盘工作时会尝试从 FIT 模块获取模块表,如果该模块丢失或者损坏,则从 ROM 加载默认

模块表。

模块表包含了每个模块的名称、所在柱面、扇区、长度、编号,以及 Verify标识符,

用于通知模块磁道,表面硬盘工作时是否检验此模块头。三星硬盘的多数模块都没有校验

和,因此我们只能查看该模块头部与长度是否正确,数据的正确与否无法判断。模块头与

标准头部不匹配的严重程度要具体看该模块的重要性。某些模块可能就不存在模块头或者

初始值全为 0,只有硬盘首次使用它们时才会填充有效数据。

固件区数据的完整性检测使用硬盘的 0头(通常是系统磁头)进行。对于单磁头硬盘,

固件区模块只有一份备份。对于多磁头硬盘,硬盘工作时所有磁头都会记录模块,其他头

记录的是系统磁头可访问的固件模块的一份副本,它们出错并不影响硬盘的运行。此固件

记录机制可以用于系统磁头访问的固件模块结构遭受破坏时的固件恢复。

PALO家族硬盘所使用的通用模块表如表 3-7所示。

表 3-7 PALO家族通用模块表

ID 名 称 描 述 柱 面 扇 区 长 度 重要级别 头 校 验 符

00 FSI 系统文件记录 0 1 1 FSI Verify

02 FIT 硬盘模块位置表 0 2 4 D FIT Verify

04 MLIST 固件区缺陷表 0 6 1 As MLIST Verify

05 SRVTBL 伺服表 0 7 4 SV_TBL Verify

58 SEEKTIME 0 11 1 SEEKTIME Verify

5D CONFIG2 0 12 2 CONFIG2

06 CONFIG 硬盘配置参数 1 1 2 As CONFIG Verify

深度剖析——硬盘固件级数据恢复

52

(续表)

ID 名 称 描 述 柱 面 扇 区 长 度 重要级别 头 校 验 符

07 SNTBL 硬盘序列号

(PN或者 SN) 1 3 2

08 BISPT Burn test脚本 1 5 4 Dr END

09 BRSLT Burn test结果 1 10 1 Dr

0A CRITERIA Burn test判别式 1 11 1 CRITERIA Verify

0B FINALTST 最终测试 1 12 8

0C ARCOTBL 通道表 1 30 8 CHN_TBL Verify

0D GEO_TBL 几何参数表 1 46 32

0E VLISTHDR VLIST头 1 78 1 As VLIST_H Verify

0F VLIST 伺服区缺陷表 1 79 16 Ad

10 SLISTHDR SLIST头 1 111 1 As SLIST_H Verify

11 SLIST 译码表跳过(Skipped)

扇区 1 112 128 Ad

12 TLIST 排除磁道表 1 368 4 Ad TLIST Verify

13 ALIST 重定位扇区表 1 372 8 Ad RLIST Verify

15 SETMAX Max LBA设置 1 381 1 SETMAX Verify

16 SECURITY 包含安全参数的模块

(例如密码) 1 382 1 C SECURITY Verify

17 SRVTBL2 伺服表备份 1 383 4 SV_TBL2 Verify

18 ARCOTBL2 通道表备份 1 387 8 CHN_TB2 Verify

14 TMPRTR 当前硬盘温度 1 395 2 TMPRTURE Verify

19 OVERLAY 固件 overlay(Burn

代码或Main代码)1 401 396 Bs OMLV0Y10

56 P60CODE P60 及早前型号的

Burn Test资源 2 1 768 Dr

29 DLIST 缺陷表(P表) 3 1 650 Dd DLIST Verify

41 SPESB0 3 701 2 SPES

42 SPESB1 3 703 2 SPES

43 SPESB2 3 705 2 SPES

44 SPESB3 3 707 2 SPES

45 SPESB4 3 709 12 SPES

1A HDAF_RPT 功能测试报告 4 1 1

1B HD_DLIST 功能测试 DLIST 4 2 2

1C LATCHFRC 锁存(Latch Force)

数据 4 4 1 LATCH_FC Verify

1D RCOSCRPT RCO测试脚本 4 5 50

1F ERRTRK 位错率 4 56 1 BER Verify

20 ERRZN 位错率 1 4 57 1 BER1 Verify

21 ERRDRV 位错率 2 4 58 1 BER2 Verify

22 SRTDATA Burn test错误数 4 59 1 ER_CNT Verify

23 SRTSRVO Burn test中伺服区错

误数 4 60 1 SV_ERCNT Verify

24 SCN_GRAY 扫描老化数据 4 61 1

25 PARAM Burn通道参数监控 4 62 10

26 WKHEAD 弱(weak)头数据 4 72 10 WK_HEAD Verify

27 TSTPI Burn test中 TPI的测

量数据 4 82 4 TPI_WRW

第 3 章 三星硬盘固件特点及其故障分析

53

(续表)

ID 名 称 描 述 柱 面 扇 区 长 度 重要级别 头 校 验 符

28 MRTUNEMT MR头设置 4 86 5 As MR_TUNE Verify

1E BTIME Burn test时间 4 91 2 BI_TIME Verify

53 MRRTABLE 4 93 1 MRR_TBL Verify

54 NPV_RSLT 4 94 30 Verify

59 HDAF_SPT 4 141 4

5A HDAFTIME 4 145 2

5B BTIME2 4 151 2

2A GEO_00 4 347 84 EG_O00

2B TST_ZH BPI测试通道表 4 431 64 NZDH0_

2C GEO_ZH BPI测试结果 4 495 16

47 CAPSEL 4 511 1 CAP_SEL Verify

48 CURBPI 4 512 1 CUR_BPI Verify

49 AZLCSM 4 513 1 AZL_CSM Verify

4A AZL_CSM0 4 514 1 AZL_CSM0 Verify

4B AZL_CSM1 4 515 1 AZL_CSM1 Verify

4C AZL_CSM2 4 516 1 AZL_CSM2 Verify

4D AZL_CSM3 4 517 1 AZL_CSM3 Verify

4E AZL_CSM4 4 518 1 AZL_CSM4 Verify

4F AZL_CSM5 4 519 1 AZL_CSM5 Verify

50 AZL_CSM6 4 520 1 AZL_CSM6 Verify

2D AZLBPI 4 521 1 AZL_BPI Verify

2E AZL_BPI0 4 522 1 AZL_BPI0 Verify

2F AZL_BPI1 4 523 1 AZL_BPI1 Verify

30 AZL_BPI2 4 524 1 AZL_BPI2 Verify

31 AZL_BPI3 4 525 1 AZL_BPI3 Verify

32 AZL_BPI4 4 526 1 AZL_BPI4 Verify

33 AZL_BPI5 4 527 1 AZL_BPI5 Verify

34 AZL_BPI6 4 528 1 AZL_BPI6 Verify

35 SKTIME2 4 529 4 Verify

52 INSTABHD 4 533 4 INST

55 TPICSC 4 537 4

57 CAPSELDA 4 541 8 CUR_BPI

36 RCO_LOG RCO日志 5 1 256 RCODATA

37 SMART 硬盘 S.M.A.R.T. 11 1 9 SMARTMEM

38 SMRT_LOG S.M.A.R.T.日志 11 3 4

39 SMRT_TST S.M.A.R.T.写测试 11 10 5

3A SMRT_HLG 主 S.M.A.R.T.日志 11 15 512

3B BIAS_SHK 偏置(Bias Shock)

数据 11 527 370

3D ELOG Burn test错误日志 12 1 768 Dr

3C HD_ERLOG 功能测试错误日志 12 1 2

46 BIMODAL 15 1 1 HC_NBT L

3F SV_TRACE 伺服记录 20 1 3 ST

40 PES_LOG Pes日志 20 11 4 SPES

51 SPSTW Pes Burn-In日志 20 301 1 SPSTW_DA Verify

3E IPC_DBG IPC调试 20 302 1

5C PMP 20 304 1

深度剖析——硬盘固件级数据恢复

54

请注意表格中关于各模块的重要性特征。重要性标识符由以下变量组成:

A:基本模块,当前硬盘独一无二(不可从其他任何盘调用);

B:主要模块,可以从相同固件版本的硬盘调用;

C:次要模块,可以直接清除(可以按标准模版写入);

D:辅助模块,不影响固件启动或数据访问;

d:影响数据读取;

s:影响硬盘启动;

r:自检/自恢复程序(Burn)调用的模块。

某些模块的“描述”与“重要级别”留空,读者可以具体研究填写。

通过 PC-3000 三星程序可以执行固件区模块的检测。运行菜单“Tools”→“utility

extensions”→“Modules table”,可以对各模块执行检测,打开查看,编辑,保存修改等。

检测完毕后程序会在模块标识符与模块名前添加一彩色方块,方块的颜色反映了检测的结

果:红——无法读取;黄——模块头错误;绿——检测无误。读模块的结果显示在“Read”

栏,模块头的检测结果显示在“Header”栏;程序只有在模块表中含有记录指明必要的情

况下才会去检测模块头。

图 3-1是用模块表向导进行固件区结构测试的一个结果范例。

图 3-1 三星硬盘固件区检测样例

第 3 章 三星硬盘固件特点及其故障分析

55

通过 PC-3000三星程序还可以读取盘面固件区的所有磁道。三星硬盘的固件区事实上

总是存在未格式化的磁道,对于这些磁道,读扇区命令会返回 AMN或者 UNC错误。而且

这些错误会导致 SMART 属性值发生紊乱。所以在执行读取所有固件区磁道后,往往需要

重置 SMART。

3.2.4 译码器模块

三星硬盘广泛使用动态译码器机制,即每次启动后根据各缺陷表模块会重建一次译码

器。数据恢复有时会用到“热交换”,即将已经初始化的备件盘 PCB 安装在故障盘体上来

读取故障盘数据,在此过程中,备件盘 PCB须保持加电状态,但主轴电机须停转。热交换

前,必须从故障盘复制必要的模块到备件盘,用来重建用户数据区的译码器。下列译码器

相关的模块必须被复制:

(1) SLISTHDR模块。包含关于 SLIST模块中缺陷数量的信息,以及按磁头与区域

的缺陷分布表。在 V11P与 VICTOR硬盘中无此模块。

(2) SLIST模块。包含缺陷扇区与缺陷磁道 CHS的记录。在 V11P与 VICTOR硬盘

中,该模块的开头还包含类似于 SLISTHDR模块中的缺陷数量记录与表格。SLIST中的所

有缺陷按照译码器对扇区逻辑编址的顺序排序。

(3) TLIST 模块。包含缺陷磁道数量的信息,按磁头与区域的缺陷磁道分布表,以

及按编号排序的缺陷磁道记录。SLIST模块中的缺陷磁道记录与 TLIST模块中的记录是重

复的,两者必须一致以保证译码器的正常运作。

(4) ALIST模块。包含的表格描述了每个区域保留空间的起始位置、重定位扇区的

记录与数量。

(5) CONFIG(UNITABLE)模块。UNITABLE模块(在 V11P,VICTOR,PUMA,

VICTORPLUS,VERNA,VERNALITE 与 VANGO 家族硬盘中)和 CONFIG 模块(在

VANGOPLUS,PANGO,VELOCE,PALO与MAGMA家族硬盘中)包含不同的配置相关

数据。译码器会用到保存在这些模块中的用户扇区区域分配表,该表格指示了每个区域用

于逻辑编辑的可用扇区数量。

(6) CONFIG2模块。在 RUBICON,P80A,POSEIDON,CAESAR,P80M及以后

家族的硬盘中,CONFIG2模块描述了不同磁头对应区域的译码顺序。译码可能从磁头组件

的中部开始,也有硬盘在前 5个 Zone大约 20MB的起始 LBA都使用同一磁头。

3.2.5 扇区缺陷表

缺陷表模块包括 SLISTHDR、SLIST、TLIST、ALIST 以及 DLIST(P 表)。SLIST 模

块包含的是所有缺陷扇区与缺陷磁道的记录。与 SLIST的记录相比,ALIST模块中的重定

位扇区记录都有一个“偏移”物理地址标记,偏移量与同一磁道内 SLIST模块中缺陷的位

置有关。所以如果一条缺陷扇区记录(如 C:24,H:0,S:1)同时存在于 SLIST与 ALIST中,

这两条记录应该指示的是不同的扇区。

使用 PC-3000启动三星硬盘程序后,可以通过“Tests”→“Defect list”菜单进行扇区

缺陷表的相关操作,如图 3-2所示。

深度剖析——硬盘固件级数据恢复

56

图 3-2 “Defect list”子菜单

Defects editing缺陷编辑功能用来对 SLIST表中缺陷进行操作,因为这个模块包括了硬

盘所有缺陷扇区和磁道的记录。程序将 SLIST缺陷表加载到缺陷表编辑器中并打开。无论

何时保存缺陷列表,所有修改后的缺陷记录都将被保存到以下模块:SLISTHDR,SLIST,

TLIST,ALIST 以及 CONFIG2(如果该硬盘家族存在此模块)。硬盘利用这些模块构建它

们的动态译码表,以反映硬盘缺陷的变动。为保证硬盘工作正常,某些硬盘家族中会在缺

陷编辑后强制执行低级格式化,在数据恢复时要特别注意。

缺陷表编辑器除了标准的保存、添加等标准命令外,还包括了三星特有的功能。

对于逻辑格式缺陷表,常用到以下命令:

“Convert to physical format”:程序将缺陷的逻辑地址转换为物理 CHS格式。

“Reassign defects”:缺陷扇区将被重定位到保留硬盘空间。此命令适用于需隐藏少量

缺陷扇区但要避免修改译码表与影响用户数据的情形。

对于物理格式缺陷表,可能用到以下命令。

“Save defects into the HDD”:程序保存缺陷表并分别修改下列模块:SLISTHDR,

SLIST,TLIST,ALIST 以及 CONFIG2(如果存在)。保存时 ALIST 模块中的重定位扇区

将被清空,因为修改后所保存的相关值将不可用。要把重定位扇区保存为缺陷扇区,需要

专门将其添加到缺陷表编辑器中。

“Add defects from A-LIST”:程序添加 ALIST模块中的重定位扇区到缺陷表。重定位

扇区的偏移值将被自动转换。

“Add defects from D-LIST”与“Add defects from T-LIST”:程序读取并分析 DLIST模

块(或 T-LIST模块),添加缺陷记录到缺陷表编辑器。此功能主要用于 SLIST模块损坏时,

用 D-LIST与 T-LIST来重组 S-LIST。

“Grouping to tracks”:将同一磁道中的若干缺陷扇区记录归并成缺陷磁道记录。此功

能需要在归并阈值对话框中指定缺陷扇区数的阈值,超过此值即转为一个磁道缺陷。程序

将归并所有满足归并条件的记录。由于保留空间有效,除非确实必要,不建议使用此功能。

“Remove defects for head”:删除指定磁头的所有缺陷记录。要移除记录的磁头需要在

相应对话框指定。

“A-List clearing”清空 A-list功能用于清空重定位扇区表并修正保留空间表,是逻辑

第 3 章 三星硬盘固件特点及其故障分析

57

扫描与缺陷重定位之前的预先操作。有时由于各种错误,数据恢复过程中也需要清空该表,

此时该操作是为了将数据扇区返回原始位置。不过需要注意,数据恢复过程前重定位扇区

可能包含用户数据,清空之后这部分用户数据也将会丢失。

3.2.6 S.M.A.R.T 表

S.M.A.R.T 表存放在盘面固件区中。硬盘利用 S.M.A.R.T 机制对硬盘的磁头组件、温

度、盘片表面介质、主轴电机、内部电路等运行情况进行监控分析。可以用“Clear SMART”

命令来重置所有属性值为初始值,但属性 5(重定位扇区数)除外。这个参数是在硬盘启

动时根据 A-list 模块计算出来的,如果填充到该模块的扇区数超过一定阈值,则缺陷必须

从 A-list转移到 S-list或者 A-list必须被清空,以减小属性 5的值。

3.3 三星硬盘终端命令

终端命令是通过 COM口通信来完成的。三星硬盘的 COM指令模式经常要用到,它对

于硬盘故障检测以及数据恢复都大有裨益。

通过 PC-3000进入终端模式,需连接硬盘到 PC-3000板卡并正确设置跳线,同时连接

“PC USB TERMINAL”和“PC-SEAGATE”适配器。适配器连接到 PATA硬盘的接法如

图 3-3所示。连接“PC-SEAGATE”适配器到硬盘,硬盘Master跳线帽留在原位,以便PC-3000

仍能通过 ATA接口访问硬盘。

对于 SATA硬盘,需要用到“PC-SAMSUNG”适配器。

连接 2.5英寸盘到终端,还要用到 PC-2 适配器。适配器上跳线设置如图 3-4所示。

图 3-3 连接 PC-SEAGATE适配器到三星硬盘 图 3-4 PC-2适配器跳线设置

三星硬盘的终端通信波特率,对于 V11P与 VICTOR家族为 38 400 Baud,对于其他家

族为 57 600 Baud。在主菜单中选择:“Tools”→“COM port settings”,在“Rate”中输入

COM口数据传输率。

开启终端窗口:“Tools”→“Terminal”,单击终端窗口将焦点移到窗口内,按“Enter”

键。此时应该可以看到硬盘输出的信息。正常状态下硬盘应该位于 ENG>(Engine)模式。

如果按“Esc”,固件操作将被中止,硬盘将转到 DBG>(Debug)模式。

输入“HE”或“HE1”命令,可以得到当前硬盘支持的命令清单。

若硬盘上电后初始化出错,终端会显示错误代码,例如:LED 13 000。对照附录 2中

的错误代码即可判断硬盘故障类型。有时硬盘出错时只是停止向终端发送数据。此时可以

深度剖析——硬盘固件级数据恢复

58

使用辅助的 LED发光二极管来检测错误代码。长信号代表代码的第一位数字,短信号表示

第二个数字,例如代码 13将被显示为一长三短。图 3-5为辅助 LED的接法。LED须接到

IDE接口的 39 脚与+5V电源线。

图 3-5 连接辅助 LED检测硬盘状态

通过硬盘的 COM口还可以读取 ROM 镜像。读取 ROM内容要使用 DF命令,有两个

参数:起始地址与数据长度(以 Word计)。命令一旦执行,硬盘将返回 ROM的镜像。读

ROM大约需要 2分钟。

3.4 Burn Test

硬盘在盘体与电路板装配完毕后,需要将固件烧写(burn-in)到 ROM与盘面固件区,

同时会生成一些参数保存到盘面固件区中。这些参数是通过“Burn Test”(也称为 Self-Servo

writing,或 Servo test,或 Self-test)过程来生成的。过程首先检测硬盘的区域分配 Zoning、

读参数、写参数等,然后对这些参数进行优化,最后写到盘面固件区中。通过 Burn Test

每个盘都会生成自身的独特参数。如果这些参数出错,就会造成硬盘不能正常工作,如产

生坏道、敲盘、读写变慢、数据出错等。

三星硬盘广泛使用了动态译码器机制与自适应区域分配表,这也意味着大量参数对于

每个盘来说都是独一无二的。为此三星设计了先进的自检/自恢复机制,利用 Burn Test 可

以在硬盘关键且唯一的模块损坏时恢复对用户数据区的访问。需要注意的是,Burn Test主

要用于修复硬盘而不能用来恢复数据。写入测试脚本并执行测试前,需要备份硬盘的模块

和 ROM。还需准备一个独立电源,因为根据硬盘情况不同,测试可能耗时几小时到几天。

3.4.1 选择必要的资源

执行 Burn Test需要将 Burn代码写到硬盘上。这些代码可以从网络获取或者从 PC3000

工具套件的数据库中搜索得到。这里利用 PC3000三星程序来描述 Burn Test的运行。

对于 VANGOPLUS,PANGO,VELOCE,PALO 与 MAGMA 家族的硬盘,还有两类

代码:“DownSize Burn Code”与“H/T Code”。H/T Code主要在硬盘使用当前 ROM固件

无法工作时用来恢复对固件区的访问。“DownSize Burn Code”主要用于在“Downsized”

小型化型号中代替“Burn Code”。所谓 DownSize,DS 型号一般是指单盘容量小于 40GB

的硬盘。例如 SP0612N 型号(2 头),SP0802N(3 头),SP1203N(4 头)。因此需要运行

Burn Test时,应当在数据库中查找对应的资源,确定硬盘是否属于小型化型号,若是,则

加载 DS代码。

“DownSize Burn Code”可以用于硬盘缺陷太多的情形。如果某型号硬盘在 Burn Test

结束之前出现缺陷表溢出错误,可以运行“Downsize Burn Code”来将硬盘缩减到其对应

的“小型化”型号。

第 3 章 三星硬盘固件特点及其故障分析

59

VANGOPLUS家族是 PANGO家族的小型化型号,因此“Downsize”代码是为前者设

计的。若在运行 Burn Test 时程序在 VANGOPLUS 家族中找不到所需资源,可以尝试在

PANGO家族中查找资源并使用其中的 DS代码。

对于 POSEIDON,P80M及以后家族硬盘的自检,还要用到 HTBI code与 FFlash Code

的固件资源。修改磁头映射图时,需要用到 FFlash。

3.4.2 加载与执行测试

对于 V11P,VICTOR,PUMA,VICTORPLUS,VERNA,VERNALITE,VANGO,

VANGOPLUS,PANGO,VELOCE,PALO,MAGMA,M40S,RUBICON 以及 P80A 家

族,硬盘执行测试之前必须执行下列步骤。

1. 为硬盘写入下列 BURN资源

− “BURN-IN Script”(若数据库中无可用脚本,需手动将 BISPT模块头从 END改为

BURN);

−“Overlay”(仅 VERNA,VERNALITE与 VANGO家族需要);

−“Burn Code”或“Downsize Burn Code”。

2. 关闭硬盘电源并重新上电

对于 POSEIDON,P80M及以后的家族,执行测试之前必须执行下列步骤:

(1) 测试之前写“FFlash”固件到硬盘。

(2) 关闭硬盘电源并重新上电。

(3) 编辑“BISPT”模块头(Burn test 脚本),将其从 END,FAIL或者 CONT改为

BURN。

(4) 写“HTBI Code”到硬盘。

(5) 关闭硬盘电源并重新上电。

之后硬盘将等待 5分钟并启动测试。等待与测试期间所有状态寄存器处于非使能状态。

如果此期间发送软复位信号,硬盘会切换到就绪状态并可以访问固件区,关闭电源再开启

后会重新启动测试。如果硬盘直接报告就绪,则 BURN-IN 脚本头应为 END或 FAIL。

如果测试期间连接硬盘到终端,可以注意到运行每一步测试与执行一定操作时硬盘都

会输出一条信息,这些信息中的部分类似如下显示:

BStep 00003 (Cmd 0024) :

BStep 00004 (Cmd 0069) :

BStep 00005 (Cmd 0069) :

BStep 00006 (Cmd 0069) :

BStep 00007 (Cmd 0069) :

BStep 00025 (Cmd 001C) : Test head : 00Test zone : 07Agc : 0508Agc : 00A1Asc:

FFF2Test head : 01Test zone : 07Agc : 0406Agc : 0080Asc: 0007

BStep 00026 (Cmd 0010) :

深度剖析——硬盘固件级数据恢复

60

可以使用辅助的 LED发光二极管监控测试进程和结束状态。接法如图 3-4所示。

执行 PC-3000三星程序中菜单“Tools”→“Utility extensions”→“Burn test”,可以

方便地监控测试进程(对 SATA硬盘不可用)。

测试结束后,硬盘的主轴停转并且 LED持续闪烁。也可以通过终端很容易地判断测试

是否结束:终端中硬盘恒定输出“LED 00 0000”字符串。其中“LED”表示闪烁模式,“00”

应该是结束代码,其他值表示错误。

如果 Burn Test运行很长时间(超过 24小时)硬盘主轴仍未停转,且没有任何测试要

结束的迹象,可以中止此测试,关闭硬盘电源并重新上电,发送软复位信号到硬盘,然后

可以利用 BISPT的模块头检测,查看测试状态。如果模块头是 CONT,则需继续测试(需

关闭硬盘电源并重新上电,不发送复位信号);如果是 END,则表示测试成功结束;如果

FAIL,则表示测试由于出错已经中止。

测试成功结束之后需关闭硬盘电源并重新上电,根据测试前加载的 Burn Code向 ROM

回写“Main Code”(对小型化 DS型号需加载“Downsize Main Code”),加载后关闭硬盘电

源并重新上电,就可以工作了。

如果测试出错中止,则不可回写“Main Code”,否则可能造成硬盘不再响应任何请求。

通过 PC-3000三星程序“Tests”→“Service information”→“Work with BURN”→“BURN

TEST RESULT REPORT”菜单可以查看 Burn Test测试结果报告,分析出错的原因。然后

更换一份测试脚本再重新进行测试。为此,需要向硬盘写入 BISPT模块,将其头部修改为

BURN,关闭硬盘电源并重新上电,测试即可从开始重新启动。

3.4.3 使用 HT 代码检测固件区与磁头映射图的修改

VANGOPLUS,PANGO,VELOCE,PALO,MAGMA,RUBICON以及 P80A家族硬

盘包含 HT 代码,即启动固件区测试与准备 Burn Test所需的代码。HT测试期间,硬盘分

析固件区表面,清空先前测试的所有结果,重置用户数据区的缺陷表、适配参数并编辑其

他模块。HT测试还有另外一个重要功能:测试 Burn test Script模块中命令的可用性及其参

数,并对特定硬盘调整一些命令的参数。测试之后 BISPT模块头将变为“BURN”。HT测

试期间,硬盘也可部分检测用户数据区。

要执行 HT 测试,需在硬盘报告就绪后写入“HT 代码”,关闭硬盘电源并重新上电。

测试将在 5分钟之内启动,持续 20~60分钟。可以通过 LED的闪烁或者终端中的 LED NN

0000代码(NN代表测试结束代码)判断测试是否结束。

POSEIDON,P80M 及以后的家族不使用 HT 代码而是使用 FFlash。如果写 FFlash 到

硬盘,运行测试需要修改脚本头为 BURN或者整个清空脚本模块。此测试重建固件模块的

速度相当快。测试完成之后需要写入 HTBI代码。

为修改磁头映射图(用软件方法禁用磁头),需要向硬盘写入 HT代码或 FFlash代码,

设置所需的磁头映射图,启动测试。为此,需执行下列步骤:

(1) 修改脚本头为 BURN或者清空脚本模块。

(2) 向硬盘写入自定义磁头映射图的 HT或 FFlash代码。

有以下选项:

“leave unchanged”:告诉程序不修改磁头映射图;

第 3 章 三星硬盘固件特点及其故障分析

61

“Specify enabled heads”:告诉程序只保留所标记编号的物理磁头。例如,如果一个硬

盘有 0,1两头,而这里只选择了 1头,那 0头就会被用软件方法关掉。

写入代码需要若干秒时间(通常小于 30s),加载完毕后硬盘会报告就绪,程序显示成

功记录的通知。某些型号在此过程中电机会停转。

(3) 关闭硬盘电源并重新上电,通过监控终端等待测试启动与结束。

(4) 测试结束后关闭硬盘电源并重新上电,发送软复位信号,写 Burn Code 或者

HTBI Code,启动主 Self-Test程序。

3.5 三星硬盘固件故障表现及分析

3.5.1 ROM 模块故障

三星硬盘的 COM指令模式,是准确诊断硬盘故障的有效手段。将硬盘连接到终端后,

将终端输出的代码与附录 2表格对照即可确定故障。

三星硬盘的 ROM固件包含了调节磁头读/写固件区的适配信息。VANGOPLUS,PANGO,

VELOCE,PALO,MAGMA以及以后家族硬盘的 ROM中还含有磁头映射图。如果硬盘加

电后没有起转且保持 BSY,则可能是 ROM固件严重损坏,校验和不匹配。ROM中数据不

可用也可能导致硬盘无法就绪并在软复位后敲盘。这些硬盘可能在终端输出代码“LED 13”

(此代码也可能因其他原因出现)。此时如需恢复数据,必须选择一块兼容的电路板以使硬

盘就绪。

3.5.2 固件区模块损坏故障

固件区模块损坏时通过 COM 指令模式诊断,在终端显示的代码应为“LED 5B”。此

代码一般出现在用固件数据检测(service data verification)命令检测到模块表中存在损坏

模块的时候。如果只是直接启动固件区模块损坏的硬盘会导致主轴电机停转,但在终端中

并无输入代码。此时发送软复位命令通常可使硬盘就绪。

一些基本的缺陷表损坏可以使用缺陷表编辑器恢复,那些关键且唯一模块则很难修复。

出现故障后只能尝试运行 HT test和 BURN test来修复硬盘。

3.5.3 SMART 模块故障

SMART模块发生故障时,硬盘通常能认盘,但识别型号和进行扇区操作的时间较长,

(一般正常为 2~3 s,有问题时会长达 10~30 s),在自检时一般会 SMART报错。

利用 PC-3000的“Clear SMART”命令可以重置 SMART属性到初始值,但属性 5(重

定位扇区数)除外。这个参数是在硬盘启动时根据 A-list 模块计算出来的。如果填充到该

模块的扇区数超过一定阈值,则缺陷必须从 A-list转移到 S-list或者 A-list必须被清空,以

减小属性 5的值。

3.5.4 密码保护故障

硬盘有密码保护时,读取任何 LBA都会返回 ABR错误。

深度剖析——硬盘固件级数据恢复

62

三星硬盘关于密码的信息存在 SECURITY模块中。使用 PC-3000的“Erase Password”

功能即可操作此模块来清除密码。命令对用户密码填 0,清除密码已设的标识符,并且使

用所有磁头写入修改的模块。

要使修改生效需对硬盘断电再上电。

3.6 三星硬盘固件维修案例

3.6.1 备件磁头与固件区不兼容

现在以一块三星 3.5英寸盘 SP1203N为例,初步判定为磁头损坏。洁净间更换磁头后

初步思路为用 Data Extractor进行镜像。

首先建立任务,选择任务路径,如图 3-6所示。

图 3-6 选择任务路径

选择源盘,目前该盘接到 ATA0的通道,如图 3-7所示。

图 3-7 选择源盘

第 3 章 三星硬盘固件特点及其故障分析

63

任务初始化参数选择默认参数,如图 3-8所示。

图 3-8 选择任务初始化参数

任务选择“Make data copy”,如图 3-9所示。

图 3-9 任务选择

选择目标位置,如图 3-10所示。

图 3-10 选择目标盘

深度剖析——硬盘固件级数据恢复

64

按默认参数进行复制,如图 3-11所示。

图 3-11 数据复制

复制时发现速度相当缓慢,但数据全部正确。初步判定是由于三星硬盘采用自适应区

域分配表,更换的磁头组件与故障盘区域分配表不相适应。

尝试采用分头复制。执行“Service”→“Buildings heads map”,如图 3-12所示。

图 3-12 选择“Building heads map”

执行分头前要记住打开 PC-3000三星程序才行,否则系统会做出提示,如图 3-13所示。

图 3-13 提示信息

第 3 章 三星硬盘固件特点及其故障分析

65

分头完成后,打开程序参数对话框,选择“Heads map”,如图 3-14所示。

图 3-14 参数对话框

仅勾选 0头,如 3-15所示。

图 3-15 勾选“Head 0”

再执行复制,发现速度明显加快。依次按 0、1、2头进行单独复制,恢复成功。

3.6.2 SMART 出错实例

我们现在接到一块三星 3.5 英寸盘 SP1203N,无异响,但无法读取内容,暂无法判定

深度剖析——硬盘固件级数据恢复

66

故障,接到 PC-3000上进行测试。具体处理过程如下:

进入 PC-3000三星程序后,能自动发现所在家族 PALO,如图 3-16所示。

图 3-16 “Utility start”窗口

对硬盘进行表面测试(菜单“Tests”→“Surface test”→“Logical test”),如图 3-17

所示。

图 3-17 选择“Logical test”

发现检测速度很慢,且所有测试过的扇区都是错误的,如图 3-18所示,遂中断测试。

第 3 章 三星硬盘固件特点及其故障分析

67

图 3-18 扇区检测全部错误

在如图 3-19所示的对话框中单击“No”按钮(检测到的错误都不加入缺陷表),显然

不可能所有扇区都是坏的。

图 3-19 逻辑测试结果不写入缺陷表

打开 PC-3000通用程序进行测试,如图 3-20所示。

图 3-20 进入通用测试程序

如图 3-21 所示显示“Attrib 198 has value (1) lower than treshold (10)”。带有阈值

(threshold)的提示一般为 SMART损坏的特征。所以可以判断此盘故障为 SMART损坏。

深度剖析——硬盘固件级数据恢复

68

图 3-21 显示 SMART损坏

进入 PC-3000三星程序,清空 SMART,如图 3-22所示。

图 3-22 执行清空 SMART

硬盘修复成功。

第 4 章 希捷硬盘固件特点及其故障分析

4.1 希捷硬盘基础知识

Seagate(希捷)硬盘是 1979 年舒加特技术公司研制的,它是首家专为台式计算机制

造 5.25英寸硬盘的公司。

经过近三十年的发展,希捷公司从几百家硬盘公司中脱颖而出,走在行业的前端,是

世界上最大的磁盘驱动器、磁盘和读写磁头生产厂家,并凭借其雄厚的实力,一直是 IBM、

COMPAQ、SONY 等业界大户的硬盘供应商。

希捷在 SCSI市场也有相当重要的地位。独有的 3D防护技术和 SoftSonic 降噪技术是

其产品的特色技术,用于提高产品的安全性和降低工作噪声。在主流桌面市场,希捷酷鱼

系列较受关注,此系列产品拥有平稳的整体性能,市场认知度较高。

2006 年 12 月,希捷公司以换股的方式收购迈拓公司,目前“Maxtor”是希捷旗下的

一个商标。

2011年希捷并购了三星硬盘部门,三星硬盘品牌也将于 2012底成为历史。

4.1.1 希捷硬盘的编号

通过对希捷硬盘编号的了解,我们可以了解到硬盘存在的各项性能以及指标,包括接

口类型、转速、容量、缓存等。了解这些编号所代表的意义,有助于辨别硬盘的真伪。

希捷硬盘的编号方式为“ST+ 硬盘尺寸 + 容量 + 缓存容量 + 主(副)标识 + 接口

类型”,我们将其简单地表示为 ST <1> <2> <3> <4><5> 五部分,其中“ST ”代表

“Seagate”,是希捷公司的简称,任何一款希捷硬盘的编号都是以 ST 开头的。其他各部

分的含义如表 4-1所示。

表 4-1 希捷硬盘编号的含义

所属部分 字 符 含 义

1 表示尺寸为 3.5 英寸,厚度为 41mm 的全高硬盘

3 表示尺寸为 3.5 英寸,厚度为 25mm 的半高硬盘

4 表示尺寸为 5.25 英寸,厚度为 82mm 的硬盘

5 表示尺寸为 3.5 英寸,厚度为 19mm 的硬盘

第一部分表示硬

盘的尺寸,仅为一

位数字

9 表示为尺寸 2.5 英寸的半高硬盘

第二部分硬盘容量:由三位或四位数字组成,单位为 GB,如“120”代表这块硬盘的容量为 1000MB×120=120GB,

“80”则代表容量为 80GB

2 表示为 2M 缓存

8 表示为 8M 缓存 第三部分缓存容

量:只有一个数字

06 表示为 16M 缓存

深度剖析——硬盘固件级数据恢复

70

(续表)

所属部分 字 符 含 义

第四部分主(副)标识:在希捷 IDE 接口盘中,主标识是指硬盘的碟片数,如“2”表示硬盘采用了两张盘片;而在

希捷 SCSI 硬盘中,主标识指硬盘的转速。主标识之后是硬盘的副标识,它只有当主标识相同或无效时才有意义,一般

代表硬盘的性能和代数,数字越大,表示的代数越高,性能越好,此款硬盘也就越新

A 表示 ATA UDMA/33 或 UDMA/66 IDE 的接口

AS 表示为 Serial ATA150 的接口

AG 表示为笔记本电脑专用的 ATA的接口

第五部分接口

类型:由一到二个

字母组成

N 表示为 50 针 Ultra SCSI的接口,其数据传输率为 20Mb/s

W 表示为 68 针 Ultra SCSI的接口,其数据传输率为 40Mb/s

WC 表示为 80 针 Ultra SCSI的接口

FC 表示为光纤,可提供高达 100Mb/s的数据传输率,并且支持热插拔

WD 表示为 68 针 Ultra Wide SCSI的接口

LW 表示为 68 针 Ultra-2 SCSI(LVD)的接口

LC 表示为 80 针 Ultra-2 SCSI(LVD)的接口

以希捷酷鱼 7200.10系列 160 G,编号为 ST 3160215A的硬盘为例,其所代表的意思

就是希捷酷鱼系列 10代 7200转 160 GB硬盘。在 ST 3160215A编号中,ST表示希捷,3

表示其为 3.5英寸半高硬盘,160代表 160 GB,而 2则代表缓存 2 MB,15代表其采用一

块盘片(160 GB),A则代表其采用 ATA接口。

按照工作原理的不同,可以将目前市面上的希捷硬盘分为三类,即酷鱼(Barracuda)

系列、U 系列和笔记本系列。在每一个大系列下面又包括了若干个家族,各个系列的硬盘

较其前面推出的硬盘,在技术上都有不同程度的提高。下面分别对各系列硬盘进行介绍。

4.1.2 Barracuda 系列

酷鱼是希捷公司出品的一款产品线的总称,希捷酷鱼系列包括 U5、Barracuda Ⅰ、

Barracuda Ⅱ、Barracuda Ⅲ、Barracuda Ⅳ、Barracuda Ⅴ、Barracuda 7200.7、Barracuda

7200.8、Barracuda 7200.9、Barracuda 7200.10、Barracuda 7200.11、Barracuda 7200.12等。

U5:是以酷鱼的技术实现的,主要面向低阶市场,单碟最大容量 40GB,电机转速为

5400 r/min,1MB Cache,平均寻道时间为 12.5 ms,采用 SoftSonic 流体动态轴承(FDB,

Fluid Dynamic Bearing)马达及并行 ATA接口,硬盘厚度较传统产品缩减约 25%,而酷鱼

其他型号的电机转速均为 7200 r/min。

酷鱼Ⅰ:酷鱼Ⅰ(Barracuda ATA)为 512KB Cache,MR 磁阻磁头,单碟容量为 6.8 GB,

从其背面的标签上即可查看其型号。

酷鱼Ⅱ:酷鱼Ⅱ(Barracuda ATA Ⅱ)为 2MB Cache,GMR 巨磁阻磁头,单碟容量

为 10.2 GB。酷鱼Ⅰ、Ⅱ的硬盘早已停产。

酷鱼Ⅲ:酷鱼Ⅲ和酷鱼Ⅱ相比,规格上变化最大的是单碟容量由 10 GB提高到 20 GB,

其仍然采用了希捷独特的非操作时 350 GB的抗振能力、SeaShield 数据保护技术,电路板

部分采用不锈钢保护底板,还新增了流体动态轴承 FDB马达技术,采用黏稠的油代替金属

滚珠作轴承,通过减少金属间接触降低旋转噪声,而液体的自然缓冲作用,使抗振性也有

所提高。

酷鱼Ⅳ:2001年,希捷推出单碟容量为 40 GB的酷鱼Ⅳ硬盘,这款硬盘是业界最早达

第 4 章 希捷硬盘固件特点及其故障分析

71

到 7200 r/min的,它缓存容量为 2MB,平均寻道时间为 8.9 ms,采用 ATA100接口。此外,

酷鱼Ⅳ还采用了“动态流体静音”马达,把硬盘工作的噪声减小到最低程度。

酷鱼Ⅴ:2002 年,希捷公司推出单碟容量为 60GB 的酷鱼Ⅴ,接口速率支持

UDMA100,酷鱼Ⅴ相对于以前酷鱼家族,仅仅是提高了单碟容量,其他方面并无多大改观。

在酷鱼Ⅴ之后出现了 F级工作模式,但在一些重要的指标上,酷鱼Ⅴ落在了WD和日立的

相对应产品后面,是一款过渡型的产品。

Barracuda 7200.7:2003 年,希捷公司推出高性能的串行 ATA 系列硬盘 Barracuda

7200.7,这一家族产品采用原生 SATA控制芯片,结束了桥接 SATA硬盘的历史。Barracuda

7200.7系列产品提供了最高容量高达 200GB 的硬盘,只由 2片单碟容量为 100GB的碟片

组成。结合了希捷 3D Defense System(盘片、数据和诊断保护系统)、SoftSonic流体动

态轴承 FDB 马达等先进技术,并同时提供串行 ATA、并行 ATA 两种接口类型。另外,

从这一系列硬盘开始,采用 SATA 接口的硬盘开始支持 SATA 特有的技术——NCQ

(Native Command Queuing)。对于在需要处理的任务比较繁重的应用中,比如高性能工

作站、网络服务器、多媒体服务器和编辑工作站中,NCQ 可以带来更高的性能。

酷鱼 7200.7 系列有两种版本,一种普通版的酷鱼,它只有 2MB 的数据缓存,支持

ATA/100 界面类型,可提供的容量级从 40GB至 160GB。而另一种则是增强版的酷鱼,命

名为 7200.7 Plus,它包括 120GB 和 160GB 的容量级,拥有 8MB 的数据缓存。而其中

串行 ATA 版本的酷鱼 7200.7可提供 80GB至 160GB的容量级,数据缓存同样为 8MB。

适用于高效能 PC、游戏 PC、成本效益网络连接储存、初阶服务器和 ATA RAID系统。

Barracuda 7200.8:2004 年,希捷公司推出双面磁片硬盘希捷酷鱼 7200.8。其数据密

度从单碟容量 100GB增长到单碟容量 130GB。并采用双层磁片的设计,这个设计其实利弊

共存。优点是容量多达 400GB,平均传输速率也有所提高。缺点是在寻址时间上,需 13~

15 ms,并不是寻址快速的产品,因此很少用于桌面电脑。

Barracuda 7200.9:2005年 10月,希捷宣布推出酷鱼 7200.9内置式硬盘,其彻底超越

了第一代的 SATA 硬盘,遵循最新 Serial ATA 2.5 规范,传输速率可达 3Gbps,单碟容

量高达 160GB,平均寻道时间为 8.5 ms,缓存容量分为 2MB/8MB/16MB三种类型,且采

用与主控芯片合二为一的新型组合方式,采用希捷公司专利的 SoftSonic 液态轴承马达技

术,工作噪声仅 28dB。盘体架构设计科学合理,能耗低、发热量小、噪声极小。

酷鱼 7200.9产品系列,配备了 0.5terabyte 的储存容量和高速的 3Gbps串行 ATA数据

流量,并整合了全速命令排队(Native Command Queuing)等先进的存储技术,从而实现

了业内最高水平的性能和可靠性,以满足使用某些应用程序时系统性能和可靠性的要求,

包括数字视频编辑和制作、CAD/CAM、数字和图像分析。

Barracuda 7200.10:希捷公司在推出酷鱼 7200.9 不久,又很快推出了酷鱼 7200.10。

其最先在该款硬盘生产领域引入垂直记录技术,所谓垂直记录就是改变磁盘的存储时的排

列方式,从而有效提高磁盘读取和写入时的工作效率,增强了硬盘在高温下工作的可靠性,

大幅提高数据存储密度。单碟容量为 188GB,最大容量达到 750GB,提供 PATA/SATA 两

种接口,采用 16MB 大容量缓存,为内存与硬盘间的数据交换提供了更大的缓冲区。

Barracuda 7200.11:希捷在 2007 年推出酷鱼 7200.11,它是业界第一款采用第二代垂

直记录技术 PMR的硬盘,其单碟容量达到 250GB,最大碟片数为 4片,最大容量达到 1TB,

深度剖析——硬盘固件级数据恢复

72

缓存大小分 16MB和 32MB两种,同时从此开始希捷所有硬盘都将采用 SATA接口,数据

传输速率提升到 105Mb/s。该款硬盘给用户的整体印象是:性能更强、更静音、更省电。

Barracuda 7200.12:酷鱼 7200.12采用了 PCB 反转设计,从外面看不到任何芯片,可

以减小因为碰撞而造成损坏的几率。该硬盘的接口部分与 PCB 板是一体的,采用 SATA

3.0Gb/s 接口,支持 NCQ 技术。硬盘接口旁边是跳线部分,通过跳线可以使硬盘运行在

SATA 1.5Gb/s 规范,并兼容早期的主板。

酷鱼 7200.12和先前的 7200.10 系列、7200.11 系列相比,除了单碟容量增加到 500GB

外,7200.12 系列在规格方面没有大的变动。但存储密度提升以后,硬盘的读写性能得到

了大幅度提高。

4.1.3 希捷 U 系列

希捷 U 系列是希捷公司推出的一条产品线的总称,包括 U4、U6、U8、U10、UXX、

B540 等型号,其转速均为 5400r/min。

U 系列属于入门级的低端产品,一般容量都比较小,且带有黑色的塑料外套,比较易

于辨认。该系列硬盘专为消费电子应用、Internet 电器、大批量 PC和基于终端的环境而设

计,它独有的声障技术(SBT)使其产生的声音非常小,成为主流台式机和个人录像机的

首选。由于针对消费电子的需求,专门的消费电子配置—— U Series AV,使硬盘优化而

达到绝佳的音像流、安静的寻迹和更小的功耗。另外,该系列硬盘还集成了希捷公司的 3D

防护系统,包括 SeaTools、SeaShield、SeaShell和 G-force,可保护硬盘免受在集中运输过

程中的意外损害。

SeaTools 软件有助于最终用户对硬盘的问题进行诊断,确认问题是出在硬盘驱动器、

计算机硬件还是文件系统上,并帮助用户直观迅速地找出系统问题的解决方案。

SeaShield 是希捷独有的、集成在硬盘上的印刷电路板保护装置,可在操作过程中保护

硬盘,减少返修,并降低服务费。

SeaShell 是一个透明的、可回收利用的蚌壳式包装盒,可使硬盘承受 1000G 以上的

非操作撞击,可以防静电,条形码的扫描也很容易进行。

U4:希捷公司 1999 年推出的 U4 家族,单碟容量为 4.3 GB,256KB Cache,采用 IDE

接口标准,支持 Ultra DMA/66 界面,平均寻道时间在 10 ms以上。U4系列目前有 4.3 GB、

8.4GB和 13GB三种产品。希捷 U4家族的优点是 CPU 资源占用率低,数据存取速度较高。

同时 U4采用了希捷的 SeaShield(海盾)防护系统,内含 DST(Drive Self Test,驱动器自

我测试),对于保护硬盘数据的完整性有很大帮助。另外 SS(Safe Sparing,安全备用)

在硬盘工作时,它会把一个扇区作为缓冲区使用,这样一旦出现断电等意外情况,它能够

记住硬盘当时在做什么,并在重新上电之后恢复。希捷外面的黑色塑料外壳也是 SeaShield

的一部分,它是由散热良好的减震弹性材料制成的,既可以防震减震,也可以保护硬盘印

刷电路底板。

U6:2001年推出的 U6家族硬盘继承了 U5的一些特质,单碟容量高达 40 GB,2 MB

Cache,采用 ATA/100接口,包括 20 GB、40 GB、60 GB、80 GB几种规格,平均寻道时

间为 8.9 ms。希捷 U6 的特色在于结构简单、价格低廉、工作温度低、噪声小。

U8:该家族硬盘是希捷公司推出的第三代 U系列硬盘产品,主要针对家庭和商业用户。

第 4 章 希捷硬盘固件特点及其故障分析

73

U8 带有两片磁盘,容量有 4.3GB、8.4GB、13GB、17.2GB几种,提供 256KB 和 512KB

两种缓存;在抗冲击方面,U8 硬盘搞非工作冲击的指标达到了 350Gs,搞工作冲击达到

63Gs,在当时属于业内最坚固的硬盘;其采用 UltraATA/66 接口,保持了对 Ultra ATA/33

的后向兼容,提高了数据可靠性;采用巨磁阻磁头,可读密度超过每平方英寸 15GB,提

高了读写速度。

U10:2002年推出的 U10系列硬盘,主要供应给 OEM市场。单碟容量为 10.2 GB,采

用 512KB Cache,支持 ATA/100 IDE接口,平均寻道时间为 12.7 ms,内置 2M缓存;应

用了全新的 SoftSonic 液体轴承,工作时噪声仅为 26 dB,新采用的 G-Force防护技术能够

防止 350Gs 的外力冲击。

另外还有 U7、U9 系列的硬盘也属于外型像 U 系列,但属于酷鱼技术的硬盘,可从

Model 号上进行区分,在此不做介绍。

UXX:系列硬盘没有黑色的塑料外壳。该系列产品只有 10GB和 20GB两款,平均寻

道时间为 12.7 ms,在寻道速度方面明显落后于 U6 等系列的产品,配以 2MB Cache,主

要针对低端商用市场。

4.2 希捷硬盘固件结构及模块

希捷硬盘的固件数据分布在以下几个部位:

� 电路板处理器芯片中的 base ROM;

� 外部 ROM,有些电路板没有外部 ROM,那么它的角色将由在处理器芯片内部的

掩膜 ROM来完成;

� 盘面的负磁道(即固件区)上。

希捷硬盘固件的一个显著特点,就是在固件区中,没有一个明确的模块表来调控硬盘

的运行。所以我们不能使用“Module”即“模块”的概念来理解和分析希捷硬盘固件,而

使用的是磁道、磁道组、扇区、扇区组。对于这些具有特定固件功能的区域,我们通常又

称之为“Object”即“对象”,而要在硬盘固件区中,定位这些特定对象(Object)的柱面

号,就要使用固件区初始的柱面号加上该对象(Object)的磁道索引将其计算出来。在固

件区中,柱面号和磁道索引这两个参数,对于特定对象的寻址而言是缺一不可的。这是因

为 7200.7以及更新的型号硬盘,其固件区初始柱面号不是一个恒定不变的值,而是可以在

硬盘启动过程中改变的。所以当和备件盘固件区数据进行交换时,仅使用柱面号的概念是

行不通的。

Barracuda硬盘可为两组:一是装配了并行 Parallel Flash的硬盘,包括 U5,Barracuda

/ / /Ⅰ Ⅰ Ⅰ Ⅰ;二是装配了串行 Serial Flash的硬盘,包括 Barracuda V,U series 7,7200.7,7200.8,

7200.9,7200.10,Momentus。

4.2.1 装配 Parallel flash 的硬盘固件结构

装配 Parallel flash的硬盘的固件由以下几部分组成:

Embedded code、存储于 Parallel Flash ROM 中的微代码、盘片上的固件区对象

(Object)组。

深度剖析——硬盘固件级数据恢复

74

� Embedded code,硬盘电路板上微处理器 ROM中的基础代码。

� 存储于 Parallel Flash ROM中的微代码,这些微代码用于在硬盘启动时,实施一组

基本操作,并提供终端模式下的基本命令。微代码内容的不同,其固件版本也将

有所不同,当用一个备件盘的电路板和故障盘的电路板进行置换时,两者的固

件版本和电路板的总体布局要一致,具体的版本号可查看硬盘标签上的固件版

本标识。

� 盘片上的固件区对象(Object)组,例如:

-ATA overlay(包含 ATA命令的处理代码)。

-S.M.A.R.T.扇区包含 S.M.A.R.T.的 Thresholds(阀值)、Values(值)和其他 S.M.A.R.T.

日志。

-HDD ID模板扇区,Stuff。它包括组成硬盘 ID的基本信息。它的结构与硬盘 ID的 ATA

规范相匹配,实际上,硬盘 ID 提供的数据块是基于 stuff 中的内容构建的。尽管它不完全

相同(一些字段的值会随硬盘的状态而改变)。

-包含硬盘 PN号和关于硬盘 ID配置信息的扇区。

-包含安全子系统数据的扇区。

-缺陷列表磁道(P-List,A-List)

-包含硬盘用户数据区区域分配的扇区组。

-包含硬盘运行日志的磁道。

-包含 CERT代码的磁道——作为扩展的终端命令集与 Self Test代码块,该代码块对于

ATA模式下的硬盘操作不是必须的。

-包含 CERT表的扇区组——Self Test参数表,该代码块对于 ATA模式下的硬盘操作不

是必须的。

由以上内容可以看到,和迈拓硬盘相比,希捷硬盘固件区中,具有特定固件功能的对

象(Object),都是以扇区、扇区组、磁道等概念出现的,而不是以模块的概念出现的。

4.2.2 装配串行 Serial Flash 的希捷硬盘固件结构

装配串行 Serial Flash的 Barracuda硬盘,其固件层级结构

如图 4-1所示。

硬盘启动调用的 Embedded code,其中一部分功能包括从

外置或内置串行 Serial Flash存储器中复制 Boot Flash code。此

代码一部分用于管理 F级终端。一旦 Boot Flash code从串行的

Flash 中复制到 RAM 中并启动,它就从某些确定的硬编码

(Hard-code,硬性指定不可更改的编码)柱面读取所谓的应用

代码(App code)。应用代码中的微程序部分,包含用于启动

Main FW所必须的执行代码,例如,启动 ATA子系统等。

另外,固件区包含以下对象(Object):

-ATA overlay(包含 ATA命令的处理代码和 S.M.A.R.T.运算)。

-S.M.A.R.T.包含 S.M.A.R.T.的 Thresholds(阀值)、Values(值)和其他 S.M.A.R.T.日

志的扇区。

图 4-1 固件层级结构

第 4 章 希捷硬盘固件特点及其故障分析

75

-硬盘 ID扇区,Stuff。它包括构成硬盘 ID的基本信息。它的结构与硬盘 ID的 ATA规

范相匹配。实际上,硬盘 ID 提供的数据块是基于由 stuff 的内容构建的。尽管它不完全一

样(一些字段的值会随硬盘的状态而改变)。

-包含硬盘 PN号和有关硬盘 ID配置信息的扇区;

-包含安全子系统数据的扇区;

-缺陷列表(P-List,A-List)磁道;

-包含硬盘用户数据区区域分配列表的扇区组;

-包含硬盘运行日志的磁道;

-包含 CERT代码的磁道——作为扩展终端命令集和自测试(Self Test)的代码块,该

代码块对于 ATA模式下运行的硬盘操作不是必须的;

-包含 CERT表的扇区组——自测试(Self Test)参数表(在 ATA模式下运行的硬盘,

该功能不是必须的)

应用代码使用所谓的 Eng Rev来识别。Eng Rev是(Ctrl)+(A)命令在终端上的响

应。输入命令后,硬盘会输出一串包含“Eng Rev=.F54”格式的信息。

一个完整的硬盘固件描述是由固件版本和 Eng Rev版本累加的。也就是说,如果硬盘

的固件是 3.06,并且 Eng Rev=.F54,那么硬盘的固件版本将是 3.06.F54。(删除:在这个案

例中 ROM版本也将被指定。例如,检查以上的硬盘,其版本为 S.15。)

4.2.2.1 装配 Serial Flash 的希捷硬盘电路板的兼容问题

当一个硬盘启动的时候,可以使用终端输出的 ID数据鉴别电路板的兼容性。

举一个例子来说明这样一个问题:

Interface task rest

1024k×16 buffer detected

ALPINE-1_Disk S.15 01-16-03 11:51

Interface task rest

1024k×16 buffer detected

AVALANCHE-1_Disk S.30 08-30-02 15:13 rcwood

在这里,用于标明兼容性方面的关键字符串,是跟随在 x_Disk后面的 S.xx以及 ROM

产生日期后面的单词。在上面的例子中,它就是 S.15 和 S.30,rcwood(后面的这个单词

有可能会缺席)。这两个参数是对电路板 code 及其电子元件变更的一个测定结果。所以为

确保两块电路板的兼容,这两个参数(本例中的粗体字)必须相同,否则,这两块板子是

不兼容的。虽然如此,在某些案例中,可以通过重写 PCB 板上的 Flash ROM 内容,来消

除电路板之间的不兼容。

如果安装了一个不兼容的 PCB板,硬盘将返回一个错误信息,例如:

Interface task rest

1024k×16 buffer detected

AVALANCHE-1_Disk S.30 08-30-02 15:13 rcwood

深度剖析——硬盘固件级数据恢复

76

Buzz-Head Mask 0000 – Switch to full int

Spin Ready

Application code incompatible with serial flash code

F>

不同硬盘,其电路板兼容的本质就是:电路板硬件工作所必需的电路板微代码应是一

致的。这些电路板微代码包括:

� 部件初始化信息及其管理信息,以及主轴电机的控制信息;

� 前置放大器初始化所必需的数据。

这些信息存放在主控芯片和(外在的或内置的)Serial Flash的代码中。此外,电路板

微代码同样拥有 App code(应用代码,其主要功能引导、启动盘面的固件),从而使得硬

盘能够在盘片的固件区上找到部分固件记录。因为各种不同版本的固件是由 App code和启

动参数(引导适应性数据,保存的固件区磁道缺陷列表)来启动的,所以,只要这些基本

信息一致,即使固件的版本的标签不同,但板子仍是兼容的,硬盘将正确初始化。

4.3 工作模式:Normal mode,Safe mode

希捷硬盘在 PC-3000维修工具中有两种工作模式分为:Normal mode(常规模式),Safe

mode(安全模式)。

Normal mode(常规模式):此模式下启动,硬盘会读盘面的固件和数据,并启动用户

界面。

Safe mode(安全模式):此模式下启动,硬盘的轴承马达不旋转、不读盘面的固件信

息,并且转换到终端命令模式。尽管安全

模式提供的功能很有限,但可以设置适配

数据的初始化标记以及改写部分和全部

的固件数据,但访问装配有 Serial Flash内

存芯片的 Barracuda 硬盘固件区时必须装

载和启动 App code。一个硬盘在常规模式

下如果不能进入准备就绪状态,就必须使

用安全模式,例如:当一个硬盘的磁头频

繁碰撞限位器时。要转换到安全模式,须

向硬盘发送一个 Safe mode(安全模式)

的信号,然后加电。硬盘应立即切换到终

端命令模式。你能够在 PC-3000维修工具

的“Utility startup”对话框中与“Utility

status”对话框中将硬盘切换到安全模式,

如图 4-2所示,此外,在主菜单栏和 utility

工具栏(“initialize Safe Mode”选项)的

自动切换功能可以使用。

图 4-2 “Utility status”对话框

第 4 章 希捷硬盘固件特点及其故障分析

77

4.4 终端模式:COM,ATA

一些基于 Barracuda体系构建的希捷硬盘,其终端模式分为两种:COM和 ATA。它包

括 U5,Barracuda Ⅰ~Ⅳ。

打开电源,硬盘将立即切换到 COM端口进行工作。

当硬盘运行在 COM终端模式时,硬盘必须经由 PC-KALOK 适配器与计算机的 COM

端口相连,或经由 PC-USB-TERMINAL 适配器与 USB端口相连,USB连接与 PC-KALOK

相比,稳定性更好,传输速率更快(对于 7200.7和 U series 7速率可达 921 000 KB)(B:

baud 波特)。一打开电源,硬盘就会在 COM终端模式下运转。在终端上敲入“Ctrl”+“Z”

组合键可进入实际的命令模式。此时,硬盘将会响应一个“T>”提示符,然后你能够输入

终端命令。

当在 ATA 终端模式下运行的时候,硬盘必须使用标准的 ATA 电缆连接到计算机,以

达到数据传输的目的。硬盘在收到相应的工厂 ATA 命令之后,进入 ATA 命令模式,硬盘

必须通过 ATA 接口报告准备就绪。基本上,采用 ATA 终端模式可以显著提升数据传输速

率。但由于硬盘固件工作的特点,实际上传输速率保持在相当于 COM终端模式的 57600b/s。

此外,硬盘的设计者没有继续对 ATA 终端微程序进行优化和更新,而是致力于提高 COM

端口的传输速率。

4.4.1 COM 和 ATA 终端模式间的转换

在 PC-3000的“Utility status”对话框中,

可实现两种终端类型之间的转换,如图 4-3

所示。

COM 转换到 ATA,可通过使用专门的

ATA命令,将硬盘的终端模式转换到 ATA模

式。不管用何种方法,一个希捷硬盘在 COM

终端模式下运行是不可能接收 ATA命令的,

所以,你首先必须退出 COM终端命令模式,

重新启动固件。重新启动后,更改硬盘的工

作模式,并选用 ATA终端模式。

ATA转换到 COM,同样需要重启硬盘的

固件。无论如何,在发送命令到硬盘之后你

不能做到立即将应用程序(utility)转换到

COM终端模式,这是因为在固件完全启动之

前,所有的启动信息将被输出到 ATA终端,系统将一直保持在等待模式状态,直到完成读

取硬盘缓冲区的所有字符为止。也就是说,如果你将程序转换到 COM 终端模式,硬盘将

不会立即重启。当固件重启结束后,它十分容易在瞬间确认,从而完成将程序转换为经由

COM 端口运行。在 ATA 终端模式中,程序通过一个命令来读取硬盘数据,在常规的模式

中,没有此功能。因此,当固件完成重启时,你将能看到 PC-3000系统的面板 ERROR指

图 4-3 “Utility status”对话框

深度剖析——硬盘固件级数据恢复

78

示灯在闪烁。此外,根据我们的观察,它将长时间处于等待状态,一直到在终端上显示

“ATRest”信息,并且模式转换之后为止。

4.5 希捷硬盘各级指令

希捷硬盘的专业数据恢复软硬件工具很多,但并不是每一个数据恢复的爱好者或从业

者都能够全部拥有那些工具,没有专业的数据恢复工具能够进行专业维修吗?答案是肯定

的,但是需要条件,其条件如下:

� 一个终端串口通信软件。

� 一根 COM线。

� 熟悉希捷硬盘的终端指令,并了解终端的返回码。

根据以上条件,你就可以修复大多数的希捷硬盘了。

专业软件的好处仅仅在于对某些常用指令和常用操作序列提供了菜单式的操作,在这

一点上它们具有优越性,仅此而已。当然,很多专业软件也提供了终端命令这一选项,拥

有和熟悉这些专业软件的操作者,可以使用专业软件提供的终端命令功能来排除故障。

希捷硬盘的指令很多,分成不同的级别,每个级别里又有很多命令,每个命令还可能

有不同的格式和子命令,以完成不同的功能。其中有:

Level T(状态 T>)-主要含 Cert测试,包括:下载代码,开始工厂测试,设置驱动器

“Age”,读 Cert测试日志,读出错日志,写测试数据到 Flash等命令。

Level 1(状态转入/1)-存储器控制命令,包括:显示缓冲,显示存储器,设置存储器,

将缓冲内容复制到 Flsah,从磁盘读取系统参数等命令。

Level 2(状态转入/2)–驱动器命令,包括:测试柱面,测试磁头,任意配置柱面/磁

头和数据工作方式等的命令;设置数据工作方式,执行 ECC 测试,操作出错日志,转储

RAM 等的命令;将物理参数转换为逻辑参数,隐藏或启用柱面/磁头等命令;主轴起转,

主轴停转,寻址,读,写等命令。

Level 3(状态转入/3)–寻址命令,包括:显示 zone 表,马达加速度测试,测量磁头

切换 & 定位时间,显示磁头偏移,传动臂开环测试寻址、物理寻址、不同长度寻址测试,

臂锁测试显示传动臂位置,迟滞测试,臂锁试验程序测试。

Level 4(状态转入/4)–伺服寻道命令,包括:操作隐藏柱面表,寻道误差测试,显示

位置误差信号,Zap伺服脉冲,设置伺服偏移,设置/显示寻道增益向传动臂发送脉冲。

Level 7(状态转入/7)–校正命令,包括:显示和调整参数;对读取磁道操作进行诊断;

AGC增益控制,对所有 Zone执行 VCO校正。

Level 8(状态转入/8)–特殊群写命令,包括:伺服诊断子命令,配置命令,外部锁定

主轴,主轴转速调整;设置马达偏流。

Level 9(状态转入/9)–驱动器命令(完全忽略缺陷管理模式)。

除了上面 8 个 Level 的命令以外,还有两组附加的命令:在线命令和普通命令。在线

命令是用来显示状态的;普通命令用来“poker(存入)”和“peek(读取)”存储器,以

达到有权使用寄存器,缓冲内存和数据内存的目的。

最常用到的是 Level F、Level T、Level 1及 Level 2 里的命令。熟悉这些命令,应用这

第 4 章 希捷硬盘固件特点及其故障分析

79

些命令你就可以很专业地去修复希捷的硬盘了。

4.5.1 在线命令

在线命令及其含义如表 4-2所示。

表 4-2 在线命令及其含义

, 显示数据传输状态

. 显示硬盘运行状态

; 显示固件状态

? 显示缓存映像

[Ctrl]+[E] 显示接口状态:错误代码,最大的 CHS,设置数据传输

~ 命令接口状态

[Ctrl]+[Z] 转换命令模式

[Ctrl]+[U] 输出 AT Stuff 缓存

[Ctrl]+[T] 重启当前级测试

[Ctrl]+[D] or [Ctrl]+[N] 显示固件行为报告详略程度的开关

[Ctrl]+[C] 固件复位

[Ctrl]+[L] 显示一串包含固件版本的信息

[Ctrl]+[R] 装载 CERT

[Ctrl]+[O] or [Ctrl]+[J] Advance Servo Tracing——输出有关 PCHS IO的详细信息

Esc 中断执行

4.5.1.1 常用在线命令的反馈信息格式

1. 命令“’”

“’”命令反馈数据格式为:

Cmd Cyl Hd Sct Cnt Stbuf Segl Csct Cbuf Actv Ercd Rtry Flags

xx xxxx xx xxxx xxxx xxxx xx xxxx xxxx x xx wwxx.yy.zz xx

“,”命令反馈格式各数据项的含义如表 4-3所示。

表 4-3 “,”命令反馈格式各数据项的含义

Cmd xx 最近执行的程序或正在执行的程序。

Cyl xxx 当前命令的柱面(或相对于基础柱面的偏移量)

Hd xx 磁头

Sct xxxx 起始扇区

Cnt xxxx 扇区中数据块的尺寸

Stbuf xxxx 一数据块的起始缓存

Segl xx 输入/输出缓存的中等尺寸

Csct xxxx 当前扇区

Cbuf xxxx 当前缓存

Actv x 执行中的命令

Ercd xx 当前命令的错误代码

Rtry wwxx.yy.zz 重新设置

Flags xx 标记

2. 命令“.”

“.”命令反馈的数据格式为:

深度剖析——硬盘固件级数据恢复

80

Pgm=xx Trk=xxxx(yyyy).a(b).zzzz(www) Zn=x Err=xx ErCt=xxxx H1th=xxxx CH1th=

xxxx ssss LBA=xxxxxxxx

其各项含义为:

Pgm=xx 活动程序,00-诊断监控,50-ATA接口命令处理程序。

Trk=xxxx(yyyy).a(b). 当前活动的逻辑柱面(物理柱面),日志。磁头(物 zzz(www)

2222=(www) 理磁头),日志。扇区(物理扇区)

Err=xx 当前运行的错误代码。

ErCt=xxxx 硬盘最后复位错误数或最后一个命令复位的错误 log数。

H1th=xxxx 4数字的 health位的状况累计。

CH1th=xxxx 4数字的 health位的当前状态。

sssss 硬盘状况。它可能是 Ready或 Ntrdy。

LBA=xxxxxxxx 当前的 LBA。

例如:Pgm=50 Trk=0300(0301).2(0).034(068) Err=00 ErCt=0000 H1th=0000 CH1th=0000

Ready LBA=00123492

3. 命令“;”

命令反馈的数据格式为:

Age=xx Type=xx MxCyl=xxxx MxHd=x MxSct=xxx Bsz=xx TCode=xxxx

其各项含义为:

Age=xx 当前等级

Type=xx 当前硬盘类型

MxCyl=xxxx 当前硬盘的最大柱面数,十六进制

MxHd=x 当前硬盘的最大磁头数,十六进制

MxSct=xxx 当前硬盘的最大扇区数,十六进制

BSz=xx 单个缓存的大小,十六进制

例如:

Age=50 Type=A4 MxCyl=1387 MxHd=3 MxSct=10D Bsz=80 TCode=0000

4. 命令“?”

该命令反馈的数据格式为:

RD:xxxx:yy

WR:xxxx:yy

AC:xxxx:yy

AS:xxxx:yy

SC:xxxx:yy

DP:xxxx:yy

BA:xxxx:yy

ST:xxxx:yy

Logbps:xxxx

Codebps:xxxx

第 4 章 希捷硬盘固件特点及其故障分析

81

Up:xxxx:yy

FM:xxxx:yy

AD:xxxx:yy

RL:xxxx:yy

SC:xxxx:yy

AL:xxxx:yy

其各项含义如表 4-4所示。

表 4-4 “?”命令反馈格式各数据项的含义

RD:xxxx:yy xxxx-读缓存的起始块,yy-缓存扇区的长度,十六进制

WR:xxxx:yy xxxx-写缓存的起始块,yy-缓存扇区的长度,十六进制

AC:xxxx:yy xxxx-活动日志缓存的起始块,yy-缓存扇区的长度,十六进制

AS:xxxx:yy xxxx-ASCII日志缓存的起始块,yy-缓存扇区的长度,十六进制

DP:xxxx:yy xxxx-log指示缓存的起始 log,yy-缓存扇区的长度,十六进制

SC:xxxx:yy xxxx-擦除缓冲器的起始块,yy-缓存扇区的长度,十六进制

BA: xxxx:yy xxxx-批处理缓存的起始块,yy-缓存扇区的长度,十六进制

ST: xxxx:yy xxxx-log统计缓冲器的起始块,yy-缓存扇区的长度,十六进制

Logpbs:xxxx CERT log区每扇区字节数

Codebps:xxxx 代码区每扇区字节数

Up:xxxx:yy 微处理器 RAM缓存的起始块,yy-缓存扇区的长度,十六进制

FM:xxxx:yy 格式化操作缓存(Alt缺陷重定位)的起始块,yy-缓存扇区的长度,十六进制

AD:xxxx:yy xxxx-适配数据读/写缓存的起始块。yy-缓存扇区的长度,十六进制

RL:xxxx:yy 跳过备用扇区测试

SL:xxxx:yy 用户区跳过扇区目录

AL:xxxx:yy 用户区重定位扇区目录

4.5.1.2 Health 位的解释

一个 Health 位的格式(两个字使用的十六进制符号)为:XXXX.YYYY,前四位代表的

是当前 health位的状态,后四位代表的是累计的 health状态。Health位的解释如表 4-5所示。

表 4-5 Health 位的解释

Bit 号 bit 位设置为 1 的意义

15 跳过的扇区数过多或 Alt置换过量

14 硬件错误

13 严重的 R/W错误

12 Health错误率

11 偏离磁道错误

10 激活错误

9 伺服错误

8 主轴电机错误

7 内部保留使用

6 内部保留使用

5 内部保留使用

4 伺服警告通知

3 R/W警告通知

2 跳过扇区或重定位程序赋值失败

1 电机电流警告

0 电机转动就位错误

深度剖析——硬盘固件级数据恢复

82

4.5.2 公共命令(除 8 级别以外的所有等级都可以使用)

/x 切换到 x级。

4.5.3 T 级(0 级),主要测试级

T级命令及其含义如表 4-6所示。

表 4-6 T 级命令及其含义

Bxx

设置 HDD COM端口数据传输速率

xx 波特率

1228 1228000

921 921000

625 625000

460 460000

230 230000

115 115000

576 57600

192 19200

96 9600

48 4800

24 2400

1 显示支持速率的列表

Dx,y,z 显示以“x”开始的 CERT日志。如果“y”是指定的,它就意味着仅列出“y”错误代码的记

录。如果“z”=40,快速输出

Ex,y,z 显示/编辑 CERT日志(参见 Level 2)

F

HDD ID管理

在命令行进行编辑

SetStuff->

支持输入数据的两种格式:

类型 1:完整 HDD ID数据单元(单元号,是一个符合 ATA规范的 HDD ID字符编号;data-是

一个十六进制的字符序列)

ASCIxxyy…yy

xx-与选择参数相符的 HDD ID字符编号

yy…yy- 数据转换为参数。其输入值须为十六进制格式

一个字包含两个字节,高/低字节格式,正常状态下,HDD ID中 xx与 yy…yy之间没有空格

参数管理分别来执行:每一个参数需要一个 F命令

例如:

“ASCI013FFF”-将逻辑柱面的号码设置为 0x3FFF

“ASCI030010”-将逻辑磁头的号码设置为 0x10(=16)

“ASCI06003F”-将逻辑扇区的号码设置为 0x3F(=63)

“ASCI1Bxxxxxxxx”设置型号名。xxxxxxxx-型号名的 ASCII代码,16进制形式,不带空格,而

且型号名本身补充了 40字符的空格(code 20)

“ASCI3C45670123”1-设置(当前的)MaxLBA为 0x01234567

“ASCI8345670123”-设置(原生的)MaxLBA限于 0x01234567

“ASCIAE0000”,“ASCIEA0000”-键值 AE 和 EA 用于硬盘 AAM。万一硬盘“唱歌”(在启

动时发出一个或几个高声)参数一定被中止(0000)

“ASCIFE”-以默认值初始化 HDD ID

类型 2:每个 HDD ID字被分别输入:ASCInnWWWW,这里 nn代表 HDD ID中的字符编号,

WWWW-是十六进制的数据字

你必须重新启动硬盘使更改生效(例如:用[Ctrl]+[C]命令)

一些型号的标准的键值能够被创建

注意!在一些硬盘家族中,有一个“ASCIFE”初始化命令的不能执行的信息(例如:7200.9)。

有关细节请参考硬盘家族特点的描述

第 4 章 希捷硬盘固件特点及其故障分析

83

(续表)

Gx 从 VENDOR数据磁道中读取扇区。“x”代表扇区号

Hx,y,z

显示/复位 health位

“x”=任意一个字符串-显示当前的 health

“y”=<skipped>-显示 health的累积值

“z”=22-复位 health

I,,22 初始化固件区。执行所有必须的校准程序,格式化,规划固件区,准备用于写入固件数据。它

和 Self Test程序的 test 2相当

Nx,y,z

设置硬盘的 level(Age)为“x”。执行该命令必须要求“z”=22(例如:N50,,22 –将硬盘的 Leve

l转换为 50,也就是进入 ATA的操作模式)

y – 读写属性的标志字。可能为以下值:A0 – 读取默认参数,0A – 写入缺省参数,00 – 忽略

参数,AA – 设置所有的默认参数

在扩展模式中使用 N2,AA,22命令能够启动 Self Test – 这样硬盘将对必要的读/写适配数据进行

重新计算

R 从盘片的固件区读取系统扇区到(其中系统扇区包含适配数据)RAM

S 检查 Slip list中的空号或错误类别

Tx 运行工厂测试“x”

Vx,y

显示缺陷列表

“x”- bit map,指定缺陷列表,它可以是一个组合标志

“y”- 当 y出现时,仅输出磁头 y缺陷

X 位号 值

0 显示用户磁道的 slip表

1 显示保留的磁道 slip表

2 显示重定位(alt)表

Wx,y,z 将 RAM中系统扇区的内容保存到盘面的固件区(其中系统扇区包含适配数据)

“x”,“y”- 不使用,执行此项操作,“z”须等于 22

Yx,y,z

此命令用于更改硬盘类型,控制磁头的数量。它支持两种格式。第二种格式类型首先支持的是

7200.9硬盘家族。请参考硬盘家族特点的详细描述,以找到合适的使用类型

类型 1:

�“x”-硬盘类型

�“y”-如果输入“y”,指令会告诉所使用 packwriter的命令版本,不对盘面进行读、写操作

�“z”-不使用

类型 2:

�“x”- 新的最大的磁头数

�“y”- 如果输入“y”,指令会告诉所使用命令的 packwriter版本,不对盘面进行读、写操作

�“z”- 如果输入“z”,指令会告诉用一个指定的值来改变的硬盘类型

f

写 Flash内存

装配的并行 Flash内存(Barracuda Ⅰ,Ⅱ,Ⅳ)的硬盘,在执行记录的风格上与 U类型的硬盘相

同,即,都通过 SDLD

装配有串行 Flash内存的硬盘,假定其中包含的 ROM代码已经装载到了缓存 0X400

ix,y,z

清空陷列表

“x”-

bit字段,用于指定缺陷列表,可以是组合标志

“y”- 当 y出现时,清空缺陷表后,强制将缺陷表保存到盘面

“z”- 必须等于 22才允许操作

X 位号 值

0 清除使用的磁道列表

1 清除保留的 track slip list

2 清除重定位的 alt列表

深度剖析——硬盘固件级数据恢复

84

(续表)

Kx,y,z

磁头禁用的管理:

�“x”- 磁头禁用(最高的那一个)。不能禁用 0号磁头。如果“x”=FF-释放所有磁头

�“y”- 新的硬盘类型

�“z”- 禁用序号最小的那个磁头,如果需要

如果没有参数输入,“T>K”-显示当前的磁头 map

r 显示 CERT版本

#,,z

输入 HAD序列号,“z”-必须等于 22才允许操作

该命令不适用于 U Series X硬盘家族,这是一些固件特性造成的

首先需要的参数是现行的序列号,第二个 - Pack Writer序列号 – HDD标签上的 PN(你只能敲入)

$ 输入 PCBA序列号

4.5.4 level F 启动代码

level F启动代码,听起来很神秘,要真正地了解 level F启动代码,需要搞清楚四个问

题,一是什么是 level F?二是哪些盘会使用 F级?三是硬盘发生什么错误会到 F级?四是

level F的指令有哪些?

什么是 level F呢?F级就是仅工作在电路板模式下的等级,这个等级是不依赖于盘体

本身的。

哪些盘会使用 F 级?Barracuda Ⅴ及以后的盘会出现 F 级。初期的硬盘控制系统一般

都比较简单,代码的体积也相对较小,相应的指令一般都存放在电路板的 ROM 里边,所

以不会出现 F 级。自从酷鱼五代及以后的盘,代码越来越大,电路板的现有 ROM 已经不

能完全装入了,而厂家又不想增加生产成本,所以这些代码就被分散装在硬盘盘体和电路

板 ROM 里边。在硬盘加电装载时如果不能成功地读取这些被分散的代码,硬盘就只能工

作在电路板的模式,这时就出现了 F级。

硬盘发生什么错误会到 F级?

� 硬盘的磁头损坏。

� 硬盘的盘片损坏。

� 电路板装载错误。

� 固件错误。

以上的情况都有可能使硬盘变为 F级,所以影响硬盘成为 F级的情况有很多。

level F的指令有那些呢?具体的指令如下:

Bx,y:显示指定的缓存。“x”-一个 512 字节缓存号,“y”-用于比较的缓存号。如果

指定“x”,没有被指定“y”,那么将用一个相应的写缓存执行比较。

Cx,y,z:备份缓存。“x”- 源缓存,“y”-目标缓存,“z”-备份的缓冲器数。

Dx,y,z:显示存储器信息转储。“x”代表高位地址部分,“y”-低位地址字,“z”-如果

输入,随即数值的字节将被强制显示高亮。

Rx:读取系统信息。

“x”=1读取磁道缺陷列表。

“x”=2读取加载的适配数据。

“x”=4读取应用代码(app code)。

第 4 章 希捷硬盘固件特点及其故障分析

85

如果没有指定参数,程序将读取所有系统信息。在命令执行之后,硬盘保持在 level F

中运行。

U:释放主轴电机。

Z:终止主轴旋转。

j:使用 R命令读取启动的应用代码(App code)。

r,y,z:从当前固件区磁道读取扇区。

sx,y:定位于柱面“x”,磁头“y”。

bxx:设置硬盘 COM端口传输速率,xx的设置值及其对应的速率如下:

xx 波特率

1228 1228000

921 921000

625 625000

460 460000

230 230000

115 115000

576 57600

192 19200

96 9600

48 4800

24 2400

1 显示支持速率的列表

4.5.5 level 1 内存管理

Level 1存储器控制命令,其功能包括:显示缓冲,显示存储器,设置存储器,将缓冲

内容复制到 Flash,从磁盘读取系统参数等命令。具体命令如下:

Bx,y:显示缓存“x”与缓存“y”的匹配度。“x”-一个 512 字节缓存的号码,“y”-

用于比较的第二个缓存的号码。如果指定“x”,没有被指定“y”,那么将用一个相应的写

缓存执行比较。

Dx,y,z:显示存储器信息转储。“x”代表高位地址,“y”-低位地址,“z”-如果输入,

随即数值的字节将被强制以高亮显示。

F:强制使能写 bit位。它在适配数据没有装载(在固件启动时出错:Code-33),需要

时使用。

M:显示有关 ROM信息。显示 Flash ROM代码,vendor代码,写运算的用户代码,

写运算的紧急代码。在执行之后重启固件。

Nx:SMART管理与(部分)缺陷列表。

“X”=(下面的 0~9都是“X”可能的取值范围)。

0 – SMART On/Off 切换。

1,4 – 复位 SMART。

5 – 显示 SMART属性值。

深度剖析——硬盘固件级数据恢复

86

6 – 显示 SMART极限值。

7 – 显示 G-List(如果装载了 CERT,使得一个硬盘转速慢下来)。

8 – 显示临界事件日志。

9 – 显示 pending list(如果装载了 CERT,使得一个硬盘运转停滞)。

P:显示 PCBA信息。

Sx,y,z:编辑指定的 RAM字节。

Ux,y,z:编辑指定的缓冲器字节。

cx,y,z:使用“x”和“y”开始对缓存模块进行比较,块长度=z。

r:从盘片上读取 CERT代码。

t:从盘片上读取 CERT表。

u:从盘上(针对一些新型号的硬盘)读取 SeaDex 脚本。

4.5.6 level 2 物理参数操作

Level 2 驱动器命令,其功能包括:测试柱面,测试磁头,任意配置柱面/磁头和数据

工作方式等的命令;设置数据工作方式,执行 ECC测试,操作出错日志,转储 RAM等的

命令;将物理参数转换为逻辑参数,隐藏或启用柱面/磁头等命令。其具体命令如下。

Bx,y:显示缓存“x”与缓存“y”的匹配度。“x”-一个 512 字节缓存的号码,“y”-

用于比较的第二个缓存的号码。如果指定“x”,没有被指定“y”,那么将用一个相应的写

缓存执行比较。

Cx,y,z:缓冲器备份。“x”-源,“y”-目标,“z”-被备份的缓存数。

Ex,y:显示/编辑 CERT日志。“x”-显示日志号,如果不指定“x”,命令将输出当前日

志,如果 x=0将清除当前日志。“y”-如果 y存在,仅使能输出“y”的错误部分。

Hx:选择物理磁头“x”。

Sx,y:强制定位于柱面“x”,磁头“y”。

U:释放主轴电机。

Z:停止主轴旋转。

cx,y,z:比较缓存块。“x”-第一块的开始部分,“y”-第二模块的开始部分,“z”-块

长度。

r,y,z:从当前的固件区磁道中读取扇区,“y”-初始扇区号,“z”-扇区的数量。

sx,y:定位于柱面“x”,磁头“y”。

x:显示区域分配表。

4.5.7 level 7 适配数据操作

Level 7 校正命令,包括:显示和调整参数,对读取磁道操作进行诊断,AGC 增益控

制,对所有 Zone执行 VCO校正。

Bx,y:显示缓存“x”与缓存“y”的匹配度。“x”-一个 512 字节缓存的号码,“y”-

用于比较的第二个缓存的号码。如果指定“x”,没有被指定“y”,那么将用一个相应的写

缓存执行比较。

Cx,y,z:备份缓存,“x”- 源,“y”-目标,“z”-被备份的缓存数。

第 4 章 希捷硬盘固件特点及其故障分析

87

Dx:显示热敏二极管的数值。

该数值以 YYZZ 格式显示,其中 YY 代表在 Self Test 运行期间热敏二极管的值,ZZ

是当前的温度。

如果输入“x”,那么 Self Test运行的目标温度设置为该值。

Ex,y:显示/编辑 CERT日志。“x”-显示日志号,如果不指定“x”,命令将输出当前日

志,如果 x=0将清除当前日志。“y”-如果 y存在,仅使能输出“y”的错误部分。

Hx:定位于磁头“x”。

Ix,y,z,a:显示/修改当前磁头的适配设置

当输入没有参数的命令时,将显示当前磁头适配值。

“x”-区域号。如果“x”=区域数,那么命令将修改所有区域。

“y”-被修改的参数号。

“a”=1-显示适配数据和 FIR taps。

“a”=2-显示 FIR taps。

U:释放主轴电机。

Z:停止主轴电机。

Dx,y,f:将适配数据复位至默认值

“x”-区域号(默认时,命令使用当前区域)。如果“x”=区域(复数)号,那么命令

将修改所有区域。

“y”-磁头号(默认时,命令使用当前磁头)。如果“y”=磁头(复数),那么命令将

修改所有磁头的适配设置。

“f”-一个标志。当输入“f”时,它将强制复位到磁头的偏移量值,代替适配数据设

置通道(复位到默认值)。

r:从固件区的系统扇区中读取适配数据。

x:显示区域分配。

4.6 希捷硬盘固件故障表现及分析

要定位希捷硬盘的固件故障,首先要排除硬盘的硬件故障,这是因为仅仅从故障现象

来看,不可能迅速确定是固件故障,那么希捷硬盘常见的硬件故障有哪些呢?

4.6.1 希捷硬盘常见的硬件故障

� 盘体和电路板之间连接触点的氧化

这种故障会造成主轴电机不旋转,或旋转不正常,主机无法识别硬盘。当然固件故障、

电源故障同样会造成这样的故障现象,鉴于维修要遵循先易后难的原则,维修中遇到类似

故障现象的硬盘,可以首先考虑用橡皮、细砂纸或其他工具,轻轻擦除盘体和电路板之间

的连接触点,以除去触点上面的氧化层。

� 硬盘电源触发保护

希捷硬盘的 PCB板上设计有过压保护电路,希捷硬盘的电源电路向 PCB板提供 5V、

12V电压。过压保护电路的独特的记号是 TRANSIL,即瞬间电压抑制器(Transient Voltage

深度剖析——硬盘固件级数据恢复

88

Suppressors)。硬盘的型号不同,其具体位置

也有所不同,以 U Series(C1),5400.2(C2)硬盘

家族为例,如图 4-4 所示,它有两个过压保

护二极管,VD1 是一个 5V 的过压保护二极

管,VD2是一个 12V的过压保护二极管。当

二极管损坏时,一部分连接到二极管的导线

可能被损坏,为了恢复硬盘的正常运转,必

须修复这些导线。如果仅仅是二极管损坏,

拆除它硬盘仍能正常运转。

� 主轴电机不起转

该故障可能是由电路板的主轴电机控制

芯片损坏造成的,线圈短路(可以通过对盘体触点进行电阻测量来检查),电机卡住。

其中电机卡住可能是由两个原因造成的:一是控制板和在盘体的主轴马达的连接点氧

化造成的;二是电机本身损坏造成的,对于后一种情况可考虑将故障盘的盘片移至备件盘盘

腔内。

� 硬盘在启动时卡死

这个问题是由固件或磁头损坏造成的。要鉴别是由固件造成的还是由磁头造成的,你

首先需要检查磁头的状况。要检查磁头状况,如果测试结果显示出硬盘卡死的原因不是因

为磁头损坏,那么你就要核实固件有无损坏。要检查固件,你可以追查固件的装载,或进

行标准的 LDR启动测试,或将有问题硬盘固件的 Object和标准的样品进行直接比较。

在自测试(Self-Test)之后 App code经常被损坏(并且 ATA overlay会被完全删除)。

因而这样的硬盘在启动时卡死。所以在进行自测试(Self-Test)之前,要做好固件数据的

备份。

� 终端上总是频繁出现无穷个包含“$”的信息

终端上出现“$”字符串意味着子系统配置丢失伺服系统标志。出现这样的现象,是

由部分转接器(commutator)、磁头、盘面损坏造成的。多数可能的原因是磁头污染。这是

因为厂商在制造一个新的硬盘时,为了防止划伤盘片,在盘片上覆盖了一种特殊的薄膜。

随着时间的流失,这些薄膜可能会脱落并且会污染硬盘的磁头,使得我们必须使用专门的

溶液(市场有售)清洗磁头,或更换磁头以恢复用户数据。

4.6.2 固件故障的处理

在 4.6.1 节中,描述了希捷硬盘故障现象,这些现象同时也会在固件发生故障时出现,

那么,对确认为固件故障的硬盘该如何处理呢?

通常希捷硬盘的固件故障的处理是经过指令进行操作的,包括固件读取、固件备份、

电路板的 ROM操作、盘片的缺陷分析(扫描坏道)、将坏道加入缺陷表、全面自动校准、

F级自动校准,下文将分别予以介绍。

4.6.2.1 自动校准方式

上文中提到的对固件故障的处理操作,前几项大家应该比较熟悉,对于后两项“全面

图 4-4 U系列 5400.2电路板

第 4 章 希捷硬盘固件特点及其故障分析

89

自动校准”和“F级自动校准”可能比较陌生,它们的含义是什么?两者之间的区别又是什

么呢?

什么是“全面自动校准”呢?

希捷硬盘出厂时都会对新硬盘进行全面测试,测试的方法是通过运行存储在硬盘自身

固件区里的一段程序来实现的,这一段程序称为“校准程序”,测试全面通过后方可出厂以

及销售,这种全面测试的过程即为“全面自动校准”。

对于希捷酷鱼家族而言,其校准程序由两部分组成:一是 CERT校准代码;二是 CERT

TAB校准流程。

CERT代码管理一个扩展的终端命令集和自测试(Self-Test)。

CERT TAB实质是一个 Self Test参数表。

因此,这里所说的校准实际上是对硬盘执行 Self-Test的过程。

硬盘通电后会自动完成 APP引导代码的装入,ATA命令的加载,并完成一系列后续测

试工作以及读取参数信息、让硬盘工作在 AGE=50状态,此时硬盘就绪认盘。

校准程序的作用就是用于校准修复硬盘,磁头测试、固件区坏道修复、数据区坏道修

复,一个硬盘在正常使用时校准程序是不起作用的。只有在硬盘工作一定时间后,出现各

种不同故障,才需要再次调用校准程序予以全面修复。

下面介绍希捷硬盘酷鱼家族开启“全面自动校准”的方法:

在通过指令模式下,使用“Ctrl+R”组合键把 CERT 校准模块装入硬盘内存,然后输

入 N2,,22或 N2,AA,22(扩展校准)并回车,最后使用“Ctrl+T”组合键命令开启。其作用

就是调用并运行 CERT、CERT TAB这两个程序,如图 4-5所示。

图 4-5 全面自动校准

运行全面自动校准的条件就是,首先待修硬盘完整地加载了 APP引导代码,并可进入

T>模式;其次 CERT及 CERT TAB完整、没有损坏。

即使在系统不认盘情况下,只要在待修硬盘通电后,能保证在指令模式下使用“Ctrl+Z”

组合键进入到“T>”的,就可以开启“全自动校准”。

深度剖析——硬盘固件级数据恢复

90

什么是“F级校准”呢?

F级校准就是在硬盘无法正常装入 APP引导代码的情况下,即待修硬盘通电后,不能

进入到“T>”指令模式,而是进入了“F>”,属于仅工作在电路板状态,这个状态下是不

能对盘片固件区数据做任何操作的。在这个状态下,要向固件区直接回写 APP引导代码、

CERT 校准代码、CERT TAB 校准流程,继而开启全自动校准的、实现硬盘的修复的可能

性不大。为此,效率源科技提出了一个解决方案,该方案的思路是:

通过效率源专修程序把一个匹配的 APP引导代码模拟硬盘自身装入的过程,直接引导

进硬盘电路板内存(电路板内存读写技术),使硬盘成功地进入了 T>模式,从而实现校准

程序的调用。

其过程如下:

首先进入效率源专修程序,选择“引导管理”选项卡,如图 4-6所示。

图 4-6 效率源引导管理窗口

其次是在左边的文件选择框里选择固件存放路径,再单击“APP”按钮,加载 APP引

导代码,引导完成后按“Enter”键,如果出现“T>”,表示 APP加载成功,就可以开始校

准了,后续操作和全面自动校准完全相同。

在 F级校准的实际操作中,一是由于考虑到多数情况下,APP、CERT、CERT TAB必

须完全匹配。同一个硬盘备份出来的完好的固件数据,用于开启校准时成功率高;二是待

修硬盘固件区中的 CERT、CERT TAB 已经损坏。所以,有时加载的不仅是 APP模块,而

是连同 CERT和 CERT TAB一起加载到内存,所以很多情况下,选择“加载所有模块”。

总之“全面自动校准”是用待修硬盘自身的校准程序来修盘;而“F 级校准”是用外

部校准程序来修盘,以达到改变固件区地址、避开固件区坏道的目的。

具体选择哪种校准方式,要根据待修的硬盘工作状态和校准程序的损坏情况而定。

4.6.2.2 固件故障一般处理过程

对于希捷硬盘固件故障的处理,一些专业数据恢复的科研机构进行了针对性的研究,

并形成了一套比较成熟解决问题的思路。为了使大家对固件故障的处理过程有一个形象的

了解,本节以效率源为例,来阐述固件故障的一般处理过程。

第 4 章 希捷硬盘固件特点及其故障分析

91

� 固件的备份

首先将待修硬盘和修复端连接完毕,然后启动效率源科技希捷专修程序,如图 4-7所示。

图 4-7 启动希捷专修程序

程序运行至下一个对话框,如图 4-8所示,在此对话框中单击“装入管理”选项卡。

图 4-8 “装入管理”选项卡

在图 4-8中单击“从硬盘装入”按钮,程序会自动识别硬盘类型,以及获取相关参数,

并生成相应的文件夹,如图 4-9所示。

图 4-9 程序获取硬盘参数、生成文件夹

深度剖析——硬盘固件级数据恢复

92

装入管理的目的是让专修程序获取待修硬盘的相关参数,用于取得相应的指令集,这

是因为不同的硬盘支持不同的指令集,需要不同的传入/传出的参数,而且专修程序自带的

用于 F级校准的固件数据也是通过这些参数来区分。因此修盘的成功率也取决于专修程序

获取待修硬盘参数的准确性和完整性。在“装入管理”选项卡的右侧“硬盘信息”、“硬盘

参数”一栏中,显示的就是该专修程序获得的硬盘参数。

装入完毕后,单击备份固件,进入备份固件对话框,如图 4-10所示。

图 4-10 备份固件对话框

从图 4-10的“模块”一栏中可以看到酷鱼固件数据:

0 ALT G表数据

1 ATA 硬盘正常工作必须的 ATA命令处理代码

2 CERT 校准代码(管理一组扩展终端命令和 Self-Test)

3 CERT TAB 校准流程(Self-Test参数表)

4 INFO 硬盘参数

5 PL P表数据

6 TS 道表数据

7 APP 引导代码

8 SECT 批处理脚本模块

以上的固件数据对希捷硬盘的维修很有用,当然,硬盘的固件区还存放着其他程序和

数据,但对目前所知的维修而言,很少用到。

如果待修硬盘在主机 BIOS 不可识别的状态下,很多参数都不能正确读出,甚至连家

族号都不能正确获取,在有些操作中,需要根据硬盘标签上的相关信息手动选择家族号。

接下来,单击“全选”按钮,然后再单击“读取”按钮,开始备份固件,如图 4-11

所示。

在图 4-11的中间的上半部分显示的是读取固件数据的具体过程,下面是固件备份的进

度条,备份完成后,可以单击电源按钮“ON”左边的按钮,如图 4-11 中鼠标箭头所指按

钮,来查看固件是否备份完整。单击该按钮后,进入下一个窗口,如图 4-12所示。

第 4 章 希捷硬盘固件特点及其故障分析

93

图 4-11 备份固件过程

图 4-12 固件备份的文件夹

打开固件备份的文件夹 MOD,将显示具体的固件数据,如图 4-13所示。

图 4-13 备份的固件数据

备份固件的作用:

深度剖析——硬盘固件级数据恢复

94

A. 固件备份是硬盘固件级维修中一个不可缺少的重要环节,主要用于防止后续操作

损伤待修硬盘的固件数据。

B. 积累一些功能完好的固件数据,用于以后的硬盘维修。

� 固件回写

对于固件回写,目前酷鱼系列只支持 ATA、CERT、CERT TAB、INFO、APP、SMART

等 6个模块的回写,不支持 P表、G表、TS、SECT固件数据的回写。

要进行固件回写,首先要搞清楚原来固件存放的路径,专修程序存放固件的默认路径为:

C:\效率源科技\希捷专修\家族号\ROM 版本号\固件版本号\CERT 效验值\硬盘型号\SN

(硬盘序列号)

固件回写时,单击需要回写的固件对象名,会弹出对话框,选定对应的模块即可。固

件回写的具体操作,与固件备份在操作风格上大同小异,在此就不再详述。

� 固件的检测与修复

单击工具栏中的“固件检测与修复”按钮,进入如图 4-14所示的对话框。

图 4-14 固件的检测与修复

在图 4-14的对话框中,提供了 3项功能:诊断、通病修复、修复只读。

1. 诊断

其中的诊断功能可以通过指令方式开关硬盘电源,显示磁头分布信息,固件对象分布

图,加载 CERT、CERT TAB后的相关信息。诊断的实质就是调用指令,对硬盘进行诊断,

以获取有用信息,从而判断该固件故障的具体原因。

例如,图 4-14中的信息:

是运行在线命令“.”的结果。而以下信息:

是运行命令“;”的结果。所以,了解和掌握运行终端命令反馈的信息,将有助于判断固件

故障的具体原因。有关终端命令反馈信息的具体内容,请用户参考 4.5 节的相关内容。

第 4 章 希捷硬盘固件特点及其故障分析

95

2. 通病修复

此功能用于不识别硬盘的修复,例如,一块硬盘不能被主机识别,使用MHDD工具检

测硬盘时,BUSY 长亮的情况,使用本功能很快能使硬盘恢复正常,且修复过程中不损坏

硬盘数据,修复后可直接启动或复制数据,此功能针对 K7硬盘效果更好。

3. 修复只读

希捷硬盘在检测自身固件时,如果发现致命错误,硬盘会自动进入只读模式。这种模

式的硬盘只允许读操作,而不允许对该硬盘进行写操作或分区等。而修复这种有致命固件

错误的硬盘,就必须使硬盘重新具有写入功能。

此功能对数据的安全有一定的风险,做数据恢复时应谨慎使用!

� 缺陷修复

此选项主要针对在硬盘能够被系统识别的情况下,对硬盘缺陷的分析、修复处理。如

果系统不能识别硬盘,此选项的所有功能将无意义。

该选项主要有如下功能:缺陷扫描、缺陷加入 P表、全盘清零、清空道表、清空 P表、

清空 G表。

1. 缺陷扫描

要能够正常对硬盘进行缺陷扫描的前提为:

(1) 硬盘能够就绪认盘。

(2) 对硬盘进行坏道扫描时,必须先单击“转换到 ATA”才能进行扫描。

(3) 硬盘的所有参数均正常显示。

(4) 指令下无任何报错信息。

2. 缺陷加表

扫描后,如果坏道不是太多,就可通过加入硬盘缺陷列表的方式实现坏道的永久屏蔽。

如图 4-15所示,单击“加入 P表”按钮。

图 4-15 缺陷加表

3. 全盘清零

对于希捷硬盘而言,要使加入 P表生效,需要进行一次全盘清零处理,如果不清零,

会全盘坏道。

深度剖析——硬盘固件级数据恢复

96

4. 清空 P 表

清空硬盘内部已有的 P表后,要进行全盘清零方可生效。需要注意的是,清空 P表后,

硬盘将产生大量坏道,并会造成数据区的数据严重错位,所以,在清空 P表前,重要的数

据一定要先进行备份,以免造成数据的丢失。

5. 清空 G 表

一般硬盘的 G 表的容量较小,例如:希捷硬盘酷鱼系列的硬盘最大支持 1020 个条目

的缺陷记录,当 G表的缺陷记录个数达到其极限值时,就会处于无法加入的状态。这是,

可以先清除 G表,擦除全盘不稳定扇区后,再向 G表加入坏道。同样需要注意的是,清空

G表会造成数据区的局部错位,有重要数据的硬盘应事先

进行备份,以免造成数据的丢失。

� ROM操作

ROM操作是一种读写操作,其操作对象为硬盘电路

板上的外置 BIOS芯片,如图 4-16所示。所以 ROM操作

必须保证硬盘电路板上带有 BIOS芯片,如果电路板上不

带有 BIOS芯片,则表示 ROM是集成到主芯片的,程序

不能读取,在有 BIOS芯片的情况下,只要硬盘可以正常

装入就可以读/写 ROM。

当硬盘不能进入 F 级、无法写入 ROM 的时候,将

BIOS的 1、2 脚短路,等待进入 F级之后,就可以断开,

接着写入 ROM,这种写入也称为“安全写入”。

4.7 希捷硬盘维修案例

硬盘维修看起来是一件很复杂的事情,其实抓住两点,问题就可迎刃而解,一是要准

确判断故障部位;二是找到一个合适的解决方法。话说起来容易,做起来难,有道是“冰

冻三尺非一日之寒”,这就需要长时间的学习以及大量案例的磨练,再加上不断地总结,

才能做到这两点。本着以“理论和实际相结合”的思路,本节列举几个实例,供读者借鉴。

4.7.1 用指令方式维修希捷硬盘

故障现象:一块希捷 U5 20GB 硬盘,通电运转时有“咔哒、咔哒”的敲盘声,使用

MHDD软件检测时,发现硬盘出现了规律性坏道。

故障分析:硬盘发出“咔哒、咔哒”的敲盘声,并用专门工具对盘面进行检测,发现

坏道分布很有规律。这种故障现象基本可以判断为:该硬盘的其中一个磁头出现损坏,对

这样的硬盘,要想尽可能地恢复盘中的数据,就必须对已损坏的磁头实施禁用,俗称“砍头”。

处理过程:

一是准备一根特制希捷的 COM指令线,然后将硬盘的跳线拔掉,插上准备好的 COM

线,注意 COM线的红色边要同硬盘电源线的红边紧靠。然后把电源的插头插入 COM线的

电源插座上即可,此时的硬盘不要接任何数据线和电源线。

图 4-16 外置 BIOS的电路板

第 4 章 希捷硬盘固件特点及其故障分析

97

二是通过“超级终端”进入“指令模式”下即可开始维修操作,具体方法是:单击“开

始”→“所有程序”→“附件”→“通信”→“超级终端”,进入如图 4-17所示的窗口。

在图 4-17所示的对话框中的“名称”栏中,输入“希捷维修”,当然该名称可根据操

作者的意愿,随意定,同时在“图标”栏中,选择一个图标,单击“确定”按钮进入下一

个对话框,如图 4-18所示。

图 4-17 “连接描述”对话框 图 4-18 “连接到”对话框

在图 4-18的对话框中,选择连接时使用的端口 COM1,并单击“确定”按钮,进入下

一个对话框,如图 4-19所示。

在图 4-19 中选择“每秒位数”为 9600,其他选项不变,进入“超级终端”的终端命

令窗口,如图 4-20所示。

图 4-19 端口设置 图 4-20 终端命令窗口

三是给硬盘插上电源,此刻终端命令窗口有提示出现,如图 4-21所示。

其中“1024K×16 Buffer detected”表示硬盘电路板具备 1MB的缓存,而“PMaster”

则是表示硬盘参数已经读取完成,如果此处显示“TP”也是同样的意思。在“PMaster”

下面一行是硬盘的物理信息,其中“Age=50”表示正常,如显示其他的值都是错误的,

“Type=60”表示硬盘当前的磁头数为 1个,且为 0磁头;如果 Type=61的话,则说明硬

盘具备两个磁头,分别为 1 磁头和 0 磁头。“MxCyl=”、“MxHd=”和“MxSct=”分

别代表当前类型驱动器最大柱面数、最大磁头数和最大扇区数(均为 16进制数)。

深度剖析——硬盘固件级数据恢复

98

图 4-21 终端命令窗口

首先,使用在线命令“Ctrl+z”进入到 T 级命令模式,执行“.”指令,硬盘反馈信

息如下:

T>Pgm=00 Trk=4307(4307).0(0).093(000) Zn=6 Err=00 ErCt=0000 Hlth=0000

CHlth=0000 Ready LBA=00000000

其中“Trk=4307(4307).0.093”代表当前选定的逻辑柱面(物理柱面)、磁头和扇区数

量,如 4307为柱面数,0为磁头,093为扇区数,这个提示说明磁头 0已被选中。

“Pgm=00”则代表了正在活动的程序,其中 00 代表诊断监控。50代表接口程序,其

他数字表示当前运行的测试。

“Err=”是表示当前操作的出错代码。

“ErCt=”为上一次重启驱动器之后,或者上一次运行“重启出错日志”命令之后的

出错次数。

“Hlth=”代表累加的 health 字节,“CHlth=”代表当前的 health 字节,它们都是四

位。“Ready”用来表示驱动器状态,分为 Ready 或者 Ntrdy。

其次执行“;”命令,硬盘反馈信息如下:

T>Age=50 Type=61 MxCyl=72C8 MxHd=1 MxSct=82C BSz=0800 TCode=0000

根据前面介绍的知识,当前硬盘的 Type=61说明这块硬盘有两个磁头。因为 Yx,y,z 命

令用于更改硬盘类型,控制磁头的数量,所以,我们就在“T>”后面输入“Y60”,按“Enter”

键结束,这个命令代表保留一个 0磁头,即 Y60。要注意的是:硬盘的磁头必须大于或等

于两个,我们才可以用 Y指令来砍头,而且是从后往前砍,也就是说如果硬盘有两个磁头

的话,那么必须按照 1.0的顺序来砍,而不是 0.1的顺序,因为 0头是没有办法砍的,如果

想砍 0头,需要修改硬盘的 BIOS。

如果用户想保留二个磁头的话,那么则按 Y61,保留三个磁头为 Y62,保留四个磁头

的话则按 Y63;当然,这要根据硬盘的具体型号来确定。

在砍头过程结束后,我们分别再次执行“.”和“;”命令进行砍头后的信息确认,执行

“.”命令后,会看到

T>Pgm=00 Trk=FFFF(4307).0(0).13B(000) Zn=6 Err=00 ErCt=0000 Hlth=0000

CHlth=0000 Ready LBA=00000000

第 4 章 希捷硬盘固件特点及其故障分析

99

表示正常;执行“;”命令后会出现“TYPE=60”的提示,表示硬盘已经砍掉 1个磁头了。

接下来执行命令:T>N50,,22,按“Ctrl+T”组合键执行,这个命令是将硬盘切换到 50

级 ATА工作方式,并重新开始测试

硬盘反馈的信息如下:

Interface task reset [size=0pt

1024k x 16 buffer detected

U5 - 1_Disk 3.54 11-03-00 08:01

ATReset Power Cycling

Head Mask 0001 - Switch to full int

Ready

Stuff Was Unreadable

最后一行的“Stuff Was Unreadable”表明硬盘的信息参数出了问题,这时硬盘是无法

正常工作的。它是希捷的通病之一,解决的思路是将硬盘的参数重新写一遍,用 ASCII码

来写,从而将硬盘的信息恢复到出厂值。具体方法为:

按“Ctrl+Z”组合键回到 T级命令模式,输入 F指令,即出现了 Setstuff的提示,在其

后输入 ASCIFE,按“Enter”键结束。命令行及相关提示如下:

T>F

SetStuff->ASCIFE

Setting stuff to defaults

输完上述命令后,我们再次输入 F,这时也会出现 SetStuff->的提示,在其后输入

ASCI1B,并在其后输入硬盘的型号,用 ASCII码(16进制)来表示。比如 ST340016A就

输入 535433343030313641,同时要在所输入的数值后面加上 23个 20,命令行及提示语句

如下:

T>F

SetStuff->ASCI1B5354333130303136412020202020202020202020202020202020202020

202020(回车)

Stuff key 1b -> 53 54 33 31 30 30 31 36 41 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20

20 20 20 20 20 20 20 20 ff ff ff ff ff ff ff ff

在上述工作结束后,第三次输入 F指令,然后在 SetStuff->后输入 ASCI83,后跟硬盘

的容量,容量需要用十六进制的数字来表示,具体进制的转换,在此不再赘述。但该容量

地址可以通过如下方法实现:用 PC-3000读取固件后,把地址代码反过来就是所需要的地

址(也可以在 PCI3000说明书中找到对应值)。输入地址的命令行如下:

T>F

SetStuff->ASCI832D5C012A(回车)

Stuff key 83 -> 2d 5c 01 2a

第四次输入 F指令,然后在 SetStuff->后输入 ASCI3C,后跟硬盘的容量,同样是用十

六进制的数字来表示,执行完毕后再次按下“Ctrl+T”组合键,重新开始测试命令行格式

如下:

T>F

深度剖析——硬盘固件级数据恢复

100

SetStuff->ASCI3C2D5C012A

Stuff key 3c -> 2d 5c 01 2a

测试结果如下:

T> Interface task reset

1024k x 16 buffer detected

U5 - 1_Disk 3.54 11-03-00 08:01 coonend

ATReset Power Cycling

Head Mask 0001 - Switch to full int.

Ready

TP

请注意最后的 TP,它表示硬盘参数读取完成,说明该硬盘已经修复成功了。把它的跳

线和数据线接回,这样就可以使用数据恢复的专业工具恢复数据了,当然这样恢复的数据

是不完整的。

如果想接着使用这块硬盘,需要将它设为从盘。并将其挂在主机上,使用 HDDSCAN

中的“快速删除”功能(ERASE),对全盘的扇区进行一次清零操作,方可生效。这是每

次减少或增加硬盘的磁头数都必须做的,进行分区格式化,硬盘就可以使用了。

用指令方式修理硬盘是众多修理方法之一,并不能用它来解决所有的故障。

4.7.2 希捷硬盘固件备份

故障现象:硬盘固件模块损坏,有可能造成:计算机开机自检时,硬盘型号出现乱码,

且无法通过硬盘启动计算机进入系统。硬盘固件出现问题,只要找到相同型号的固件,或

原盘的固件备份,利用 PC-3000等工具,重新刷入固件中的错误模块,问题即可解决。下

面将以 Barracuda 7200.7为例介绍备份希捷硬盘固件的方法。

步骤 1:通过 PC-USB将希捷硬盘的 COM口与计算机的 USB接口相连,然后使用数

据线和电源线将该硬盘与 PC-3000 卡相连。

步骤 2:启动 PC-3000,进入 PC-3000主界面,如图 4-22所示。

图 4-22 PC-3000主界面

第 4 章 希捷硬盘固件特点及其故障分析

101

单击主界面左上角的“HDD power supply”按钮,为 PC-3000 卡接通电源。在“HDD

Vendors”列表中选择“Seagate”,在“Utilities”列表框中,选择“Seagate U5,Baracuda XX”,

在“Supported families”列表框中选择“Barracuda 7200.7”。

步骤 3:在图 4-22 PC-3000主界面中,单击“Run utility”按钮,程序会弹出“Utility start”

对话框,如图 4-23所示。

图 4-23 “Utility start”对话框

在“Utility start”对话框的“HDD family”列表中,选择“Barracuda 7200.7”,在“Model”

列表中选择“ST3120026AS”。

步骤 4:在图 4-23 中,单击“Utility start”按钮,打开“Terminal”窗口,如图 4-24

所示。

图 4-24 “Terminal”窗口

“HDD”组合框中显示了硬盘型号、序列号、固件版本号以及硬盘容量等信息。

步骤 5:单击“Tests”→“Working via terminal”→“Working with SA surface by PCHS

(terminal)”→“Reading SA surface”,如图 4-25所示。

深度剖析——硬盘固件级数据恢复

102

图 4-25 选择“Reading SA surface”

程序会弹出“Choose/create profile”对话框,如图 4-26所示。

在“Profile name”文本框中输入要保存的固件名称,这里以硬盘和固件的型号以及硬

盘的序列号为固件名称,一般情况下保持默认设置即可。

图 4-26 “Choose/create profile”对话框

步骤 6:在图 4-26 中,单击“Ok”按钮,弹出“Create profile”对话框,如图 4-27

所示。

图 4-27 “Create profile”对话框

第 4 章 希捷硬盘固件特点及其故障分析

103

保持默认设置,单击“Ok”按钮。

步骤 7:单击“Ok”按钮后,程序将弹出“Reading SA surface by PCHS(terminal)”

对话框,如图 4-28所示。

图 4-28 “Reading SA surface by PCHS(terminal)”对话框

单击“Cylinder”下拉列表文本框右侧的下箭头按钮,弹出“Select object”对话框,

如图 4-29所示。

然后在图 4-29所示的列表框中选择要备份的模块,例如,要备份 ATA overlay模块,

则需要选择“0x2A”选项,选择完毕后,单击“OK”按钮。

步骤 8:单击“OK”按钮后,程序将返回“Reading SA surface by PCHS(terminal)”

对话框,如图 4-30所示。

图 4-29 “Select object”对话框 图 4-30 “Reading SA surface by PCHS(terminal)”

对话框

此时,“Cylinder”下拉列表中将显示模块所在的扇区,即“0xF6B8”,单击“Number of

sectors”文本框右侧的右箭头按钮,此时“Number of sectors”文本框中会显示要备份的扇

区数。

步骤 9:此时,该对话框自动生成了要备份的模块文件名及路径,如若确认不需要改

动,单击“OK”按钮即可;如果需要改动,单击“File”文本框右侧的“打开”按钮,打

开“Reading SA surface by PCHS(terminal)”对话框,然后在“保存在”下拉列表中选择

备份文件的存放路径,在“文件名”文本框中输入模块备份的名称。单击“保存”按钮,

返回“Reading SA surface by PCHS(terminal)”对话框,此时,单击“OK”按钮,即可备

份所选模块。此时,程序会返回“PC-3000 UDMA-CHINA-[Seagate US,Barracuda XX]”

深度剖析——硬盘固件级数据恢复

104

窗口,如图 4-31所示。

图 4-31 固件模块备份

此时,“Log”选项卡中会显示当前备份的模块,以及模块文件的存放路径等提示信息。

当窗口中出现“Result………:Ok”的提示信息时,表明模块已成功备份,按照同样的方法

可以备份硬盘固件中的其他模块。

4.7.3 希捷硬盘写固件

写入固件的操作前 4个步骤和备份固件的操作是相同的,这里不再赘述,直接进行下

面的工作。

步骤 1:单击“Tests”→“Working via terminal”→“Working with SA surface by PCHS

(terminal)”→“Writing SA surface”,如图 4-32所示。

图 4-32 选择“Writing SA surface”

第 4 章 希捷硬盘固件特点及其故障分析

105

步骤 2:在选择“Writing SA surface”选项之后,程序会弹出“Writing SA surface by PCHS

(terminal)”对话框,如图 4-33所示。

图 4-33 “Writing SA surface by PCHS(terminal)”对话框

单击“Cylinder”下拉列表文本框右侧的下箭头按钮,程序随即会弹出“Select object”

对话框,如图 4-34所示。

图 4-34 “Select object”对话框

在下方的列表框中选择要刷写的模块,这里仍以 ATA overlay 为例,选择该模块 Cyl

对应的“0x2A”选项,然后单击“OK”按钮。

步骤 3:单击“OK”按钮后,程序随即会返回“Writing SA surface by PCHS(terminal)”

对话框,如图 4-35所示。

此时,“Cylinder”下拉列表文本框中将显示模块所在的柱面,单击“Number of sectors”

文本框右侧的右箭头按钮,设置扇区数。

步骤 4:此时,“File”文本框自动生成了要刷入的固件文件名,如果确认不需要更改,

单击“OK”按钮即可;如果需要更改,单击“File”文本框右侧的“打开”按钮,打开“Writing

SA surface by PCHS(terminal)”对话框,然后在“查找范围”下拉列表中选择要刷入固件

的存放位置,在下方的列表框中选择要刷入的固件,这里选择“PCHS 0x00F6B8_0x00_

0x0000(0x0280).chs”,接着单击“打开”按钮,返回“Writing SA surface by PCHS(terminal)”

深度剖析——硬盘固件级数据恢复

106

对话框,此时,单击“OK”按钮,随即返回“PC-3000 UDMA-CHINA- [Seagate US,Barracuda

XX(ATA0-)]”窗口。

图 4-35 “Writing SA surface by PCHS(terminal)”对话框

此时“Log”选项卡的窗口中将显示当前刷写的固件和固件文件的存放路径等提示信

息,并在界面下方,以“Current test progress”进度条的形式显示刷写固件的进度。当窗口

下方出现“Result………:Ok”的提示信息时,表明固件已被成功刷入。

第 5 章 日立硬盘固件特点及其故障分析

日立(Hitachi)硬盘是由隶属于日立公司的环球存储科技公司生产的,该公司成立于

2003年,是由 IBM公司和日立公司合作创建的。

日立存储公司生产的硬盘产品有:服务器硬盘、台式机硬盘、移动电子产品硬盘、另

外该公司还生产磁头和盘片。

日立硬盘拥有四大技术:磁头载入载出(Load/Unload)、重排指令序列(Tag and Seek)、

涡流磁臂锁(Eddy current latch)、RVS(旋转振动保护)。这些技术对读写速度的提高和抗

冲击能力的提升都有明显的帮助。

5.1 日立硬盘基础知识

本节将介绍日立硬盘系列、日立硬盘编号规律,以及硬盘的跳线设置。

5.1.1 日立硬盘系列

日立硬盘包括 Ultrastar服务器硬盘、Deskstar台式机硬盘、Hitachi2.5英寸移动硬盘、

Cinemastar硬盘与 Endueastar耐受温度极限硬盘 5个系列。

5.1.1.1 Ultrastar 服务器硬盘系列

Ultrastar服务器硬盘系列,包括 Ultrastar15K450、Ultrastar15K300、UltrastarC10K300、

UltrastaC10K147与 UltrastarrA7K1000。

Ultrastar15K450:该硬盘存储容量为 450GB,大小为 3.5英寸,转速为 15000 r/min。

接口类型有两种:SAS(Serial Attached SCSI)、FCAL(Fibre Channel Arbitrated Loop)。其

中 SAS(Serial Attached SCSI)的数据传输速率为 300Mb/s;FCAL(Fibre Channel Arbitrated

Loop)的传输速率为 425Mb/s。该硬盘使用 4 张盘片,8 个磁头。读取时的平均寻道时间

为 3.6 ms,主轴马达采用动压轴承,与使用滚珠轴承相比,噪音低。该系列硬盘采用

“Load/Unload”机构,盘片不旋转时磁头退回至外侧,在盘片旋转稳定之后,再移动磁头,

以防止不必要的损伤。通常情况下一台服务器会配备多个硬盘,为了减轻相互之间振动影

响,该系列硬盘采用了旋转振动保护技术(RVS)。

Ultrastar15K300:该款硬盘的容量分为 300GB、73GB、147GB。转速为 15 000 r/min。

全部带有 16MB缓存,传输速率为 1 441Mb/s,噪声低,空闲时仅为 35dB,重 745克。

UltrastarC10K300:该款硬盘分为 147GB、300GB两种存储容量。大小为 2.5英寸,采

用双口 6Gb/s的序列式 SCSI(SAS)接口,与此前的 3Gb/s同类产品相比,其数据传输速

率整整提高一倍,此外 SAS接口还可以改善在更远距离的信号强度。该硬盘采用日立的能

源管理技术,是一款低耗能的硬盘。

深度剖析——硬盘固件级数据恢复

108

UltrastarrA7K1000:该硬盘的容量有 500GB、750GB和 1TB三种,大小为 3.5英寸。

接口为 SATA,传输速率为 1070Mb/s,它带有 32MB缓存,重 700克。具有 5张盘片,采

用垂直磁记录技术,采用了旋转振动保护技术(RVS)。

5.1.1.2 Deskstar 台式机硬盘系列

日立的 Deskstar 台式机硬盘该系列包括 DeskstarE7K1000、Deskstar7K1000.B、

Deskstar7K1000、DeskstarE7K500、Deskstar7K500、Deskstar7K400、DeskstarP7K500、

DeskstarT7K500、DeskstarT7K250、Deskstar7K160、Deskstar7K80 多种类型,是日立存储

公司的主打产品。该系列硬盘容量为 40GB~1TB不等,转速都为 7200 r/min,接口为 SATA

与 ATA两种。早期日立公司还推出了一些台式机与服务器硬盘产品,如 Deskstar 75GXP、

Deskstar 40GV与 Travelstar等。

Deskstar E7K1000:该系列硬盘有 500GB、750GB 与 1TB 三种容量,其接口类型为

SATA2.5 接口,32MB 缓存,平均寻道时间为 8.5 ms。该系列硬盘是日立存储公司推出的

新一代企业级硬盘,它拥有低功耗特性,具有可选择的加密技术并支持多项功能,其中包

括高性能热插拔、提高性能的原生命令队列(NCQ)及节能的交错启动功能,由于使用了

液态轴承马达,硬盘工作时噪音较低。

Deskstar7K1000.B:该系列硬盘容量范围为 160GB到 1TB,采用 3盘片设计,可以降

低空操作状态的耗能达 43%,还具备可选装的大批量的数据加密(BDE)功能,帮助用户

更有效地防止数据丢失及保护隐私,该系列硬盘均采用垂直记录(PMR),每个盘片的最

大存储容量达到 375GB,并且具有高可靠性。

Deskstar7K1000:该系列硬盘有容量有 750GB与 1TB两种,接口类型为 SATA,该系

列硬盘有 5张盘片,10个磁头,缓存容量为 32MB,支持热插拔、NCQ、高级低功耗模式、

自动复位磁头等功能

Deskstar7K500:该系列硬盘具有 500GB容量,接口类型包括 ATA/133和 SATA,硬盘

内部传输速率 817 Mb/s,Ultra ATA版本硬盘缓存容量 8MB,Serial ATA II版本硬盘缓存容

量 16 MB。

Deskstar 7K400:该系列硬盘采用 5盘片设计,单碟容量为 80GB,最高容量达到 400GB,

内部最大数据传输速率 94.6Mb/s(757Mb/s),缓存容量为 8MB,采用 ATA 接口。

DeskstarP7K500:该系列硬盘容量为有 250GB、320GB、400GB与 500GB四种,接口

分别为 ATA与 SATA。单碟容量为 250GB,其中 320GB~500GB的型号由 2张盘片构成,

该产品以降低功耗为特征,250GB 型号为 3.6W,320GB~500GB 型号为 4.8W,较

DeskstarT7K500系列,功耗最大降低了 40%。

DeskstarT7K500:该系列硬盘有 250GB、320GB、400GB与 500GB四种容量,其 SATA

接口具有 16MB高速缓存;ATA接口为 8MB。采用 3盘片设计,使得硬盘速度更快,所产

生的热量也较低。

DeskstarT7K250:该系列硬盘 250GB 与 160GB 两种储存容量,采用双盘片设计,内

部传输速率是 843Mb/s,具备 8MB 缓存,该硬盘新增 SATA2 功能及流畅传流技术,适用

于数字摄影机及其他影音装置。

Deskstar7K160:该系列硬盘的容量为 80GB 与 160GB 两种。其接口类型分为两种:

第 5 章 日立硬盘固件特点及其故障分析

109

SATA 2.5接口、ATA133接口。该硬盘具有配备温度悬浮量控制(Thermal Fly Height Control,

TFC)等崭新功能,该技术采用内置温度感应器探测温度,并在极端温度下做出调节,有

效减低误差率。该硬盘采用了液态轴承马达,其工作时噪音仅为 26dB。

Deskstar7K80:该系列硬盘容量有 40GB与 80GB两种,其内部最大传输速率 757Mb/s,

容量为 80GB的硬盘,其缓存为 8MB;容量为 40GB的硬盘其缓存为 2MB。该系列硬盘采

用了日立原生的 SATA磁盘控制芯片,并且具有 NCQ功能(原生指令队列)技术,降低了

硬盘的响应时间,能够有效提高性能。它主要定位于一般及商业用户的需求,包括个人计

算机及工作站、数字摄影机及其他 ATA企业装置。另外,该硬盘配备了 ATA接口。

5.1.1.3 Hitachi2.5 英寸移动硬盘系列

该系列硬盘具有较高的抗震性,其容量范围为 40GB~500GB,转速为 5400 r/min 与

7200 r/min两种,接口也采用 SATA与 ATA两种。大多数硬盘都带有加密技术。日立硬盘

包括的类型与各项参数如表 5-1所示。

表 5-1 日立移动硬盘的类型与参数

类 型 容 量 转 速 接口与接口速率 缓 存 寻道时间

E5K160 60GB、80GB、120GB、

160GB 5400 r/min

ATA-7

SATA 1.5Gb/s 最高可达 8MB 11 ms

5K160 40GB、 60GB、 80GB、

120GB、160GB 5400 r/min

ATA-7

SATA 1.5Gb/s 最高可达 8MB 11 ms

E5K250 80GB、120GB、160GB、

250GB 5400 r/min SATA 3Gb/s 最高可达 8MB 11 ms

5K250 80GB、120GB、

160GB、200GB、250GB 5400 r/min

SATA 1.5Gb/s

SATA 3Gb/s 最高可达 8MB 11 ms

5K320 80GB、120GB、160GB、

250GB、320GB 5400 r/min

SATA 1.5Gb/s

SATA 3Gb/s 最高可达 8MB 12 ms

E5K500 400GB、500GB 5400 r/min SATA 3Gb/s 最高可达 8MB 12 ms

5K500 400GB、500GB 5400 r/min SATA 1.5Gb/s

SATA 3Gb/s 最高可达 8MB 12 ms

5K500.B 120GB、160GB、250GB、

320GB、400GB、500GB 5400 r/min SATA 3Gb/s 最高可达 8MB 12 ms

E7K200 120GB、160GB、200GB 7200 r/min SATA 1.5Gb/s

SATA 3Gb/s 最高可达 16MB 10 ms

7K200 80GB、100GB、120GB、

160GB、200GB 7200 r/min

SATA 1.5Gb/s

SATA 3Gb/s 最高可达 16MB 10 ms

7K320

80GB、120GB、160GB、

250GB

320GB

7200 r/min SATA 1.5Gb/s

SATA 3Gb/s 最高可达 16MB 12 ms

由于日立移动硬盘具有较高的性价比,所以市场上的多数笔记本电脑使用了该系列移

动硬盘。

5.1.1.4 CinemaStar 硬盘系列

CinemaStar系列硬盘的容量从 40GB~1TB不等,有 ATA与 SATA两种接口,以及 2.5

深度剖析——硬盘固件级数据恢复

110

英寸与 3.5 英寸两种尺寸,它主要用于数字录像机、机顶盒和监控设备,是音视频存储、

播发、监控的专用硬盘。该系列硬盘包括 CinemaStar7K1000.B、CinemaStar7K1000、

CinemaStarP7K500、CinemaStar7K500、CinemaStar7K160、CinemaStar5K500、CinemaStar5K320、

CinemaStarC5K320、CinemaStarC5K250、CinemaStarC5K160多种型号。

CinemaStar系列硬盘采用了日立 CoolSpin技术,从而降低了功耗,减少了噪音,延长

设备的使用寿命,增强了可靠性。其中的 SMART 命令传输和热量“飞行”控制等功能可

以对错误纠正及系统环境进行调整,改善流媒体效果和总体视频质量。

5.1.1.5 Endurastar 耐受温度极限硬盘

新型 Endurastar 型号产品专为最恶劣的工作环境而打造,不但具有出色的抗震性能,

能适应沙漠的酷热和极地的严寒,尺寸为 2.5英寸,容量为 20 GB~50 GB,转速为 4200 r/min,

接口类型为 ATA。该系列硬盘包括 Endurastar J4K50/N4K50与 Endurastar J4K30/N4K30两

种类型。

这一系列的硬盘操作中抗冲击性能达到 100 GB,存储状态中抗冲击性能达到 800 GB,

执行存储操作时,能够承受 5 GB的振动频率影响。它主要应用于高端、特殊行业中。

5.1.2 日立硬盘编号

虽然日立硬盘有系列门类很多,但现今市场上广泛应用的、普通用户接触最多的日立

硬盘编号有两种,见下文。

5.1.2.1 日立 180GXP 系列型号识别方法

180G XP系列沿用了 IBM硬盘编号。该编号由七部分构成:“IC+盘片尺寸+硬盘高度

+容量+接口类型+系列型号+转速+缓存容量”。

简单的表示形式为:IC“XX、X、XXX、XX、XX、XX-X”。

“IC”表示的是 IBM公司的产品。

第一部分的两个“X”表示的是硬盘的外形和大小。例如:“35”表示该硬盘为 3.5

英寸硬盘;“25”表示该硬盘为 2.5英寸的硬盘。

第二部分的“X”是表示硬盘的高度。其中,“L”代表 1英寸(25.4 毫米),“T”

代表 0.49英寸(12.5 毫米),“N”代表 0.37英寸(9.5 毫米)的硬盘产品。

第三部分的三个“X”表示的是硬盘的容量,单位是 GB。如“080”表示该硬盘的容

量就是 80GB,“180”表示该硬盘的容量为 180GB。

第四部分的两个“X”表示的是硬盘接口的类型。

“AV”表示为 ATA接口;

“UW”表示为 Ultra160 SCSI 68-pin Wide的接口;

“UC”表示为 Ultra160 SCSI 80-pin SCA的接口;

“XW”表示为 Ultra320 SCSI 68-pin Wide的接口;

“XC”表示为 Ultra320 SCSI 80-pin SCA的接口;

“F2”表示为 FC-AL-2(2 Gbit)的接口。

第五部分的两个“X”表示硬盘产品系列的型号。其中,“ER”表示 Deskstar 60GXP

第 5 章 日立硬盘固件特点及其故障分析

111

系列,“VA”表示 Deskstar 120GXP系列,“V2”表示 Deskstar 180GXP系列。

第六部分的两个“X”表示为硬盘的转速,单位是 rpm/min。其可能的标注为“04”、

“05”、“07”、“10”、“15”,相对应的硬盘转速分别为 4200 rpm/min、5400 rpm/min、

7200 rpm/min、表示为 10000 rpm/min、15000 rpm/min。

第七部分“X”表示着硬盘缓存的容量,从 Deskstar 180GXP开始启用。“0”表示为

2MB缓存,“1”表示为 8MB缓存。其中使用三个盘片的 180GB产品缓存都为 8MB,使

用两个盘片的 80GB和 120GB产品缓存有 2MB和 8MB两种,使用一个盘片的 60GB产品

缓存为 2MB。

以“IC35L080AVVA07”这个编号为例,我们通过编号可以知道该硬盘是 IBM公司生

产的 3.5英寸,高 1英寸的硬盘,其总容量为 80GB,采用 ATA接口,为 Deskstar 120GXP

系列的产品,转速是 7200 r/min,有着 8MB的缓存。

5.1.2.2 日立 7K250 系列型号识别方法

日立的 7K250系列是继 Deskstar 180GXP推出后的新品,其硬盘编号和较早前的日立

硬盘相比发生了变化。

7K250系列的编号由八个部分组成:“HDS+转速+系列的最大容量+该产品容量+产品

系列代码+硬盘高度+接口类型+缓存”。

简单的表示为:HDS“XX、XX、XX、X、X、XX、X、X”。

“HDS”表示为日立(HITACHI)的 Deskstar系列硬盘产品。

第一部分的两个“X”表示硬盘的转速。其可能的标注为“42”、“54”、“72”、

“10”、“15”,相对应的硬盘转速分别为 4200 rpm/min,5400 rpm/min,7200 rpm/min,

10000 rpm/min,15000 rpm/min。

第二部分的两个“X”表示的是该产品系列的最大容量,单位为 GB。“5”就表示该

产品最大容量为 250GB。

第三部分的两个“X”表示为硬盘容量,单位有 GB或者 10GB。例如“80”就表示 80GB,

“25”就表示 250GB。

第四部分的“X”表示硬盘的代数,现在所有 7K250系列都是字母“V”。

第五部分的“X”表示硬盘的高度,这里和 180G XP系列硬盘编号是一样的。

第六部分的两个“X”表示硬盘的接口类型,有“AT”和“ST”。其分别代表为 Ultra

ATA100接口和 Serial ATA150接口。

第七部分的“X”表示硬盘缓存的容量,有数字“2”和“8”。其分别代表为 2MB缓

存和 8MB缓存的硬盘产品。

第八部分的“X”是硬盘的保留值,目前暂时为数字“0”。

就以日立 7K250 系列“HDS722525VLAT80”的硬盘编号来做例子,我们可以知道其

属于 7200 r/min,最大容量为 250GB和总容量为 250GB的硬盘,高 1英寸,采用的是 Ultra

ATA100接口并拥有 8MB缓存。

5.1.3 日立硬盘的跳线设置

在使用硬盘维修工具操作日立硬盘时,一般需要将硬盘设置为主盘。

深度剖析——硬盘固件级数据恢复

112

� 3.5寸 IDE接口硬盘

主盘模式跳线方法,如图 5-1所示。

安全模式跳线方法,如图 5-2所示。

图 5-1 3.5寸 IDE接口硬盘主盘模式跳线设置 图 5-2 3.5寸 IDE接口硬盘安全模式跳线设置

� 3.5英寸 SATA硬盘

3.5英寸 SATA硬盘无跳线默认为主盘模式,进入安全模式需要将盘体和电路板连接线

断开,如图 5-3所示。

� 2.5寸 IDE接口硬盘

2.5 寸 IDE 接口硬盘都是通过转接卡与专修程序或 DC 连接。默认为主盘模式.安全模

式设置需要用跳线连接转接卡上针脚,如图 5-4所示。

图 5-3 3.5英寸 SATA硬盘安全模式设置 图 5-4 2.5寸 IDE接口硬盘安全模式跳线设置

� 2.5寸 SATA接口硬盘

2.5 寸 SATA 接口硬盘同样默认主盘模式,进入安全模式需要将 PCB 同硬盘分离。对

于 ATCS 和 ATDA 两种日立过渡型号的 2.5 英寸硬盘,进入安全模式时需要使用 RC跳线

方式,如图 5-5所示。

图 5-5 2.5英寸 SATA接口硬盘安全模式跳线方式

第 5 章 日立硬盘固件特点及其故障分析

113

5.2 日立硬盘固件结构及模块

2003年,IBM公司和日立公司合作创建了环球存储科技公司,所以现在市面上所出售

的日立(Hitachi)硬盘,都是两家合作的产物。所以,下文所指的日立硬盘皆为 Hitachi-IBM

硬盘。

5.2.1 日立(Hitachi-IBM)硬盘固件数据的分布

日立硬盘固件由以下几部分组成:

� ROM中的微代码(microcode)。

� 位于 NV-RAM中的配置数据,那些没有 NV-RAM硬盘(如,ATDA),这些数据

存放盘面固件区中。

� 硬盘固件区的数据。

固件由固件版本号和版本代码来表示。微代码不断更新形成了不同的固件版本号,它

由 ASCII表示;版本代码实际上就是一个修订号,它由 16进制数据表示。

掩膜 ROM中存储的固件信息,不能被修改。而 NV-RAM以及 SA overlays中固件数

据可以做一些修改。IBM 的研发团队采用以下标准:当固件代码(CODE)不变时,仅可

以修改固件版本号(NUMBER)。这种改变不会影响到整个号码,仅仅影响到版本号码的

最后两个字符。例如:如果固件版号为“A32A”被修改,那么更新后的版本号将改变为:

“A3XX”,其中“XX”代表两个其他的字符串。

5.2.2 固件兼容的条件

不同家族的硬盘之间,其固件是不允许相互置换的。

Hitachi-IBM硬盘固件的兼容的必要条件如下:

-ROM、NV-RAM、SA overlay的固件版本代码相同。

-NV-RAM和 SA overlay的µ--code 匹配。

-记录在 ROM、NV-RAM以及 SA overlay的固件版本号的最后两位(仅最后两位)可

以不同。

5.2.3 硬盘电路板上的 ROM 种类

Hitachi-IBM硬盘电路板上有两个或三个 ROM芯片:

-集成在处理器中的掩膜 ROM。它包含执行处理器代码和默认设置值。

-相当于串行存取的 NV-RAM的 Flash ROM。它包含访问硬盘固件区的设置参数。由

于硬盘家族的不同,其容量大小也有所不同,一般为如下三种选项:256、512、1024字节。

-第三块 ROM芯片,有些电路板上没有装配该芯片。这些芯片是一些已存储有固件信

息的串行 Flash ROM,而不是掩膜 ROM,所以该 ROM中的代码错误允许修改。该芯片常

用于对硬盘装载功能进行简单的测试,它位于 NVRAM 附近,其容量大小为 1Mb,类型为

25FV101T。

深度剖析——硬盘固件级数据恢复

114

5.2.4 NVRAM 数据配置

NVRAM(Non-Volatile Random Access Memory)非易失性随机存储器,其特点为:可

随机读写信息,掉电后信息不丢失。

在日立硬盘的 NVRAM 中存储了硬盘的磁头数量、固件区的起始地址信息、ROM

overlay模块的校验和、以及盘片适配参数等重要信息。而在以往的硬盘产品中,磁头数、

盘片适配参数这些重要信息都存储在 ROM中。而日立硬盘产品的 NVRAM中,增添了一

个重要信息,即固件区的起始地址信息。

对每一个日立硬盘而言,固件区的起始地址(SA top)都是唯一的,即很难找到固件

区起始位置完全相同的两块硬盘。这就是说,每块硬盘只能与自己的 NVRAM配合才能工

作,是一一对应的关系。一旦硬盘的 NVRAM损坏或丢失,那么该硬盘将无法被操作系统

或各种工具软件所识别,更无法对硬盘的固件区进行访问,这将给数据恢复带来一个比较

大的障碍,对于这种故障,即使采用热交换电路板也无法恢复 NVRAM的原始信息。当然,

也并不是意味着如果某日立硬盘出现这种故障的,我们就给它判了死刑,如果能通过一种

手段,找到故障盘固件区的起始位置,问题就会迎刃而解了。为此,PC-3000 和效率源都

有自己解决问题的方法,下文会予以介绍。

5.2.5 固件数据的特点

Hitachi-IBM硬盘固件数据有其自身的特点,具体表现为:

一是 Hitachi-IBM 硬盘有“open”固件模块,对“open”固件模块的读、写,不需要

进入技术模式。相当一部分“open”模块列表中的模块来自于 USAG/RESF(硬盘模块的

主表,部分呈现的是别名);与之相对应的是“closed”固件模块,它是 Hitachi-IBM 硬盘

固件中的一些核心模块,对“closed”固件模块进行的读写操作需要进入技术模式。

二是在固件的存储位置和其他硬盘区别在于,Hitachi-IBM 硬盘电路板上,装配有

NV-RAM。NV-RAM的大小分别为:256、512及 1024字节。NV-RAM中包含一个附加服

务模块,用于调整特定型号的设置信息。

三是在 Hitachi-IBM 硬盘模块列表中还包括厂商用于故障诊断应用程序的附加模块。

大部分附加模块,对硬盘功能而言不是必须的(有可能厂商不给安装)。

四是固件的主要功能部分位于 USAG/RESF 的主模块表中。尽管硬盘在加载固件时要

读取固件区的所有磁道,但 USAG/RESF 中的模块并没有占据全部固件区磁道。因此,所

谓在主磁道的“空间(spaces)”是指那些没被主模块表中的模块覆盖的区域。如果这些空

间不能够被读取,硬盘将初始化失败。系统将给一个这样的信息提示:“Error reading the table

of open modules”。

5.2.6 固件数据模块

在表 5-2和表 5-4的“重要性”一栏中的代码的意义。

A- 硬盘的基本模块:As-适配设置,Ad-译码表。如果重要性为 A 模块与另一个硬盘

的相同模块进行置换,将导致读/写设置和数据的丢失(例如:适配数据模块)。

第 5 章 日立硬盘固件特点及其故障分析

115

B- 模块是必需的,但可以用另一个硬盘的相同模块替换。通常情况下,硬盘的型号和

固件版本应该一致。

C- 模块是必需的,但部分模块的损坏不会妨碍硬盘驱动器的启动。硬盘能够纠正模块

的内容(在缺陷重定位期间自动重新计算)。

D- 模块不影响硬盘的运转及其操作性能。此类模块通常包括模块信息。Dd-用于生成

硬盘译码器的原始缺陷列表。Dr-表示自测试技术模块。

表 5-2 在 3.5″驱动器中某些“closed”模块的功能及用途

组件标识 用 途 重 要 性

RSVD 固件开始的标志 B

USAG 主要模块的列表 B

CNSL 模块包含硬盘驱动器的逻辑配置 B

DCOT — B

IDNT 驱动器 ID B

MLBA 模块包含硬盘驱动器的逻辑配置 B

OVR1 组件包含 overlays代码(SA overlays) B

PSHT 厂家缺陷(P-List)列表/译码器 Ad

PTCH 模块包含一个固件链接列表 B

PTRT — B

RAM0 模块包含 overlays代码(SA overlays) B

RDMT G-List Ad

RLBA 模块包含一个 G-List保留列表 B

RWCN — B

SECI 模块包含密码信息 B

SERL 模块包含 S.M.A.R.T.错误日志 B

SMRT 模块包含 S.M.A.R.T.数值 B

SRIF 控制 SELFSCAN启动的模块 B

SRVM 柱面缺陷的和伺服适配数据表 Ad

SRVP — B

CHNM — B

ZONE 区域分配列表 Ad

表 5-3 在 3.5″驱动器中某些“open”组件的用途

模块标识 用 途

RDM1 RDMT别名

RDM2 RDMT复本

PIDM 该模块包含在 PCB和 HAD上标签的信息

PDM1 PSHT别名

PDM2 PSHT复本

DDD0 DDD程序日志

ELG1 驱动器的缺陷列表日志

EVLG 事件日志

深度剖析——硬盘固件级数据恢复

116

表 5-4 在 2.5″驱动器中某些“closed”组件的用途

组件标识 用 途 重 要 性

RSVD 固件数据开始的标志 B

RESF 主模块表 B

ABLD - B

ABLP - B

CHNL - B

CNS1 该模块包含硬盘驱动器的逻辑配置 B

DCOT - B

DUMP Self Test日志模块 D

FLOG - B

ICES 包含密码信息模块 B

IDNT 硬盘 ID B

MFGP 包含 Self Test参数的模块 Dr

MISC - B

MLBA 该模块包含硬盘逻辑配置 B

OVR0 该模块包含 overlays代码(SA overlays) B

OVR1 该模块包含 overlays代码(SA overlays) B

PESD PES数据日志 D

PNID 该模块包含印刷电路板(PCB)标签信息 D

PSHT 厂家缺陷(P-List)列表/译码器 Ad

PTCH 组件包含一个固件链接列表 B

PTRT - B

QMCN - B

RAM0 该模块包含 overlays代码(SA overlays) B

RDMT G列表 Ad

RELI - B

RWCN - B

SERL 该模块包含 S.M.A.R.T.错误日志 B

SMRT 该模块包含 S.M.A.R.T.数值 B

SN00 硬盘序列号

SPRE -

SRIF 控制 SELFSCAN执行组件 B

SRST SELFSCAN报告 C

SRVM 跳过有缺陷的柱面和自适应的伺服数据 Ad

SRVP - B

SSST - B

SSTL - B

ZONE 区域分配列表 Ad

在分析固件时,要注意在模块内没有校验(checksum)字段,因此,试图通过校验字

段来鉴别固件模块的结构损坏与否,是行不通的。

Hitach-IBM硬盘能够对部分已初始化的电路板的固件数据(NV-ROM必须初始化,对

模块操作不需要从固件数据区装载固件)进行读、写操作。因此如果硬盘中的一些模块不

可读,并在查看了固件区结构报告之后,鉴别模块损坏这样的问题就很容易。

Hitachi-IBM硬盘数据的基本模块:PSHT、RDMT、SRVM、SRVM、ZONE、CNSL、

第 5 章 日立硬盘固件特点及其故障分析

117

MLBA。此外,你需要记住非常必要的内容,即存储在 NV-RAM中的 head map。

5.3 日立硬盘固件故障表现及分析

5.3.1 故障判断

在讨论 Hitachi-IBM硬盘固件级故障之前,让我们来了解一下 Hitachi-IBM硬盘故障的

定位与判断,这是因为,不同的故障原因,表现出的故障现象往往是相同的,因此准确的

故障定位,可以起到事半功倍的效果。

Hitachi-IBM硬盘的常见故障有:

—PCB故障。

—电机/轴承故障。

—制动元件故障。

—单磁头或多磁头读/写故障。

—磁头损坏且盘面划伤。

—玻璃盘片产生裂痕(这种故障很容易的通过硬盘发出的典型噪音鉴别)。

—扇区损坏。

—读写功能不稳定。

—全部或部分固件信息丢失。

如何正确的定位故障的部位,这里有个流程图供读者参考,如图 5-6所示。

图 5-6 Hitachi-IBM硬盘故障流程

如果硬盘加电后报告准备就绪,但硬盘电机没有旋转,那么它意味着存储在 NVRAM

的程序与 ROM内容是不兼容的。如果硬盘加电后电机不转,但硬盘处于 BSY状态,或者

它的指示灯在无规律的闪烁,那么它意味着中央处理器或附加的 ROM 中的微代码内容被

深度剖析——硬盘固件级数据恢复

118

损坏(这种情况对 AVVN硬盘而言会经常发生)。请切记那个附加的 ROM芯片仅仅在一些

PCB上存在,通常,它出现在厂商仍在对硬盘进行固件测试的初期的产品中。

如果排除电路板故障,接下来可以诊断电机。如果电路板正常但电机不转,其原因可

能是以下两种的任意一个:一是电机绕组坏,二是磁头粘连磁盘。有时电机的损坏是由电

机的控制芯片损坏造成的。更多的原因则是液态轴承被卡住。卡住对硬盘使用滚珠轴承而

言是不可能发生的,但滚珠轴承也有另外的问题,即使用滚珠轴承的电机旋转将会明显提

高噪音的级别。造成电机的问题的多数原因是由电子元件的接触不良,或者电路板之间、

或电路板与盘体(HAD)之间连接电缆发生断路。由此电机问题可总结归纳如下:

-电机绕组的关闭于暂停。

-液态轴承被卡住。

-电机运转时噪音明显提高。

-电机的连接问题或电路板问题。

5.3.2 Hitachi-IBM 硬盘电路板的替换

根据 Hitachi-IBM硬盘固件数据的存放特点,即电路板上 NV-RAM中包含固件数据模

块,所以 Hitachi-IBM 硬盘的固件级维修,必然要涉及到电路板之间的兼容问题,下面讲

述 Hitachi-IBM硬盘电路板的兼容问题。

Hitachi-IBM 硬盘 PCB 的兼容性可

以很方便的从硬盘 IDE 接口上的标签内

容来确定,如图 5-7所示,IDE连接器上

的标签的信息也记录在“open”模块表

的 PIDM中,如果是 2.5英寸的硬盘,该

标签则贴在 PCB板上。

其中,在图 5-7显示的接口标签中第

一行 07N9100 是 Part Number,第二行

H32644是固件参数,如果标签上第一行、第二行的内容一致,那么电路部分通常情况下应

该是一样的,并且完全可以互换。此外,通过查看 ROM或 NV-RAM中的信息,可以准确

的确认电路板的兼容性。

NV-RAM包含硬盘驱动器的 Head map。因此属

于同一个家族、不同型号的 PCB板,如果互换,将

会产生冲突和不兼容。此时为了得到一个合适的

PCB板,必须从相应的型号中复制 NV-RAM内容,

如果那样的话,处理器中的掩膜 ROM 版本、要与

NV-ROM以及固件区模块的版本相匹配。

用 PC-30000维修工具中“Utility status”窗口可

查看 PCB的固件版本,如图 5-8所示。

对于 3.5英寸的硬盘的固件版本(IBM的术语为

µ-code)结构为:ER4OA46A,“ER”是硬盘的家族

代码;“4”表示物理磁头的数量;“A46A”表示实际的固件版本号。而 2.5 英寸的硬盘固

图 5-7 电路板 IDE接口上的标签

图 5-8 Utility status窗口

第 5 章 日立硬盘固件特点及其故障分析

119

件版本构成仅由固件本身组成。

在实际的硬盘维修中,如果找到一个条件合适的电路板,除了进行替换处理外,还有

一项工作需要做,即在 PC-3000中,通过执行“NV-RAM adjustment”,对盘面固件区初始

位置进行搜索,其目的是让一个备件盘电路板上的 NV-RAM与故障盘的固件区匹配,从而

可以正常访问盘面数据。在此涉及两个参数:“SA Top Cyl”、“SRVM Cyl base”。

SA Top Cyl-系统区初始的物理柱面,该参数是一个变量,不同的硬盘其数值有所不同,

是用于搜寻和访问固件区的一个重要参数。

SRVM Cyl base-基础柱面缺陷列表。

执行“NV-RAM adjustment”的具体过程如下:

- 把一个相应参数匹配、功能正常、带有 NV-RAM的电路板备件,安装到故障盘的盘

体上。

- 将硬盘连接到 PC-3000上。

- 启动 PC-3000程序。

- 单击菜单中的相应选项:Tests→Service information→Work with NV-RAM→NV-RAM

adjustment(SA serach),如图 5-9所示。

图 5-9 选择 NV-RAM adjustment

在进行了以上的菜单原则以后,进入如图 5-10所示窗口:

- 选择变量参数,使用者可以考虑保持默认选择,实际工作中,选择“SA Top”的几

率要大一些。

- 选择变量搜索的范围,初学者可能对变量的搜索范围的设置一时摸不着头脑,实际

工作中有两种方法可供参考,一是查看另一个参数匹配硬盘的默认值,二是保持现有默认值。

- 定义测试操作的 timeout(超时)值,可与考虑选择缺省值,如果盘面物理损坏较大,

可考虑增大该值。

深度剖析——硬盘固件级数据恢复

120

图 5-10 “NV-RAM adjustment”窗口

- 单击“OK”按钮。

- 程序执行完毕后。如果访问固件区的权限没有得到认可,你可以反复尝试对 NV-RAM

进行测试,但成功的概率将降低。

- 对于的 2.5″硬盘,重写 NV-RAM的 NV-RAM_Adapted_For_Chk.nvr 映像,并转换电

源开关 off/on。

- 有关搜索原本的 NV-RAM 映像,参照上文讲述的有关原则。

- 中止 HDD configuration editing 对话框自动重新分配的功能。

如果仍无法访问固件区,你可以尝试扩大参数变化的范围。否则,那就有两种可能:

一种可能是磁头损坏,另一种可能是所要的数据已损坏,无法恢复。

5.3.3 日立(Hitachi)硬盘“C 区”介绍

在讲述日立硬盘“C 区”之前,我们要弄清一个概念,硬盘的“A 区”、“B 区”、“C

区”是客观存在的,不过不同的硬盘维修工具,对它的称呼将有所不同,PC-3000 称之为

“COPY 0”、“COPY 1”、“COPY F”。而效率源日立专修工具则称之为“A区”、“B区”、

“C区”。为了便以理解,在不涉及 PC-3000时,本书也采纳“A区”、“B区”、“C区”的

说法。

通常,硬盘固件区由两部分组成:即 A区、B区。一般而言,B区是 A区的备份区域,

其内容大致相同,如果其中一个出现问题,另一个会自动进行替补。

对于日立硬盘而言,它还有第三份备份固件区,叫做 C区。C区是 A区的另一个备份,

差别在于 C区从硬盘在厂家做自动校准后就固化生成了,以后不再改变和使用,即使一个

硬盘的 A区和 B区都坏了,C区也不会被自动启用来代替它们。只有借助一些专业修复程

序才可以访问,从而利用 C区的这个备份来重建 A区和 B区达到修复及数据恢复功能。

通常硬盘的大部分固件故障,多数是因为固件的某个模块或某些模块出现问题,而非

物理层面的损坏,只要将固件恢复原样,那么硬盘就又能够正常工作了。

效率源的专业修复程序提供“读 C区”、以及“转固件工作区到 C区”的功能。

日立硬盘的固件 A区如果坏掉,B区可以马上替补。但如果 A区和 B区都损坏并且不

能被访问,而 C区又是硬盘出厂后是永远不可被访问和启用的,出现这种情况,我们该怎

么办呢?此时,我们可以尝试借助效率源 Hitachi硬盘专业程序的“转固件工作区到 C区”

功能进行修复。或借助于 PC-3000读取“COPY F”的正常模块去覆盖“COPY 0”、“COPY

第 5 章 日立硬盘固件特点及其故障分析

121

1”已损坏的模块。

5.3.4 日立硬盘故障修复案例

5.3.4.1 日立硬盘固件问题修复

固件故障是日立硬盘的常见问题之一。固件问题引起的故障,其现象表现为两种:一

种是硬盘虽有固件故障但仍能够被系统或一些专修工具所识别;一种是硬盘的固件故障直

接导致该硬盘无法被系统或一些专修工具所识别。下面首先讲如果遇到这两种情况,使用

效率源日立专修程序修复固件的处理方法:

步骤 1:将故障硬盘和装有日立专修程序的电脑正确连接,打开日立专修程序,在工

具栏中单击“装入管理”,进入“装入管理”界面后,单击“从硬盘装入”按钮,如果程

序能够正常显示硬盘的型号和参数,即可单击“固件检修”按钮,在“固件检修”窗口单

击“全选”按钮,开始对所有固件进行检测,如图 5-11所示。

步骤 2:对于装入后各项参数都可以识别的硬盘,可以直接检测损坏固件,然后读取 C

区固件修复。对于 C区没有的模块或者 C区也损坏的模块需要找型号、固件版本号一样的

固件来回写。

步骤 3:在回写之前,需要检测固件区能否读写,即磁头是否只读。方法是双击打开

一个模块,任意改一个字节,并检测能否保存。注意,检测完以后要把改过的字节改回原

来的内容。

步骤 4:确定磁头可以写时,我们就可以回写修复损坏的固件。指定备份的 C区固件

路径或者其他固件路径后,选择需要修复的固件,单击“写入”按钮,如图 5-12所示。

图 5-11 固件检测 图 5-12 固件写入

如果该模块所在磁道有物理坏道,将无法写入。

对于硬盘装入不被识别的硬盘,可能是 NVRAM损坏,也可能是固件损坏。这时,需

要转换到工厂模式进一步检测。如果工厂模式下可以访问固件,就是固件问题。检测固件,

然后修复损坏固件。最后转换至用户模式,硬盘就可以正常地使用。

日立硬盘有两种模式:用户模式和工厂模式。用户模式就是从 A启动固件,初始化硬

盘;而工厂模式就是从 C区启动固件,初始化硬盘。

深度剖析——硬盘固件级数据恢复

122

5.3.4.2 NVRAM 损坏的判断案例

由于 NVRAM的损坏引起的故障,与固件损坏、磁头故障所表现出的现象很相似,如

果故障部位定位不准,轻者会影响到硬盘的修复效率,重者可能对硬盘或其中的数据造成

新的损坏。

NVRAM 的损坏引起的故障通常表现为以下两种:(1)硬盘无法被识别;(2)硬盘虽

然可以被识别,但无法访问数据区。下面我们使用效率源日立维修工具,对 NVRAM好坏

状态做出判断。

第一种情况处理过程如下:

将故障盘与装有日立专修程序的电脑相连接,启动专修程序。

在专修程序中,单击“硬盘装入”,程序将无法识别到硬盘的型号,也无法获取硬盘的

相关参数,如图 5-13所示。

图 5-13 装入管理窗口

单击“从文件装入”,也无法访问固件,如图 5-14所示。

图 5-14 模块编辑窗口

第 5 章 日立硬盘固件特点及其故障分析

123

固件损坏,虽然也会造成硬盘的无法识别,但是选择“从文件装入”,一般都可以访问

固件,据此基本可排除是固件问题。

那是否是磁头问题呢?如果是磁头问题,硬盘运转时肯定会有敲盘声,如果硬盘运转

发出的声音正常,那么基本上可排除磁头问题。

为了进一步把问题搞准,可以转换到 C区,让硬盘从 C区启动。我们已经知道,硬盘

在正常工作时,是不使用 C区固件的,所以,C区固件损坏的概率比较低,如果转到 C区

后,固件仍然无法访问,那么就可以确定是 NVRAM问题了。

实际做法为:

将硬盘跳线设置为安全模式,选择“从文件装入”,修改 NV-RAM,让硬盘从 C区启动,

如图 5-15所示。

图 5-15 “0401”改为“0400”,让硬盘从 C区启动

现在确认仍无法访问固件,从而可以确定是 NVRAM问题,如图 5-16所示。

图 5-16 固件仍无法访问

深度剖析——硬盘固件级数据恢复

124

第二种情况的处理方法:

第二种情况的现象为:硬盘可以被识别,但无法访问数据区如图 5-17所示,打开数据

区显示的是乱码。

图 5-17 数据区无法访问

固件故障也有可能也会引起数据无法访问,所以首先应该进行固件检测,如图 5-18

所示。

图 5-18 固件检测

如果固件检测,所有固件正常,那么基本上可以确定是 NV-RAM问题。本例经检测确

定是 NV-RAM的数据区地址信息错误。

5.3.4.2 效率源 NVRAM 故障的修复

当通过一系列手段判定 NVRAM出现故障时,排除故障的第一步,是找一块和故障盘

匹配的电路板,匹配的条件请参阅 5.3.2 节的相关内容,本节不再赘述,电路板替换后,将

故障盘正确连接到效率源日立专修终端,加电,并启动日立/IBM专修程序,当硬盘处于就

第 5 章 日立硬盘固件特点及其故障分析

125

绪状态后,在工具栏中选择“NVRAM操作”,进入如图 5-19所示窗口。

图 5-19 NVRAM操作窗口 图 5-20 NVRAM操作选项

通过图 5-20的 4个选项,可以对 NVRAM进行读写、编辑,并可以对 ROM进行读

操作。

图 5-21 NVRAM修复

图 5-21用于指定匹配故障盘的 NVRAM文件路径,作为 NVRAM修复的原始基础。

图 5-22 固件区参数

在设置好原始的 NVRAM文件之后,便可以开始进行固件区参数匹配修复工作,实质

上就是在盘面上寻找固件区的起始位置,同时对 NVRAM的相关参数进行修改,使现在的

NVRAM中的参数与故障盘固件区相匹配。

“原始位置”代表开始匹配的位置,程序将以此为基础,开始双向匹配工作。

“增量”代表修复进程,如果 NVRAM修复时间太长,想中途停止,就按“停止”按

钮,注意观察增量位置的数值,停止的时候,增量是多少,下次想接着运行时,就输入对

应的增量数值,否则就会重新开始运行。其他位置的内容基本上不需要改动,仅供观察。

“硬盘电源延时”是为了保护硬盘磁头使其完全进入正常工作位置所预留的时间,一

般设为 300 ms。

“等待硬盘就绪延迟”是电源启动到硬盘就绪之间预留的时间,磁头、固件区性能越

深度剖析——硬盘固件级数据恢复

126

差,延迟就越高。一般设定为 2000 ms。

“当前位置”代表目前正在进行的修复的双向位置。

实际工作中,NVRAM 的修复由于故障不同、硬盘型号不同,所花费的时间也有所不

同,有时可能需要十几分钟,有时可能需要几十小时。修复成功后,程序会提示修复完成,

单击“OK”按钮。进行关闭/打开电源,单击“从硬盘装入”,如看到硬盘已经被识别,

那么说明 NVRAM修复成功。

单击“扇区查看”按钮,进入“扇区查看”界面,查看任一扇区,结果发现扇区内容

无法查看,只是因为只修复了固件区的起始位置,还需要数据区的匹配。数据区的匹配项

目如图 5-23所示。

图 5-23 数据区适配参数设置

匹配数据区时,需要备份当前的 NVRAM:即在“NVRAM 操作”界面中,单击“读

取 NVRAM”,稍后将显示备份成功的提示,单击“OK”按钮予以确认。

在设置的文本框中,重新指定备份的 NVRAM路径,并在其他文本框中设置相应的参

数。单击“开始查找”按钮。

数据区的匹配时间一般比较短,修复成功后会弹出提示对话框,单击“OK”按钮确认。

此时 NVRAM故障已修复成功,硬盘可以正常识别,并可以访问数据区。

5.3.4.3 日立硬盘固件区物理故障数据恢复案例

故障现象:客户送来的一个日立 HTS541060G9AT00的移动硬盘,如图 5-24所示。

图 5-24 HTS541060G9AT00的移动硬盘

据用户反映,该硬盘在送来之前,已在别处维修过,根据硬盘的外观观察,硬盘肯定

进行过开盘操作,加电后有敲盘声响,并且不能被系统所识别。

第 5 章 日立硬盘固件特点及其故障分析

127

处理过程:

第一步,将硬盘连接到将硬盘连接到 PC-3000上,初步检测硬盘状态,具体做法如下。

将硬盘连接到 PC-3000的 ATA0端口,单击 PC-3000图标,进入 PC-3000的主页面,

如图 5-25所示。

图 5-25 进入 PC-3000主页面

在图 5-25的窗口中,选择端口 ATA0,并加电,选择 Hitachi/IBM/HGST→HITACHI-IBM

→HTS5410G9(HTS541)。单击 按钮,进入到下一个窗口,如图 5-26所示。

图 5-26 不能识别硬盘家族

深度剖析——硬盘固件级数据恢复

128

进入图 5-26 窗口后,显示一个“Cannot identify the HDD family”子窗口、即“不能识

别硬盘家族”。在子窗口中,单击“OK”按钮,进入到下一窗口,如图 5-27所示。

图 5-27 Utility start子窗口

在图 5-27的子窗口中,在 HDD families一栏中,选择 HTS5410G9(HTS541),单击

“Utility start”按钮,进入到下一个窗口,如图 5-28所示。

图 5-28 装载“open”模块表错误

在图 5-28中,显示了一条“Loading the table ‘open’ module…Error”信息,即装载“open”

模块表错误。通过对硬盘基本的检测,初步了解了硬盘一些故障现象,接下来对硬盘固件

进行检测。

第 5 章 日立硬盘固件特点及其故障分析

129

第二步:硬盘固件检测。

为此,我们单击 Tool→Utility extensions→Modules table,如图 5-29所示。

图 5-29 选择“Modules table”

在选项卡上,进行了以上选择以后,进入到下一个窗口,单击 按钮进入 module

selection子窗口如图 5-30所示。

图 5-30 Module selection窗口

在该窗口中选择所有模块,然后单击“OK”按钮,系统将对所有模块进行检测,检测

深度剖析——硬盘固件级数据恢复

130

结果,如图 5-31所示。

图 5-31 模块检测结果

在模块检测结果表中,分为两部分,一部分显示模块的详细信息,模块前有绿色方框

标志的表示该模块是正常模块,为红色标志的表示该模块为错误模块,如图 5-32所示。

图 5-32 模块检测结果

另一部分表示是在模块检测过程中,模块好坏状况的实时信息。从模块检测结果可以

看出,copy 0、F的模块一般为正常模块,copy 1一般为错误模块,其中 PSHT(P-表)模

块 copy 0、1、F都是坏的。

第 5 章 日立硬盘固件特点及其故障分析

131

第三步:读取正常模块。

读取模块,如图 5-33所示。

图 5-33 读取模块

在图 5-33中,单击 按钮,选择 Modules reading进入到下一个窗口,如图 5-34所示。

图 5-34 Choose/Create profile窗口

在图 5-34的 Choose/Create profile 窗口中,使用者要在 profile name一项中输入名字,

并单击 OK按钮,进入到 Reading Modules 窗口,如图 5-35所示。

深度剖析——硬盘固件级数据恢复

132

图 5-35 “Reading Modules”窗口

在 Reading Modules 窗口中的 Read modules into 栏目中,选择 HDD profile folder,程

序会显示一个默认文件夹,使用者可根据情况进行设置,通常情况下可选择程序给出的默

认文件夹。

在 reading method(读取方法)栏目中,选择 Composite reading,这样选择的结果,使

读取的模块为正常模块。

单击“OK”按钮,将正常模块存储到所选的目录中。

第四步:用读取的正常模块来覆盖损坏的模块,具体的方法如下:

在模块表中,用鼠标选择一个已损坏模块(本例所选择的模块为 RSVD),并单击右键,

会出现一个对模块操作的菜单栏,如图 5-36所示。

图 5-36 选择一个已损坏的模块

第 5 章 日立硬盘固件特点及其故障分析

133

在菜单栏中,选择“Write modules group from HDD profile”,其目的是把〈HDD profile〉

\Date\Modules中相应的正常模块,覆盖所选择的损坏模块。单击该选项后,进入下一个窗

口,如图 5-37所示。

图 5-37 Modules Writing 窗口

在Modules Writing 窗口中选择 RSVD模块,当然也可以同时选择其他模块,或全选,

单击 OK按钮,开始进行模块覆盖。覆盖完毕后,进入下一步操作。

第五步:重新检测固件模块,查看覆盖效果。

单击 进入Module selection子窗口,如图 5-38所示。

图 5-38 Module selection窗口

深度剖析——硬盘固件级数据恢复

134

在该窗口中选择所有模块,然后单击“OK”按钮,系统将对所有模块进行检测,检测

结果,如图 5-39所示。

图 5-39 模块检测结果

可看出模块仍然是坏的,可见 copy1所在区域物理损坏,应该修改 copy1的固件起始

位置再恢复 copy1。

第六步:编辑 NVRAM。

步骤为:在工具栏中选择 sevice information→work with NV-RAM→Editing NV-RAM,如

图 5-40所示。

图 5-40 选择 Editing NVRAM

第 5 章 日立硬盘固件特点及其故障分析

135

在选择了 Editing NV-RAM后,进入下一个窗口,如图 5-41所示。

图 5-41 NV-RAM visual editing窗口

对图 5-41子窗口的 SA top cyl delimiters(by heads)项目中的第一行、第二行的值进

行修改,具体如何修改,一是根据自己的维修经验,二是可以参考一个同型号的、功能正

常的硬盘的 SA top值,修改结束后,退出该程序。

第七步:重新对硬盘加电测试。

对 ATA0端口进行断电,待硬盘稳定停止后,再加电,如图 5-42所示。

图 5-42 PC-3000主页面

深度剖析——硬盘固件级数据恢复

136

选择 Hitachi/IBM/HGST→HITACHI-IBM→HTS5410G9(HTS541)。单击 按钮进入

下一个窗口,如图 5-43所示。

图 5-43 不能识别硬盘家族

进入图 5-43 窗口后,仍显示一个不能识别硬盘家族的子窗口,在子窗口中,单击“OK”

按钮,进入到下一窗口,如图 5-44所示。

图 5-44 Utility start子窗口

在图 5-44的子窗口中,在 HDD families一栏中,选择 HTS5410G9(HTS541),单击

第 5 章 日立硬盘固件特点及其故障分析

137

“Utility start”按钮,进入到下一个窗口,如图 5-45所示。

图 5-45 选择“Modules table”

在图 5-45中,仍然显示了一条“Loading the table ‘open’ module…Error”信息,即装载

“open” 模块表错误。

第八步:重新读取正常模块,对损坏模块进行覆盖。

单击 Tool→Utility extensions→Modules table,进入 module selection子窗口。

在模块表中,用鼠标单击右键,会出现一个对模块操作的菜单栏,如图 5-46所示。

图 5-46 右键选择模块

深度剖析——硬盘固件级数据恢复

138

在菜单栏中,选择“Write modules group from HDD profile”,其目的是把〈HDD profile〉

\Date\Modules中相应的正常模块,覆盖所选择的损坏模块。本次在进行覆盖后,再进行模

块检测,结果正常,系统能够正常识别硬盘,并可访问数据区,拷贝有用数据,数据恢复

成功。

第 6 章 西数硬盘固件特点及其故障分析

6.1 西数硬盘基础知识

西部数据是全球存储业的先驱与长期领导者,它从 1988 年就开始设计生产硬盘,是

IDE 硬盘接口规范的制订者之一。其设计部门在美国加州,生产机构在泰国、马来西亚和

美国加州。长期以来,西数硬盘的读写性能都有着明显的优越性与稳定性,售后支持也有

着良好的用户体验,产品生产线则涵盖了企业级、桌面级、移动存储应用及 AV 领域等各

个方面。西部数据一度想并购希捷,但碍于市场垄断管制等因素,一直未能如愿。2011年,

西数并购日立公司的硬盘业务,得以实现存储业界第一和第三的结合,稳固了其头把交椅

的位置。整合也扭转了硬盘产业毛利不断下滑的颓势,过去十年受产能过剩的影响,硬盘

制造商千方百计降低成本,而现在硬盘的定价权则完全由西数与希捷掌握。

6.1.1 西数硬盘家族简介

富士通硬盘按照主控芯片的类型分为两大系列:经典西数架构与 Marvell 架构。这两

大系列可以从硬盘的 PCB外观加以区分。

早期西数硬盘的主控芯片由自己研发,包含了从使用WDC AC280主控的 Arch-0 家族

到使用 WD70Cx 的 Arch-V 和 Arch-VI 家族,其芯片技术与指令集都是相同的。目前数据

恢复接触到的一般是 Arch-V和 Arch-VI硬盘,其 PCB板为方形,板上主控芯片印有WDC

的标识,如图 6-1所示。

图 6-1 Arch-V(Caviar Cyl 16bit)家族 PCB

深度剖析——硬盘固件级数据恢复

140

经典西数架构采取“控制器+读取通道”的离散型解决方案。实现数据读取还需要专

门的读取通道芯片。从 Arch-VI家族西数同Marvell开始合作,由Marvell为其设计硬盘读

取通道芯片。图 6-2为Arch-V家族与Arch-VI家族的读取通道电路对比,Arch V家族(Caviar

Cyl 16 bit)采用 WDC 50G6474 IBMBM1.1(U7)芯片作读取通道,Arch-VI(Caviar Cyl 32

bit)家族硬盘采用Marvell 88C5540-LFE(U7)读取通道,如图 6-3所示。

图 6-2 西数 Arch V家族 图 6-3 西数 Arch VI家族

(Caviar Cyl 16bit)读取通道 (Caviar Cyl 32bit)读取通道

西数从 2001年开始,委托Marvell设计 SATA/SAS接口规范的高度集成 SoC芯片,逐

渐放弃了硬盘主控的研发。目前市面上的西数硬盘已经全部为 Marvell 架构。外观上看,

3.5英寸Marvell 架构硬盘的电路板多为 L形(早期)或 Y型,电路板上主控芯片为Marvell

88ixxx。

Marvell 架构采用与经典西数架构完全不同的私有命令和固件区操作机制,因此维修技

术也不同。目前的 Marvell 西数硬盘从盘体标签颜色上可以分为三大类:黑色代表最高性

能,缓存大;蓝色代表主流型,各方面比较均衡;绿盘代表节能型,转速慢,噪音小。

6.1.2 西数硬盘命名规则

西数硬盘的型号由两部分组成,破折号之前为 6到 8位主编号,破折号之后为 6位副

编号。

主编号部分为WD-xxxx-xx,其中:

第一部分“WD”是“Western Digital”的简称,是所有西数硬盘的共同前缀。

第二部分为 3到 4位数字,表示容量,单位为 0.1GB或 0.1T,如 1200代表 120GB,

10代表 1TB。

第三部分为 2到 4位字母,表示其缓存与接口类型。

副编号部分为 xx-xx-xx,其中:

第一部分为 2位客户 ID,不同的编号对应不同的 OEM客户,00代表零售市场。

第二部分为 2位型号 ID,主编号相同的硬盘物理结构也不一定相同,在同一家族中,

型号 ID才是辨别型号是否相同的标准。

第三部分为 2位固件版本,如 E0,A0,T0等。

表 6-1为西数硬盘部分型号的参数对比。

第 6 章 西数硬盘固件特点及其故障分析

141

表 6-1 部分西数型号参数

家 族 型号 ID 转速 RPM 接 口 尺 寸 缓 存

Eagle JF 7200 PATA 3.5 2M

JG, KB 7200 PATA 3.5 8M

Expedition FK, FL 10000 SATA 3.5 8M

Hercules JZ, LE, NM, NN, PK 7200 SATA 3.5 8M

KR, LD, NA, NB, NS, PL, NR 7200 SATA 3.5 16M

Odyssey MM, NL, NP, RA, SK, SL 10000 SATA 3.5 16M

Polaris FY, FZ, GB 7200 PATA 3.5 8M

Safari EL, EW, FE, FN, FP, GH, GW, GY 10000 SATA 3.5 8M

Mammoth EY, EZ, FA, FJ, HE, JS, JY 7200 PATA 3.5 2M

FC, FM, HF, JT 7200 PATA 3.5 8M

JE 5400 PATA 3.5 2M

Sabre JH, JK, KS, LN, MG 7200 PATA 3.5 2M

JJ, JL 7200 PATA 3.5 8M

JM, JP 7200 SATA 3.5 2M

JN, JR 7200 SATA 3.5 8M

JU 5400 PATA 3.5 2M

Hawk MH,ML,MV,MZ,NC,NF, NG,NK, NU, NW, NZ, PB 7200 SATA 3.5 8M

MJ,MK,MW,MY,ND,NE, NH,NJ, NT, NV, NY, PA 7200 SATA 3.5 16M

RP 7200 SATA 3.5 2M

Starling RD, RJ(2) 7200 PATA 3.5 2M

RE, RF, RK(2), RL(2) 7200 PATA 3.5 8M

Scorpio HC 5400 PATA 2.5 2M

HD 5400 PATA 2.5 8M

KH 4200 PATA 2.5 2M

Pericles KA, LF 7200 PATA 3.5 8M

KP, LM 3.5 16M

Falcon HA, HB, KC 7200 PATA 3.5 8M

Mosquito LP 3600 CF+II 1.0 64K

Buccaneer KE 7200 PATA 3.5 2M

KF, KM 7200 PATA 3.5 8M

KG 5400 PATA 3.5 2M

Renegade KK 7200 SATA 3.5 2M

KL, KN SATA 3.5 8M

Antares KT 5400 PATA 2.5 2M

KU 5400 PATA 2.5 8M

Orion KV 5400 PATA 2.5 2M

KW 5400 PATA 2.5 8M

Aquarius KZ, RM(FFS) 5400 SATA 2.5 2M

LA, RN(FFS) 5400 SATA 2.5 8M

Sargas LB 5400 SATA 2.5 2M

LC 5400 SATA 2.5 8M

XBOX2 LL 5400 PATA 2.5 2M

Unicorn LR, LT, MR, MT 7200 SATA 3.5 2M

LS, LU, MS, MU 7200 SATA 3.5 8M

Defender LV 7200 SATA 3.5 2M

深度剖析——硬盘固件级数据恢复

142

(续表)

家 族 型号 ID 转速 RPM 接 口 尺 寸 缓 存

LW, LY 7200 SATA 3.5 8M

LZ, MA 7200 SATA 3.5 16M

Defender II MB 7200 PATA 3.5 2M

MC, MD 7200 PATA 3.5 8M

ME, MF 7200 PATA 3.5 16M

Zeus MN, MP, VJ(w/NCQ) 7200 SATA 3.5 16M

Raider PC 7200 SATA 3.5 2M

PD, PE 7200 SATA 3.5 8M

PF, PG 7200 SATA 3.5 16M

Neptune PH, PJ 7200 PATA 3.5 16M

Sequoia PN, PT 7200 SATA 3.5 16M

PR, PU, SV, SY 7200 SATA 3.5 2M

PS, PV, SW, SZ 7200 SATA 3.5 8M

Glacier PW 5400 PATA 2.5 2M

Taurus PY 4200 ??? ??? 2M

Jupiter RB, RC, TU 7200 SATA 3.5 16M

Cricket RG 3600 CF+II 1.0 192K

Mantis RH 3600 CF+II 1.0 192K

Aries RR, RU(FFS) 5400 SATA 2.5 2M

RS, RV(FFS) 5400 SATA 2.5 8M

RT, RW(FFS) 5400 SATA 2.5 16M

Tornado TA, TP(3D),TH(3D),TJ(3D) 7200 SATA 3.5 2M

TB, TR(3D),TK(3D),TL(3D) 7200 SATA 3.5 8M

TC, TS(3D),TM(3D),TN(3D) 7200 SATA 3.5 16M

Tornado PATA UA, UK(3D), UB, UL(3D), UE, UP(3D) 7200 PATA 3.5 16M

TV, UF(3D), TW, UG(3D),UC, UM(3D) 7200 PATA 3.5 2M

TY ,TZ, UJ(3D),UD, UN(3D), UH(3D) 7200 PATA 3.5 8M

Hawk-2 SG, TG 7200 SATA 3.5 8M

SH 7200 SATA 3.5 16M

McKinley SN(FFS), UR 5400 SATA 2.5 2M

SP(FFS), US 5400 SATA 2.5 8M

SR(FFS), UT 5400 SATA 2.5 16M

Unicorn-6 TD, TE 7200 SATA 3.5 8M

Leo TF 5400 PATA 2.5 2M

Lynx UW 5400 PATA 2.5 2M

UY 5400 PATA 2.5 8M

Danu VF, VG, VH 7200 SATA 3.5 32M

Yosemite VK, VN, VS 7200 SATA 3.5 16M

VL, VP, VT 7200 SATA 3.5 8M

VM, VR, VU 7200 SATA 3.5 2M

Tornado 2D VV, WC 7200 SATA 3.5 2M

VW, WD 7200 SATA 3.5 8M

VY, WE, B9, C9 7200 SATA 3.5 16M

Tornado 2PMR WF, WJ 7200 PATA 3.5 2M

WG, WK 7200 PATA 3.5 8M

第 6 章 西数硬盘固件特点及其故障分析

143

(续表)

家 族 型号 ID 转速 RPM 接 口 尺 寸 缓 存

WH, WL 7200 PATA 3.5 16M

Cougar WY 5400 PATA 2.5 2M

WZ 5400 PATA 2.5 8M

Tornado 2R YE, YH, YL, YP, YT, YW 7200 SATA 3.5 2M

YF, YJ, YM, YR, YU, YY 7200 SATA 3.5 8M

YG, YK, YN, YS, YV, YZ, C8 7200 SATA 3.5 16M

Gemini ZG 5400 SATA 2.5 2M

ZH 5400 SATA 2.5 8M

Spider ZS, ZV 5400 SATA 2.5 2M

ZT, ZW 5400 SATA 2.5 8M

ZU, ZY, ZZ, D0 5400 SATA 2.5 16M

Mars A0, A1 7200 SATA 3.5 8M

A2, A3, D4, E9, F5 7200 SATA 3.5 16M

A4, A5, A6, E8, F6, F7, J7, J8, K1 7200 SATA 3.5 32M

Denali UZ, VC 5400 SATA 2.5 2M

VA, VD, ZC 5400 SATA 2.5 8M

VB, VE, ZD 5400 SATA 2.5 16M

Saturn F3, F4 7200 SATA 2.5 16M

Mercury ZA 5400 SATA 2.5 8M

ZB 5400 SATA 2.5 16M

Sequoia PMR VZ, WM 7200 SATA 3.5 2M

WA, WN, D1 7200 SATA 3.5 8M

WB, C0 7200 SATA 3.5 16M

WP, WS 7200 PATA 3.5 2M

WR, WT 7200 PATA 3.5 8M

Gekko G8,H1 5400 SATA 2.5 16M

G9,H0 5400 SATA 2.5 8M

Hulk C7,G5 , ZJ, ZK ,ZL 5400 SATA 3.5 16M

ZP ,ZR 5400 SATA 3.5 8M

Kermit D7,E1 5400 SATA 3.5 8M

D6,E0 5400 SATA 3.5 16M

Pinnacle H4 7200 SATA 3.5 2M

E2,F1, F2 7200 SATA 3.5 32M

B4, B6 7200 SATA 3.5 8M

B3, B5, B7, F0 7200 SATA 3.5 16M

J2 7200 PATA 3.5 16M

J3,J5 7200 PATA 3.5 8M

J4 7200 PATA 3.5 2M

Atlantis C1, C2, C3,E7 7200 SATA 3.5 32M

A8, B0, B2 7200 SATA 3.5 8M

A7, A9, B1, D2 7200 SATA 3.5 16M

H8,J0 7200 PATA 3.5 16M

H9,J1 7200 PATA 3.5 8M

Cypress J9, K0 7200 SATA 3.5 2M

G3,G4 7200 SATA 3.5 16M

G0,G1, G2 7200 SATA 3.5 8M

深度剖析——硬盘固件级数据恢复

144

6.2 西数硬盘固件结构及模块

6.2.1 固件结构特点

西数硬盘的固件分为两部分,一部分储存在硬盘 ROM 中,用于硬盘上电后对盘面固

件区的各项操作。一部分储存在盘面固件区中,用于实现对用户数据的访问。每次硬盘上

电以后,主控芯片首先加载 ROM代码,然后读取并加载盘面固件区的模块。

西数硬盘固件区每个固件模块都计算校验和,因此模块头、模块内部数据、模块校验

和等任意部分出错都可能导致硬盘发生固件错误,从而无法正常启动。在固件恢复中需要

注意到这一特点。

西数硬盘没有设计 COM终端机制,包括固件读取等所有专用工厂命令均通过 ATA接

口传送,保证了较高的固件读写速率。

在经典西数架构中,ROM中的固件内容相当有限,模块表、区域分配表都保存在盘面

固件区中。一般来说,经典西数架构的固件修复要简单很多。只要型号相同、固件版本号

相同,即可获得较高的修复率。

在 Marvell 架构中,ROM 与盘面固件的相关性非常大,ROM 中含有访问盘面固件区

的多项参数,盘面固件区的 overlay等模块也必须与 ROM模块相匹配。因此 Marvell 架构

硬盘固件修复需要注意的配对参数要严格很多,参数不匹配将大大影响数据恢复的成功率。

在进行替换时,备件盘必须保证型号一致、固件版本号相同、硬盘电机号一致、磁头位置

一致。只有这样,硬盘才可能成功修复。

Marvell 架构西数硬盘可分为三大类:

(1) MWD-CHS 系列。该系列使用外置 ROM,固件区模块的头部使用传统格式。

涉及的 2.5 英寸盘为 Scorpio 家族。涉及到的 3.5 英寸盘有 Mammoth、Sabre、Unicorn、

Buccaneer、Hawk、Zeus、Raider、Starling、Hawk-2 共 9个家族。3.5英寸西数MWD-CHS

硬盘电路板一般为 L形。

(2) MWD-ROYL-CHS 系列。该系列使用以“ROYL”签名开始的新的模块头部,

但固件区编址仍采用 CHS格式。此系列仅有 2.5英寸盘的 Orion、Aquarius家族。

(3) MWD-ROYL-ABA 系列。该系列的 ROM 内置于主控芯片中,固件区使用以

“ROYL”签名开始的新的模块头部,固件区编址采用 ABA格式。目前市面上的西数硬盘

基本上都属于MWD-ROYL-ABA系列。对于 3.5英寸盘,一般可以通过 Y形电路板及板上

ROM焊盘留空的特征进行判断,如图 6-4所示。

西数硬盘成功启动需要经过以下步骤:

(1) 微代码从 ROM加载到电路板 RAM中并执行。

(2) 查询安装的磁头。

(3) 主轴电机启动并达到正常转速。

(4) 系统磁头定位到固件区。

(5) 从固件区加载附加微代码(overlay模块)。

(6) 校准磁头。

第 6 章 西数硬盘固件特点及其故障分析

145

(7) 初始化译码器。

图 6-4 Marvell架构硬盘 PCB结构

6.2.2 经典西数架构固件

6.2.2.1 ROM 固件

WD Arch-V(Caviar Cyl 16 bit)硬盘一般采用 TSOP-40封装的M29F102BB并行 Flash

ROM,部分型号使用 TSOP-40封装的M27C1024 OTP ROM(不支持重复编程)。二者在使

用上是兼容的,能够相互替换。其封装示意及引脚定义如图 6-5和表 6-2所示。

图 6-5 并行 Flash ROM封装示意

表 6-2 M29F102BB 各引脚含义

符 号 功 能

A0-A15 16位地址

DQ0-DQ15 16位数据输入/输出

RP# 复位信号

E# 片选信号

G# 输出使能

W# 写使能

Vcc 5V供电

Vss 地

NC 未连接

深度剖析——硬盘固件级数据恢复

146

WD Arch-VI(Caviar Cyl 32 bit)硬盘采用的是 SOIC-8 封装的 25P10AV 串行 Flash

ROM。这种八脚 ROM存储空间有限,但封装小,结构简单,在希捷硬盘中也广泛采用。

其封装示意及引脚定义如图 6-6和表 6-3所示。硬盘维修中有时串行 Flash ROM 刷坏了,

可短接 4、5 脚尝试复位。

图 6-6 25P10AV封装示意图

表 6-3 25P10AV 引脚定义

符 号 功 能

HOLD# 保持信号,暂停 Flash通信

CLK 串行时钟

WP# 写保护

CS# 片选信号

DI 串行输入

DO 串行输出

Vcc 3.3V供电

GND 地

操作 ROM固件有三种方式:Normal模式、Kernel模式、编程器编程。打开 PC-3000

西数程序,首先显示如图 6-7所示的模式选择按钮。

如果硬盘能够成功初始化并报告就绪,即可在 Normal 模式下操作。此模式所有配置

跳线帽应该禁用。Kernel模式是单独使用 PCB板时的工作模式,但切换到此模式并不一定

需要 PCB与盘体分离。只要三个跳线帽同时启用(CS,slave,Master)时,硬盘即可进入

Kernel模式,其跳线设置方式如图 6-8所示。

Jumper

图 6-7 “Utility start”窗口 图 6-8 Kernel模式跳线设置

此时硬盘状态寄存器的 DRD、DSC位皆处于非使能状态,这样程序在启动时会显示如

图 6-9所示的对话框,此时需要选择 Yes。

第 6 章 西数硬盘固件特点及其故障分析

147

图 6-9 “Warning”对话框

接下来在出现的模式选择界面选择 Kernel 模式,Autodetect,然后程序启动。Kernel

模式下硬盘将会识别成对应家族的最大容量硬盘。

如果 ROM 内容出错或被擦除,导致硬盘无法切到 Kernel 模式,则操作 ROM 需要将

Flash ROM芯片拆焊下来用另外的编程设备编程,然后焊回去。

经典西数架构的 ROM 固件比较简单,有价值的信息只有磁头映射图,可用于软件关

闭磁头或者重新开启先前关闭的磁头。对WD Arch-V(Caviar Cyl 16 bit)硬盘,ROM中

还有版本号、世代、支持的型号列表等信息(WD Arch-VI硬盘的串行 Flash ROM则不含

此类信息)。

如果 ROM是一次性编程 OTP芯片,则不支持多次重写。

6.2.2.2 -4 柱面

-4 柱面包含了硬盘生产和自检阶段记录的信息表项,大约有 30 多条。这些表项并不

影响硬盘的工作,但一些重要信息对硬盘数据恢复具有参考价值。使用菜单 Tools→utility

extensions→Cylinder-4 Specification可以查看这些信息表项。

图 6-10所示是一个样例。

图 6-10 -4柱面信息表项

深度剖析——硬盘固件级数据恢复

148

DCM Data 包含硬盘的型号、序列号等信息。

FTS Result Data 包含硬盘固件版本号信息。

IDT/FTS/Rescreen/FQA/TSC/Drive Recertification 工厂测试日期,序列号,固件版本,

主控版本,伺服数据版本,型号名。

MMS Production Log 序列号,型号名,物理磁头数,物理区域数,关闭故障磁头后剩

余的磁头数,关闭故障磁头后的剩余活动磁头数。

Physical Parameters log 物理磁头号以及隐藏的磁盘号。

6.2.2.3 固件区模块

基于 WD70Cxx主控(Arch-V,Arch-VI)的西数硬盘固件区位于从-1到-31的负磁道

内,并且包含两份相同的拷贝。0磁面上是主拷贝,1磁面上是副拷贝。单头型号在同一盘

面上包含主副两份拷贝,只是它们的偏移量不同。第一份拷贝在-1到-9磁道,另一份在-10

到-18磁道;-19和-20磁道包含适配参数和固件区缺陷表。-21到-31磁道是空的,保留备用。

PC3000西数程序 Tools→Service information 菜单中提供了固件区的操作功能,如图 6-11

所示。

图 6-11 固件区操作选项

1. 固件区表面校验

程序使用 SA surface verification命令,通过让硬盘逐扇区读取固件区磁道完成校验。

程序只是接收硬盘返回的错误码,并不会接收或分析固件区的实际数据。执行校验前需要

选择测试的范围。校验中发现的错误都将记录在日志中并在测试结束后输出为报告。固件

区校验的主要目的是通过硬盘返回的错误码发现盘面的物理损坏(划伤、擦伤等)。显示的

错误码通常有 INF、AMN、UNC 等。UNC 错误码很有可能是软错误,很可能是由于写固

件区失败造成而非因为盘面损坏,该错误可能在重写固件后消失。由于固件区格式化程序

的工作特性,即使在完全正常的硬盘中,-19和-20磁道都有可能返回错误。

2. 固件区结构测试

程序使用 SA structure test命令,利用模块表(SA modules list)检索和测试所有固件模

块。模块表即~Dir模块 ID=41h,位于-1 柱面的前两个扇区,包含了硬盘操作所需的基本

第 6 章 西数硬盘固件特点及其故障分析

149

模块条目,而一些辅助模块(例如 E1h Self scan启动模块,47h 固件区适配参数等)没并

有包含在里面。在进行固件区结构测试时,这些模块表中没有的模块将会被跳过。

校验中发现的错误都将记录在日志中,并在测试结束后输出为报告。报告示例如图 6-12

所示。

图 6-12 固件区测试报告

它是包含了固件区模块摘要信息的主要报告表,包含以下项目:

� ID:模块标识符。

� Copy:copy号。

� importance:所给模块对硬盘操作或用户数据完整性的重要性。重要性标识符由

以下变量组成。

A:基本模块,每个盘独一无二。

B:主要模块,一般同一家族硬盘是相同的。

C:次要模块,可以直接清除。

D:辅助模块,不影响硬盘正常操作,但用于一些可选功能:例如 Self-Scan等。

d: 影响数据读取。

s:影响硬盘启动。

r:自检/自还原程序调用。

组合后的结果为:

As:硬盘操作关键且唯一模块。包括适配数据。损坏后硬盘自身无法修复,只能尝试

从拷贝中读取原始内容。当且仅当在最坏的情况下可以尝试用同家族同型号相同版本的固

件模块去覆写它们,但有可能敲盘并永久无法修复。

Ad:用户数据关键且唯一模块。包括译码表模块。损坏后如果是硬盘维修而不需要数

据,则可以用其他硬盘的拷贝进行覆写。如果是数据恢复,则需要尝试通过反复读取原始

深度剖析——硬盘固件级数据恢复

150

表格来恢复它们。

B:微代码引导模块 overlay,例如区域分配表,硬盘 ID等。这些模块对每个硬盘来说

不是唯一的,但对某一家族乃至某一特定型号则是唯一的。如果损坏可以用其他固件版本

相同硬盘的模块替换。

C:次要表格,可以清除,例如 SMART表,G表等。恢复这些模块通常只需要利用硬

盘自身工作机制即可完成,从其他硬盘拷贝相应模块来覆写也是允许的(最好是同一家族

同一型号),这不影响硬盘操作与用户数据的完整性。

Dd:辅助模块,不影响硬盘操作与用户数据完整性但参与其他关键模块的恢复。例如

原始译码器(可以用来恢复译码器)。

Dr:辅助模块,正常硬盘操作不需要,参与执行硬盘维护功能,例如自检或者校准等。

� Cyl:模块所处的 SA 柱面号。

� Head:模块所处对应磁头号。

� Sector:模块起始扇区号。

� Size:模块大小(扇区数)。

� Read:模块所有扇区的可读性标识符,值为 Yes/no。

� Hdr:模块头校验标识符,值为 Ok/error。如果日期不可用或者标识符与模块表不

同时,模块头被认为是错误的。

� CS:模块的校验和结果,值为 Yes/No。

� Date:模块头里存放的模块日期。

� Vers:模块版本号,覆写损坏模块时需要。

� Description:模块用途简要描述。

西数硬盘常见模块的有关信息,如表 6-4所示。

表 6-4 西数硬盘常见模块

ID 名 称 功 能 长度/扇区数 重 要 性

1 ini 微代码引导模块,区域分配表 12 B

2 xltovl 微代码引导模块,ATA overlay 118 B

10 wedovl 微代码引导模块 48 B

11 dvtovl 微代码引导模块 76 B

12 fmtovl 微代码引导模块 24 B

14 mrdvt 微代码引导模块 64 B

19 微代码引导模块 21 B

20 pdlist 译码器模块 144 Ad

21 eventlog 事件日志 10 B

22 hsdt 译码器模块 6 B

23 sectmap 译码器模块 6 B

25 rbblist 译码器模块 15 Ad

26 arelist SMART 参数 24 B

29 drmlog SMART 参数 24 C

41 dirsec 模块表 2 As

42 config 配置模块(硬盘 ID) 2 B

43 plist P 表(原始缺陷列表) 360 Dd

44 glist G 表(增长缺陷列表) 8 C

第 6 章 西数硬盘固件特点及其故障分析

151

(续表)

ID 名 称 功 能 长度/扇区数 重 要 性

46 chand 适配参数 15 As

48 stwcs 适配参数 3 As

49 scd 适配参数 2 As

59 tlist T 表(磁道缺陷列表) 4 Dr

61 ucodeovl 微代码引导模块 24 B

1B 微代码引导模块 6 B

2A hstlog SMART 日志 33 B

2B vndlog SMART 日志 25 B

2C evtproto SMART 日志 10 B

2D drmalter SMART 参数 24 C

2E dfpdata SMART 原始参数表 24 B

2F rwtest SMART 日志(保留) 8 B

4A srvcal 适配参数 4 As

4B 适配参数 3 As

4C skprofrd 适配参数 2 As

4D skprofwr 适配参数 2 As

4E db_dovl 版本信息日志 32 As

尽管西数硬盘的固件有两份拷贝,但固件模块损坏仍然是一个常见问题。因为一些

固件模块在硬盘工作时一直不停地读取,编辑并改写,例如 SMART 值相关模块,自动

重配置时的译码表模块,日志模块等。只要发生固件区写,就是两份拷贝都写,所以一

个写错误将会造成两份拷贝都损坏。此时就需要根据损坏模块的重要程度制定相应的修

复策略。

3. 写固件区

对于写固件区,PC-3000西数程序提供了三种命令。

� 写模块

使用菜单Tools→Service information

→ Work with service area → writing

modules。写模块需要与模块表进行严格

校对。如果模块表没有此模块的记录,

该模块就无法写入固件区。这是因为模

块表包含了模块位置的完整信息,但模

块本身并没有此信息。因此一个模块要

写入固件区,首先要保证该记录在模块

表~Dir中。

当写入一标准模块(模块表中有)时,

需要选择模块文件源,例如配置文件夹

还是数据库。使用窗口选择需要的模块

以及要覆写的拷贝。大多数情况下模块

的两份拷贝都要覆写,如图 6-13所示。

图 6-13 写模块

深度剖析——硬盘固件级数据恢复

152

� 模块表

使用菜单 Utility Extensions→Modules Table,可以对模块表~Dir进行查看、检验、编

辑、修改模块校验值等。

使用菜单 Utility Extensions→Module search in SA,如图 6-14所示。

图 6-14 模块搜索报告表

在图 6-14中可以查找 41号模块~Dir没有描述的模块,并将其添加进模块表(如有必

要)。要将发现的模块加到模块表,需要使用“Write modules table into HDD ”选项将模块

表写入硬盘,两份副本都保存为在固件区的 41号模块。如果只是将一个模块加到表里,需

要先用 delete module record命令将其余删除然后再执行“Write modules table into HDD”。

写之前可以用十六进制编辑器查看模块内容。

� 写固件区磁道

使用菜单 Tools→Service information→Work with service area→writing service tracks,可

以写磁道到固件区。前面已经讲到,模块表~Dir 并没有包括固件区内全部模块的描述。

因此,要想对固件区进行完整的操作,应该基于固件区磁道。写磁道时需要明确使用哪个

磁头。

6.2.2.4 区域分配表

01h模块存放西数硬盘区域的开始及结束位置信息。为了让硬盘盘面存放更多的数据,

使盘片的使用更有效率,现代硬盘都使用了划区机制(Zoning)。每个写频率不同的环形区

域称之为区域(Zones),一个硬盘大约有 15~30 个区域。西数硬盘统一将整个硬盘分成

21个区域来进行管理。

6.2.2.5 译码器

20h模块 pdlist(primary defects list)、25h模块 rbblist(Relocated and bad block list)是

译码器的主要部分,是由 P表和 G表生成的表格。

22h模块 hsdt、23h模块 sectmap是译码器的微程序代码模块,其主要匹配参数是版本

号。相同家族相同型号固件版本也相同的硬盘,22h、23h模块版本也有可能不同。

6.2.2.6 配置模块

42h模块包含硬盘的型号,序列号,逻辑参数(LCHS与 LBA),密码等信息。

6.2.2.7 扇区缺陷表

硬盘在出厂时检测到的缺陷扇区添加到 P 表(primary),然后根据 P 表建立译码器并

第 6 章 西数硬盘固件特点及其故障分析

153

格式化硬盘。此时 G 表(grown)是空的。在硬盘运行时所有用户数据均根据工厂生成的

译码表储存在盘面上,新发现的缺陷扇区只添加到 G表。

缺陷表编辑器是 PC3000 for windows的标准组件,对西数硬盘,还有下列专用命令。

Grouping to tracks归并磁道:当一个磁道内的缺陷扇区数超过阈值后,该命令将其归

为一个磁道缺陷。

Write defects into P/G-list of the HDD写缺陷扇区到 P/G表:该命令支持将修改后的缺

陷表直接写回到所连硬盘固件区的 P/G表(两份 copy都写)。

Sort defects缺陷整理:在缺陷表编辑器中按照磁头柱面等顺序排列所有缺陷扇区记录。

Statistics:用图表的形式显示各头各区域的缺陷分布。

Remove defects for head:删除某个头的所有缺陷记录。

6.2.2.8 版本信息日志

4Eh模块仅保存着固件版本的 ASCII数据。它对于 Arch-VI(Caviar Cyl 32 bit)西数硬

盘非常重要,因为 Arch-VI家族的串行 Flash ROM中没有固件版本信息,而此信息对电路

板的兼容性选择很重要。

6.2.2.9 DCM 日志

DCM 日志模块 ID=C5h 为校准日志,包含 DCM 码表的 ASCII 数据,在磁头组件替

换、选择备件时可能用到。

注意:当在 log中生成 DCM和版本信息时,C5h与 4Eh模块中的 DCM和版本信息并

不是必需的。所以数据缺少或无效并不意味着固件区损坏。

6.2.3 Marvell 架构固件

6.2.3.1 ROM 模块

Marvell 架构硬盘的 ROM固件也是按模块组织的。其中每个模块都有单独的校验和,

修改后需要重新计算其校验和。

(1) 模块 0Ah

此模块包含与当前所用磁头所对应的磁头映射图,此模块出错将导致硬盘无法正常启

动。磁头映射图可以通过菜单“Test”→“Service information”→“Work with ROM”→“ROM

Head map changing”编辑。

(2) 模块 47h

该模块包含引导适配参数,主要用于对操作固件区的电子组件进行配置。该模块是硬

盘启动的关键且唯一模块。

(3) 模块 30h

该模块为固件区译码器模块,包含了固件区缺陷扇区的位置信息。一般此模块是空的,

但也可能有例外。

深度剖析——硬盘固件级数据恢复

154

(4) 模块 0Bh

模块包含了 ROM中各模块的位置信息。通常同一家族硬盘的 ROM模块表是相同的。

(5) 模块 0Dh

包含了 ROM固件的版本号及多个标志位,存在于 Unicorn及以后家族的硬盘中。

(6) 模块 4Fh

该模块存在于 Pinnacle 及以后家族的硬盘中,仅包含固件版本号信息,它的内容不影

响逻辑访问。

6.2.3.2 固件区模块

硬盘固件区可划分为多个模块。每个模块都是带有头部、标识符、校验和的二进制代

码。固件区模块可以分为三类:

� 程序代码模块。它们的版本号需要与 ROM版本号一致。

� 硬件设置模块(大多是读/写磁头的设置)与表面数据格式设置(例如区域分配表,

译码器表格等)。

� 仅在硬盘生产时使用的模块。它们在逻辑访问硬盘时不影响硬盘操作。

MWD-CHS系列与MWD-ROYL-CHS系列的硬盘固件区位于从-1到-32的负磁道内,

实际中仅使用了前 20个磁道,其余未格式化。固件区的内容位于 0盘面,但 1盘面上还有

一份内容与之相同的副本。如果其中一个头损坏,硬盘将使用另一份副本启动。如果两部

分内容都有损坏,靠硬盘自身无法“组合读取”两份副本中的正确部分。单头型号的硬盘

在同一活动盘面上包含主次两个副本,只是它们的偏移不同。固件区数据实际上是一个小

的文件系统。~Dir模块储存在固定位置(-1磁道,1扇区),包含了所有在用模块的 CHS

坐标。

MWD-ROYL-ABA 系列的硬盘固件区位于从-1 到-92 的负磁道内,固件区磁道按照

ABA扇区从-92磁道到-1磁道进行线性编址。~Dir模块即位于-92磁道(ABA=0位置),

它包含了各模块相对于固件区起始 ABA扇区号的位置(也有硬盘不是从此模块开始)。固

件区的内容位于 0盘面,但 1盘面上还有一份内容与之相同的副本,其他头没有用到。硬

盘使用了与用户数据区相类似的固件区缺陷重定位机制。ROM 中含有固件区译码器模块

ID=30h,固件区也有固件区缺陷表的一个副本 ID=35h。要注意,-1 磁道有部分未格式化

(尝试访问-1磁道会返回错误),此区域用作固件区缺陷重定位时的保留空间。

表 6-5显示了某型号西数Marvell硬盘的部分模块信息。

表 6-5 西数 Marvell硬盘的部分模块信息

ID 功 能 长度/扇区数 重 要 性

01 模块表 24 B

02 配置模块(硬盘 ID) 3 B

03 自适应区域分配表 27 As

04 家族型号配置(Main) 393 B

0C 型号表 5 B

11 微代码引导模块,ATA overlay 444 B

12 微代码引导模块 52 B

13 微代码引导模块 55 B

第 6 章 西数硬盘固件特点及其故障分析

155

(续表)

ID 功 能 长度/扇区数 重 要 性

14 微代码引导模块 27 B

15 微代码引导模块 16 B

17 微代码引导模块 63 B

19 微代码引导模块 32 B

1B 微代码引导模块 112 B

1C 微代码引导模块 49 B

1E 微代码引导模块 22 B

1F 微代码引导模块 22 B

21 S.M.A.R.T. 75 B

22 S.M.A.R.T. 75 B

23 S.M.A.R.T.(保留) 75 B

24 S.M.A.R.T.(保留) 75 B

28 工厂自检脚本 16 Dr

29 微代码引导模块 6 B

2A 微代码引导模块 6 B

2D 调试日志 308 Dr

2E 微代码引导模块 308 B

2F 微代码引导模块 6 B

31 译码器 924 Ad

32 Relo-List(疑似缺陷列表) 32 B

33 P 表(原始缺陷列表) 1423 Dd

34 G 表(增长缺陷列表) 23 C

35 固件区缺陷 10 Dd

36 T 表模块(磁道缺陷列表) 9 Ad

38 微代码引导模块 257 B

39 微代码引导模块 17 B

40 适配参数 125 As

41 适配参数 125 As

42 适配参数 125 As

43 适配参数 125 As

49 适配参数 3 As

4A 适配参数 26 As

4D 适配参数 1 As

4E 微代码引导模块 46 B

50 参数表 1 3 As

51 参数表 2 3 As

52 参数表 3 3 As

53 参数表 4 3 As

61 微代码引导模块 30 B

6B 微代码引导模块 4 B

6E 微代码引导模块 2 B

6F 微代码引导模块 633 B

80 微代码引导模块 9 B

102 ROM 模块 0Ah 镜像 1 Dd

103 ROM 模块 47h 镜像 2 Dd

104 ROM 模块 4Fh 镜像 1 Dd

深度剖析——硬盘固件级数据恢复

156

(续表)

ID 功 能 长度/扇区数 重 要 性

105 ROM 模块 30h 镜像 2 Dd

106 ROM 模块 0Dh 镜像 1 Dd

107 ROM 模块 0Bh 镜像 1 Dd

108 IBI 包 33 Dr

109 ROM 镜像 385 Dd

110 模块表(基础部分) 24 B

1. 模块 01h

模块表~Dir。包含固件区所有模块大小及坐标的表单。可以在 PC3000 十六进制编辑

器中,选择一种结构解释插件来查看模块数据,如图 6-15所示。

图 6-16 选择 dir table查看 01h

也可以直接使用 Dir editor编辑模块表,如图 6-16所示。

图 6-16 选择 Dir editor

西数Marvell硬盘固件模块的读取有两种模式:一种基于 ID;一种基于 ABA。基于 ID

的操作命令要与加载到 RAM中的模块表~Dir相匹配。若要读取的模块长度与模块表中描

述的不同,则硬盘会返回错误。因此如果要用基于 ID 的命令替换所有硬盘模块,需要首

先写入~Dir模块,然后硬盘重新上电,此时才能再写入剩余模块。

2. 模块 02h

硬盘配置模块。包含了硬盘 ID(型号,序列号)及其他一些设置。有时会碰到这样的

故障,该模块重置为默认值,硬盘不显示其真实序列号,而是显示“WDC-ROM SN#

第 6 章 西数硬盘固件特点及其故障分析

157

XYZ----”。PC3000的 16进制编辑器中有插件可以用来查看此模块数据,如图 6-17所示。

图 6-17 选择 dir table查看 01h

3. 模块 03h

此模块仅在一些家族中存在,它是在 Zeus家族开始引进的。通常西数Marvell硬盘使

用的是固定区域分配表,每个固件版本区域分配表都是固定的。但使用该模块的家族使用

自适应区域分配表,记录密度根据每块硬盘的磁头质量确定,因此每块硬盘都有其唯一的

区域分配表。如果该模块丢失,恢复或者从其他盘借用都是不可行的。

4. 模块 0Ch

此模块包含了该硬盘所有可能型号的清单。在使用模块 3h的硬盘家族中,该模块也包

含了 3号模块的一份拷贝,因此 0ch模块必须与 03h模块同时记录。不匹配时硬盘将无法

正常工作(有时甚至会主轴停转,切换到 Kernel模式)。

5. 固件 Overlay

固件 Overlay 包括模块 ID=11h,12h,14h,15h,17h,19h,21h,29h。所有这些模

块头部指示了版本号,ROM版本应该与它们的版本号相同。如果模块 ID=11h不匹配或损

坏,硬盘将不能正确识别。其他 Overlay 模块对硬盘启动没有那么关键,但对逻辑访问也

是重要的。

6. 译码器模块

译码器模块 ID=31h。尽管对每个硬盘是唯一的,但内容可以使用译码表重建功能基于

P表(ID=33h)数据还原(Test→Service information→Work with Service area→Translator

regeneration 菜单)。

7. 缺陷表

数据区缺陷模块包括 Relo-List(32h),P-list(33h),G-list(34h),T-list(36h),36h

模块也记录了保留空间中替代 G表缺陷的扇区信息。

固件区缺陷模块为 35h 模块。

8. 适配参数模块

硬盘表面适配参数模块,包括模块 ID=40h、41h、42h、43h、49h、4Ah、4Dh。

模块 40h的数据可用于 ROM模块 47h的调整。

模块 49h包含“磁头校准(Mag Cal)”适配参数。

模块 4Ah包含“磁阻磁头线性度(MR Head Linearity)”适配参数。

深度剖析——硬盘固件级数据恢复

158

9. 模块 50h-53h

包含声音配置参数。改变硬盘“噪音级别”的命令需要用它。

10. 模块 102h-107h,109h

ROM固件的备份。

ID=0109h(ROM 镜像)。它包含了若干模块(例如默认设置的磁头映射图,固件版本

信息),但不含适配参数模块。

ID=0102h(00Ah模块拷贝),包含了实际工厂定义的磁头映射图。

ID=0103h(047h模块拷贝),包含了适配参数。

ID=0105h(030h模块拷贝),包含了固件区译码器。

ID=0107h(00Bh模块拷贝),定义了 ROM中模块的位置及固件区拷贝的存放位置。

11. 模块 28h

该模块包含了硬盘内部测试(Self Test)所用的工厂程序。

固件区其他与自检相关的模块如表 6-6所示。

表 6-6 固件区中与自检相关的模块

模块 ID(hex) 描 述 模块 ID(hex) 描 述

E6 工厂自检命令日志 E1 1 头表面缺陷日志

E7 工厂自检设置 E9 1 头 PE 数据

EE RRO 数据日志 E2 2 头表面缺陷日志

FA Butterfly 日志 EA 2 头 PE 数据

2D Debug 日志 E3 3 头表面缺陷日志

37 GainCal ID 与数据文件 EB 3 头 PE 数据

B5 WRRO 日志 ID 与文件 E4 4 头表面缺陷日志

B8 TestClamp 数据 ID EC 4 头 PE 数据

35 RP 清单文件\固件区缺陷列表 E5 5 头表面缺陷日志

46 用户 ARCO 文件 ED 5 头 PE 数据

B8 SPT 传递文件 F0 6 头表面缺陷日志

108 IBI 包 F2 6 头 PE 数据

E0 0 头表面缺陷日志 F1 7 头表面缺陷日志

E8 0 头 PE 数据 F3 7 头 PE 数据

8000-805B 生命周期模拟测试日志

6.3 西数硬盘固件故障表现及分析

6.3.1 固件区模块损坏故障

如果硬盘起转很久(超过 1 分钟)还没有就绪,或者就绪但执行任何命令都报 ABRT

错误,抑或无法正确读取硬盘 ID 或者识别为工厂别名,都有可能是固件区损坏。固件区

损坏分为软件损坏与物理损坏两种情况。由于写固件区模块是两份拷贝都写,软故障就表

现为,该模块两份拷贝同时出错。有时由于硬盘表面损坏(刮擦、划痕等),例如磁头突然

触到盘面时。此时模块损坏表现的不规则,且硬盘经常能够通过从备份拷贝中读取固件信

第 6 章 西数硬盘固件特点及其故障分析

159

息,从而继续正常工作。当然也可能是磁头故障,表现为用故障头读取固件信息出错,换

另一个头读取则正常。

要恢复固件区模块,需要对各模块进行检测,判断损坏模块的类型、对硬盘及用户数

据的重要性,然后制定恢复策略。固件区某些模块对于硬盘操作与用户数据是唯一的,因

此在操作硬盘之前务必要有备份硬盘资源(Flash ROM,固件区模块,固件区磁道)的习

惯,这样在未来某些恢复操作出错时便于回滚。对损坏模块的修复切记只覆写损坏的模块,

不要用另一块硬盘的拷贝全部覆写固件区(所有磁道或者所有模块)。

6.3.1.1 固件区物理损坏

� 模块操作:经典西数架构 41h,Marvell 架构 01h。

� 症状:模块损坏表现的不规则,且硬盘经常能够通过从备份拷贝中读取固件信息。

固件区某关键模块所在扇区发生物理损坏时,可以编辑模块表~Dir,修改该模块的起

始位置信息,将其偏移地址更改到未格式化的磁道或者硬盘基本不使用的模块所在位置。

有些模块的长度设置是冗余的,而物理损坏处于模块的末端,则可以通过修改模块长度来

解决此问题(修改长度后需要重新计算该模块的校验和)。

6.3.1.2 配置模块损坏

� 模块操作:经典西数架构 42h,Marvell 架构 02h。

� 症状:硬盘能够就绪,但返回的是工厂别名“WDC-ROM SN# XYZ----”。

硬盘配置模块包含了硬盘型号、序列号等信息,此模块发生故障时,可以参考其他好

盘的模块判断哪些位发生紊乱并进行修正。也可直接用相同固件版本硬盘的完好模块替换。

6.3.1.3 固件区格式化故障

� 模块操作:经典西数架构 41h,Marvell 架构 01h。

� 症状:硬盘型号、序列号识别为乱码。

硬盘型号、序列号识别为乱码大多是电缆接触不良引起的。此时可以正常做数据镜像,

但全是错的。有时由于误操作或者维修人员操作不当,轻率地对固件区进行清空或格式化,

也会显示此症状。此时应先将相同固件版本硬盘的模块表~Dir 写入故障盘,实现对固件

区的正常访问后再做进一步处理。

6.3.1.4 ATA overlay故障

� 模块操作:经典西数架构 02h,Marvell 架构 11h。

� 症状:硬盘型号、序列号识别为工厂别名或者

ID为空,如图 6-18所示。

ATA overlay损坏时,直接用相同版本的模块替换即

可。但往往很难找到相同的版本。此时就只能使用其他

版本的固件来还原它(例如从 PC-3000 数据库中找到一

些模块)。替换不同版本模块是可行的但并不是任何情况

都适用。某些版本可能与数据模块不匹配,就可能导致

图 6-18 硬盘 ID识别错误

深度剖析——硬盘固件级数据恢复

160

访问数据区时会返回 ABR 错误。可以通过重建译码器来检验是否匹配。如果重建出错,

则数据结构不匹配。

由于 ATA overlay 模块在维修中被修改的可能性比较大,所以若接到的故障盘之前被

其他人员处理过,则首先不要轻易认为此模块的版本号是硬盘固件的版本号。

6.3.2 ROM 故障

西数硬盘 ROM芯片本身出现故障的情况相对稀少。但 Flash ROM还是会发生数据损

坏或者清除的情况。最常见的 ROM模块故障一般发生在更换电路板之后。ROM模块的固

件版本必须与盘面固件区固件版本完全一致。备件板的 ROM 与故障盘体不兼容可能导致

硬盘读写效率下降,运行变慢,甚至不稳定,或者初始化时敲头。

经典西数架构的 ROM故障处理方法较为简单,就是替换为兼容的 ROM固件版本。如

果硬盘开始工作并报告就绪,则Flash ROM可以通过PC-3000西数程序的“Work with ROM”

选项来读取。如果硬盘无法就绪,则只能在Kernel模式读取ROM内容,如果无法进入Kernel

模式则需焊下芯片用 ROM编程器修改。

对于Marvell 架构硬盘,正确启动硬盘需要 ROM的适配参数模块、磁头映射图模块正

确,以及 ROM版本与盘面固件区 overlay版本相同。具体故障处理方法如下:

步骤 1:安装兼容的电路板。

恢复原始 ROM 内容,首先需要安装同家族的一块好板。可以通过电路板标签上的编

号确认选择了正确的电路板,如图 6-19所示,画线部分需相同。安装好兼容的电路板,上

电,启动 PC-3000程序,有四种可能的结果。

图 6-19 备件板兼容性选择

� 结果 1:硬盘无法正确识别,返回工厂别名或者硬盘 ID为空。但电机并不停转,

程序启动后能够读取~Dir模块(启动日志显示为“SA dir reading ……OK”)。此

时可以跳到步骤 2。

� 结果 2:硬盘无法正确识别,返回工厂别名或者硬盘 ID为空。但电机并不停转,

程序启动后读取不到~Dir模块(启动日志显示为“SA dir reading ……unknown

error. Code(0)”)。此问题可能是由于适配数据不匹配太严重,也可能是由固件与

盘体内磁头控制器芯片不兼容导致(这种情况很稀少,实际案例只在 McKinley

第 6 章 西数硬盘固件特点及其故障分析

161

家族遇到过)。此时重新写一份 ROM拷贝可能解决问题。写 ROM后重新上电查

看反应。如果依旧,则重试其他 ROM,直到硬盘启动时变为结果 1或结果 4。

� 结果 3:硬盘无法正确识别,返回工厂别名或者硬盘 ID为空,且电机停转。此

问题可能是因为 ROM 模块 ID=0Ah 中的磁头映射图与实际配置不符所致。例

如可能硬盘使用了物理磁头 0,但所装电路板配置的物理磁头是 1 头。硬盘启

动时就会表现为结果 3。此时可以尝试在程序的 Kernel 模式编辑 ROM 中的磁

头映射图。

另一种原因可能是由于磁头组件的前置放大芯片损坏(此原因出现频率最高。经常电

路板损坏伴随着盘体内电子器件损坏:磁头控制器芯片,主轴电机线圈,音圈等等)。此芯

片损坏可以通过两次轻微敲击声,即主轴电机的两次启动尝试来判定。反之,如果是磁头

卡在盘面或主轴电机抱死(例如 2.5寸盘中主轴电机上面的轮箍可能因盘盖凹进去而卡住),

则听到的是 5次敲击声。解决此问题需要更换磁头组件。

� 结果 4:如果很巧,硬盘启动时无明显故障,并能访问用户数据。那就说明 ROM

版本匹配,所有磁头正常,与原磁头映射图相同,且适配参数与原配置相近,。此

时可不必恢复 ROM直接跳到步骤 2。

步骤 2:读取 ROM相关的固件区模块。

首先读取固件区模块 0102h,0103h,0105h,0109h(读取时选择 Modules reading by ID,

而不是Modules reading by ABA),如果模块成功读取,则跳到步骤 3。任何一个模块读取

失败都无法重组一个好的 ROM,可以再用其他的 ROM进行尝试,也可按表 6-7所示的方

法对读取失败的模块进行修正。修正后执行步骤 3。

表 6-7 ROM相关固件区模块修正

模 块 校正方法

ID=

0109h

可用相同固件版本的硬盘的对应模块代替。可以通过查看 Overlay 模块(ID=11h,12h,14h,15h,17h,

19h,21h,29h)的头部来确定固件版本。例如下面是 Overlay 模块 ID=14h 的头部,版本号为 005C0039,用

相同版本固件的 0109h 模块代替即可。

ID=11h 不能作为判断依据,因为它经常会被替换为其他版本。

ID=

0102h 可用磁头映射图相同的硬盘的对应模块代替

ID=

0103h

此模块对硬盘是唯一的因此无法完全校正。不过,它可以用相同家族磁头数相同的型号的对应模块代替,

恢复 ROM 后如果用户数据区读取性能很差,则还需尝试选择更合适的 47h 模块。或者从固件区模块 40h 中

查找对应数据进行修改

ID=

0105h 通常可用相同家族任意硬盘的对应模块代替,因为固件区对硬盘启动很重要,通常很少包含隐藏缺陷

ID=

0107h 可用相同家族任意硬盘的对应模块代替

步骤 3:重建 ROM。

使用 Test→Service information→Work with ROM→ROM build from SA data组合这些模

块。程序会打开如图 6-20所示的对话框提示选择配置文件夹或者数据库。选择步骤 2拷贝

出的重建 ROM 所需模块的位置。组合结果将保存在该配置下的“ROM-Bulid”子目录。

深度剖析——硬盘固件级数据恢复

162

此时可以不执行步骤 4直接重写 ROM(但此功能仅在 Kernel模式下可用)。

图 6-20 用固件区数据重组 ROM

步骤 4:写入重组的 ROM及其模块。

分两步进行:保持硬盘上电状态,先写 ROM,再写 ROM 模块。使用 Test→Service

information→Work with ROM 菜单下的Write ROM与Write ROM modules分别执行 ROM

与 ROM模块的写入。

6.3.3 G 表模块故障

如果西数硬盘上电后并无异响,在扇区检测时,可以看到有大量坏道,但坏道是分散

的,则有可能是 G表故障。

该模块对硬盘与用户数据并不关键,因此修复只需要简单清空,通过 Defect list—Erase

Defect list—Erase defect list—G-list来完成。如果模块头损坏,需要首先从相同家族的任一

硬盘拷贝一份进去再清空。

6.3.4 P 表模块故障

P 表模块本身并不影响硬盘工作与用户数据的完整性,但译码器损坏后只有通过原生

P表才能恢复用户数据的访问。这样 P表就成为关键模块了。如果译码器模块与 P表模块

都发生损坏,则只能首先修复 P表。

第一种方法是,在熟悉 P表模块结构的前提下,手工分析模块,尝试重新生成 P表模

块。这一方法的原理是,P 表模块占用的扇区数很大,但实际上 P 表只占用很小的空间。

第 6 章 西数硬盘固件特点及其故障分析

163

因此 P 表模块校验错误很有可能是 P 表完好,后面空白区域损坏。用 16 进制编辑器可以

很容易识别此类错误,空白区域应为全 0,故包含 00以外数据的扇区就是 P表模块的坏扇

区。如果 P表模块的损坏部分不涉及 P表本身,则选中 P表所占的区域,使用 Hex editor

插件中的“另存为缺陷表”As defect list命令即可提取整个完好的 P表。如果 P表本身发

生损坏,则可以通过两份拷贝对比组合修正模块。组合读取尽管可以恢复毁坏的部分,但

也不可能完全恢复 P 表,当然译码器也因此不能完全恢复,但可能恢复的部分数据对于

数据恢复已经够用了。一旦使用“另存为缺陷表”命令,选中的 P 表区域会被拷贝到缺

陷列表编辑器中,然后可以执行 Write defects into P-list of the HDD命令将此缺陷表写到

硬盘中。

第二种方法是,利用自检日志恢复 P表。在生产硬盘时,所有自检程序发现的缺陷都

会加入日志作为最后生成 P 表的基础。PC3000 西数程序专门提供了这一功能:Defect

list—Defect list editing—Defects log,这里日志中的缺陷表会被拷贝到缺陷表编辑器中,然

后执行Write defects into P-list of the HDD即可恢复 P表模块。但由于工厂自检与生成 P表

后还可能执行额外的表面测试,发现的缺陷也会在出厂前添加到 P表并重建译码器。因此

这种方法恢复的 P表模块并不一定与发生故障时硬盘的 P表模块完全一致。

综上可见,第一种方法虽然复杂,但可以保证较高的成功率,第二种方法则只有一定

的成功概率。所以实践中必须在第一种方法失败时才去尝试使用第二种方法。要完全恢复

数据,必须使用正确的 P表重建译码器。

6.3.5 SMART 模块故障

SMART 模块发生故障时,硬盘通常能认盘,但识别型号和进行扇区操作的时间较

长(一般正常为 2~3 秒中,如果有问题的会长达 10~30 秒),在自检时一般会 SMART

报错。

所有 SMART 模块对硬盘运行及用户数据都不关键。任一 SMART 模块损坏时只需要

清空 SMART 即可。如果某些 SMART 模块还是坏的,则应当先从相同家族任一硬盘拷贝

一份进去再清空。

6.3.6 密码保护故障

硬盘有密码保护时,读取任何 LBA都会返回 ABR错误。

使用 PC-3000的“Erase Password”功能即可解决此故障。

6.3.7 译码器故障

硬盘工作时译码器故障时有发生。具体可能表现为硬盘从某一LBA开始一直显示UNC

错误,也可能表现为硬盘无法正常识别。要恢复对用户数据区的访问,需要重建译码器。

为保留用户数据,重建程序应当只使用 P表。

对于经典西数架构,有时会因为译码器的微程序代码模块 22h,23h损坏而无法执行

重建。此时需要从相同家族中找到某一型号拷贝一份相同版本的模块覆写。需要注意的

是,相同家族相同型号固件版本也相同的硬盘,有可能 22h,23h模块版本不同,那也是

不匹配的。

深度剖析——硬盘固件级数据恢复

164

6.3.8 其他固件故障

许多用户发现,刚购买的西数绿盘,安装系统反应极慢。这可能是因为使用的是较新

型号西数硬盘,采用了高级格式(Advanced Format)技术。

传统硬盘的扇区大小为 512字节,这是其数据区的大小,实际上每个扇区在 512字节

后还有部分空间用来储存 ECC 信息。采用 AF 技术的硬盘每个扇区按照 4KB 大小的数据

块进行安排,客观上减少了 ECC编码量,提高了存储空间的利用效率。由于操作系统的兼

容性问题,在Windows8之前的系统是不能识别原生 4KB硬盘的。所以硬盘制造商设计了

4KB 转 512 字节的软件适配层,如图 6-21 所示,以便现有操作系统使用。这种具有 512

字节模拟的 4kB扇区硬盘叫做 512e硬盘。

图 6-21 软件适配层

在操作系统中,每个物理扇区被识别为 8个逻辑扇区。为了写入单个逻辑扇区,硬盘

需要将整个 4KB 物理扇区读取到缓存中,并在缓存中修改 512 字节的逻辑扇区,然后再

将整个 4KB 的物理扇区写回到盘面替换旧数据块。这一过程称为“读取-修改-写入”。可

以看出 512e硬盘属于过渡性产品,读写效率要低于原生 4KB扇区或者 512B扇区的硬盘。

其软件适配层的设计并不成熟,所以就产生了前面提到的问题。

为解决此问题,只能通过升级固件的方式解决。

6.4 西数硬盘固件维修案例

6.4.1 备件磁头与 ROM 不兼容

我们现在接到一块西数 3.5英寸盘WD1600JS,看电路板的形状为 L形,应该为Marvell

架构。根据客户的描述,初步判断为磁头故障。到洁净间开盘后发现确实磁头有明显机械

损伤。故首先更换磁头,换头后接到 PC-3000上进行测试。

将硬盘接到 PC-3000的 ATA-1通道,上电,听到硬盘敲击三声后就绪,但有错误。状

态灯显示如图 6-22所示。

图 6-22 某故障盘状态灯显示

进入西数 Marvell 程序,单击 Autodetect 按钮,硬盘被识别为 Hawk 家族,如图 6-23

所示。

第 6 章 西数硬盘固件特点及其故障分析

165

图 6-23 硬盘家族正确识别

但启动程序后无法正确读取硬盘 ID,如图 6-24所示。

图 6-24 硬盘 ID无法识别

如图 6-25所示,查看硬盘 ROM中的磁头映射图。

深度剖析——硬盘固件级数据恢复

166

图 6-25 执行 ROM中磁头映射图编辑

发现该盘共有 4个物理磁头,分别为 0、1、2、3,仅激活 0头,其他头禁用,如图 6-26

所示。

图 6-26 仅激活 0头

修改成功后重新上电,发现并不敲盘,所以 0头良好。接下来依次测试 1头、2头、

3头,发现这些磁头均不会导致敲盘。因此可以判断,更换的磁头组件并无机械损伤,

只是 ROM中的适配参数与备件盘磁头组件兼容性太差,导致 4个头同时开启时无法成

功校准。

下面修改 RAM中的磁头映射图来骗过硬盘的校准程序,如图 6-27所示。

第 6 章 西数硬盘固件特点及其故障分析

167

图 6-27 执行 RAM中磁头映射图编辑

将 RAM中的磁头映射图由 0、1、2、

3 改为 0、0、2、3,即将物理 0 头作为逻

辑 0头与逻辑 1头,如图 6-28所示。

如图 6-29,修改成功后对硬盘进行软

复位。

图 6-29 硬盘软复位

保持上电状态,重新进入程序后就发现硬盘 ID能够正确识别了,如图 6-30所示。

此时再把 RAM中的磁头映射图重新改为 0、1、2、3,对硬盘固件进行备份后,对硬

盘重新上电。发现硬盘已经不敲盘了,修复成功。

图 6-28 用物理 0头做逻辑 0头与逻辑 1头

深度剖析——硬盘固件级数据恢复

168

图 6-30 硬盘 ID正常识别

6.4.2 ATA overlay 与 ROM 不匹配

我们现在接到一块西数 3.5英寸盘WD800BB,看电路板的形状为 L形,应该为Marvell

架构。根据客户的描述,曾经更换过电路板,初步判断为 ROM 故障,但客户声称原电路

板已经找不到。现接到 PC-3000上进行测试。

进入西数Marvell程序,单击 Autodetect按钮,硬盘被识别为 Sabre家族,但无法正确

读取硬盘 ID,如图 6-31所示。

图 6-31 家族正常识别但无法识别 ID

第 6 章 西数硬盘固件特点及其故障分析

169

首先查看模块表,如图 6-32所示。

图 6-32 执行模块表查看

发现模块表能够正确列出,如图 6-33所示。

图 6-33 模块表正确读取

选中模块 ID=11h,双击打开,如图 6-34所示,可以看到 ATA overlay的版本号为 0894C

(第一列显示)。

深度剖析——硬盘固件级数据恢复

170

图 6-34 11h模块显示版本为 0894C

但前面讲过,ATA overlay模块经常发生故障,在维修中被修改的可能性比较大,所以

不能轻易认为此模块的版本号是硬盘固件的版本号。打开另一模块 ID=14h验证,如图 6-35

所示,可以看到版本号为 0893C,可见 11h被替换的可能性很大。

图 6-35 41h模块显示版本为 0893C

再打开另一模块 ID=29h进一步验证,看到版本号也为 0893C,所以可以确认固件版本

第 6 章 西数硬盘固件特点及其故障分析

171

号应为 0893C。再去查看 ROM 版本号,可以看到为 05CFC,相差甚远。所以可以判断此

盘的故障由换板引起,导致 ROM与 ATA overlay不匹配,而 11h模块也被修改过,不能作

为固件版本号。

真正的固件版本号为 0893C,则查找匹配 ROM替换之,如图 6-36所示。

图 6-36 执行写 ROM

选择从数据库搜索 ROM,如图 6-37所示。

图 6-37 从数据库搜索备件 ROM

如图 6-38所示,搜索参数中 ROM版本号由 05.CFC改为 08.93C。

图 6-38 从数据库搜索备件 ROM

深度剖析——硬盘固件级数据恢复

172

从搜索结果中选择序列号最接近的型号即可,单击 OK按钮完成写入, 如图 6-39所示。

图 6-39 选择序列号最接近的数据

重新进入 PC-3000西数程序,如图 6-40所示,可以看到型号能够正确识别。

图 6-40 型号正确识别

进一步确认后,该硬盘修复成功。

第 7 章 富士通硬盘固件特点及其故障分析

7.1 富士通硬盘基础知识

富士通是企业级硬盘市场的佼佼者,拥有 SAS、FC 等接口控制技术,但其在个人消

费市场一直份额不大,其产品以低功耗、低噪音为特点。2001年富士通停产 3.5英寸的台

式机硬盘,专注移动市场与企业级硬盘,2009年富士通硬盘部门被东芝并购,企业级硬盘

生产线继续发展,消费级硬盘则彻底退出历史舞台。目前数据恢复遇到的富士通案例一般

只涉及 2.5英寸笔记本硬盘。

7.1.1 富士通硬盘家族简介

富士通生产的硬盘有 2.5英寸、3.5英寸两种尺寸,按照固件的结构可以划分为三个时

代:最早的硬盘家族主执行代码仅保存在 ROM中;从MHN2xxxAT 2.5寸盘与MPF3xxxAT

3.5寸盘的家族开始,富士通硬盘初始化时还需从盘面固件区额外加载 Overlay模块(3Dh

模块);从MHR2xxxAT家族开始,Overlay成为 2个模块:3D与 3E。

7.1.2 富士通硬盘命名规则

富士通产品以若干功能主线为代表:

- 2.5寸 <Hx> 面向便携式计算机市场,笔记本。

- 3.5寸 <Px> 面向桌面 PC;ATA接口。

- 3.5寸 <Ax> 面向服务器,数据存储系统以及工作站,SCSI接口。

富士通硬盘型号名称由四部分组成,如图 7-1所示。

图 7-1 富士通硬盘型号名称组成

① 型号

M:所有型号代码的首位字母皆为M,用来与 OEM产品区分。

P:有三种选择,如表 7-1所示。

表 7-1 型号第 2位含义

3.5 寸 SCSI A

3.5 寸 IDE P

2.5 寸 IDE H

F:指示产品的世代。

深度剖析——硬盘固件级数据恢复

174

② 尺寸

尺寸标识如表 7-2所示。

表 7-2 尺寸标识

2.5 寸 2

3.5 寸 3

③ 容量

数字乘以 100后指示格式化后的硬盘容量(MB)。

④ 接口

接口类型大致分为以下几种,如表 7-3所示。

表 7-3 接口标识

AT IDE, 4200/5400r/min, UDMA 100

AH IDE, 7200r/min, UDMA 100

MP Ultra 160, 68 pin

MC Ultra 160, SCA-2 80 pin

NP Ultra 320, 68 pin

NC Ultra 320, SCA-2 80 pin

FC FCAL-2

7.2 富士通硬盘固件结构及模块

7.2.1 固件结构特点

与其他品牌的硬盘相比,富士通硬盘固件结构的特点是“章法无序”。具体表现在:首

先架构上就可以分为三种;其次同一型号的固件版本也经常更新,互不兼容;即使相同型

号的硬盘,其盘体结构与固件的数据结构都有可能不同。富士通硬盘固件区的模块列表保

存在 ROM中,但由于设计混乱等问题,可能 ROM的模块表中包含某模块名,但实际上硬

盘中并不含此模块。所有这些特点,都使硬盘发生故障后的故障诊断与备件选择变得复杂

化。不过,混乱中还是有规律可言的。

富士通硬盘使用了“常驻”模块的概念,就是运行时常驻在主控 RAM 中的模块,它

容纳了固件操作所需模块的最小集合。在最早的硬盘家族中,硬盘的主执行代码仅保存在

ROM中。在一些家族中,ROM中添加了所谓适配数据,包含了每个盘独有的硬盘传动机

构微调参数,是访问固件区及数据区的关键参数。从MHN2xxxAT 2.5寸盘与MPF3xxxAT

3.5寸盘的家族开始,盘面固件区增加了 Overlay模块,所谓驻留微代码。初始化时,Overlay

模块会加载到硬盘 RAM,与 ROM一起组成硬盘的控制微程序。某些模块在 ROM与盘面

固件区都存在但数据并不相同,例如磁头映射信息(HS)、数据区译码表(DM),它们启

动时默认从 ROM加载,在初始化过程中硬盘将从盘面固件区拷贝同名模块替换它们。

下面为硬盘初始化的一般过程:

(1) 上电。

(2) 自我诊断一:

第 7 章 富士通硬盘固件特点及其故障分析

175

A. 数据总线与MPU地址测试。

B. 经内部数据总线读/写微电路寄存器测试。

C. 内部 RAM读/写测试。

(3) 主轴电机起转。

(4) 自我诊断二:

Buffer RAM读/写测试。

(5) 稳定主轴电机转速。

(6) 从锁闩释放磁头(磁头离开起停区)。

(7) 读取固件数据。

(8) 启动自校准。

(9) 设置自身为就绪状态(等待 ATA命令)。

7.2.2 硬盘空间组织

富士通硬盘逻辑空间组织示意图,如图 7-2所示。

图 7-2 富士通硬盘通用磁盘空间结构

硬盘使用“zone-sector writing”机理。整个硬盘空间被分为 12~15 个区域 Zone(对

于 MHR2xxxAT 及以后的家族,有 30 甚至更多的 Zone)。Zone 的开始柱面可能是物理 0

柱面(MHD2xxxAT等),也可能是非 0 柱面(MHR2xxxAT及以后的家族)。但不管怎样,

它都是逻辑 0 柱面。

固件区不包括在逻辑空间结构中,它表现为一组模块。这些模块含有硬盘的重要配置

表格,以及 Overlay 模块(MHN2xxxAT 及以后的硬盘家族)ID=3Dh(对于 MHR2xxxAT

及以后的硬盘家族,Overlay还包括模块 3Eh)中控制微处理器的驻留微代码。初始化时,

Overlay模块加载到硬盘 RAM,与 ROM一起组成硬盘的控制微程序。模块 3Dh头部标记

为ROM,此模块版本须与电路板ROM固件版本完全匹配。如果模块 3Dh没有加载到RAM,

则硬盘无法工作,读写硬盘固件区的命令也将无法起作用。

7.2.3 ROM 固件

7.2.3.1 芯片类型

富士通硬盘 ROM有 32pin、40pin两种封装。

几乎所有家族的富士通硬盘都使用 32pin的 ROM,图 7-3为其封装示意,表 7-4为引

深度剖析——硬盘固件级数据恢复

176

脚定义。

图 7-3 32p ROM封装示意

表 7-4 32p ROM引脚定义

符 号 功 能

A0-A16 17 位地址

DQ0-DQ7 8 位数据输入/输出

CE# 片选信号

OE# 输出使能

WE# 写使能

Vcc 5V 供电

VSS 地

NC 未连接

ROM的型号代码都印在芯片上。表 7-5列出了各硬盘家族与 ROM代码的对应关系。

表 7-5 各家族 ROM型号代码

硬盘家族 ROM芯片代码

MHK2xxxAT HN-12

MHM2xxxAT HN-13

MHN2xxxAT HN-14

MHR2xxxAT HRT

MHS2xxxAT HSB

MHT2xxxAT HTA

MPA3xxxAT PB10U

MPB3xxxAT PU11U

MPC3xxxAT PB12

MHD2xxxAT硬盘是唯一使用 40pin封装 ROM的家族,因此识别其电路板相当容易。

它的 ROM芯片上印有一 8位的字母数字代码。其封装示意如图 7-4所示,采用了 16位地

址线与 16位数据线。

第 7 章 富士通硬盘固件特点及其故障分析

177

图 7-4 40p ROM引脚示意

7.2.3.2 ROM数据结构

表 7-6显示了富士通硬盘 ROM的固件结构。

表 7-6 富士通硬盘 ROM结构

起始地址 长 度 用 途

00h 32 字节 关键词:©FUJITSU

20h 4 字节 固件版本

24h 4 字节 版本日期

28h 2 字节 保留

2Ah 1 字节 版本前缀

2Bh 1 字节 标识字节(适配数据的存在,磁头映

射信息,盘片映射)

2Ch 4 字节 ROM 数据校验和(包括适配数据但不

含头部)

30h 16 字节 家族名称的 ASCII 码

… … …

… … …

1FDE0h 512 字节 适配数据(校验和被调整为 0)(对

使用适配数据的家族)

1FFE0h 32 字节 关键词:©FUJITSU 1

注:仅对MHN2xxxAT及以后的硬盘家族。该关键词在早前硬盘家族不存在(该区域用 FFh码填充)。

ROM固件头部包括其版本号(FW),代码生成日期(Date),硬盘家族名(Family),

ROM校验和(CS)以及以 16进制存储的标识字节(Flags),图 7-5为 ROM中固件的头部

样例。

图 7-5 ROM头部样例

深度剖析——硬盘固件级数据恢复

178

对于含有 Overlay模块的家族,Overlay模块的版本与 ROM版本一致,且它的头部与

ROM 固件的头部也类似。Overlay 中不存在适配数据,根据 ROM 版本不同其长度也有所

不同。其结尾 32个字节包含关键词“©FUJITSU”。

ROM的主数据块包含了固件区的模块表(Module Table)。

7.2.4 标识字节

标识字节位于从 ROM开始算位移 2Bh处,包含 8位。这些标识位主要用作选择硬盘

上电后读取固件区所用磁头的编号以及其他用途。每位含义如下所示:

D7 - ROM中适配数据的存在标识,此位为纯粹信息位,标识适配数据是否存在。

D6,D5 - 硬盘数据加载所用磁头表。

D4 - 用途未知,通常=0。

D3 - 用途未知,通常=0。

D2 - 用途未知,通常=0。

D1,D0 - 硬盘盘片数量的二进制值。

在硬盘维修时一般只关注 D6,D5,D1,与 D0 位,其余位则可以忽略。具体每位含

义为:

D6,D5代表含义:

D6,D5=00:硬盘有两个头(可能是两个盘片,需看 D1,D0位情况),使用 0头。

D6,D5=01:硬盘为单头,使用 0头。

D6,D5=10:硬盘为单头,使用 1头。

D1,D0代表含义:

D1,D0=01:单盘片硬盘。

D1,D0=10:双盘片硬盘。

例如,如果一单盘片型号使用 0 头,且固件包含适配数据,则标识字节应为

10100001=A1h;如果同一型号使用 1头,则标识字节应为 11000001=C1h。

在硬盘维修时,如果故障盘原始 ROM损坏,更换同型号硬盘 ROM后仍无法加载,则

首先可以考虑标识字节与硬盘实际配置是否相符。

修改标识字节可以直接用 16 进制编辑器将 ROM 镜像打开后修改对应位,因为 ROM

的校验和信息只包含主数据,不包含 ROM头部。

7.2.3.4 ROM的读写

ROM的读写主要针对 Flash ROM。对于没有外置 ROM芯片的硬盘,至少写 ROM是

不支持的。

如果硬盘上电后能够就绪,则 Flash ROM可以通过 PC-3000的“work with ROM”功

能直接读取。如果无法就绪,则需要将芯片从电路板上焊下来,用 ROM 编程器读取。而

对于 MHM2xxxAT,MHN2xxxAT,MHT2xxxAT/AH,MPF3xxxAT以及 MPG3xxxAT家族

的硬盘,程序支持直接在 Kernel模式读取 ROM内容。

硬盘主控芯片内嵌 Kernel Code,该软件代码支持在没有盘体的情况下,直接读写

ROM,其执行机理为:主控访问 ROM时尝试计算其校验和,若不匹配,则初始化 Kernel

第 7 章 富士通硬盘固件特点及其故障分析

179

模式,提供对 ROM读写的访问。但多数情况下,使用 Kernel模式的情形是由于硬盘换了

备件板,ROM与盘体不兼容,硬盘无法就绪。此时电路板的 ROM固件其实正常(只是版

本不同),因此校验和当然会显示匹配,所以需要通过用镊子短接 ROM数据线来手工强制

进入 Kernel模式。大体过程如下:

(1) 将电路板从盘体卸下,接到 PC-3000 UDMA板卡与电源(电源必须关闭)。

(2) 用镊子短接 ROM芯片的其中两条 IO数据线。

(3) 启动 PC-3000程序,选择相应家族,操作模式选择 Kernel模式。

(4) 硬盘上电。电路板应该会立刻报告就绪(DRD,DSC指示灯变亮),移除镊子。

若没有就绪,则尝试短接其他 IO数据线重复步骤 2~4,直到就绪。

(5) 执行 ROM读写。

富士通硬盘 PCB安装在盘体上也可能切换到 Kernel模式。对于 3.5英寸盘,方法相当

简单,因为 ROM芯片焊在电路板的外侧。对于 2.5英寸盘,ROM芯片位于电路板内侧,

此时需要查找连接到 PCB外侧的 ROM数据线的测点。如图 7-6、图 7-7所示。

图 7-6 MHT2xxxAT硬盘切换到 Kernel模式

需短接的触点位置

图 7-2 MHT2xxxAH切换到 Kernel模式

需短接的触点位置

写 ROM时,硬盘电机停转,执行 ROM芯片编程,然后复位,电机起转,重校准,最

后硬盘报告就绪。如果由于某种原因写 ROM失败或者写 ROM后导致 ROM不可用,则主

轴电机将无法起转,并显示错误信息。

富士通硬盘的 Flash ROM芯片有很多类型,例如 SGS Thomson(M29F102BB),Sanyo

(LE28F1101T-40),等等。如果切换到 Kernel 模式遇到问题(一般是三洋芯片出问题),

可以在切换电路板到 Kernel 模式时尝试短接其他数据线。出现这个问题的可能原因是在

Flash ROM芯片参数识别上,这些参数对于调节程序进一步操作芯片可能要用到。

深度剖析——硬盘固件级数据恢复

180

7.2.4 固件区模块

7.2.4.1 模块目录获取

硬盘操作盘面固件区的模块是通过 ROM中保存的模块目录 module table来操作的。模

块表可以通过 PC-3000 富士通程序来获取。由于富士通在产品设计中出现的混乱,造成

ROM的模块表中可能包含某模块名,但盘面上实际上并不包含此模块。不过这些模块一般

都是一些无关紧要的模块,所以即使无法读取它们,也并不影响硬盘正常操作。这些模块

会在 PC-3000中列入该型号模块目录的黑名单。

打开 PC-3000富士通程序,程序会自动从所连硬盘的 ROM中获取模块表的有关信息。

富士通程序含有一个配置文件,该配置文件包含了硬盘 ROM 中关于模块表以及其他一些

表格的位置信息。如果程序能识别硬盘 ROM,则它将使用 ROM中保存的模块列表进行接

下来的固件区模块读写。

如果程序无法识别当前固件版本,会在启动时提示有关信息,并提供了分析硬盘 ROM

内容查找相应结构的功能。利用 PC-3000 可以读取 ROM 内容,从中找出所有检测到的可

能性,并由用户手动选择正确的参数。

图 7-3是搜索模块表的一个窗口示例。在对话框中首先单击“From beginning”按钮来

从偏移地址 0处搜索 ROM查找模块表,在找到一个模块后,单击“Next”按钮,会在 ROM

数据区中的下一个偏移地址处,查找和搜索条件相匹配的模块表。

图 7-3 在 ROM中搜索模块表

有时,由于 ROM 无法读取、ROM 中没有有效数据文件、没有找到模块表等原因,程

序无法找到关于模块目录的信息,则可以用 PC-3000富士通程序配置文件中的默认模块表来

尝试读取模块。利用程序选项会话窗口,可以对所选固件的参数或通用默认参数进行修改。

如 7-4 所示,修改参数时,“Black list”与“Offset”这些设置一般不要改。这些参数

只有在用现有程序遇到未知硬盘家族或者特殊 ROM 结构的时候才可能需要修改。由于富

第 7 章 富士通硬盘固件特点及其故障分析

181

士通硬盘已经停产,遇到特殊结构的几率相当小。

图 7-4 参数设置界面

如图 7-5所示,修改完参数后,单击 Load current按钮就可以加载默认模块表。

图 7-5 加载默认模块表

7.2.4.2 模块组成

研究固件区模块的组成首先是为数据恢复服务的。固件区模块损坏时只能通过用兼容

版本的固件副本覆写损坏模块来实现。但完全覆盖显然是很危险的,因为某些模块包含的

数据是对每个盘来说都是严格专有的,例如译码表,缺陷表等,这些模块对保护数据至关

重要,若想保留用户数据则不能覆写。其他模块则没那么重要,可以被覆写,有些模块建

深度剖析——硬盘固件级数据恢复

182

议从相同型号相同版本的固件拷贝,有些模块则可以从同品牌的任意匹配硬盘拷贝。

据统计,95%的固件模块损坏情况不是整个列表,而只是部分损坏。因此发生损坏时

应该根据损坏模块的重要程度制定相应的修复策略。对于每个硬盘独一无二的模块只能修

改而不能替换。

表 7-7显示了富士通硬盘常见模块的有关信息。

表 7-7 富士通硬盘常见模块

序 号 ID 名 称 长度/扇区数 重 要 性

1 01 DM 36 Ad

2 02 PL 16 Dd

3 03 TS 3 Ad

4 04 HS 1 B

5 05 FI 1 D

6 06 DT 16 Ad

7 07 SI 1 B

8 08 SN 1 B

9 09 1 C

10 0A 1 B

11 0B 1 B

12 0C SM 1 B

13 0D SU 1 B

14 0E CI 1 D

15 10 DM 4 B

16 11 SEQ 1 B

17 12 WTP 2 B

18 13 END 1 B

19 14 ECT 1 B

20 15 ERR 64 B

21 16 SVE 24 B

22 1D 3 B

23 1F REC 7 B

24 20 TA 8 B

25 21 TC 2 B

26 22 ADT 1 B

27 27 1 B

28 28 1 B

29 2A 32 B

30 2B 32 B

31 2C 2 B

32 2D FA 1 C

33 30 ZP 1 B

34 31 RE 8 C

35 32 WE 8 C

请注意表格中关于各模块的重要性特征。重要性标识符由以下变量组成:

A:基本模块,每个盘独一无二(不可用其他的盘代替)。

B:主要模块,一般同一家族硬盘是相同的(有时需要同型号)。

第 7 章 富士通硬盘固件特点及其故障分析

183

C:次要模块,可以直接清除(可以按标准模版写入)。

D:辅助模块,不影响固件启动或数据访问。

d: 影响数据读取。

s:影响硬盘启动。

r:自检/自还原程序调用。

组合后的结果为:

As:影响固件启动的唯一模块(例如适配数据)。

Ad:用户数据关键且唯一模块(例如译码器模块)。

B:硬盘启动时的工作模块(例如 Overlay 模块),这些模块对每个硬盘来说不是唯一

的,可以用其他固件版本相同硬盘的模块替换。

C:次要表格,可以清除。例如操作日志、SMART表等。

D:不影响硬盘正常操作。

Dd:辅助模块,不影响硬盘操作与用户数据完整性但参与其他关键模块的恢复。例如

原始译码表(可以用来恢复译码表)。

Dr:辅助模块,正常硬盘操作不需要,参与执行硬盘维护功能,例如 Selfscan以及类

似模块。

下面是固件区的几个典型模块。

(1) DM:硬盘数据区静态译码表

访问用户数据的关键且唯一模块,主要包含硬盘缺陷列表的静态部分,可以由 P 表

生成。

(2) DT:硬盘定位调整参数

访问用户数据的关键且唯一模块,它包含了硬盘物理空间、缺陷列表、逻辑空间之间

的链接关系,这部分参数是可以通过重建译码器来重新生成的。同时 DT 模块还包含了译

码器代码,这部分是可以用其他硬盘的相同代码替换的。

(3) TS:动态磁道(柱面)缺陷表

访问用户数据的关键且唯一模块,包含了关于磁道缺陷的动态列表。要想重建译码器

后能够正确读取用户数据,需要 TS模块中的数据有效。

(4) HS:磁头映射信息

包含了磁头数量及活动磁头的编号。对于MHT与MHV家族,该模块的数据对于每个

盘来说也是唯一的。

(5) PL:P表,硬盘出厂缺陷表

不影响硬盘工作与用户数据的完整性,但参与 DM 模块的恢复,因此也是“关键”

模块。

(6) TA:适配数据表

ROM中适配数据的一份拷贝。仅在有适配数据的家族中存在此模块。

(7) SN:SN,序列号

包含了硬盘序列号信息。

(8) FI:出厂信息

包含了硬盘生产过程中的相关信息。其中只有生产日期信息有一定参考价值。

深度剖析——硬盘固件级数据恢复

184

(9) CI:硬盘硬件信息

包含了硬盘盘体内各部件的信息,包括盘片、磁头、读写前置放大器 IC、主轴电机等。

(10) ZP:区域分配表

包含了硬盘逻辑空间的区域划分情况。

(11) SM:Master Password

硬盘的超级密码模块。一般为空。

(12) SM:User Password

硬盘的用户密码模块。通常清除硬盘密码锁可以通过改动此模块来实现。

(13) FA,WE,RE:log module

日志模块,用于记录硬盘的运行情况。

(14) 09h,0Ah,0Bh:SMART模块

这三个模块都没有标识符。分别代表的含义为,09h:当前属性值,0Ah:安全阈值,

0Bh:初始属性值。

(15) SI:逻辑参数

硬盘的逻辑参数模块,可以用同型号硬盘的模块替换。

需要注意的是,富士通硬盘的固件模块没有计算校验和,因此我们只能查看该模块头

部与长度是否正确,数据的正确与否无法判断。这一点与日立硬盘类似。

7.2.5 适配数据

MHM2xxxAT,MHN2xxxAT,以及MPG3xxxAT家族的硬盘用到了所谓适配数据。适

配数据是在通过伺服磁道刻写器、对伺服区进行写操作时,计算得出的传动机构微调参数,

包含了读取盘面伺服数据所需的具体参数。这些参数对每个盘都是唯一的,记录在 ROM

芯片与固件区模块 20h中。

对于这些家族,电路板损坏时不可简单地通过备件替换来解决问题。不兼容的适配数

据会导致磁头读写质量下降,硬盘读写变慢,或者读写不稳定,甚至上电后硬盘无法读取

伺服信息而导致敲盘。此时就需要进行原盘适配数据(ROM固件)的备份与替换。

如果适配数据发生损坏,硬盘将无法读取伺服数据模块,上电时发生敲盘。这种情况

下硬盘必须断电,以防进一步损坏盘面。此时只能尝试进行适配数据的手动调整。

对于MHM2xxxAT,MHN2xxxAT,

以及 MPG3xxxAT 家族,也并不是所有

的型号都使用适配数据。就目前来看,

实际上适配数据仅用在一些单盘片型号

硬盘中。是否使用了适配数据通过读取

该型号的 ROM固件即可查明。

PC-3000 支持适配数据的转移操

作,是通过菜单“Service information”

→“Work with SA”→“Work with adaptive

data”来实现的,如图 7-11所示。

这里“File type”决定了所选文件的

图 7-11 适配数据转移

第 7 章 富士通硬盘固件特点及其故障分析

185

格式与操作它所用的算法。“Path”代表实际文件路径。转移适配数据就是将包含适配信

息的数据块从源文件(source type指定的位置)拷贝到目标文件(destination type指定

的相应位置)。所谓数据块为 512字节长。对于“module file”与“adaptive data file”对

象类型,该数据块在文件开头偏移量为 0处,对于“ROM file”该数据块位于偏移量为

FDE0h处。

7.2.6 S.M.A.R.T 表

S.M.A.R.T表存放在盘面固件区中。硬盘利用 S.M.A.R.T机制对硬盘的磁头组件、温

度、盘片表面介质、主轴电机、内部电路等运行情况进行监控分析。可以用 “clear SMART”

命令,将所有属性值重置为初始值,但部分属性值除外。例如,缺陷数量只有在格式化

成功与重建译码器后才会重置,而主轴电机起转时间只要电源一上电就开始计算,无法

重置。

并不是所有的富士通硬盘都支持 S.M.A.R.T,例如早期的 MHD2xxxAT 家族。也并不

是所有支持S.M.A.R.T的硬盘都支持属性重置。重置属性值实际上就是将初始属性模块 0Bh

覆写到当前属性模块 09h。因此硬盘 S.M.A.R.T 发生紊乱时可以通过手工模块替换的方式

来完成属性重置。

7.3 富士通硬盘终端命令

终端命令是通过 COM口通信来完成的。

富士通硬盘设计了 COM 指令模式,但是目前还没有发现任何指令对数据恢复有实际

意义。通过 PC-3000进入终端模式,需连接硬盘到 PC-3000板卡并正确设置跳线,同时连

接 COM口通信线缆。富士通硬盘的终端通信波特率为 19 200 bps。

上电后,硬盘会向 COM输出提示信息“>>bootup from sa code”。这时,用户按住 Ctrl

键的同时,单击四次“[”键,终端就会输出提示信息“OK!”以及“>”命令行,这时用

户就进入了指令会话模式。

表 7-8列出了富士通硬盘的一些基本指令。

表 7-8 富士通硬盘终端指令

命令文本 描 述

/sa xx,yy 输出指定的模块内容,xx 代表模块 ID,yy 表示输出的扇区数

/sf ROM 操作指令

/m 输出指定的内存堆枝,单位为宇

/mm 输出指定内存堆拢的长度为 128 字节的内容

/wb 修改内存,单位为字节

/ww 修改内存,单位为字

/wl 修改内存,单位为双字

/baud 设置波特率

注意:请谨慎使用这些指令,有些指令可能会对硬盘造成损坏!

深度剖析——硬盘固件级数据恢复

186

7.4 富士通硬盘固件故障表现及分析

7.4.1 固件区模块损坏故障

固件区模块损坏的情况在富士通硬盘中相当普遍。这种情况下硬盘在计算机 BIOS 中

将无法识别。连接到 PC-3000并对硬盘上电后,程序提示无法获取硬盘 ID与 ABR错误。

要查找损坏的模块,需要首先测试固件区的数据结构,通过 PC-3000的模块表向导可

以方便的执行。运行菜单“Tools→utility extensions→Modules table”,可以直观地看到哪些

模块读取成功,哪些模块读取失败,模块头部是否与模块表中的名称匹配。报告还提供了

其他一些信息,在“importance”一栏可以看到模块的简要描述以及对硬盘的重要性(特别

是对数据访问的重要性)等等。向导还支持写指定模块,以及在程序数据库固件版本中查

找匹配固件。

图 7-12 是用模块表向导进行固件区结构测试的一个结果范例。图中绿色表示成功读

取,红色表示无法读取。

图 7-12 模块表检测结果图

系统模块损坏时,只能使用兼容版本的固件数据拷贝来覆写损坏模块。覆写之前务必

首先备份所有模块,以有撤销更改的可能。程序写模块时并不检测模块结构,因此覆写之

前必须保持高度谨慎,以防产生不可逆的毁坏。对模块每进行一步操作,都需要重新检测

一下固件区结构。

切忌用其他盘的信息覆盖故障盘的全部模块,因为某些模块对硬盘工作和用户数据相

当重要,不可从其他盘拷入,它们是每个盘独有的。恢复模块应先从恢复日志模块开始,

特别是先恢复高的标识符(例如,32h与 52h模块毁坏时,应当先恢复 52h模块)。因为硬

盘固件区问题常常出在日志模块上,其余模块读错误也都是因为它而引起。覆写它们就可

能使硬盘可以重新访问其他模块。

如果硬盘模块大面积损坏,包括 Overlay模块 3Dh(MHN2xxxAT及以后家族),则需

要且只能首先写模块到硬盘 RAM,测试正常后再写到盘面固件区中。

覆写模块后有时需要重置 SMART与重建译码表,在 7.4.2 节将进一步介绍。

第 7 章 富士通硬盘固件特点及其故障分析

187

7.4.2 ROM 模块故障

富士通硬盘 ROM芯片本身出现故障的情况相对稀少。但 Flash ROM还是会发生数据

损坏或者清除的情况。此时表现为硬盘没反应(没起转)或者硬盘运行错误。诊断此故障

需要读取 ROM芯片的内容并与参考值进行比较。如果硬盘开始工作并报告就绪,则 Flash

ROM可以通过 PC-3000富士通程序的“Work with ROM”选项来读取。如果硬盘无法就绪,

则只能在 Kernel模式读取 ROM内容(需要所选家族的程序支持该模式)或者焊下芯片用

ROM编程器读取。

最常见的 ROM模块故障一般发生在更换电路板之后。ROM模块的固件版本必须与盘

面固件区固件版本完全一致。备件板的 ROM 与故障盘体不兼容可能导致硬盘读写效率下

降,运行变慢,甚至不稳定,或者初始化时敲盘。

可通过 PC-3000富士通程序进行进一步诊断。启动后,程序首先读取硬盘 ROM头部,

识别固件版本,并且使用 ROM 中的硬盘配置表格(模块表,区域分配表,等等)调节硬

盘。如果读取 ROM失败,将显示以下信息:

ROM reading error encountered!

(ROM_Info: Information about ROM not loaded(….))

Initialize from file?

根据提示,如果选择“yes”,则程序会使用先前读取的 ROM拷贝加载到主控 RAM,

此时需要选择包含对应版本的 ROM 镜像(ROM 版本在盘体标签上可以查看)。如果选择

“No”,程序将使用默认参数。如果程序成功读取 ROM但无法识别(ROM不在支持版本

列表中),则会弹出如图 7-13 所示的对话框来查找模块表(并查找同家族 ROM 中的区域

分配表)。

图 7-13 ROM中查找模块表

深度剖析——硬盘固件级数据恢复

188

显示此对话框后,程序尝试从 ROM 镜像的开头查找所需表格。也可以用“From

beginning”按钮手工启动该步骤。如果检测到表格,程序会显示相应数据。搜索所需表格

时,硬盘 ROM 可能含有若干符合条件的区域(实践中还没有遇到存在若干可能表格位置

的情况)。使用“Next”按钮可以搜索所有可能的位移量。如果程序发现匹配搜索条件的新

区域,它将分析、显示数据并在对话框右边“Current offset”标签下面显示位移量。如果

“Next”尝试没有找到新的结果,程序也会给出相应的提示。从 ROM中读取数据结构后,

程序将从硬盘读取其配置表并检测所选型号物理参数与实际配置表之间的一致性。如果信

息匹配,程序才会进入 Normal 模式等待用户进一步操作,否则程序也会报错。这时就要

考虑执行 ROM的读取、修正与覆写。读写的具体注意事项 7.2.3.4 节已经介绍。

7.4.3 SMART 模块故障

并不是所有的富士通硬盘都支持 S.M.A.R.T,例如早期的MHD2xxxAT家族。SMART

模块发生故障时,硬盘通常能认盘,但识别型号和进行扇区操作的时间较长(一般正常为

2~3 秒中,如果有问题的会长达 10~30 秒),在自检时一般会 SMART报错。

利用 PC-3000的“Clear SMART”命令可以重置 SMART属性到初始值,但并不是所

有支持 S.M.A.R.T 的硬盘都支持属性重置。此时可以通过手工模块替换的方式来完成

SMART模块结构与属性的重置。

7.4.4 密码保护故障

硬盘有密码保护时,读取任何 LBA都会返回 ABR错误。

如果用户给硬盘设置了密码但不小心忘记了,可以在 PC-3000 富士通程序的“SA

structure test”功能中直接查看密码。

如果是由于操作系统启动失败、上电失败,或者硬盘密码被恶意病毒程序感染,则面

临清除密码保护的问题。这种情况下一般是因为部分或者全部密码被改成了不可打印的

ASCII字符(20h-7Fh范围之外的字符)。使用 PC-3000的“Erase Password”功能即可解决

此故障。

7.4.5 译码器故障

硬盘工作时译码器故障时有发生。具体可能表现为硬盘从某一LBA开始一直显示UNC

错误,此种情况通常是因为 DM 译码器模块部分毁坏,但能够读取。也可能表现为硬盘无

法识别,此时 DM模块无法读取。要恢复对用户数据区的访问,需要重建译码器。此外,

如果 DM模块无法读取,则在修复 DM模块之前,首先要使它能够被读取。

利用 PC-3000富士通程序可以完成重建译码器的操作。该功能的原理是以 P表为基础

(从 PL模块获取),恢复译码器表格的静态部分(DM模块),因此要保证盘面固件区存有

硬盘原始缺陷表的 PL 模块,并且该模块能够被读取且结构有效。同时需要注意,硬盘译

码器表除包含静态部分外还包括动态部分(TS 模块),实现译码器的完全恢复还需要 TS

模块中的信息有效。进行任何操作之前,要有一个良好的习惯,那就是尽可能备份所有固

件模块。

如果包含硬盘译码器代码的 DT 模块也发生损坏,则首先需要用兼容硬盘 DT 模块的

第 7 章 富士通硬盘固件特点及其故障分析

189

替换损坏模块后,才能继续执行译码器重建工作。

7.5 富士通硬盘固件维修案例

7.5.1 硬盘解密实例

我们现在接到一块 2.5英寸富士通硬盘MHV2100AH,容量为 100 GB。初步诊断为磁

头损坏,洁净间换头后,接入 PC-3000进行测试。

如图 7-14所示,进入富士通程序,程序自动识别为MHV2xxxAT/AH家族,但支持列

表中无此型号。

图 7-14 富士通程序启动界面

启动程序后,显示“Security-Locked HDD”信息,如图 7-15所示,说明硬盘设有密码。

图 7-15 程序检测硬盘被锁定

深度剖析——硬盘固件级数据恢复

190

执行菜单“Service information”→“Work with Service area”→“Security subsystem”

→“Reset Passwords”,如图 7-16所示。

图 7-16 执行密码复位

如图 7-17所示,提示重置密码失败,并显示信息“Erasing User Password(Terminal)”。

可见该富士通硬盘解密需要用到 COM口。

图 7-17 程序提示使用 COM口

将硬盘与 COM口相接后,重试,清除密码成功。

7.5.2 特殊版本 ROM 实例

我们现在收到一块 2.5英寸富士通硬盘MHR2020AT,容量为 20GB。接到 PC-3000上

进行测试。

第 7 章 富士通硬盘固件特点及其故障分析

191

如图 7-18所示,程序能自动识别硬盘的家族与型号。

图 7-18 富士通程序启动界面

但是系统提示程序数据库中没有此固件的信息:“DB contains no information about this

FW”,如图 7-19所示。

图 7-19 系统提示数据库不含此固件

读取 ROM完毕后,自动获取到模块表,并弹出如图 7-20所示对话框,可以直接单击

“Ok”按钮确定。

深度剖析——硬盘固件级数据恢复

192

图 7-20 在 ROM中搜索模块表

系统提示将此版本 ROM中的模块表信息保存到固件数据库中,如图 7-21所示。

图 7-21 程序提示备份该 ROM固件信息

根据提示,打开菜单“Tools”→“Options”,如图 7-22所示。

第 7 章 富士通硬盘固件特点及其故障分析

193

图 7-22 打开程序选项

在弹出的设置对话框中,可以看到 General标签下有“Fujitsu HDD 2.5″/3.5″”按钮,

单击它,如图 7-23所示。

图 7-23 设置对话框

程序自动识别出当前固件版本为 01.70BD,并且识别出了模块 ID 黑名单(模块表中有

但固件区实际没有该模块),单击 Save Properties 即可保存该版本的固件参数,如图 7-24

所示。

深度剖析——硬盘固件级数据恢复

194

图 7-24 保存 ROM结构信息

第 8 章 东芝硬盘固件特点及其故障分析

8.1 东芝硬盘基础知识

东芝是笔记本硬盘研发的鼻祖之一,也是小型化硬盘市场的领导者。其一直致力于 2.5

英寸以下硬盘的研发设计,因此在硬盘降低功耗与提高面记录密度方面都有着技术上的优

势。东芝是业界第一家将垂直记录技术商业化的公司,而且是世界最小硬盘(0.85 英寸)

吉尼斯纪录的保持者。在并购富士通硬盘部门之后,东芝也将产品线扩展到了 3.5 英寸企

业级硬盘。目前作为三足鼎立中的一足,东芝成为机械硬盘领域的最后一家日本厂商。

8.1.1 东芝硬盘家族简介

东芝的 PC硬盘尺寸有 2.5英寸与 1.8英寸,主轴转速有 4200转、5400转、7200转,

产地有日本、中国与菲律宾,接口有PATA与SATA,对应 1.8英寸盘为LIF-PATA与LIF-SATA

接口(Low-insertion Force,低插入力)。

8.1.1.1 2.5英寸盘

东芝 2.5英寸盘主要型号如表 8-1所示。

表 8-1 东芝 2.5英寸盘主要型号

家 族 型 号 容量,GB 盘 片 数 磁 头 数 主轴转速,RPM 缓存大小,KB 每扇区字节数

14GAP MK1214GAP 12 2 4 4200 512

16GAP MK1016GAP

MK2016GAP

10

20

1

2

2

4 4200 512

17GAP

MK1017GAP

MK1517GAP

MK2017GAP

MK3017GAP

10

15

20

30

1

1

2

2

2

2

4

4

4200 512

18GAP MK2018GAP

MK4018GAP

20

40

2

2

4

4 4200 512

18GAS

MK2018GAS

MK3018GAS

MK4018GAS

20

30

40

1

2

2

2

4

4

4200 512

21GAS

MK3021GAS

MK4021GAS

MK6021GAS

30

40

60

1

2

2

2

3

4

4200 2048 512

23GAS MK2023GAS 20 1 2 4200 2048 512

25GAS

MK3025GAS

MK6025GAS

MK4025GAS

MK8025GAS

30

60

40

80

1

1

2

2

2

2

4

4

4200 8192 512

深度剖析——硬盘固件级数据恢复

196

(续表)

家 族 型 号 容量,GB 盘 片 数 磁 头 数 主轴转速,RPM 缓存大小,KB 每扇区字节数

31GAS MK1031GAS 100 2 4 4200 8192 512

33GAS MK1233GAS 120 2 4 4200 8192 512

19GAX MK3019GAX

MK4019GAX

30

40

2

2

3

4 5400 512

26GAX

MK4026GAX

MK6026GAX

MK8026GAX

40

60

80

1

2

2

2

4

4

5400 512

29GAC MK3029GAC

MK3029GACE30 1 2 4200 8192 512

32GAX

MK4032GAX

MK6032GAX

MK8032GAX

MK4032GSX

MK6032GSX

MK8032GSX

40

60

80

40

60

80

1

2

2

1

2

2

2

3

4

2

3

4

5400 8192 512

34GAX

MK6034GAX

MK1234GAX

MK6034GSX

MK1234GSX

60

120

60

120

1

2

1

2

2

4

2

4

5400 8192 512

35GSS MK2035GSS 200 2 4 4200 8192 512

36GAC MK4036GAC

MK4036GACE40 1 2 4200 8192 512

37GSX

MK6037GSX

MK1237GSX

MK8037GSX

MK1637GSX

60

120

80

160

1

2

1

2

2

4

2

4

5400 8192 512

46GSX

MK8046GSX

MK1246GSX

MK1646GSX

MK2546GSX

80

120

160

250

1

1

2

2

2

2

3

3

5400 8192 512

49GSY

MK8049GSY

MK1249GSY

MK1649GSY

MK2049GSY

80

120

160

200

1

2

2

2

2

3

4

4

7200 16384 512

50GAC

MK4050GAC

MK8050GAC

MK8050GAC

40

80

80

1 2 4200 8192 512

51GSY

MK8051GSY

MK1251GSY

MK1651GSY

MK2051GSY

80

120

160

200

1

2

2

2

2

3

4

4

7200 16384 512

52GSX

MK8052GSX

MK1252GSX

MK1652GSX

MK2552GSX

MK3252GSX

80

120

160

250

320

1

1

1

2

2

1

2

2

4

4

5400 8192 512

第 8 章 东芝硬盘固件特点及其故障分析

197

(续表)

家 族 型 号 容量,GB 盘 片 数 磁 头 数 主轴转速,RPM 缓存大小,KB 每扇区字节数

53GSX

MK1253GSX

MK1653GSX

MK2553GSX

MK3253GSX

120

160

250

320

1

1

2

2

2

2

4

4

5400 8192 512

54GSY

MK8054GSY

MK1254GSY

MK1654GSY

MK2554GSY

MK3254GSY

80

120

160

250

320

1

1

1

2

2

1

2

2

4

4

7200 16384 512

55GSX

MK1255GSX

MK1655GSX

MK2555GSX

MK3255GSX

MK4055GSX

MK5055GSX

120

160

250

320

400

500

1

1

1

2

2

2

1

2

2

4

4

4

5400 8192 512

56GSY

MK1656GSY

MK2556GSY

MK3256GSY

MK3258GSY

160

250

320

500

1

1

2

2

2

2

4

4

7200 16384 512

58GSX MK4058GSX 400 2 4 5400 8192 512

59GSX

MK1659GSX

MK2559GSX

MK3259GSX

MK5059GSX

MK6459GSX

MK7559GSX

MK1059GSX

160

250

320

500

640

750

1000

1

1

1

2

2

2

2

1

2

2

4

4

4

4

5400 8192 512e1

59GSM MK7559GSM

MK1059GSM

750

1000 3 6 5400 8192 512e

60GSC

MK1060GSC

MK1060GSCX

MK2060GSC

100

100

200

1 2 4200 8192 512

61GSY

MK8061GSY

MK1661GSY

MK2561GSY

MK5061GSY

80

160

250

500

1

1

1

2

2

2

2

4

7200 16384 512

63GSX MK3263GSX 320 2 3 5400 8192 512

65GSX

MK1665GSX

MK2565GSX

MK3265GSX

MK5065GSX

MK6465GSX

160

250

320

500

640

1

1

1

2

2

2

2

2

4

4

5400 8192 512

76GSX

MK1676GSX

MK2576GSX

MK3276GSX

MK5076GSX

Mk6476GSX

160

250

320

500

640

1

1

1

2

2

2

2

2

4

4

5400 8192 512

注 1:512e是表示具有 512字节模拟的 4KB扇区,与原生 4KB扇区相区分。512e的硬盘可以在Windows8之前的操作系统使

用,但使用效率低于Windows8。原生 4kB硬盘不能在早前的操作系统使用。

深度剖析——硬盘固件级数据恢复

198

8.1.1.2 1.8英寸盘

东芝 1.8英寸盘主要型号如图 8-2所示。

表 8-2 东芝 1.8英寸盘主要型号

家 族 型 号 容量,GB 盘 片 数 磁 头 数 主轴转速,RPM 缓存大小,KB

03GAL MK1003GAL

MK2003GAL

10

20

1

2

2

4 4200 512

04GAL MK1504GAL

MK3004GAH

15

30

1

2

2

4 4200 2048

04GAL MK2004GAL

MK4004GAH

20

40

1

2

2

4 4200 2048

06GAL MK2006GAL 20 1 2 4200

07GAL MK4007GAL

MK8007GAH

40

80

1

2

2

4 4200 2048/8192

08GAL MK2008GAL

MK4008GAH

20

40

1

2

2

4 4200 2048

08GAL MK3008GAL

MK6008GAH

30

60

1

2

2

4 4200 2048

09GAL MK4009GAL

MK8009GAH

40

80

1

2

2

4 4200

8192

2048/8192

11GAH MK1011GAH 100 2 4 4200 8192

14GAH MK1214GAH 120 2 4 4200 8192

22GAA MK6022GAA

MK8022GAA

60

80 2 4 4200 2048

25GAL MK8025GAL 80 1 2 4200 2048

28GAL MK6028GAL 60 1 2 4200 2048

29GSG MK1629GSG

MK2529GSG

160

250

1

2

2

4 5400 8192

33GSG

MK1633GSG

MK2533GSG

MK3233GSG

160

250

320

1

2

2

2

4

4

5400 16384

35GSL MK1235GSL 120 1 2 4200 8192

39GSL

MK1639GSL

MK2039GSL

MK2239GSL

160

200

220

1 2 4200

8.1.2 东芝硬盘命名规则

8.1.2.1 型号命名

东芝硬盘型号名在硬盘标签上所处位置已经在图 8-1中标出。

型号命名遵守格式:MKxxyyABC,其中:

MK是MK系列所有型号共有的前缀。

Xx=容量,如果是MAx:14=1.4GB,21=2.1GB,64=6.4GB,依此类推。

如果是 GAx:10=10GB,18=18GB,40=40GB,依此类推。

第 8 章 东芝硬盘固件特点及其故障分析

199

图 8-1 东芝硬盘外壳

Yy=硬盘研发的代数,这两个数字相同的硬盘证明采用相同的技术标准与规范,这两

个数字组成的阿拉伯数字越大,代表级别越新。

01,03,05=MR(若为 1.8英寸盘按则为 GMR)

02=TFH(若为 PCMCIA接口则为 GMR)

04,06,10,12=DSMR

07=垂直记录(1.8英寸盘)

08=新形式柔性接口插座 New form factor,flex foil interface connector(1.8英寸盘)

09,11,14,15,16,17,18,19,21,23,25等=GMR

注:MR=Magneto-Resistive磁阻磁头

TFH=Thin Film薄膜磁头

GMR=Giant MR巨磁阻磁头

DSMR=Dual Stripe MR 双带磁阻磁头

A=硬盘容量的计量单位

目前通常为“G”,表示硬盘的容量用 GB表示,如果出现M,则表示该硬盘用MB表

示容量。

B=接口类型

A=ATA

L=Low power

P=PCMCIA(1.8英寸盘)

S=SATA

C=硬盘厚度以及主轴转速等参数

C= 自动的

N= 19mm

T= 8.45mm

深度剖析——硬盘固件级数据恢复

200

V= 12.5mm

M=12.5mm

F= 6.35mm

P= 9.5mm

A=5.0mm(IPOD专用)

L= 5.0mm(1.8”)

G=8mm,Micro SATA接口(1.8”)

H= 8mm(1.8”)

S=9.5mm,4200转(液态轴承)

X=9.5mm,5400转(液态轴承)

Y=9.5mm,7200转(液态轴承)

8.1.2.2 序列号

东芝硬盘序列号在硬盘标签上所处位置已经在图 8-2标出。

图 8-2 东芝硬盘序列号位置示意

序列号有若干参数:

MYxxxxxxx

M – 月份,1到 9月用 1到 9表示,10,11,12月分别用 x,y,z表示;

Y –年份尾号,2008-8,2010-0,2005-5;

其他数字包含关于制造工厂、生产线的编码信息,以及序列号本身。

8.1.3 最新型号

不同于传统的 MK系列,2011年东芝推出了型号名前缀为 MQ 的 MQ01 ABDxxx硬

盘,如图 8-3所示,作为下一代高密度硬盘的系列,其单片存储容量达 500GB。

第 8 章 东芝硬盘固件特点及其故障分析

201

图 8-3 MQ系列东芝硬盘

在西数收购日立的同时,东芝也获得了日立的部分资产,得以进入 3.5 英寸消费级硬

盘市场。2012年其推出的 3.5英寸 PC硬盘型号命名格式为 DT01ACAxxx与 DT01ABAxxx,

如图 8-4所示。

图 8-4 DT系列东芝硬盘

8.2 东芝硬盘固件结构及模块

8.2.1 固件结构特点

东芝硬盘可以获取的技术资料很少,而且它的固件架构与其他品牌的硬盘相比比较独

深度剖析——硬盘固件级数据恢复

202

特,因此业界对东芝硬盘的研究一直以来进展比较缓慢。

传统的硬盘固件通常设计为两部分,即电路板 ROM与盘面固件区(SA)。电路板上保

存的是一小部分启动代码和适配参数,每次硬盘上电以后,主控芯片首先加载 ROM模块,

然后由 ROM程序读取并加载盘面固件区的模块。这种固件结构的设计初衷在于,ROM的

存储量有限,且 ROM 中的内容不易更改。因此可以将固件微程序中基本固定的模块分离

出来存放在 PCB的 ROM中,而大部分固件模块则存放在成本较低的硬盘盘面上。但随着

技术的发展与电子元器件成本的降低,这种固件结构设计思想的合理性值得商榷。事实上,

东芝硬盘就不是这么做的,其大部分固件代码一直都储存在电路板上。

在东芝的固件架构中,硬盘工作所需的全部数据都存放在 PCB中,其中包括全部固件

微程序(盘面固件区并没有 Overlay)、译码表以及适配参数,其内容是唯一且不易修改的。

硬盘盘面固件区只包含 G 表、密码、S.M.A.R.T 模块以及一些其他不重要的模块,其内容

不是固定的,需要实时更新。这样的架构设计提高了固件的加载速度,有效的提高了硬盘

的工作性能,但同样也给硬盘维修和数据恢复带来了问题。由于 PCB上固件的唯一性与不

宜更改的特点,固件维修往往采用硬件置换的思路。但在老的家族中,存放硬盘工作所需

数据的 ROM是集成在主控芯片的MPU中的。新的家族普遍使用了外置 ROM芯片,但某

些 ROM芯片采用了转焊相当困难的 BGA封装,这都给东芝硬盘的固件级数据恢复带来了

困难。

8.2.2 固件读取方式

一般的硬盘都支持两种通信模式:ATA 模式与 COM 模式,且在硬件接口上也是独立

设计。多数品牌的硬盘都使用 ATA模式读取固件,这种模式的读取速率较快。有些厂家使

用 COM接口访问固件,但读取速率较慢。COM接口的通信速度与波特率相关,波特率越

大,传输速度越快,波特率越小,传输速度越慢。在新的硬盘中设计的 COM 模式通常允

许更改波特率,以提高传输速度。

研究行业内针对东芝的硬盘维修工具可以知道,通过 ATA模式与 COM模式都可以访

问东芝硬盘的固件,但 COM 模式的读取目前还不支持更改波特率,且两种模式下已知的

可以使用的指令还相当有限。

8.2.3 区域分配表

区域分配表保存在 ROM中。

为了让硬盘盘面存放更多的数据,使盘片的使用更有效率,现代硬盘都使用了划区机

制(Zoning)。每个写频率不同的环形空间称之为区域(Zones),一个硬盘大约有 15~30个

区域。一般的,靠近盘片外边缘(内径越大)的区域,磁头写频率也越高,以保证数据存

储的密度不发生明显降低。用户数据区域对于某一特定家族硬盘可能是定值也可能是自适

应的(AZL-- Adopted Zone Layout自适应区域分配)。对于使用自适应区域分配表的硬盘,

区域分配表对于每一个硬盘来说都是唯一的。在硬盘出厂时,每块硬盘的区域分配表都要

进行专门的计算。对于使用固定区域分配表的硬盘,每个区的磁道数、编号以及 SPT都是

固定的。这些参数是在型号设计时最优化计算得出的。同一家族不同型号可能使用不同厂

商的磁头、盘片,这些参数可能不同;同一型号硬盘也可能使用不同厂商的磁头,盘片,

第 8 章 东芝硬盘固件特点及其故障分析

203

区域分配表也有可能不同;但总体上这些硬盘的区域分配表是相对固定的,区域分配表相

同的硬盘我们认为其是兼容的。

东芝硬盘采用的是固定区域分配表,表格大小为 8 字节或 12 字节。在 PC-3000 东芝

硬盘程序中,用 0和 1标记区域分配表结构类型,0表示 8字节,1表示 12字节。

使用 PC-3000启动东芝硬盘程序后,可以通过“Test”→“Service information”→“Work

with service area”→“Zone allocation table”来读取东芝硬盘的区域分配表,如图 8-5所示,

在表格中可以看到各区的起始柱面(Beg Cyl)、结束柱面(End Cyl)、每个区的扇区数以

及 SPT(每磁道扇区数)。

从区域分配表也可以获取硬盘型号与固件的工厂版本号。获取的版本号与硬盘 ID 获

取的固件版本号不同,通常只有一个字母不同。

图 8-5 东芝硬盘区域分区表示例

8.2.4 配置页 CP

东芝硬盘的固件模块称为配置页(Configuration Page,CP),这些模块包含硬盘 ID、P

表、适配参数以及每个硬盘特有的其他适配数据。CP模块存放在 ROM中(DD模块除外)。

大多数 CP模块占用 1个扇区大小或不到一个扇区,因此配置页大小设置为 1个扇区大小,

其字节校验和附在模块尾部。每个 CP模块的最后一个非零字节就是其校验和。有些 CP模

块占用大于 1个扇区大小:AA,BB,DD。AA模块占用 3个扇区大小,BB模块可能占用

4或 16个扇区大小,DD模块可能占用 16或 32个扇区大小。对于不同的家族,CP结构与

大小都可能不同。

在 PC-3000东芝硬盘程序中,用 CPSet与 CPInfo对配置页进行分类。下面为一个东芝

型号的配置类型文件范例:

[F0]

Name=MK8051GSY

深度剖析——硬盘固件级数据恢复

204

Zone=1

CPSet=33,34,44,56,91,92,93,94,95,97,98,9A,9B,aa,bb,C1,CC,DD

CPInfo=AA,3;BB,4;DD,32

文件中各字段取值定义如下:

[F0] – 本节标题,接下来的值可以是 F1,F2,等等。

Name:型号或者家族名称。

Zone:区域分配表结构类型,0表示 8字节,1表示 12字节。

CPSet:大小为 1个扇区的配置页列表。

CPInfo:大于 1 个扇区的配置页列表,包括配置页编号及对应大小,例如,“AA,3”

意思是配置页 AA尺寸为 3个扇区。

利用 PC-3000 可以在用同型号备件盘替换电路板之后不转焊微处理器或者 ROM,而

只需要把故障盘电路板的配置页转移到备件盘电路板即可。

同时,如果CP模块出错且我们知道其结构的话也可以利用 PC-3000的“Tools”→“utility

extensions”→“viewing and editing of HDD resources”菜单进行 CP模块的编辑,如图 8-6

所示。

选择所需 CP模块后可以在 hex editor 窗口编辑,保存到硬盘之前需要重新计算该模块

的校验和。在 hex editor 窗口中右击后显示的下拉菜单中选择“Plug-ins”菜单项,支持以

下几种校验和的处理方法,如图 8-7所示。

图 8-6 CP模块选择 图 8-7 校验和检验

“Check CP CS”:对整个模块检查校验和。

“Check CP CS(Selected)”:对选中的模块部分检查校验和。

“Recal CP CS(Selected)”:对选中模块部分重新计算校验和并写入该区域的最后一

个字节。

第 8 章 东芝硬盘固件特点及其故障分析

205

因此,如果需要纠正一个 CP 模块,进行必要修改后必须选择整个数据区域包括校验

和字节,然后选择菜单中的“Recal CP CS(Selected)”。新的 CS将被写入所选数据区域的

最后一位。

下面是一些 CP模块的作用:

55h(老的家族),56h(新的家族):硬盘 ID。

9Ah:序列号。

DDh:P表,保存在盘面固件区 2磁道。

8.2.5 RAM 资源

硬盘中含有 Buffer RAM与MPU RAM。Buffer RAM用于传输数据时的交互缓存,MPU

RAM存储于控制器微处理器中。二者都可以在 PC-3000东芝程序中通过菜单“Tools→utility

extensions→Viewing and editing HDD Resources”进行操作。

对于老的家族,ROM集成到了MPU中,MPU RAM的大小为 40 000h字节。对于新

的型号,外置 ROM的大小为 80 000h字节。MPU RAM也会加载 ROM 镜像到其中。

8.2.6 固件区磁道

东芝硬盘的盘面固件区有 32个磁道,它们中大多完全或部分未格式化,只有磁道 2、

21、27中包含了一些有用信息。固件区模块位于 0头相关区域,1头相关区域也存放了一

份副本。对于数据恢复,盘面固件区数据模块的操作在多数情况下并不需要。

使用 PC-3000启动东芝硬盘程序后,可以通过“Test”→“Service information”→“Work

with service area”中的“Reading service tracks”与“Writing service tracks”来执行盘面固

件区的读写,如图 8-8所示。

图 8-8 读固件区磁道

深度剖析——硬盘固件级数据恢复

206

默认程序只选择 2、21与 27磁道,因为它们包含最重要的数据。由于固件信息通常只

用 0头与 1头记录,所以只可以选择这两个头,其余都无法选择。我们也可以手工选择所

有磁道进行固件区数据的备份。

在东芝硬盘的固件区中,很多扇区读取都不太稳定,但实际上此扇区是含有数据的。

为保证所有可读磁道都被成功读取,程序首先检测每个扇区确认其是否格式化,然后根据

“Reading error retry counter”字段所规定的尝试次数,每个扇区都可能读取若干次。如果

某个扇区读取无误,则进行下一个,否则重试。要读取所有扇区,可能常常需要把重试次

数设到 20~30,默认值为 10。

下面是一些固件区磁道的作用:

Track2:G表 – 标识符为 GL

密码模块 – 标识符为 S

P表模块,无标识符(也可以按 DDh配置页来读取)。

Track21:包含适配数据的一组模块;它们是 ROM中对应模块的拷贝。

Track27:包含序列号的若干模块。

8.2.7 S.M.A.R.T 表

S.M.A.R.T表存放在盘面固件区中。

硬盘在工作时会实时检测自身的状态,对磁头组件、硬盘温度、盘片表面介质、主轴

电机、硬盘内部电路的运行情况、历史记录及预设的安全阈值进行分析,及时预报硬盘可

能发生的问题。因此固件区的 SMART 模块会经常进行实时更新。频繁的读写使 SMART

模块出错成为硬盘经常出现的故障。在某些情形下,SMART 属性值溢出,就会导致硬盘

停止工作,此时可以用“clear SMART”命令来清空 SMART模块并恢复其结构,从而重置

SMART属性到出厂值,使硬盘恢复正常工作。

8.2.8 扇区缺陷表

扇区缺陷表存放在盘面固件区中。

东芝硬盘的扇区缺陷表也分两种:Primary-P表,Grown-G表。P表在出厂时硬盘检测

时生成,通常不含有太多缺陷。G表开始是空的,可以容纳 1912个缺陷,但实际分配的物

理空间值只允许 1024 条记录。当写操作时发现一缺陷扇区后,东芝硬盘自动将其隐藏到 G

表。

使用 PC-3000 启动东芝硬盘程序后,可以通过

“Test”→“Defect lst”菜单进行扇区缺陷表的相关操

作,如图 8-9所示。

“Viewing P-list”会打开一个文件选择对话框,在

这里我们可以指定要在缺陷编辑器中打开的 P 表文件

(默认名称为“Plist.chs”),选择后程序将按此文件名将 P表保存到电脑并在缺陷编辑器中

打开,这里就可以查看 P表。

选择“Clearing P-list”会打开一确认清空 P表的对话框。如果确认操作,程序将重置

P表并写到硬盘中。清空 P表可能导致隐藏缺陷重新暴露出来。因此清空 P表后需要执行

图 8-9 缺陷表编辑子菜单

第 8 章 东芝硬盘固件特点及其故障分析

207

表面扫描并将发现的缺陷隐藏到 P表。

选择“Clearing G-list”会打开确认清空 G表的对话框。如果确认操作,程序将重置 G

表并写到硬盘中。清空 G表可能导致隐藏缺陷重新暴露。因此清空 G表后需要执行表面扫

描并将发现的缺陷隐藏。

8.3 东芝硬盘终端命令

终端命令是通过 COM口通讯来完成的。

东芝硬盘有着先进的终端机制,但目前研究清楚的可用指令对于数据恢复的意义不是

太大。通过 PC-3000进入东芝硬盘的终端指令模式,需要按以下步骤进行:

(1) 将硬盘通过 PC-2″转接卡连接到 PC-3000板卡的对应 IDE线缆上。

(2) 按照 PC-2″转接卡上的示意图设置硬盘对应的跳线。

(3) 用 PC-KALOK 适配器连接 PC-2″转接卡到COM口,或者通过 PC-USB-TERMINAL

适配器连接到 USB口。

(4) 对所测硬盘上电。

(5) 在程序中选择“Terminal”,启动时程序将自动建立速率为 9600b/s的连接。

上电后,硬盘不会向 COM 口输出信息。进入指令会话模式,需要按“Enter”键,若

COM口通信连接成功建立,则程序会输出“>”命令行。

终端模式一些可以使用的基本命令如表 8-3表所示。

表 8-3 东芝硬盘终端命令

命令文本 描 述

BKxx 设置输出到终端的块大小

BSxx 设置内存块的分段,xx--分段号

CR 检查 ROM芯片 CheckSum

CMxx 盘面固件区模式设置,xx为 16进制模式标识符

DB 输出当前分段的 Buffer RAM转储

DM 输出当前分段的MPU RAM转储

DRx 输出硬件配置内容,x是周边设备种类 H\B\C\D\M\S

DS 输出当前内存段信息

HP 输出终端命令的简要清单

LM 开启 Flash编程模式。进入此模式需要 key

RS 工厂复位,从终端退出

SC 输出读/写磁头坐标信息

SD 输出硬盘物理参数信息

SF 输出硬盘功能状态信息

SI 输出缓存的索引加 1

SL 输出硬盘安全参数信息

SO 输出硬盘 SMART参数扩展信息

SP 切换 ARRE模式

SR 输出硬盘 SMART参数信息

STxxxx 设置内存块地址,xxxx —地址

SW 输出硬盘电源参数信息

VR 输出微程序版本号

深度剖析——硬盘固件级数据恢复

208

(续表)

命令文本 描 述

VM 输出微程序版本号

WBxxxx 写 xxxx字到 Buffer RAM中 ST与 BS命令所定义的地址

WMxxxx 写 xxxx字到MPU RAM中 ST与 BS命令所定义的地址

WRxxxx 写 xxxx字到外接芯片 ST与 BS命令所定义的地址

注意:请谨慎使用这些指令,有些指令可能会对硬盘造成损坏!

8.4 东芝硬盘固件故障表现及分析

8.4.1 G 表故障

如果东芝硬盘上电后并无异响,在扇区检测时,可以看到有大量坏道,但坏道是分散

的,则很有可能是 G表满故障。

G表可以容纳 1912个缺陷,但实际分配的物理空间只允许 1024 条记录。当写操作时

发现一缺陷扇区后,东芝硬盘自动将其隐藏到 G表。有时 G表溢出或者发生干扰,将导致

用户数据无法访问。“清空 G表”的命令允许操作者清空 G表,还原其结构。此功能实际

上同时执行了译码表重建。因为 G表与一些其他模块用来建立译码表。清空 G表可以恢复

用户数据的访问。

8.4.2 SMART 模块故障

SMART模块发生故障时,硬盘通常能认盘,但识别型号和进行扇区操作的时间较长,

(一般正常为 2~3 秒中,如果有问题的会长达 10~30 秒),在自检时一般会 SMART报错。

硬盘工作时会随时写信息到 SMART 模块。有时写模块时发生错误会导致用户数据无

法访问。利用“清空 SMART”命令可以清空 SMART模块并恢复其结构。

8.4.3 密码保护故障

如果硬盘被密码保护,在使用 PC-3000启动东芝硬盘程序时显示以下警告:

Attention!

HDD is currently locked.

我们可以使用“Work with service area”或者“Password removal”命令。

选择“Password removal”后程序将自动重置密码。

8.4.4 其他固件故障

有时我们会出现这种情况,刚购买几个月的东芝笔记本,使用一段时间后系统及程序

运行变慢,重装系统后问题依旧,而且时常出现无法引导系统的情况,则很有可能是使用

了较新型号东芝硬盘,固件不稳定的缘故。到东芝硬盘官网下载硬盘固件更新程序,更新

硬盘固件即可解决此问题。

第 8 章 东芝硬盘固件特点及其故障分析

209

8.5 东芝硬盘固件维修案例

8.5.1 G 表错误修复案例

故障现象:一块 2.5寸 60G东芝硬盘 MK6021GAS,上电后并无异响,用 PC-3000通

用程序进行扇区检测,显示全部正常,但检测速度非常快,几十秒之内就将整个盘全部检

测完毕。这显然是假象,挂载到系统下,winhex果然无法读取任何扇区。尝试使用 PC-3000

东芝专修程序进行检测。

处理过程:

步骤 1:进入程序后,发现程序提示 G表读取错误,如图 8-10所示。

图 8-10 G表读取错误

Data Extractor支持 G表损坏的东芝硬盘直接提取数据。

步骤 2:建立任务。进入如图 8-11所示界面。

图 8-11 Data Extractor主界面

深度剖析——硬盘固件级数据恢复

210

然后打开程序参数对话框,进入 Command to read标签,选择 read from active PC-3000

utility,如图 8-12所示。

图 8-12 参数设置

步骤 3:在弹出的对话框中勾选“PBA access(solve G-list damage)”,如图 8-13所示。

图 8-13 读取参数选择 PBA access

如图 8-14所示,程序会进行初始化。

图 8-14 读取准备

第 8 章 东芝硬盘固件特点及其故障分析

211

如图 8-15所示,结束后会提示初始化成功。

图 8-15 初始化成功界面

步骤 4:再进行数据拷贝,发现所有扇区都能正常拷贝。最终,恢复成功。

8.5.2 P 表模块故障修复案例

故障处理:一块 2.5英寸 40 GB东芝硬盘MK4025GAS,上电后并无异响,用 PC-3000

通用程序进行扇区检测,显示全部错误。尝试使用 PC3000东芝专修程序进行检测。

处理过程:

步骤 1:初始化显示并无异常,从图 8-16可以看出,G表中缺陷条数为 50,各 CP模

块皆读取成功。

图 8-16 各 CP模块读取正常

深度剖析——硬盘固件级数据恢复

212

但是对 CP模进一步检测后发现,DD模块(P表)校验和错误,如图 8-17所示。

图 8-17 DD模块校验和错误

步骤 2:双击 DD模块,可以在 16进制编辑器中看出其数据相当杂乱,应该结构已被

破坏,如图 8-18所示。

图 8-18 DD模块结构紊乱

第 8 章 东芝硬盘固件特点及其故障分析

213

进一步通过清空 P表来验证(菜单“Tests”→“Defect list”→“Erase defect list”→

“P-list”),如图 8-19所示。

图 8-19 执行“清空 P表”

清除失败,所以 P表模块完全破坏,已经无法恢复。只能用一个好的模块来替换才可

恢复其原本结构。

步骤 3:在 CP列表中右击 DD模块来通过数据库查找替换,如图 8-20所示。

图 8-20 执行模块覆写

在搜索到的结果中取最接近的来替换,如图 8-21所示。

深度剖析——硬盘固件级数据恢复

214

图 8-21 备件模块选择

步骤 4:替换后重新进行表面检测,并把所发现的缺陷添加到P表。然后用Data Extractor

进行恢复,得到了大多数的数据,恢复基本成功。

第 9 章 硬盘固件修复工具介绍

随着数据恢复行业的兴起,市场上数据恢复工具品种繁多,使用较为广泛的有如下几种:

一种是专业修复硬盘的综合工具 PC-3000,它是由俄罗斯著名硬盘实验室– ACE

Laboratory 研究开发的,该工具是用硬盘的内部软件来管理硬盘,进行硬盘原始资料的改

变和修复。

另一种是 DATA COMPASS数据指南针,它是 2008年效率源推出的一种新型数据恢复

解决方案,该工具对原有数据恢复工作模式进行了进一步的革新。

还有一种是 HDD Repair Tools,简称 HRT,它是由俄罗斯 BVG GROUP技术组织开发

的一款专业的硬盘诊断及维修工具。

现在对这几种工具予以简单介绍。

9.1 PC-3000固件修复工具

PC-3000主要常见的版本为 ISA版、PCI版、UDMA版。由于涉及知识产权问题,俄

罗斯在售后服务和技术支持上并没对中国市场开放,升级周期较长,并且每次有百分之十

的收费。PC-3000 产品的架构设计多采用 PCI 接口的“卡”式设计,产品使用时需绑定固

定电脑主板,这种设计有效地防止了盗版,目前 PC-3000 UDMA的免费升级周期为一年,

以后便按次付费升级,一年大致升级 2次。

9.1.1 PC-3000 工作基本原理

PC-3000通过对硬盘 CPU专用指令集的破解,以及对硬盘的固件解析,从而实现对硬

盘内部参数模块的读写、以及硬盘程序模块的调用,最终达到以软件修复多种硬盘缺陷的

目的。其具体的工作方式有:覆写(修复)硬盘固件模块、按工厂方式扫描硬盘内部缺陷

并进行记录和隔离、按工厂方式进行内部低级格式化、更改硬盘参数等。

PC-3000是一个通用实用程序和专用实用程序的联合体。

通用实用程序可以迅速诊断硬盘的缺损并迅速确定修复方法。

专门实用程序可以对运行在专门的工厂模式下的硬盘进行诊断和恢复。专用实用程序

可以更精确地诊断和修复驱动器的故障。

PC-3000 for Windows包含有硬盘固件信息的数据库,其固件信息包括:硬盘的 Flash Rom、

固件区的模块和磁道等信息。所有这些信息都通过家族号、模块 ID、固件版本号进行归类。

您可以在数据库中对它们进行搜索,同时也可以将最新型号硬盘的固件信息增加到数据库。

9.1.2 PC-3000 主要功能

PC-3000 功能强大、内容丰富,其用途从本质上讲,不外乎就是做两件事情:硬盘修

深度剖析——硬盘固件级数据恢复

216

复;数据恢复。而 PC-3000功能之所以强大的一个具体表现就是:在一个硬盘没有完全修

复的情况下,也可以进行数据恢复。

PC-3000的适用范围:Seagate(希捷),Western Digital(西部数据),Fujitsu(富士通),

Quantum(昆腾),Samsung(三星),Maxtor(迈拓),Hitachi/IBM/HGST等。

PC-3000的具体功能如下:

1. 对电路板可以进行如下操作

可以对 ROM 中的固件代码进行扫描、数据配置的校验、固件版本的核查等操作,也

可以对 Buffer RAM进行测试,并可运行自检测模式。

可以对含有固件代码的 Flash ROM,以及含有数据结构的 RAM进行读写操作。并可

以从 PC-3000的数据库里复制 Flash ROM数据。

2. 对硬盘的固件区可以进行如下操作

测试固件区的坏扇区,通过对固件区的检测,查找故障模块;对固件区信息进行擦除;

修复受损的模块,或者从 PC-3000数据库提取相应模块进行覆盖。

3. 对盘片可以进行如下操作

对用户区进行表面测试,检测受损扇区,运行低级格式化程序。把损坏扇区更新到缺

陷列表,运行 Self-scan程序。

4. 对磁头可以进行如下操作

磁头测试(不是所有的硬盘系列都可进行),砍掉受损的磁头。砍磁头会使硬盘驱动

器的容量缩小,但可使硬盘继续得到有效使用。

5. PC-3000的通用功能

提供重新设置硬盘驱动器 SMART参数的功能。

提供更正驱动器 ID的功能。

提供硬盘驱动器上用户密码和硬盘密码解密的功能。

提供在不损坏盘体的情况下迅速清零硬盘的功能。

提供在不能依照本身的逻辑参数进行工作的硬盘上读取用户数据的功能(Data

Extractor)。

提供在 UDMA66模式下读数据的功能。

提供在损坏碟面上恢复数据的功能,这时需要禁用自动重定位模式。

提供在不按磁头顺序切换的情况下,可用指定的磁头来读取用户数据,这一功能适用

其中一个磁头损坏或更换磁头的情况。

9.1.3 PC-3000 基本使用流程

PC-3000 的功能强大、内容丰富,而硬盘的型号种类很多,故障也千差万别,当接手

到一台带有特殊故障的硬盘时,如何能够精准的使用 PC-3000相应功能,较快的解决硬盘

的故障。具体的思路如下:

当你维修一台硬盘时,不要一开始就使用专用工具模块,任何硬盘驱动器都应该先用

第 9 章 硬盘固件修复工具介绍

217

PC-3000 通用测试程序进行检查,这样有助于缩小硬盘的故障范围,从而决定下一步的维

修操作。

具体做法是,把硬盘驱动器连到 PC-3000 卡上,启动 PC-3000程序,给硬盘加电,接

下来硬盘应该启动主轴电机,进行磁头校准(磁头定位到零磁道)。在此过程中,会听到

一声很明显的磁头定位的声音。在硬盘驱动器初始化完毕后,硬盘驱动器就会送出就绪信

号,如果不是这样(主轴电机停转、或者根本没有启动、或者你听到一声磁头敲击的声音),

那基本可以确定是硬件故障,可按排除硬件故障的手段来处理。

硬盘正确就绪的 PC-3000指示灯的状态为:DRDY=DSC=1,BUSY=0。其中 DRDY--

DRIVE READY即驱动器就绪标志位; DSC--DISK SEEK COMPLETE 即磁盘寻道完成标

志位;BUSY--驱动器忙状态位。

硬盘就绪后,PC-3000程序会试图从硬盘驱动器的描述说明信息域读取数据。

如果硬盘驱动器就绪信号未被程序检测到,PC-3000AT 会在屏幕上显示一条相应的

消息。

如果程序接收到了就绪信号,但硬盘驱动器的描述说明数据不能被读取,或读取的数

据不正确,这说明硬盘驱动器的读写通道部分可能有缺陷,或者硬盘驱动器的(盘片上的

firmware)固件损坏,固件数据可以利用相应的专用工具模块来恢复。另外,这台硬盘驱

动器可能根本就没有硬盘驱动器描述说明信息字段,或者硬盘描述说明字段没有数据,

不能为硬盘驱动器工作所使用。在这种情况下,硬盘驱动器的参数应当被操作者手工输

入或从 PC-3000AT的硬盘驱动器数据库中选择输入,以便进行后续的测试过程。

在使用 PC-30000AT 对硬盘驱动器进行测试并对其缺陷初步判断后,你就可以启动一

个专用工具模块对硬盘固件进行诊断或修复。

9.1.4 PC-3000 通用工具简介

PC-3000 是一个通用实用程序和专用实用程序的联合体。通用实用程序可以迅速诊断

硬盘的缺损并确定修复方法。所以本节将介绍用于诊断和修理任何类型的硬盘驱动器的通

用测试工具 PC-3000AT。

9.1.4.1 PC-3000 通用测试工具用途

PC-3000AT测试软件是 PC-3000综合工具中用于硬盘驱动器维修和恢复的基本程序,

被设计用于:

� 以较一般的方式诊断硬盘缺陷。

� 使用低级格式化来修复硬盘故障。

� 支持对硬盘缺陷重定位机制(defect reassign),并隐藏坏扇区。

� 以用户输入参数、软件输出信息的操控形式进行自动化驱动器测试(指综合测试

模式)。

PC-3000AT 既支持使用 CHS扇区定址模式,也支持使用 LBA扇区定址模式进行驱动

器测试。

深度剖析——硬盘固件级数据恢复

218

9.1.4.2 PC-3000 通用测试工具准备工作

(1) 用硬盘数据线电缆将硬盘驱动器与 PC-3000AT 卡相连。

(2) 接上硬盘驱动器电源。

(3) 启动 PC-3000程序,如图 9-1所示。

图 9-1 PC-3000主窗口

在图 9-1 的 HDD Vendors 一栏中选择“Universal Utilities”,在 Utilities 一栏中选择

“Universal PC-3000AT Utility”,进入 PC-3000AT 窗口,如图 9-2所示。

图 9-2 PC-3000AT窗口

第 9 章 硬盘固件修复工具介绍

219

9.1.4.3 PC-3000AT 主窗口的介绍

在 PC-3000AT 主窗口(图 9-2)基本上可以划分为四个区域:顶端区域包括菜单栏、

操作按钮、硬盘基本信息、当前的测试类型以及正在进行的操作;中部是信息反馈区;左

侧区域主要承担对硬盘磁头校准、硬盘软复位、硬复位;底部是硬盘运行进度及状态的指

示区。

1. 顶部区域

顶部区域包括菜单栏、操作按钮、硬盘基本信息、当前的测试类型以及正在进行的操

作。菜单栏将在后面章节中讲述,下面叙述操作按钮。

为电源开关,用于给所连接的硬盘加电、断电; 为 HDD checking,即硬盘检测;

为 Controller checking,即控制卡检测; 为 Complex test,即综合测试; 为 Express test,

即快速测试; 为 Format,即格式化; 为 Erase HDD date,即擦除硬盘数据; 为返

回前一个窗口; 为 Run,即运行当前所选择的程序。

“HDD”一栏显示的是硬盘的基本信息,它包含要被测试的硬盘类型和参数信息:硬

盘型号(Model)、序列号(Serial)、固件版本、硬盘容量。

“Current test”一栏是指当前所选择的功能选项。

“Operation”一栏显示的是所进行的具体操作,其次单击 按钮弹出一个包含

S.M.A.R.T. checking和 Checking set Max LBA的菜单。

顶部区域的第四部分按钮,其主要是管理和操作中部信息区的信息。各按钮的具体功

能如下:

为 clear log,即清除日志; 为 save log data,即保存日志数据; 为保存信息;

为 Don’t show added strings,即锁定信息反馈区当前的信息,暂停显示后续信息; 为 copy,

即拷贝; 为 search,即搜索; 为“Find again”,即重新查找。

2. 右侧区域

PC-3000AT 主窗口的右侧区域,主要承担对硬盘的软复位和硬复位操作;其中 为

“Recalibration”,即重新校准; 为“Controller reset”,即控制卡复位; 为“Soft reset”,

即软复位, 为“Hard rest”,即硬复位; 为“standby”,即处于待命状态。

3. 中部区域

中部的信息反馈区就是显示当前的操作状态、命令执行进程以及执行结果等信息。

4. 底部区域

底部区域分两部分,一部分为“Current test progress”即当前测试进度。另一部分为指

示灯。

指示灯用于监视硬盘驱动器在测试中的状态,判断驱动器的故障原因。活动的 LED指

示灯为绿色,红色表示发生了错误。

指示灯分两类:一类是硬盘的状态寄存器(Status register)指示灯;一类是错误寄存

器(Error register)的指示灯。

状态寄存器显示硬盘驱动器的当前状态,状态寄存器的值在每一个命令执行后都会

深度剖析——硬盘固件级数据恢复

220

更新。

在 PC-3000AT主窗口下部的状态寄存器一栏,其指示灯含义见表 9-1。

表 9-1 状态寄存器指示灯含义

指示灯名称 英文含义 中文含义

BSY Busy 硬盘忙

DRD Drive Ready 硬盘就绪标志

DWF Disk write fail 写盘失败

DSC Disk seek complete 磁盘寻道完成

DRQ Drive Request 与主机交换数据

CRR Correct 正确

INX Index 索引

ERR Error 出错:具体错误类型,错误寄存器指示灯给予明确显示

一般 DRDY=DSC=1,BUSY=0表示硬盘正确就绪,使用者可以在 PC-3000中进行各

种功能的操作。

当硬盘执行命令之后,如果运行中出现错误,左侧的状态寄存器的错误指示灯 ERR=1

时,相应的右侧的错误寄存器指示灯将指示具体的错误性质。错误寄存器指示灯的具体含

义见表 9-2。

表 9-2 错误寄存器指示灯含义

指示灯名称 英文含义 中文含义

BBK Bad Block 逻辑块损坏

UNC Data Uncorrect 数据纠正失败

IDNF ID not found 寻找 ID失败

ABR Abort command 指令中断

TONF Track not found 寻轨失败

AMNF Address Marker not found 地址标志寻找失败

9.1.4.4 PC-3000AT 菜单主要功能介绍

PC-3000AT工具栏中两个主要选项为 Tools和 Tests。下面对就这两个选项具体内容进

行阐述。

1. Tool菜单项介绍

Tool 菜单项是对一些硬盘参数进行显示、设置和管理,具体内容如图 9-3所示。

图 9-3 Tools菜单项

第 9 章 硬盘固件修复工具介绍

221

(1) Utility extensions

Utility extensions通常包含 Defectoscope(缺陷探测器)、Express test result。

� Defectoscope缺陷探测器

Defectoscope缺陷探测器用于精确检测缺陷扇区和不稳定扇区。所谓“unstable sectors

(不稳定扇区)”是指那些读(写)时间远远大于此硬盘平均扇区读(写)时间的扇区。所

要检测的硬盘要支持缺陷重定位机制,测试结果将输出到一个文件中。选择该选项后,程

序将弹出一个窗口,在窗口中可以设置 Defectoscope 缺陷探测器所要扫描的范围,以及保

存测试结果文件名,如图 9-4所示。

图 9-4 Defectoscope缺陷探测器的设置

� Express test result

该选项显示的是当前程序进行测试的结果。

(2) HDD

该子菜单包含硬盘操作的基本系统命令,其下的子菜单中包含 7个选项。

� Recalibration

硬盘磁头的重新校准,即磁头定位零磁道。硬盘启动或选择该选项时,系统将发送一

个 Recalibration(10h)命令到硬盘,进行磁头的重新校准。

� Soft reset

硬盘的软复位命令,该命令是通过设置硬盘控制寄存器的 SRST 位,使硬盘接口电路

重新启动。

� Hard reset

当向硬盘发送一个 500兆秒的 RESET信号时,硬盘的硬复位命令将被执行。

� Standby

Standby把系统命令 E6h(standby)发送到硬盘。该命令将中止硬盘主轴旋转,它用

深度剖析——硬盘固件级数据恢复

222

于热交换模式,即将一个已初始化的正常硬盘的控制板安装到包含已损坏服务信息的盘

体上。

� HDD Security subsystem

硬盘安全子系统。使用 HDD Security subsystem就意味着访问用户数据需要知道口令。

如果不知道口令,那么就需要使用专门的工具去删除口令或找回口令。该选项有自己的子

菜单,如图 9-5所示。

① 选择子菜单 HDD opening,程序将弹出一个对话框,如图 9-6所示。

图 9-5 HDD Security subsystem菜单项 图 9-6 HDD opening窗口

在此使用者可以设定口令的类型以及口令内容,口令类型有两种:User password(用

户口令),Master password(主口令)。所设置的口令类型、内容将在程序重启后被保存。

② 选择子菜单 Clear password,将清除口令的类型和内容。早期的硬盘,这些数据都

存放在内部存储器中。Clear password的对话框如图 9-7所示。

③ 选择子菜单 Password set,程序将弹出一个对话框,如图 9-8所示。

图 9-7 Clear password窗口 图 9-8 Password set窗口

在此使用者既可以设定口令的类型和内容,也可以设置硬盘的安全等级(HDD Security

level),其中安全级别分为两种:high,maximal。所设置的口令类型、内容以及安全等级

将在程序重启后被保存。

④ 选择子菜单 Security Erase,在选择执行 Security Erase之前,用户必须使用主口令

打开硬盘。HDD clearing的操作窗口如图 9-9所示。

第 9 章 硬盘固件修复工具介绍

223

使用 Security Erase的场合:在不知道用户口令,但知道主口令或者没有设置主口令,

且安全级别设置为 maximal(最高)的情况下使用。在这种情况下,如果没有一个专业的

程序来重新设置口令,是不可能访问用户数据的。此时能做的事情只能是执行 Security

Erase,而执行 Security Erase结果将是硬盘的数据、用户口令被删除,并将安全级别设置为

高(high)。

� Set Max LBA:该命令模式允许调整硬盘的容量,即减少 LBA的最大值,如图 9-10

所示。

图 9-9 HDD clearing窗口 图 9-10 Max LBA Set窗口

你可以将临时选择使用的值写入硬盘的 RAM 或盘片上的固件数据区。写入固件数据

区的参数值将在硬盘重启以后保存。

(3) COM port settings

该模式用于设定 COM 端口的参数,如

图 9-11所示。

用户可以对以下参数进行设置:

设置 Rate(速率),其下拉菜单可选项

为:110,300,600,1 200,2 400,4 800,

9 600,10 400,14 400,19 200,38 400,56 000,

57 600,115 200,128 000,230 400,460 800,

921 600,或手工设置。

设置 Parity(奇偶校验),其下拉菜单的

可选选项为:NOPARITY(无奇偶校验),

ODDPARITY(奇校验),EVENPARITY(偶校验),MARKPARITY(标记奇偶校验),

SPACEPARITY(存储器奇偶检验)。

设置 Stop bits(停止位),其可选选项为:ONESTOPBIT(一位停止位),ONE5STOPBITS

(1.5位停止位),TWOSTOPBITS(两位停止位)。设置 Byte size(字节长度)。

(4) Cable Select Status

该选项管理 ATA接口的 Cable Select 信号线,当使用该选项时,它与 PC-3000 UDMA

板共地,否则该信号线是禁用。

图 9-11 设置 COM port settings参数

深度剖析——硬盘固件级数据恢复

224

(5) HDD ID

选择 HDD ID,屏幕上将显示硬盘包含的所有参数规格,如图 9-12所示。

图 9-12 HDD ID窗口

用户可以在“Group mode”和“Full mode”两种模式之间选择显示。

(6) Sector editor

扇区编辑器用于对硬盘的一个或多个扇区的进行显示和编辑。扇区编辑器也支持从文

件中加载数据,将数据保存到文件以及用随机数值或指定数值填充扇区。

注意!编辑器的使用即当从编辑器向盘面写数据时可能导致用户数据的毁灭。启动

编辑器后,程序将显示一个警告信息框,并可以选择启动编辑器的只读模式,如图 9-13

所示。

当选择“Yes”后,程序进入到下一个窗口,如图 9-14所示。

图 9-13 编辑扇区告警信息 图 9-14 选定扇区

在图 9-14 中可以输入要编辑扇区的 LBA 号。选择完毕,后单击 OK 按钮,进入下一

个窗口,如图 9-15所示。

此时操作者可以对所指定扇区的数据进行编辑,编辑完成后,如果想接着编辑下一个

扇区的数据,单击 按钮进入下一个扇区。

(7) View S.M.A.R.T.

该选项用于打开显示 S.M.A.R.T.的属性、日志(错误,总体状况,缺陷扇区等)的交

第 9 章 硬盘固件修复工具介绍

225

互模式窗口,并且启动 self-testing(自测试)程序。

图 9-15 扇区编辑窗口

S.M.A.R.T.模式向用户提供一些硬盘状态的重要信息,这些信息使用其他方法是无法

获得的(比如用测试的方法),如硬盘加电的时间,重定位的扇区数等,由此你可以推断硬

盘使用了多长时间,以及硬盘的盘面状况,如图 9-16所示。

图 9-16 View S.M.A.R.T窗口

S.M.A.R.T.的信息分以下几个部分:Attributes(属性),Additional parameters(附加参

数),Self Test Log(自测试日志),summary Error Log(错误记录概要),S.M.A.R.T. Self Test

(S.M.A.R.T.自测试)。使用者可以根据实际需要查阅相关信息。

深度剖析——硬盘固件级数据恢复

226

(8) Defect list editor

该选项用于显示硬盘的缺陷列表(P表和 G表)文件,以及较早保存在文件中的盘面

扫描测试结果,如图 9-17所示。

图 9-17 Defect list editor窗口

其中工具栏中 表示关闭缺陷编辑的交互模式; 表示创建一个新的缺陷列表并显示

缺陷列表; 表示打开一个包含缺陷列表的文件。由于使用时鼠标放到哪一个按钮上,都

会有相应的英文提示,所以在此就不再一一解释了。

(9) Terminal

终端模式用于通过计算机的 USB 连接器或通过 PC-USB-TERMINAL 工作的硬盘。

ALT,CTRL,SHIFT工具栏按钮允许使用复合键按钮,该复合键在 windows中担当热键,

在终端窗口收到相应信号之前,其功能被禁止,Terminal 窗口如图 9-18所示。

图 9-18 Terminal窗口

通过 PC-USB-TERMINAL和硬盘的 COM口相连,数据的传输稳定性很强。进入终端

命令模式后,敲入(Ctrl)+(Z),硬盘将给出反应“T﹥”,此时可以输入终端命令。

第 9 章 硬盘固件修复工具介绍

227

(9) Database

查看数据库内容有两种途径:一是选择 PC-3000主窗口的 Utility selection 选项,二是

选择 Tool→Database 菜单。数据库的窗口如图 9-19所示。

图 9-19 Database窗口

数据库的文件夹结构有以下几个层次:

① Utility folder;

② HDD family folder;

③ Folder containing HDD resources(Model Firmware SerialNumber);

④ Folder containing resources of a specific type(modules,SA tracks,ROM,等)。

工具栏中 按钮用于在当前级别下建立一个文件夹。 用于创建下一级文件夹。 用

于创建或编辑一个新模块,单击该按钮会显示一个窗口。窗口中提供了两个栏目:Data和

profile。其中 Data是一个二进制数据编辑器,而 profile是一个列表,该表包含了硬盘标准

数据的补充说明。

(10) Report

Report模式用于显示硬盘测试结果的详细信息。

(11) Scripts

Scripts 交互模式用于用户脚本(创建、删除、重定位、编辑等)的管理,其窗口如

图 9-20所示。

Scripts是用户使用专门的软件代码编制的一个批处理文件,从而完成对硬盘的一系列

操作,它和使用各种形式的 ATA 命令相比,更有效率。用户可以使用 Scripts 功能对硬盘

寄存器以及硬盘驱动器的操作进行规划。

工具栏中 用于创建一个新的 Script(脚本)方案;而 用于选择打开一个 Script 方

案并对其进行编辑; 用于删除所选择的 Script方案; 用于创建一个文件夹,使用者可

以使用鼠标在不同文件夹之间拖放 Script方案; 用于打开一个 type library对话框; 用

于显示 Script引擎列表中的所有功能连接; 表示备份所选择的 Script方案,当要创建一

深度剖析——硬盘固件级数据恢复

228

个新的 Script 方案时,如果新方案与已有的方案差别不大,此时就可以对已有方案的备份

稍加修改形成一个所需要的新方案; 运行 Script(脚本)。

图 9-20 Script窗口

(12) User tests

该选项允许调用相应的脚本来补充用户测试的菜单。如果某一程序要附加一些功能,

可使用该选项,在脚本中实现。

(13) Explore profile folder

当一个程序模式需要保存硬盘的各类初始数据时,程序将为每一个硬盘创建一个专门

的配置文件夹,用于存储这些数据。选择这个菜单项,打开标准的 Explore(资源管理器)

应用程序,用于浏览当前硬盘的配置文件夹。

(14) Utility profiles management

用于管理属于当前程序已登记的配置文件。

(15) Option

该选项允许操作者对 PC-3000内核和应用程序进行全局设置。选择该选项,进入以下

窗口如图 9-21所示。

图 9-21 Option选项窗口

第 9 章 硬盘固件修复工具介绍

229

� General标签窗口内容简介

At PC-3000 shutdown:当关闭 PC-3000程序时,选择被检测硬盘的电源状态,如关闭

电源、保持加电状态、或显示一个是否关闭电源的提示对话框。

HDD Timeout:硬盘达到准备就绪状态的所使用时间的最大值,当超过这一时间时,

如果硬盘仍未就绪,程序将给出一个“readiness timeout”提示信息。如果你设置的时间较

小,PC-3000程序很多功能就会因为发生了“readiness timeout”错误而终止。因此,设置

时需要格外小心!

HDD UDMA Mode Timeout:该参数是在 UDMA模式下,进行数据交换占用的最长时间。

PC-3000 application priority:该选项允许操作者设定 PC-3000的优先权,如果你设定

优先权为高,一些测试和拷贝的速度将会提高 5%~10%,如果这种设置造成了计算机(计

算机包含一个 CPU)程序总体功能变慢时,那么另外一些程序将会停止运行。设置优先权

一个更大的麻烦是,如果 PC-3000运行的任务被卡住,那么你将没有办法来终止它。

Confirm on exit:当要选择该选项退出 PC-3000应用程序时,将会显示一个确认退出的

提示信息,这样有助于避免操作者错误地单击某一程序的关闭按钮或不小心关闭了整个

PC-3000应用程序。

Hex Edit…:该选项能够设置颜色、字体、字体大小等。

PC-3000 universal utility…:在不同硬盘家族的专用程序中打 setting对话框,该按钮的

内容将有所不同。例如,若打开 Fujistu 家族专用程序 setting 对话框,该按钮的内容将为

“Fujistu HDD 2.5”/“3.5…”;若打开 Toshiba家族专用程序的 setting对话框,该按钮的

内容将为“Toshiba utility(PC-3000 UDMA)”。由于图 9-19的设置对话框是在通用程序中

打开的,所以显示的是“PC-3000 universal utility…”,按钮的内容不同,单击该按钮所启

动的任务也将有所不同,所以在此就不予详述。

� “COM Ports”标签窗口内容介绍

PC-3000 组件程序中,有时需要使用串行端口对硬盘进行诊断。当安装了 PC-USB-

TERMINAL转接板时,它和一个串行端口相对应,相应的端口号的值使用该选项来设置,

如图 9-22所示。

图 9-22 “COM Ports”标签窗口

深度剖析——硬盘固件级数据恢复

230

ATA0:该选项用于定义 COM 端口号,当通过 COM 端口与 ATA0 接口检测硬盘时,

PC-3000应用程序要使用到该端口号。如果定义一个不存在的端口,并试图打开、启动它,

程序将给出一个错误的信息并启动失败,因此必须定义一个系统中实际存在的端口。

ATA1:该选项用于定义端口号,当通过 COM端口与 ATA1接口检测硬盘时,PC-3000

应用程序要使用到该端口号。如果你只连接了一个硬盘,你可以将 ATA-0和 ATA-1定义成

一个相同的端口号。

� “Sound”标签窗口内容介绍

一些硬盘测试程序耗费时间相当长(例如,工厂模式下的格式化,盘面测试等)。因此,

当这些测试结束后,PC-3000 提供一个声音信号,以提示程序执行完成。其设置对话框如

图 9-23所示:

ATA-0:在这里你可以选择一个 WAV 文件,当利用 ATA0 通道执行的程序完成后,

PC-3000将播放该声音文件。

ATA-1:在这里你可以选择一个 WAV 文件,当利用 ATA1 通道执行的程序完成后,

PC-3000将播放该声音文件。

� “Indicators”标签窗口的内容介绍

在这个窗口中你能够配置反映硬盘运行状态的错误寄存器以及状态寄存器指示灯的颜

色,如图 9-24所示。

图 9-23 “Sound”标签窗口 图 9-24 “indicators”标签窗口

Status set:选择的颜色(通常选绿色),将相应的状态指示寄存器位置置为“1”。

Status reset:选择的颜色(通常选银白色),将相应状态指示寄存器位置置为“0”。

Error:选择的颜色(通常选红色),将错误指示灯所对应的寄存器位置置为“1”。

� Report标签窗口的内容介绍

该选项用于设置 Report 窗口的颜色和和字体,如图 9-25所示。

Report window color:用于设置 Report 窗口的背景颜色。

Message:用于设置信息文本的颜色。

Error:用于设置错误信息的颜色。

Warning:用于设置告警信息的颜色。

Font:在此你可以选择信息文本的字体。建议你选择固定宽度的字体,如果字体字符

第 9 章 硬盘固件修复工具介绍

231

的宽度是可变的,日志表的信息列将发生偏移。

Font size:该选项定义字体大小。

� Log标签窗口内容介绍

该选项用于对 Log 窗口的背景和字体进行相关设置,如图 9-26所示。

图 9-25 Report标签窗口 图 9-26 Log标签窗口

Show Log:该选项允许操作者在所有应用程序中禁止显示日志窗口。

Log Size:该选项用于设置日志窗口中所能容纳的最多信息条目。当实际的信息条目

数超过额定值时,程序将清空日志窗口,并重新显示信息。

Log window background:该选项用以设置日志窗口的背景颜色,默认为白色。

Message:用于设置消息文本颜色,默认为黑色。

Error:用于设置错误信息的字体颜色,默认为红色。

Font:用于选择消息文本的字体,建议你选择固定宽度的字体,如果字符的宽度是可

变的,日志表的信息列将发生偏移。

Font Size:该选项定义字体大小。

2. Tests菜单项介绍

Tests主菜单项包括 5项内容,如图 9-27所示。

图 9-27 Tests菜单项

深度剖析——硬盘固件级数据恢复

232

下面就 Tests 菜单项来逐一介绍。

(1) HDD checking

该选项主要用于磁头校准、盘面检验、译码器校验、盘面旋转频率确定、数据完整性

测试等,如图 9-27所示。其子菜单的各项含义如下。

� Recalibration

硬盘驱动器磁头重校准,即磁头定位零磁道,在此过程当中,会听到一声很明显的磁

头定位的声音。

� Seek

磁盘寻道。PC-3000 UDMA提供了 4种寻道方式:

- Manual navigation;

- Between LBA(A〈-〉B);

- From LBA to LBA sequentially(A﹍

B);

- From LBA to LBA randomly。

如图 9-28所示。

Manual navigation:手工导航模式,磁盘

寻道需要人工干预,即需要指定寻道的 LBA

值,如图 9-29所示。

图 9-29 Manual navigation窗口

其中,工具栏中的 按钮,代表从 0磁道开始寻道, 按钮代表返回上一个磁道,

按钮是指对指定的磁道进行寻道, 按钮代表对下一个磁道进行寻道, 是指对最后一个

磁道进行寻道。

Between LBA(A〈-〉B):在指定的 LBA范围之内进行寻道,选择此项后,程序将弹

出子窗口,如图 9-30所示。

图 9-28 磁盘寻道

第 9 章 硬盘固件修复工具介绍

233

使用者可以根据具体情况设定 LBA的初始值和终止值。

From LBA to LBA sequentially(A_ _B):在设定的范围内顺序寻道,即从 LBA的初始

值到 LBA的终止值。设定方法,如图 9-31所示。

图 9-30 设定寻道范围 图 9-31 设定顺序寻道范围

From LBA to LBA randomly:在设定范围内随机寻道。设定方法如图 9-32所示。

� Surface verification

盘面校验,用于在指定范围内对盘面进行校验,校验范围用 LBA的起始值和终止值

来指定,并可保存盘面的缺陷。校验方法有两种:Regular(顺序),Random(随机),如

图 9-33所示。

图 9-32 设定随机寻道范围 图 9-33 盘面校验

其中 Verify by one command是指一个校验命令所能测试的扇区数。

� Reading

该选项是在盘面的设定范围内进行读测试,并可将测试中发现的缺陷保存。具体的设

定方法如图 9-34所示。

其中,Read with single command是指单个读命令所能读取的扇区数。读扇区的方法有

两种:Regular(顺序),Random(随机)。数据交换模式分为以下三种:PIO、UDMA33

和 UDMA66。另外,是否保存缺陷是一个可选项,使用者可以根据进行选择。

� Writing

该选项对盘面的指定范围进行写测试,并可将测试中发现的缺陷保存。写测试将会造

成硬盘的所有数据丢失,所以要慎重选择。具体的操作方法如图 9-33所示。

由图 9-35可以看出,写测试窗口提供了一个 Data 选项,即采用什么数据进行写测试,

它有三项选择。

深度剖析——硬盘固件级数据恢复

234

- Data combination with LBA value(用包含 LBA值的数据进行写测试)。

- Pattern(用指定的数据模式进行写测试,如:0000,FFFF)。

- From file(用指定文件数据进行写测试)。

其他功能选项与读测试相同,所以在此就不再赘述。

图 9-34 读测试 图 9-35 写测试

� Surface verification(Ext)

盘面校验(扩展)。基本功能与前文所说的盘面校验相比,增加了一些功能,如图 9-36

所示。

图 9-36 Surface verification(Ext)窗口

它提供了一些可选择的扫描参数,如 scan direction(扫描方向)、HDD timeout(扫描

硬盘时间最大值)、One LBA commands timeout(一个 LBA命令扫面的超时时限)、Number

of passes for error search(搜索错误扇区的数量)。还提供了一些选项:skip if an error occurred

(跳过发生错误的扇区);Don’t search sector where error occurred(不搜索错误扇区)。使

用者可以根据实际情况设置这些参数。

� Reading(Ext)

读测试(扩展),与前文的读测试相比,增加了一些功能,从而使操作者对读测试能

够进行更多的干预。具体细节如图 9-37所示,在“Advanced”中,所涉及到的扫描参数前

第 9 章 硬盘固件修复工具介绍

235

文已经有所描述,在此就不再赘述。

图 9-37 Reading(Ext)窗口

� Writing(Ext)

读测试(扩展)。该项测试与前文所述的读测试相比,增加了一些功能,从而使操作

者对读测试能够进行更多的干预。具体细节如图 9-38所示。

图 9-38 Writing(Ext)窗口

在“Advanced”中,所涉及到的扫描参数,前文已经有所描述,在此就不再赘述。

� Translator checking

译码器检查。Translator(译码器)是一个程序和表格的组合,用于执行硬盘操作系统

使用的逻辑扇区(LBA)与物理扇区之间的转换。该选项用于检查译码器的性能。具体方

法如图 9-39所示。

其中 Log error message 用于设置译码器检查日志所能容纳错误信息的最大条目数(有

三项选择:100、1 000、5 000)。

Data exchange mode用于设置数据交换模式(PIO、UDMA33、UDMA66)。

� Data integrity test

数据完整性测试,进行数据完整性测试需要设置:

深度剖析——硬盘固件级数据恢复

236

- 测试的范围。

- 单个读写命令所能测试的扇区数。

- 数据交换模式。

- Pattern type(有两种选择:〈LBA〉〈DW ID〉;LBA XOR〈Patter〉)。

其次,数据完整性测试窗口还提供了一些选项:写数据、读数据、遇错终止、将缺陷

排除在外,如图 9-40所示。

图 9-39 译码器检查 图 9-40 Data integrity test窗口

使用者可以根据实际情况进行设置。

� Determine rotational frequency

旋转频率测定,它用于测定硬盘每分钟的转数,即硬盘的 RPM 参数值。该选项没有

类似的参数设置,测定成功,将报告正确 RPM值。如果测定失败,将报告“RPM……:Fail

to determinate”。

(2) Controller checking

主要用于对硬盘的状态寄存器、总线、扇区、扇区缓冲、硬中断请求、高速缓存 RAM

等进行测试,如图 9-41所示。

图 9-41 Controller checking窗口

第 9 章 硬盘固件修复工具介绍

237

Controller checking子菜单的含义如下。

- Cyclic status register reading:循环读取状态寄存器。

- Cyclic NOP sending;循环发送 NOP命令(代码 90h)。

- Bus test:总线测试。

- Sector buffer test:扇区缓存测试。

- Cyclic sector writing:扇区循环写测试。

- Cyclic sector reading:扇区循环读测试。

- IRQ Test:中断请求测试。

- HDD Self Test:硬盘自测试。

- Complex HDD Reset:该测试既包含软复位、也包含硬复位。

- HDD cache RAM test:硬盘的高速缓存 RAM测试。

(3) Complex test

综合测试,由用户输入参数,PC-3000AT输出信息操控形式的工作模式。其内容包括

盘面校验,随意读取、读、写测试,如图 9-42所示。

图 9-42 综合测试窗口

在综合测试窗口可以对测试范围、测试项目、缺陷的保存、重定位缺陷、扫描方向等

一系列参数进行设定,使用者可以根据实际情况进行选择。

(4) Express Test

快速测试,是指设定 LBA的测试范围的测试,如图 9-43所示。

当然,你也可以单击“Additional”按钮,对扫描参数进行设置,如图 9-44所示。

使用者可以设定读取扇区所用的时间,以获得盘片的整体状况分布图。不同的延迟对

应不同的颜色。

深度剖析——硬盘固件级数据恢复

238

图 9-43 快速测试 图 9-44 快速测试参数

(5) Format

格式化。PC-3000AT 对支持 ATA 标准命令 50H(格式化磁道命令)的硬盘驱动器执

行正确的格式化修复过程。格式化过程中,如果检查到错误,程序会尝试使用几种不同的

方式对磁道进行格式化;如果格式化不成功,则将该磁道标记为坏道,并把损坏扇区更新

到缺陷列表,即隐藏坏扇区。

一些型号的硬盘驱动器不能使用 PC-3000提供的这种格式化,原因之一在于当今 IDE

硬盘驱动器都使用 ZBR(分区域记录)技术,在盘片上不同区域磁道,其扇区数目不同,

不同厂家的硬盘驱动器盘片上区域划分也不同,同一厂家不同型号的硬盘驱动器上各磁道

划分的扇区数也不同,因此无法在一般的格式化时指定每磁道的扇区数。

PC-3000AT提供的格式化菜单,如图 9-45所示。

Format有三个选项:

- Command 50/00h-(Format Track)格式化磁道。

- Selective(BAD sectors only)仅对坏扇区重复进行格式化。

- Command 50/20h-(Unassign)不重定位缺陷扇区。

(6) Erase HDD date:

擦除硬盘数据,数据擦除分两种方式分别是:

- Use data overwriting。

- Use security Erase。

- Use data overwriting。

用数据覆盖,所使用的数据交换方式有三种:PIO、UDMA33、UDMA66,如图 9-46

所示。

三者相比,PIO的数据传输速率最低,UDMA66的数据传输速率最高,由于一些早期

的硬盘不支持 UDMA数据传输方式,所以使用者可以根据硬盘的实际情况进行选择。

第 9 章 硬盘固件修复工具介绍

239

图 9-45 格式化菜单项 图 9-46 use data overwriting窗口

� Use security Erase

采用安全擦除。该命令需要在硬盘上设置口令,并且在数据擦除完成之后复位硬盘。

这两项操作将在硬盘擦除数据期间被自动执行。如果硬盘电源在测试完成之前被关掉,硬

盘将使用 32个“1”作为口令。

9.2 效率源 compass固件修复工具

效率源是一个研究数据恢复及取证产品的企业。2008年,该企业推出一款新型数据恢

复工具——DATA COMPASS数据指南针(以下简称 DC),该产品对原有数据恢复工作模

式进行了革新。

9.2.1 效率源 compass 套件简介

数据指南针(Data Compass)产品是由国人研发的、具有完全自主知识产权的一款专

业的数据恢复工具。数据指南针不只是针对简单的磁盘逻辑问题的恢复,它更强大的功能

在于对磁盘具有物理损坏数据的恢复,例如,磁盘具有很多坏道,操作系统不能正常读盘

的情况,通过数据指南针就可以将操作系统不能正常读出的数据恢复出来。

数据指南针(Data Compass)主要由三部分组成:

� 数据指南针控制器(Data Compass Console,DCC);

� 数据指南针底层控制软件(Data Compass Control Panel,DCCP);

� 上层数据恢复软件(DC-EXP)。

数据指南针产品硬件主要负责将源盘数据读出,并在影子盘上建立影子,通过 USB接

口和 PC机相连接,连接非常的快捷方便。

底层控制软件专门针对为控制硬件而开发出来的控制程序,它必须同数据指南针硬件

设备配套才能正确使用,控制软件的参数设置简单、易懂,很少需要用户参与设置,大部

分参数都由控制软件智能设置。

上层数据恢复软件操作方便、简单,是效率源公司专门为数据指南针开发的一款上层

逻辑恢复配套工具,恢复功能强大,提供快速搜索、完全搜索、快速查找、过滤等功能,

支持对大多数的常用文件内容的预览。该产品不仅提供了配套的上层数据恢复软件,而且

支持市场上任何一款的数据恢复软件来进行上层数据恢复操作。

数据指南针(Data Compass)支持不同厂家生产的各种型号的磁盘,支持 IDE、SATA

等标准通用接口。

深度剖析——硬盘固件级数据恢复

240

数据指南针在数据指南针控制器中专门设置了两个独立的硬盘电源,避免硬盘被电压

过高而烧毁,起到了保护硬盘的作用。

数据指南针对磁盘的访问采用自适应的方式,自动在 UDMA100/66/33 之间切换,尽

可能的达到对磁盘的高效访问,当然用户也可以手动参与设置,采用 PIO方式还是 UDMA

方式。总之,数据指南针是一款系统资源耗费小、功能强大的专业数据恢复工具。

9.2.1.1 效率源数据指南针(Data Compass)能处理的数据恢复故障

1. 逻辑层问题(占据数据恢复问题的比率 58%)

� 分区丢失。

� 文件丢失破坏。

� 病毒破坏。

� 误格式化、误删除、误克隆。

� 黑客破坏。

2. 物理层问题(占据数据恢复问题的比率 42%)

� 硬盘不能被电脑正常识别。

� 硬盘固件区错乱。

注:这两项功能目前只针对日立/IBM硬盘,针对其他品牌硬盘,效率源会依据研发进

度提供升级更新。

� 硬盘固件区严重问题(如:坏道等),可以使用热交换进行数据恢复处理(硬盘

故障中,有至少 60%的原因在于固件信息发生损坏或丢失)。

� 被摔过的有轻微敲击声(必须要认盘,能看到数据区)。

� 扇区有严重的物理坏道。

� 更换磁头后不稳定读取。

� 磁头本身不稳定或者电机本身不稳定的数据恢复问题。

� 更换磁头后需要快速指定数据获取。

物理层问题的数据恢复比较复杂,技术含量比较高。物理层的数据恢复是效率源 Data

Compass(数据指南针)功能强大的一个标志。

9.2.1.2 数据指南针(Data Compass)产品优势

1. 数据指南针(Data Compass)的九大专利技术

� DC 支持硬盘故障自动检测功能,能够通过电压数据、硬盘状态等多种组合技术

检测出电路板损坏、硬盘固件损坏、电机故障等问题,为操作人员提供最直观的

数据检测判定,减少误判故障机率,用最有效的解决方案加快数据获取速度。

� 内置 HEPSS™高效供电系统,将磁头读写能力增强至工厂设计极限,有效解决因

磁头不稳定或坏道严重造成的数据读取时的敲盘问题,原来必须更换磁头解决的

工作方案,现在可以继续使用原磁头读取数据,不但节约更换磁头的成本,有效

控制成本支出,更能确保第一时间对数据进行有效获取。

第 9 章 硬盘固件修复工具介绍

241

� DC的 SHADOW™影子技术,针对磁头和扇区不稳定的情况,最大限度减少对源

盘的读操作,从而有效解决磁头频繁读写和划伤扇区的二次损伤问题。

� 最优化的读取算法驱动和 DBER™动态平衡增效读取技术,能有效防止读取数据

造成的死循环及不响应情况,与智能坏扇区跳跃功能有效配合,将获得更多有效

数据,提高文件打开的成功率。

� Analog™技术,针对固件区坏道无法修复或固件损坏无法找到匹配固件的情况,

无需固件修复,就可直接访问硬盘数据扇区获得所需数据。

� DC自带 HOST™设备,完全不依赖于 BIOS或者操作系统对硬盘进行操作,即使

操作系统无法识别硬盘,DC也可以直接获取所有用户数据。

� SWPS™安全访问规则,保证源盘为绝对只读不写入状态,100%保证源盘完整原

始状态。

� DC的自动监控功能,设备正常启动后数据拷贝能自动完成,无需人工干预。

� DC具备 UDMA100,以每分钟 6G的传输速度及自行研发的扇区伺服读取技术,

理论设计值为不到 30分钟,即可全面获取 80G硬盘数据,比现有技术提高 300%~

500%的读取工作效率。

2. 数据指南针(Data Compass)的高性价比

� Data Compass™的便携式设计,只需一台笔记本电脑外接 DC 即可随时上门服务

于各部门,全面提升单位信息安全标准,符合国家涉密数据管理标准。

� 针对大型工业设备、服务器、USB移动硬盘盒,不用再拆下硬盘即可外接 DC接

线进行数据恢复(逻辑层),简单省心。

9.2.1.3 数据指南针(Data Compass)软件、硬件运行环境

1. PC配置要求

为了满足数据指南针的良好运行,在个人电脑的硬件的配置上推荐配置要求,如表 9-3

所示。

表 9-3 DC 对个人电脑的配置要求

编 号 类 型 规 格 备 注

1 主板 915芯片组

2 CPU Intel 3.0GHz

3 内存 >=1G

4 光驱 无要求

5 显示器 无要求

6 系统盘 容量无要求 用于装操作系统

7 影子盘 容量尽可能的大些

需要注意的是,在安装数据针时,并不是一定要有影子盘的存在,但是在以后使用数

据指南针进行数据恢复时,建议有影子盘存在,并且影子盘的大小应该大于源盘,至少不

能小于源盘的容量。

深度剖析——硬盘固件级数据恢复

242

2. 运行平台

数据指南针(Data Compass)主要是针对 Windows 用户开发的产品,目前只支持在

Windows平台上运行,对其他的操作系统暂时不支持,目前支持具体Windows系列操作系

统如下。

� Windows2000 + SP4。

� Windows NT。

� Windows xp。

� Windows 2003。

� Windows vista。

9.2.2 PC-3000 与效率源固件模块对照

表 9-4所示为 PC-3000与效率源固件模块的比较。

表 9-4 PC-3000 与效率源固件模块比较

PC-3000 效 率 源 模块功能 重 要 性

1E 30 SRV-校准参数 A

21 33 RCT-磁盘表面数据区校正信息 A

37 55 U_List-固件区译码表 A

78 120 RZTBL-区表 A

18 24 AT_PDL(G-List)-P表相应的译码表 A

1F 31 DISK-驱动器 ID B

1B 27 AT_POL(G-List)-增长的缺陷表 B

39 57 ROM拷贝 B

38 56 微代码的第一部分(overlays) B

4F 79 微代码的第二部分(overlays) B

95 149 用于某些 Poker/Ardent驱动器中可选的 DISK B

1D 29 DMCS-缓存的相应的译码 C

2F 47 S.M.A.R.T入口 D

1A 26 SECU-安全系统模块(ATA密码) D

30 48 S.M.A.R.T属性 D

70 112 S.M.A.R.T 摘要 LOG D

71 113 S.M.A.R.T 自测 LOG D

63 99 S.M.A.R.T 属性的拷贝 D

33 51 HUTIL&HUSR-pivot缺陷表 E

72 114 S.M.A.R.T HOST VENDOR LOG E

34 52 RAER_HOO E

64 100 MAXATG E

5E 94 EVTLG_00 E

7B 123 FWR E

11 17 MX_ST_CFG1 E

43 67 MX_ST_CFG2 E

0D 13 MX_ST_CFG3 E

0E 14 MX_ST_SCRIPT E

22 34 Various settings(flags) E

7A 122 U_LIST-固件区译码表的拷贝 E

第 9 章 硬盘固件修复工具介绍

243

(续表)

PC-3000 效 率 源 模块功能 重 要 性

83 131 驱动器部分的信息 E

31 49 DISK-驱动器 ID的第二拷贝 E

14 20 STRS E

35 53 AT_XAL E

46 70 OPTI-自测设置 E

47 71 STRS E

48 72 驱动器部分的信息 E

9.3 HRT固件修复工具

HDD Repair Tools是俄罗斯 BVG GROUP技术组织开发的一款专业的硬盘诊断及维修

工具,简称 HRT。

9.3.1 HRT 固件修复工具简介

HRT配备有一个 PCI接口的功能卡,卡上安装了一个容量非常之大的存储芯片,正是

因为有了这样一个芯片,通过软件的方式来升级硬件卡的功能才得以实现,如图 9-47所示。

图 9-47 HRT的 PCI卡

HRT的软件部分可以运行在Windows操作系统下面。从 2004年开始,HRT开始支持

Windows 2000和Windows XP的操作系统,功能接口卡的驱动程序在 2000和 XP中必须要

安装,Windows 95和Windows 98的系统则不用安装。

由于 HRT的 IBM功能模块的成功研制,使 HRT受到使用者的广泛好评。它实现了对

IBM硬盘底层的快速操作,和其他的专修工具相比,速度有了明显提高,HRT提供的固件

区扫描修复的功能,能够纠正硬盘特定磁头所在固件区的缺陷错误,并能快速读写硬盘的

固件模块,从而实现修复硬盘的目的。

HRT提供的测试选项很丰富,能够从各个方面对硬盘进行有效的测试。

HRT集成了数据恢复软件的功能,可以恢复许多由于内部固件程序问题而无法被BIOS

深度剖析——硬盘固件级数据恢复

244

识别的硬盘,以及部分磁头无法读写的硬盘数据。

HRT和 PC-3000相比,有自己的技术优势。

� 模块更专业,磁头屏蔽功能较强,并可以更改大容量硬盘的容量。

� 硬盘寻址功能升级到 48位,测试、诊断硬盘故障的速度明显提升。

� 在修复硬盘伺服缺陷方面和其他工具相比,功能更强,IBM、WD、Samsung等专

业功能模块要强于其他专业工具。

� 使用的Windows操作界面,独立中断控制,可以外挂汉化程序。

� 专业添加坏道列表工具,稳定而且非常准确,一般不会出现漏扫情况。

� 独特的保留区缺陷修复功能,从而可以解决硬盘的和多疑难杂症。

� 整合数据恢复功能模块,使数据恢复变得更加方便快捷。

为了使读者对 HRT硬盘修复工具有一个形象直观的了解,下文将举一个案例供读者

参考。

9.3.2 HRT 硬盘修复工具修复案例

故障现象:一块希捷 U4、容量为 6.4 GB的硬盘,开机主板 POST自检很慢,有时候

不认盘,盘腔内发出“咔哒、咔哒”的响声。

处理过程:根据硬盘的故障现象,选择 HRT2.10中 U4的模块程序来排除硬盘故障。

具体步骤为:

第一步将硬盘与 HRT的 PCI 卡正确连接;加电并启动 HRT专修程序,如图 9-48所示。

图 9-48 启动 HRT中的 U4模块

硬盘启动期间异常响声不断,程序使用了约 3分钟才识别硬盘,并报出 AMNF错误。

第二步:打开希捷模块的 CP(Configing page)配置操作菜单。CP文件集中保存了硬

盘基本的配置信息文件和一部分引导文件,如图 9-49所示。

第 9 章 硬盘固件修复工具介绍

245

图 9-49 希捷硬盘的 CP窗口

在图中左侧就是硬盘的 CP参数选项,未经读取,全部用红X表示。在 Archive中,HRT

会自动用识辨引擎给待修的硬盘取个名字,把 CP保存成一个文件形式,无需用户更改。

第三步:读取该硬盘的全部 CP参数,如图 9-50所示。

图 9-50 读取 CP参数

此时 HRT的寄存器框中会显示 BUSY忙,大概等待 1分钟左右的时间,HRT会读完

整个硬盘 CP配置文件,如图 9-51所示。

深度剖析——硬盘固件级数据恢复

246

图 9-51 读取 CP

在读盘约 1分钟之后,HRT显示一个报错框,显示 CP17读取出错。这时候,提示选

择终止、重试或者忽略。反复选择重试,结果仍然 CP17读取出错。选择忽略,几秒钟后,

读取 CP完毕的菜单显现出来了,如图 9-52所示。

图 9-52 CP读取完毕

在图 9-50中显示,CP17是错误状态,读取信息失败。

第四步:修复 CP17。具体方法是,从备份的代码集中调用出 CP17,选择路径打开,

第 9 章 硬盘固件修复工具介绍

247

如图 9-53所示。

图 9-53 调取 CP17

选择 CP17后,加载到硬盘中,CP17号文件加载成功,全盘 CP文件再次读取,等待

一会后,提示完全成功,如图 9-54所示。

图 9-54 CP17修复成功

第五步:硬盘在写完 CP后,重新刷写 Flash程序。具体做法是:进入硬盘的 Flash读

写参数项,如图 9-55所示。

深度剖析——硬盘固件级数据恢复

248

图 9-55 刷新 Flash

立即导入备份好的 Flash 程序,然后启动电源控制模块中的开关电源操作,让硬盘重

新复位。将硬盘接到机器上进行测试,认盘正常了,异常响声就没有了。

第六步:修复硬盘的缺陷扇区。首先对硬盘进行缺陷扫描,会发现在硬盘中有很多的

缺陷,标记为 UNC,伴随有轻微的响声。

在执行 GROUP TO TRACK,即把缺陷磁道加入硬盘的磁道缺陷表。然后做一次全盘

快速清除,约 10分钟以后,用逻辑扫描方式对硬盘进行检测,接着把这些缺陷再加入缺陷

表。完毕后,用MHDD软件来扫描磁盘表面,没有出现红色块,磁盘修复完毕。上机检测,

故障消除。

第 10 章 硬盘固件修复一般方法

硬盘是机、电、磁一体化的复杂系统,相同的故障现象可能是软件故障、固件故障抑

或是硬件故障引起。故障判断准确,才能选择合适的修复方法,进而提高数据恢复的成功

率。因此在拿到故障盘进行数据恢复之前,一定要把准备工作做到位,获取尽可能多的信

息,以帮助自己确定故障诊断的思路。

大体的判定思路为:首先看硬盘各扇区能否被 winhex软件正常读取,如果可以,则

硬件、固件故障无法形成主导影响,或者不存在硬件、固件故障,按软件故障处理即可。

如果无法正常读取扇区,则看硬盘是否有异响,如果有则情况比较复杂,可能是硬件故

障或固件故障,或者二者都有,需要进一步诊断;如果没有,则可以尝试按固件故障处

理。

软件故障、硬件故障处理方法单一,考虑因素不多,相对来说并不棘手,因此固件修

复才能够真正体现数据恢复者的能力水平。虽然固件故障错综复杂,修复手段经常要依赖

先前积累的经验或数据,但总体来说仍然有一些通用的方法可以遵循,所谓“下手三板斧”。

本章中,我们就结合 PC-3000 UDMA维修套件介绍这些方法的具体操作过程。

10.1 清空 G表与重置 SMART

清空 G 表与重置 SMART 是固件修复的一剂“万能药”。在出现的固件故障中,经常

通过这两个步骤就可以解决故障。这是由于在硬盘固件中,G 表作为增长缺陷列表,在硬

盘运行发现缺陷时就要随时添加,SMART 值作为硬盘的状态参数,也需要经常进行实时

更新。频繁的读写使 G表模块与 SMART模块成为固件区中最容易损坏的部分,而修改这

两个模块对用户数据区并不会发生严重的影响。因此用户需要注意的事项不是太多,所以

该修复模式可以作为固件修复的首要手段之一。

下面以型号为WD3200AAJS的西数硬盘为例,介绍这两种方法的使用。

将硬盘与 PC-3000板卡正确连接,打开 PC-3000程序,然后选择正确的品牌与系列,

如图 10-1所示。

启动程序后一般会正确识别硬盘所处的家族,如果没有,则需要手动选择,或者让程

序重新检测。如图 10-2所示,这里这块硬盘也无法自动识别家族,所以单击“Auto detect”

按钮。

深度剖析——硬盘固件级数据恢复

250

图 10-1 选择品牌与系列

图 10-2 让硬盘重新检测家族

可以看到,程序识别出硬盘属于 pinclite家族,如图 10-3所示。接下来单击“Utility

Start”启动西数程序。

第 10 章 硬盘固件修复一般方法

251

图 10-3 程序成功识别家族

进入程序后,通过“Tests”→“Clear S.M.A.R.T”菜单可对 SMART属性进行重置,

如图 10-4所示。

图 10-4 清空 SMART

深度剖析——硬盘固件级数据恢复

252

选择“Clear S.M.A.R.T”后,一般情况下程序会立刻开始执行。有时也会提供如下选

项,由用户选择要清空的相关模块,如图 10-5所示。

图 10-5 清空 SMART选项

清空 G表通过菜单“Tests”→“Defect list”→“Erase defect list”→“G-list”来执行,

如图 10-6所示。有的硬盘清空 G表会导致部分用户数据无法访问,但总体来说影响不大。

在数据恢复中,有人对硬盘独一无二的 P表模块(原始缺陷表)的重要性过分夸大,认为

P 表破坏时无法用其他硬盘的 P 表模块替代,P 表损坏无异于数据恢复判了死刑。但其实

并不至于如此严重,如果其他手段不能奏效,实际上清空 P表也可以作为最后手段来使用,

只是要损失相当数量的用户数据。

图 10-6 清空 G表

清空 G表时有的硬盘品牌会弹出“丢失部分用户数据”的警告。西数 Marvell硬盘则

会提供擦除 G表的方式选择,如图 10-7所示。

第 10 章 硬盘固件修复一般方法

253

图 10-7 西数硬盘清空 G表选项

10.2 刷新 Flash ROM

刷新 Flash ROM一般是在硬盘更换电路板之后使用。ROM模块的固件版本必须与盘

面固件区固件版本完全一致。备件板的 ROM 与故障盘体不兼容可能导致硬盘读写效率下

降,运行变慢,甚至不稳定,或者初始化时敲头。有时硬盘没有更换电路板,但 ROM 内

容部分出错,也可以通过读出 ROM 内容然后重新写入的方法恢复硬盘正常运行。所以只

要原硬盘的 ROM内容有备份,则可以大胆尝试刷新 Flash ROM这一手段。

仍然以前面的 WD3200AAJS 西数硬盘为例,读取 ROM 内容,通过菜单“Tests”→

“service information”→“Work with ROM”→“Read ROM”来执行,如图 10-8所示。

图 10-8 执行读 ROM

深度剖析——硬盘固件级数据恢复

254

无论是将 ROM 内容读到硬盘配置文件中还是读到数据库中,都需要创建该硬盘对应

的目录(或索引)。一般程序会根据硬盘的型号、序列号等信息自动创建,如图 10-9所示。

图 10-9 读取目录选择

写 ROM则通过菜单“Tests”→“service information”→“Work with ROM”→“Write

ROM”来执行,如图 10-10所示。

图 10-10 执行写 ROM

第 10 章 硬盘固件修复一般方法

255

写 ROM时程序会提示选择文件来源:硬盘配置文件或数据库。如图 10-11所示。

图 10-11 写 ROM源文件选择

如果从配置文件中覆写,只要选择相应的文件目录即可找到文件源;如果选择数据库,

则程序可以利用关键词自动搜索最匹配的项。具体的,程序会根据硬盘所处家族弹出如

图 10-12所示窗口。

图 10-12 ROM源文件搜索

单击“Search”按钮,程序会弹出搜索参数选择窗口,如图 10-13 所示。选择的参数

越多,条件就越严苛,找到的结果可能就越少。

图 10-13 搜索参数选择

选定搜索参数后,单击“OK”按钮,程序开始搜索,最后将匹配结果显示在下面,如

图 10-14所示。这里显示的都是先前在数据库中备份的硬盘固件,选择一项进行尝试即可。

深度剖析——硬盘固件级数据恢复

256

图 10-14 ROM源搜索结果

有时刷新 ROM结果不成功,可能有以下原因:

(1) 电源不稳定。

(2) 数据线松动。

(3) 误写入匹配性太差的 ROM(非相同家族等)。

(4) 执行写入后,断电太快。

刷新 ROM失败后,如果 ROM集成在主控芯片内部,则为永久故障,无法再次刷新。

否则可以将 ROM芯片吹焊下来,使用 ROM编程器重新覆写进行尝试。

10.3 固件区测试与修复

如果前面的手段都不起作用,则可以对盘面固件区进行进一步测试。具体通过菜单

“Tools”→“Utility extensions”→“Modules directory”读取模块目录,如图 10-15所示。

图 10-15 模块目录读取

第 10 章 硬盘固件修复一般方法

257

在读取到的模块目录中任意选中一模块,然后在右击出现的快捷菜单中选择“Start SA

checking”开始进行固件区检测,如图 10-16所示。

图 10-16 固件区检测

开始之前程序会弹出模块选择对话框,如果不需要对全部模块进行检测,可以把相应

模块前的复选框去掉,如图 10-17所示。

图 10-17 选择要检测的模块

检测结果如图 10-18所示,检测后会在每个模块的 ID前出现一彩色方块。其中绿色表

示完好,红色表示读取错误。可以考虑对错误模块进行替换。

深度剖析——硬盘固件级数据恢复

258

图 10-18 模块检测结果

选中要替换的模块,在右击出现的快捷菜单中选择“Rewrite module from DB”,可以

从数据库中查找到合适的硬盘模块进行替换,如图 10-19所示。

图 10-19 覆写错误模块

程序会弹出如下对话框引导用户从数据库中搜索兼容型号模块,如图 10-20所示。

第 10 章 硬盘固件修复一般方法

259

图 10-20 搜索兼容模块

单击“Search”按钮后会出现搜索参数对话框,如图 10-21所示。

图 10-21 搜索参数选择

程序会将搜索得到的所有结果显示在如图 10-22 所示对话框中,用户可以选中其中一

项尝试进行替换。

图 10-22 模块搜索结果

深度剖析——硬盘固件级数据恢复

260

替换之前程序会显示替换源所在目录的各个模块,其中只选择替换源模块的 ID,如图

10-23所示。此时用户可以将其他模块也一并选中替换,但不建议这么做。

图 10-23 再次出现模块列表

由于固件区数据的敏感性,模块替换要非常谨慎。其中某些模块对于硬盘操作与用户

数据是唯一的,因此在拿到一块硬盘进行操作之前首先要有备份硬盘资源(Flash ROM,

固件区模块,固件区磁道)的好习惯,使用 Service information-HDD resources reserving 菜

单来执行。这样在未来某些恢复操作出错时便于回滚。

对损坏模块的修复切记只覆写损坏的模块,不要用另一块硬盘的拷贝覆写全部固件区

(所有磁道或者所有模块)。在覆写该模块之前,可以将光标移到该模块上,程序会提示该

模块的重要性(本硬盘唯一,本型号唯一,本家族唯一,不重要等),据此可以确定是否覆

写该模块。如果对某一损坏模块的修复方法不太确定,可以咨询更有经验的人,切忌贸然

行事。

固件区模块替换看似简单,但在实际应用中经常无法直接使用。具体体现在以下几种

情况:

(1) 硬盘一直显示 Busy,根本无法就绪,所以无法进行固件区测试。

(2) 硬盘模块表(module table)无法正常获取,所以仅能使用默认模块表读取到有

限的几个模块,无法对全部模块进行测试。

(3) 模块表读取错误时往往无法进行覆写。

因此需要用户开动脑筋,突破这些瓶颈。

第 10 章 硬盘固件修复一般方法

261

10.4 热交换

热交换在各种硬盘的测试与数据恢复中也是一种通用的方法。此方法是在固件区模块

无法替换(由于各种原因,覆写总是不成功)时可以考虑的终极办法。其核心思想是用故

障盘的 PCB与好盘的盘体重组出一个正常的硬盘,再保持通电状态,将好盘盘体换回故障

盘盘体,从而跳过对故障盘固件区的读写。

对于任何硬盘,热交换的成功执行有很多限制条件。例如:

(1) 固件版本。热交换不适用于版本不兼容的硬盘。

(2) 磁头映射图。热交换不适用于磁头映射图不同的的硬盘。

(3) 区域分配表。区域分配表不同并不影响硬盘启动,但硬盘将无法访问到用户数据。

(4) 译码表。数据恢复需要故障盘与备件盘使用相同译码表,否则无法实现完全的

数据恢复。

(5) 对于西数硬盘来说,还要考虑适配参数。其中 ROM 中的适配参数模块错误会

导致硬盘型号无法正确识别,固件区中的适配参数模块错误会导致用户数据无法正常访问。

前三个条件可以通过挑选合适的备件盘来实现。备件盘必须是同一家族,具有相同型

号,兼容的固件版本以及相同的磁头映射图。后两个条件比较苛刻,不能通过普通挑选实

现。因为世界上没有两块使用相同 P表以及相同译码表的硬盘。

不同品牌不同故障硬盘在热交换过程中的具体处理会有些不同,但大致遵循以下步骤:

(1) 如图 10-24所示,先对好盘的原始模块做备份。

图 10-24 备份好盘模块

(2) 执行第一次热交换。使用 sleep 命令将主轴电机停转,如图 10-25 所示,好盘

PCB保持加电状态,接到故障盘盘体上。

深度剖析——硬盘固件级数据恢复

262

图 10-25 第一次热交换

(3)如图 10-26所示,启动故障盘主轴电机。

图 10-26 启动电机

(4) 尽可能备份故障盘的固件资源,如图 10-27所示。备份时要注意重新命名目录,

防止覆盖先前备份的固件。如果备份不能顺利完成,可以考虑在 Kernel模式下备份 ROM,

修改磁头映射图后备份固件区模块。

第 10 章 硬盘固件修复一般方法

263

图 10-27 备份固件

(5) 将电路板还原,将先前提取的故障盘必要固件模块覆写到好盘并重建译码表。

图 10-28 电路板还原后覆写坏盘固件到好盘

(6) 好盘断电再上电,重新进入程序,执行第二次热交换。如图 10-29 所示,使

用 sleep 命令将主轴电机停转,好盘 PCB 保持加电状态,接到故障盘盘体上。查看故障

盘扇区。

深度剖析——硬盘固件级数据恢复

264

图 10-29 第二次热交换后查看故障盘数据

(7) 如图 10-30所示,利用 DE 尝试恢复用户数据。

图 10-30 用 DE提取故障盘数据

第 11 章 硬盘修复进阶

11.1 希捷硬盘

11.1.1 希捷酷鱼 10 代校准中途停电的处理

通常而言,硬盘在执行全面自动校准时,是禁止对硬盘中途断电的,否则会对硬盘产

生无法估计的错误和损伤。如果由于特殊原因中途异常断电,也不能一概而论,就一定认

为这盘就报废了,还要根据实际情况进行具体分析,本节将举一实例,供读者借鉴。

故障现象:一希捷酷鱼 10代硬盘,坏道多,在执行全面自动校准后,中途突然断电。

故障分析:在终端指令下,对该硬盘进行关开电源,显示初始化信息后,硬盘进入 F>

命令模式,并在 F>前面显示报错信息“APP ERR: A6”。希捷酷鱼 7代以后的硬盘,执行

全面自动校准时,都会破坏 APP 模块,如果这次异常断电仅仅是破坏了 APP 模块,只要

修复好 APP模块,程序应该可以继续对硬盘实施全面自动校准。

处理过程如下:

步骤 1:由于 F 级命令模式下,不能直接对固件模块进行读写操作,所以应该通过引

导的方式,进入到 T级命令模式。将硬盘与效率源终端正确连接。

步骤 2:启动效率源希捷专修程序,并正确选择硬盘家族,如图 11-1所示,单击“从

硬盘装入”按钮。

步骤 3:在显示的窗口中单击“其他操作”→“转换到 F级”,如图 11-2所示。

图 11-1 选择硬盘家族 图 11-2 选择“转换到 F级”

深度剖析——硬盘固件级数据恢复

266

步骤 4:在工具栏中选择“引导管理”,并在该窗口中正确选择硬盘固件模块存放路径,

然后单击“加载所有模块”按钮,如图 11-3所示。

步骤 5:加载所有模块完成后,在 T级指令模式下,用回车键确认引导过程是否卡死,

如果连续出现“T>”,表示模块加载完成,无卡死现象。

步骤 6:在 T 级指令模式下输入大写字母 R,R 表示把硬盘接口信息读入缓存,如果

不输入 R,电路板将无法正确识别固件区相关接口参数,并按“Enter”键到 T>,如图 11-4

所示。

图 11-3 加载所有模块 图 11-4 输入 R

步骤 7:选择专修程序“引导管理”,如图 11-5所示。

单击“APP to HDD”按钮直接回写 APP模块,回写 APP模块成功后,就可以在指令

下对硬盘关开电,以观察硬盘是否处于是 F级命令模式了。

步骤 8:重新进行硬盘的全面自动校准,如图 11-6所示。

图 11-5 引导管理窗口 图 11-6 硬盘校准

图 11-6显示硬盘能够自动执行自动校准,说明修复 APP成功。所以 K7以后盘校准过

程中尽量不要断电。如果断电仅仅是 APP模块损坏,可以按上面的方法处理。

第 11 章 硬盘修复进阶

267

11.1.2 酷鱼 11 代容量为 0 的修复

故障现象:希捷硬盘的 7200.11 硬盘的盘体由于存储密度高,在运行过程中发热量也

较高,时常导致硬盘自保护,数据无法正常读出,常见的形式为状态忙或 LBA值为 0等。

下面详细介绍这类故障的修复方法。

处理过程如下。

步骤 1:将故障硬盘与维修终端连接好后,启动希捷专修程序,在打开的欢迎界面中

选中“酷鱼 11”单选按钮,单击“进入”按钮进入程序的“酷 11 数据修复”工作界面,

如图 11-7所示,可以看到硬盘状态一直为“忙”。

图 11-7 酷 11数据修复界面

步骤 2:切换到“指令模式”工作界面,如图 11-8所示。按 Ctrl+Z组合键后没有任何

反应,无法接受其他指令。若要解决这些无法接受指令的故障,可以利用 7200.11 的电路

板直接通电,令硬盘可以就绪并能接受一些简单指令的特点。

图 11-8 指令模式工作界面

深度剖析——硬盘固件级数据恢复

268

步骤 3:拆下电路板,直接通电,待状态显示为“就绪”后,单击状态栏中 MODEL

位置的按钮,即可看到硬盘参数,除了显示 LAB 为 0 外,其他的信息都是正常的,如图

11-9所示。

图 11-9 酷 11数据修复界面

步骤 4:切换到“指令模式”工作界面,单击“A指令”按钮,在其中输入“/2”按“Enter”

键,转回 2级模式,输入“Z”指令按“Enter”键,停止电机,硬盘停转,需要注意的是,

这里输入指令字符必须是大写,否则无效,如图 11-10所示。

图 11-10 指令模式工作界面

步骤 5:接上硬盘盘体,并保持电路板在上接的过程中不能断电,这一点非常重要。

因为这将影响到后续的操作能否继续。

步骤 6:返回“指令模式”工作界面,在“F3 2>”提示符后面输入“U”指令后按“Enter”

第 11 章 硬盘修复进阶

269

键,启动电机如图 11-11所示。

图 11-11 指令模式工作界面

注意,这样做的目的是为了避免硬盘刚启动就直接去读盘体上的固件,从而造成硬盘

卡死,无法输入口令。所以这里利用电路板能就绪的特点来发送指令。

步骤 7:继续在指令模式下输入“/1”按“Enter”键,进入 1级模式,输入指令“N1”

按“Enter”键,对 SMART表进行了初始化,并校验 G-LIST表,如图 11-12所示。

图 11-12 指令模式工作界面

步骤 8:将电源复位一次,可以看到硬盘可以就绪。此时看到容量 LBA依然为 0,在

“酷 11数据恢复”工作界面中单击“自动恢复容量”按钮,如图 11-13所示。

深度剖析——硬盘固件级数据恢复

270

图 11-13 容量恢复

步骤 9:待完成后系统自动复位硬盘电源,并显示硬盘的参数,可以看到状态栏中的

LBA已经能正常显示了,如图 11-14所示。酷鱼 11代硬盘状态忙和 LBA为 0的故障修复

完成。

图 11-14 酷 11数据修复界面

11.2 日立硬盘

11.2.1 日立硬盘数据恢复典型故障处理

故障现象:一块日立硬盘,其model号为 HDP725050GLA360,容量为 500 GB,如图 11-15

所示。

第 11 章 硬盘修复进阶

271

加电测试,盘腔内发出敲盘声,初步判断是磁头损坏。向用户了解有关情况,用户反

映:由于忘了关机,机器运转时间比较长,并出现蓝屏、死机现象。发现后进行了几次频

繁的开关机,情况并没有好转,反而听到了磁头敲击盘片的声音,用户送修时,拿来一块

型号、参数相同的硬盘。

处理过程如下:

步骤 1:由于对故障盘加电测试时,盘腔内发出的声音频率很高且声音很大,判断是

该硬盘磁头损坏,打开盘腔,进行磁头更换。打开盘腔后可以看到其内部结构,如图 11-16

所示。

图 11-15 故障盘 图 11-16 故障盘内部结构

该盘有两个盘片,4 个磁头。磁头更换完毕后,加电测试,盘腔内仍然传来磁头敲盘

的声音。

步骤 2:由于更换磁头后,仍有磁头敲

盘的声音,所以就更换了硬盘电路板上的

ROM,如图 11-17所示。

更换 ROM后,好像仍有敲盘的声音。

步骤 3:重新安装电路板,在安装电路

板时,有意识的按了一下电路板和磁头组件

电路的接触点,硬盘恢复正常。

故障分析:出现磁头敲盘,原因大致有

三种。

第一种情况是磁头损坏,这种情况占大

多数。磁头损坏的原因有两种:一种是物理

损毁,是由于用户在使用过程中不慎摔坏,

或遭遇了其他外力冲击,致使磁头遭遇了硬

伤;另一种是电路故障,即磁头组件上的前置放大器或其他元器件功能失效。无论哪一种

情况造成了磁头损坏,一般情况下就是更换磁头。

图 11-17 故障盘

深度剖析——硬盘固件级数据恢复

272

第二种情况是固件故障,针对不同的固件故障,其处理方法也有两种:一种是用

PC-3000专用工具对固件进行修复;第二种方法,如果是电路板上 ROM(存放着硬盘固件

中部分模块)损毁,可找同型号、同批次的硬盘的 ROM芯片进行更换。

第三种情况硬盘 PCB板的电路触点氧化、虚焊或与盘体接触不良也容易造成。

因此维修时,首先不要把问题看得很严重,先从盘体与电路板的接触不良开始下手,

很有可能硬盘就是一个很简单的故障,如果定位不准,不但要走好多弯路,甚至对硬盘会

造成更大的伤害。

11.2.2 不同型号日立硬盘之间的磁头兼容

通常情况下,硬盘磁头损坏,需要找到同型号的硬盘磁头进行更换,才能进行数据恢

复操作。但对于日立硬盘而言,情况就有所不同,虽然一些硬盘的型号不同、容量不同、

使用的磁头数也不同,但同样能够兼容。笔者在实际工作中遇到这样一实例供读者借鉴。

故障现象:一款 HITACHI,MODEL:HTS541280H9AT00、容量为 80 GB 的笔记本硬

盘,如图 11-18所示。

加电后有磁头敲盘的声音。

处理过程如下:

步骤 1:初步判断是磁头损坏,开盘后发现该盘是两个盘片,三个磁头。到市场上找

同型号的硬盘,转了很长时间,没有结果,不得已买了一个型号为 HTS541212H9AT00、

容量为 120 GB的硬盘,如图 11-19所示。

图 11-18 HTS541280H9AT00硬盘 图 11-19 HTS541212H9AT00硬盘

HTS541212H9AT00硬盘也是两个盘片,但它是四个磁头,更换磁头。

步骤 2:更换磁头后,加点检测,硬盘能够被系统识别,随即使用MTL作数据镜像,

数据镜像完毕后,用 R-STUDIO软件扫描,结果没有扫描到正常数据,只是找到一些额外

的无用文件,但获得该磁盘的分区格式是 NTFS信息。使用 Getdataback for NTFS 扫描,

数据比较完整得出来了。

故障分析:这两款硬盘虽说型号不同,但同属一个家族,盘面记录密度相同,所以在

第 11 章 硬盘修复进阶

273

进行数据恢复时,能够应急使用,但这条经验仅仅适用于该款硬盘,对于其他型号的硬盘,

能否照猫画虎,还需要大家在实践中进行不断地尝试和总结。

其次,当使用某一款数据恢复软件对硬盘进行数据扫描时,如果结果不理想,可以换

另外一种软件工具再做尝试,切不可轻易做出“数据无法恢复”的定论。

11.2.3 日立硬盘的密码解锁

在 PC-3000应用程序中,对日立硬盘的密码解锁是自动的。在硬盘启动期间,应用程

序读取硬盘驱动器的 ID号,并测定 ATA口令是否处于使能状态。

如图 11-20所示,如果硬盘存在口令,那么“Utility start”窗口的“Password unlocking”

按钮将由禁用呈现为活动状态。

图 11-20 “Utility start”窗口

对于 DARA、DJSA、DTLA-5和 DTLA-7家族的硬盘而言,用户进行硬盘解锁,无须

再进行其他操作。下面将阐述其他家族的硬盘密码解锁的操作步骤。

� 使用“ATMR,HTS548,HTS726”探测器解锁 ATA口令

下面讲述 ATDA,ATCS 硬盘家族的密码解锁,首先我们来了解一下 ATDA 及 ATCS

硬盘家族具体包括哪些硬盘,如表 11-1、表 11-2所示。

表 11-1 ATDA 硬盘家族

深度剖析——硬盘固件级数据恢复

274

表 11-2 ATCS 硬盘家族

其硬盘密码解锁的步骤如下:

-当加锁的硬盘和 PC-3000 板卡连接完毕后,启动 PC-3000,并进入“Utility start”

窗口。

-单击“Password unlock”,程序将关闭驱动器的电源。

-将探测器(如图 11-21所示)连接到相应的硬盘家族的探测点(如图 11-22所示),小

心使用探测器,否则可能会损坏 PCB。

图 11-21 探测器

图 11-22 特测点

-此时程序将弹出一个对话框,如图 11-23所示。

图 11-23 探测提示窗口

第 11 章 硬盘修复进阶

275

单击 OK 按钮,程序将打开硬盘驱动器的电源。一旦硬盘报告准备就绪,程序将显示

一个“Remove probe!”(移开探测器)信息。

-移开探测器,单击 OK按钮。

-程序将解锁硬盘,解锁成功后主窗口将显示“HDD unlocked successfully!”。如果探测

器和 PCB板没有稳定连接(那么解锁将是不可能的),程序将反复尝试。

� 使用安全模式解除 ATA口令(3.5〞硬盘)。

步骤:

-当上锁的硬盘连接完毕后,启动 PC-3000,并进入“Utility start”窗口。

-单击“Password unlocking”,应用程序将关闭硬盘驱动器的电源。

-依照硬盘接口板图解,将硬盘控制板上的跳线设置为“AUTO SPIN DISABLE”,如图

11-24所示。

图 11-24 日立 3.5〞硬盘跳线设置图

-当对硬盘的访问恢复以后,程序会提示你将跳线重新设置为主模式。

� 使用安全模式解除 ATA口令(2.5″PATA硬盘)。

步骤:

-当加锁的硬盘和 PC-3000板卡连接完毕后,启动 PC3000,并进入“Utility start”窗口。

-单击“Password unlocking”,应用程序将关闭硬盘驱动器的电源。

-将 PC-2 适配器的调线设置为安全模式,如图 11-25所示。

图 11-25 PC-2适配器的安全模式设置

-当对硬盘的访问恢复以后,程序会提示你将跳线重新设置为主模式。

� 用短接NV-RAM引脚方法解锁硬盘的ATA口令(针对 2.5″SATA硬盘,某些 PATA

硬盘家族)。

步骤:

-当加锁的硬盘和 PC-3000板卡连接完毕后,启动 PC-3000,并进入“Utility start”窗口。

-单击“Password unlocking”,程序将关闭硬盘驱动器的电源。

-程序将建议对 NV-RAM 相关触点进行短路。你可以用金属导线在电路板内侧对

深度剖析——硬盘固件级数据恢复

276

NV-RAM相关引脚进行焊接或在电路板的外侧对指定的探测点进行短接。但在实际工作中

这样做的难度比较大,如果没有 NVRAM的相关资料,你就不可能知道对那些引脚或探测

点进行短接。有些程序功能强大,可以给用户提示短接的具体引脚或触点,但并不是所有

的情况下,程序都能提供。所以有一些简单的技巧可供采用。

一是当程序显示短路提示的对话框时,拧松硬盘上 PCB的螺丝,当程序提示你移开

短路器时再重新拧紧螺丝。这种方法既避免了不知短路的困扰,也确保了 NV-RAM内容

的安全。

二是对于 PATA 硬盘,你可以设置 PC-2″跳线进入安全模式以替代对 NV-RAM 短路

的方式。

当程序对所连接硬盘执行必要的步骤以后,程序将提示拆除安全模式短路跳线。

11.3 西数硬盘

硬盘的故障不外乎以下几类:

� PCB故障。

� ROM中的微程序损坏。

� 读/写磁头或整流芯片失效。

� 固件区模块损坏。

� 主轴电机故障。

� 坏扇区。

但西数硬盘的故障诊断比较复杂,同样的现象有可能是固件故障也可能是硬件故障,

同样即便是固件故障也经常无法准确定位原因。不过不知道原因并不意味着很难修复,

西数硬盘的修复存在一些固定的规程与手段,在逐步尝试的过程当中硬盘可能就恢复正

常了。

11.3.1 磁头卡死故障

这是 2.5 英寸移动硬盘的常见故障,不仅仅是西数硬盘。正常情况下,硬盘在断电时

磁头会回到起停区。但是在移动硬盘突然掉落的情况下,或者移动硬盘未卸载的情况下热

插拔都会导致磁头卡在盘面上无法归位。3.5英寸盘基本不会出现故障,因为其主轴电机的

扭力足够强大。磁头卡死故障通常不会对磁头造成大的机械损伤。

此故障判断起来也比较简单,一般是硬盘发出单一“嗡嗡”声(与盘面划伤的摩擦声

区别开来)。只要到洁净的地方打开硬盘手动将磁头归位即可。

11.3.2 电路板故障

将故障 PCB板接到同型号盘体上,即可测试其功能。为确保完全兼容,必须将备件盘

电路板的 ROM固件写入被测 PCB板的 ROM(记得备份原固件)。有时也可直接将好盘体

的 ROM焊到所测 PCB上。若硬盘盘体正常,换上被测 PCB功能也正常,则问题不在电路

板,需要写回原固件(或者换回原 ROM)进一步查找硬盘缺陷。反之,如果 PCB 在好盘

体上不正常,故障现象和原来一样(与接到故障盘体上相同),那么 PCB 就是症结所在。

第 11 章 硬盘修复进阶

277

数据恢复并不需要修复 PCB,只需要找一块好板安装到故障盘体上(已将故障盘 PCB 的

ROM固件写到该板或者已将故障盘 ROM换到好板上)然后拷贝用户数据即可。

主轴电机控制芯片故障是 PCB故障的一个典型原因。该芯片经常发生物理损坏。与此

同时,其附属元件(二极管、基准电压二极管、限流电阻)也经常随之损坏。如图 11-26

所示,此故障通过直观检查即可定位。如图 11-26所示为损坏的主轴电机控制芯片。

图 11-26 损坏的主轴电机控制芯片

磁头组件接插件接触不良也是电路板故障的一个常见原因。此故障不需要更换电路板,

只要用橡皮将 PCB上与磁头组件接插件接触的部位擦拭干净即可。

11.3.3 电机故障

西数硬盘主轴电机抱死时只能采用开盘换盘片的方法,且多盘片时要保证拆装盘片时

各盘片的相对位置保持不变。西数硬盘对此要求较高,小的偏移就有可能导致磁头不能正

常工作,发生敲盘。

11.3.4 USB 接口硬盘的维修

西数的 USB接口硬盘主控芯片对外读写通道仍然是 SATA协议,只是在其后又连接了

SATA 转 USB 的桥接芯片,如图

11-27所示的圆圈标志内。

该桥接芯片出错的频率较高,

导致 PC-3000 无法正常读盘以及数

据恢复。特别是固件也存在故障时,

PC-3000 对于 USB 接口基本无能为

力。此时可以考虑采用迂回的战略,

找到与故障盘主控型号相同的

SATA接口硬盘,将故障电路板上的

ROM拆焊,替换到 SATA接口电路

板上。这样USB硬盘就变成了 SATA

硬盘,用户就可以进一步对其进行

图 11-27 西数 USB接口硬盘电路板

深度剖析——硬盘固件级数据恢复

278

诊断了。

当然还需注意,西数 USB硬盘包括两个系列:passport与 elements。Elements系列是普

通硬盘,桥接芯片仅执行 USB与 SATA的协议转换。Elements系列则可以加密,桥接芯片

还集成了加密算法,采用“迂回战略”对它们可能不太奏效。

11.3.5 ROM 中磁头映射图的编辑

ROM 中磁头映射图的编辑主要用于诊断故障磁头。当某个头损坏时或者该头使用的盘

面损坏时,都表现为对应磁头的大量缺陷扇区与

缺陷磁道,关闭故障磁头需使用 Head map

changing 改变磁头映射图的命令。如图 11-28 所

示选择 Heads configuration 磁头配置字段中的

From map,对 Head map磁头映射图需要关闭的

磁头不再打勾即可。

Head map 定义了磁盘理论上最多可以有的

磁头数;Heads Number定义了磁盘物理上实际配

备得的最大磁头数,如果 head map中勾选的磁头

不对,会发生敲盘。用户可以逐个勾选磁头来判

断所有连接的正常磁头。改变磁头映射图后生成

的映射图将被保存在硬盘的 Flash ROM中。如图

11-28所示,该硬盘物理上最多可以有 6个磁头,

实际上使用的是 0、2、4、5(逻辑上仍然被认为是 0、1、2、3头)。

简单关闭磁头并不能够用于数据恢复。因为建立译码器时,每个逻辑扇区 LBA都对应

其逻辑磁头号,所以关闭中间磁头会导致对应关系发生偏移,从而无法正常访问用户数据。

例如,上面硬盘的 0、2、4、5,关闭其中的 2,0、4、5对应为的逻辑头则为 0、1、2。

11.3.6 RAM 中磁头映射图的编辑

ROM中磁头映射图的编辑具有局限性,且物理磁头到逻辑磁头的转换只能顺序执行,

即 0、2、4、5对应逻辑磁头只能是 0、1、2、3。相比起来 RAM中磁头映射图就灵活的多。

例如,它可以写成 0、4、2、5 让物理 4头对应逻辑 1头,物理 2头对应逻辑 2头。甚至可

以写成 0、0、0、0,让物理 0 头可以对应逻辑的 1、2、3、4 头。因此在数据恢复中,编

辑 RAM中磁头映射图经常会用到。

例如:当硬盘某磁头发生故障,或者换头后适配参数严重不匹配,导致硬盘发生敲盘

(敲三声然后就绪时适配参数不匹配的可能性较大,持续敲盘一段时间后,硬盘就绪时,

其磁头物理故障的可能性较大)。就绪后无法正确识别硬盘 ID(硬盘返回工厂别名或空 ID)。

则可以用好头去欺骗硬盘校准程序。步骤如下:

� 执行 RAM head map编辑命令(菜单“Tests”→“Service information”→“Work

with ROM”→“RAM head map editing”),将所有物理磁头改为 0头。

� 执行软复位命令(菜单“Tools”→“HDD”→“Software Reset”)。

� 获取硬盘 ID(菜单“Tools”→“HDD ID”),如果没有恢复正常,则将 RAM head

图 11-28 ROM中磁头映射图编辑

第 11 章 硬盘修复进阶

279

map中物理磁头全改为 1头再软复位读取。如果仍然不能正确读取硬盘 ID,则无

法通过此法恢复。否则继续下一步。

� 读取并备份硬盘固件。将 RAM head map恢复真实物理磁头编号(或者至少将故

障磁头屏蔽),软复位。

� 启动 Data Extractor恢复数据。

11.3.7 硬盘 ID 识别故障

如果 PC-3000西数程序启动后,硬盘返回工厂别名或空 ID,或者很长时间无法报告就

绪,则可以认定硬盘无法正确识别。原因可能有以下几种:

� ROM版本不匹配。

� ROM中适配参数模块 ID=47h属于另一块硬盘。

� 某个磁头损坏。

� 主轴电机或磁头控制器(前置放大器)芯片故障。

要确定故障,首先需要全面检查电路板,确认它使用的是原来的 ROM(可以尝试恢复

ROM 比较结果)。然后修改 ROM 中磁头映射图,看是否是故障磁头导致硬盘无法正常启

动。此外还有两种情况。

1. 硬盘无法就绪的情况

这种情况可能是由出错电路板 ROM的版本号与固件区 Overlay版本不一致所引起。可

以尝试写入一个相同家族不同版本的 ROM,然后将原 ROM的模块 ID=0Ah与 ID=47h(这

两个模块含有磁头映射图与适配参数)写入现在的 ROM。步骤如下:

� 备份原 ROM及其模块。

� 写入不同版本的 ROM。

� 写入原 ROM的模块 ID=0Ah与 ID=47h。

尝试此方法后可以实现硬盘就绪,能够获取硬盘 ID。然后可以通过菜单 Test→Service

information→Work with Service area→Hardware modules checking执行固件区模块硬件完整

性检测。最终要访问数据的话,可能还要通过编辑 RAM中的磁头映射图或者热交换来实现。

2. 找不到 RAM 中磁头映射图的情况

有时硬盘在禁用某个磁头(通过编辑 ROM 中磁头映射图等方法)或者写入另一版本

ROM后可以正常读取固件区模块,但无法找到 RAM中的磁头映射图,而另一块使用相同

版本固件的硬盘可以在 RAM 中找到磁头映射图。这时可以尝试替换 Overlay 模块 ID=11h

来解决。步骤如下:

� 写入另一版本的 Overlay模块 ID=11h。这一步往往会遇到原模块与要写的模块长

度不一致的情况。这时需要用 hex editor增加或减小该模块的大小,然后重新计算

校验和。

� 恢复 ROM,确认其磁头映射图是完整的。

� 对硬盘重新上电,此时 RAM中磁头映射图应该可以查看。

� 写回原模块 ID=11h,保持硬盘上电状态,编辑 RAM中的磁头映射图。发送软复

位命令(Tools→HDD→Software Reset)。

深度剖析——硬盘固件级数据恢复

280

11.3.8 ABR 错误

经常硬盘能正确识别,但读任何扇区都显示 ABR 错误。该故障表明固件没有完全初

始化。故障可能是由于某关键模块加载错误,也可能是磁头校准失败。此时需要首先备份

硬盘 ROM与固件区,然后从简到繁依次尝试以下步骤:

� 在“From map”选项中切换磁头映射图配置到默认设置。

� 重建译码器(Test→Service information→Work with Service area→Translator

regeneration 菜单)。

� 编辑 RAM中的磁头映射图。

� 热交换。

� 组合两个版本的固件。

11.4 三星硬盘

三星硬盘提供了先进的终端诊断模式,为了准确地诊断出故障,需要先把硬盘连接到

终端,将终端输出的代码与附录 2表格对照以确定故障。

要检测电路板故障,可以使用同家族硬盘的 PCB板来测试。如果更换电路板后硬盘操

作有所改变,则可能是原 PCB板损坏。但这种方法有时也无法明确判断出坏板。这是因为

三星硬盘的 ROM固件包含了调节磁头读/写固件区的适配信息。VANGOPLUS、PANGO、

VELOCE、PALO、MAGMA 以及以后家族硬盘的 ROM 中还含有磁头映射图,所以还需

要将原盘的 ROM芯片焊接到备件板上进一步确定故障源。

如果硬盘加电后没有起转保持 BSY,则可能是 ROM固件严重损坏,校验和不匹配。

ROM中数据不可用也可能导致硬盘无法就绪并在软复位后敲盘。更换电路板后,硬盘可能

完全恢复正常,也可能仍然敲盘,还有一种可能,读数据正常写数据无效。这些硬盘可能

在终端输出代码“LED 13”(此代码也可能因其他原因出现),此时如需恢复数据,必须选

择一块兼容的电路板以使硬盘就绪。

磁头组件或者整流芯片失效也可以通过终端输出的信息来识别。如果 0头或整流器读

通道故障,硬盘会在启动时敲盘,终端显示类似下面的信息:

SpnOk

DAC:-00266

H: +00000 // the current head 0 (zero) has been set

UF: 1. 1st Gray err // error accessing surface using the zero head

H: +00001 // the current head 1 has been set

SK C: 0000D8E5

ENG>SRV> AP_FSAM

C: 0000006C H: +00000 // the current head 0 has been set

DAC:+00094 // parameter settings for the current head

SR : +00000

UF: 1. 1st Gray err // error accessing surface using the zero head

第 11 章 硬盘修复进阶

281

H: +00001 // the current head 1 has been set

...

硬盘表面全部划伤也可通过终端输出的信息来识别。显示如下:

SpnOk

DAC:-00033

H: +00000

UF: 1. 1st Gray err

H: +00001

UF: 1. 1st Gray err

H: +00000

UF: 1. 1st Gray err

H: +00001

UF: 1. 1st Gray err

...

ENG>SRV>

这种情况下硬盘无法修复,也不能恢复数据。

损坏的磁头可以通过逻辑扫描中的随机读取模式(random reading mode)来判断。扫

描结束之后,把缺陷转化为 PCHS格式,并且比较两个磁头的缺陷记录(增加缺陷的磁头

应该是损坏的)。

如果硬盘的固件区模块存在损坏,则可能在终端显示代码''LED 5B''。该代码并不总是

在终端中出现,一般是在使用固件数据验证(service data verification)命令发现有损坏模

块时容易出现。启动一个固件区模块损坏的硬盘或者尝试读取这些损坏的模块时,可能导

致敲盘然后主轴停转,并且在终端中不输出任何代码,发送软复位(soft reset)命令通常

可以使硬盘就绪。

如果硬盘的主轴启动出现问题,则在终端中输出代码''LED 16''(Spin-up error)。这

可能是电机的问题,也可能是控制芯片的问题,此时可以用同家族的硬盘更换电路板进

一步确认故障原因。如果更换后主轴起转并且错误代码发生变化,则意味着需要更换这

个芯片。

如果一块硬盘的每个区(zone)有大约 50~100 的坏扇区,可以使用逻辑扫描探测并

添加到缺陷表。如果缺陷的数量过多,则需考虑运行 Burn test维护。

11.4.1 备件盘的选用原则

V40,P40,V40P,VL40以及 V50型号的三星硬盘侧面标签上有一个字符代码,如图

11-29所示。

代码的第四个字符代表硬盘磁头制造商:xxxRx – READ RITE;xxxSx – SAE;

xxxAx – ALPS。此信息对磁头组件替换与 ROM固件选择是十分重要的。第三个字符代表

盘片制造商:xxMxx–MCC;xxTxx – TRACE;xxSxx – SDK。

深度剖析——硬盘固件级数据恢复

282

图 11-29 侧面标签的字符代码

VANGOPLUS、PANGO、VELOCE、PALO 以及 MAGMA 家族的硬盘可以在盘体顶

部标签找到此类标记,P/N值后面的标记设计为如 P/V MS,其中第一个字符代表盘片制造

商(M),第二个指示磁头制造商(S)。

替换磁头组件时应当根据这些字符代码来选择备件盘,即指示磁头制造商的字母必须

匹配。

替换三星硬盘电路板时,建议使用相同的版本。当然也允许使用其他版本的电路板,

但MAGMA家族除外。

11.5 富士通硬盘

富士通硬盘一般用于笔记本电脑,很少出现在个人消费市场,因此磁头损坏类故障并

不太多,固件故障也很少。据统计,富士通硬盘的主要故障为硬盘坏道,约占到整体故障

数量的 70%左右,其次为电路板故障,约占到 20%左右,因此总体上富士通硬盘的维修并

不太难。

11.5.1 电路板的选择

数据恢复有时遇到这样的情况,故障盘 PCB损坏无法修复,或者修复的时间与经济成

本太高。此时换板(用好的备件盘的 PCB替换故障板)将是可行的办法。

更换电路板需要找到与故障盘同家族同型号的备件盘。此外,硬盘的固件版本也必须

一样。替换后要将故障盘的 ROM芯片焊到备件板上或者把它的内容写到备件板 ROM中。

这对包含适配数据的硬盘家族尤为重要,因为这些家族每个盘的固件都是唯一的。

更换电路板的一般步骤如下:

(1) 同家族中找一块合适的备件盘,如果是相同型号相同固件版本则更佳。

(2) 换板并检测硬盘能否恢复正常(至少能够报告就绪,最好能够访问固件区数据,

甚至能直接访问用户数据)。

(3) 若硬盘仍有故障(有敲盘声,不报告就绪,有 ABR错误),则需要转移故障盘

的 ROM内容,可以通过以下两种方法中任意一种来实现:

� 从故障盘电路板焊下 ROM芯片,焊到备件板上。

� 用 Kernel模式或者 ROM编程器(需将 ROM芯片焊下)从坏板上读取 ROM内容,

写固件到备件板 ROM。

第 11 章 硬盘修复进阶

283

(4) 再一次检查硬盘工作正常与否,此步可能会进一步发现固件区数据模块或者原

始 ROM 数据是否损坏。如果原始 ROM 数据损坏,则需要从 PC-3000 数据库找到匹配固

件版本写入备件板 ROM中。若要维修的盘含有适配数据,需要尝试从原始 ROM(假设至

少适配数据没有损坏)转移数据或者执行匹配适配数据的选择流程。如果遇到模块损坏,

则需要尝试恢复固件区模块。

11.5.2 备件板 ROM 直接能用的情形

硬盘要正常工作 ROM 版本与盘面固件区版本必须匹配。要为当前硬盘找到合适的

ROM版本有两种思路。首先可以在硬盘外壳标签上查到固件区的版本。如图 11-30所示,

在二维码的下方包含 3到 4个字符的前缀、破折号、以及 4位字符的实际版本号。前缀字

符的前一位(4位字符的话是前两位)对兼容性无关紧要。另一种思路就是查看故障盘 ROM

镜像中的版本号。首先读取 ROM 镜像,然后查看镜像中的 4字节 ROM版本号,注意其前

两字节与前缀字节。最终就能获得硬盘所需的 6位字符 ROM版本号。

图 11-30从硬盘标签判断固件区版本

左图(MHN2100AT硬盘)的 ROM固件版本为 10-7255,右图(MHT2040AT硬盘)

的版本为 F7-022。

若硬盘能够报告就绪,可以用 PC-3000相应程序查看ROM固件版本(“View information

from ROM”菜单项),或者可以在 Kernel模式读取电路板 ROM(对支持 Kernel模式的家

族),或者用 ROM编程器读取(需首先从电路板焊下芯片)。

盘体上显示的版本号与 ROM 固件版本号匹配不一定意味着盘体与 ROM 版本完全匹

配,还需要检测 ROM 的标识字节,对于支持适配数据的硬盘家族(MHM2xxxAT,

MHN2xxxAT)还需要考虑适配数据的存在与否。如果 ROM中适配数据与当前盘体不兼容,

会导致读盘质量下降,硬盘运行变慢不稳定,甚至初始化时敲头。但找到一个较合适的 ROM

还是可行的。

11.6 东芝硬盘

东芝硬盘的架构比较独特,硬盘运行所需数据全部保存在主控芯片中,盘面固件区仅

包含 P 表、G 表、密码、SMART 以及其他不重要的模块。所以固件故障诊断较为简单,

深度剖析——硬盘固件级数据恢复

284

需要注意的是电路板故障与电机故障。

11.6.1 电路板更换注意事项

东芝硬盘的重要数据都保存在主控芯片中,因此简单的电路板替换是不可行的。对于

老的型号,更换电路板后需要将故障盘 PCB 上的主控芯片焊到备件盘 PCB 上,对配置外

置 ROM的型号,则是将外置 ROM芯片转焊到好板上。一些芯片是 BGA封装,焊接难度

比较大。利用 PC-3000 UDMA则可以实现替换电路板但不转焊主控或 ROM。如果能找到

同型号备件盘的话,可以通过转移电路板的 CP模块(假如故障板上的 CP模块仍然可读的

话)来实现:

(1) 如果故障盘能够就绪,配置页 CP模块可以很方便的通过菜单“Work with service

area”→“Reading CP”读取。读取 CP模块时不需要选择 DD模块,因为它实际上是从盘

面读取的,无需往备件盘 PCB写。

(2) 如果故障盘无法就绪,一直处于 BUSY 状态,则将故障盘 PCB 安装在备件盘

上有一定就绪的可能性。如果能就绪,则程序能正常地读取 CP模块。

(3) 如果 PCB安装到备件盘盘体上后仍然无法就绪,则将 PCB板接到 PC3000板卡

后往往能够就绪并读取配置页。具体操作步骤为:

� 将备件盘接到 PC-3000,进入东芝程序,进入终端窗口 Terminal,窗口内单击鼠

标,按 Enter键确认终端正常(如果一切工作正常,硬盘将返回终端命令行“>”)。

� 断电,断开备件盘,连接故障盘 PCB上电,通常电路板首先反馈 BUSY,再在终

端窗口中按回车。如果电路板没有严重损坏,它将立即(或者上电 1~2分钟之后)

报告就绪,这样就可以读取配置页了。

(4) 如果没有就绪,则 PCB板发生严重损坏,数据可能无法恢复。

从故障板提取 CP模块后,将备件盘连到 PC-3000上,就可以将故障盘 PCB的 CP模

块写到备件盘 PCB上。然后更换电路板,就可以得到一个功能正常的硬盘。

11.6.2 其他电路板故障

有时由于电路板故障,根本无法提取故障盘

的 CP 模块,但也并不代表数据绝对无法恢复。

例如,东芝硬盘有些主控芯片发生故障后 cable

select信号没有接地,导致硬盘无法就绪。此时在

PC-3000程序启动时使用“Tools”→“Cable select

control”菜单根据硬盘所接通道选择“ATA0”或

“ATA1”即可,如图 11-31所示。

11.6.3 电机故障

主轴电机抱死是东芝硬盘相当常见的故障。在启动初始阶段,主轴无法起转,或者旋

转不稳定,抑或是达不到所需的转速。解决此故障有很多方法,总体原则如下:

(1) 最简单使主轴达到所需速度的方法是加热。用尖端特别细的热风枪对准主轴电

机曲轴。PCB板朝上放好故障盘,撕掉主轴标签,连接硬盘到 PC-3000板卡上,开启热风

图 11-31 cable select信号控制

第 11 章 硬盘修复进阶

285

枪,温度设到 230℃~270℃,对准气流到主轴电机曲轴。如有条件建议准备一块金属隔板

以防止气流直接吹到 PCB板。当主轴加热充分后,硬盘上电。一般主轴能够达到所需速度,

硬盘报告就绪,立刻进行数据拷贝。加热主轴不要停止,一直到拷贝结束。禁止过分加热

主轴与 PCB也相当重要。操作的质量很大程度上取决于操作人员。提取数据后硬盘能否继

续正常工作并不能保证。

(2) 如果加热无法奏效,可以尝试手工启动主轴。此操作需要在洁净间中进行。因

为盘体内进入灰尘会影响硬盘的可靠性进而影响寿命。操作时首先卸下盘盖,按某个方向

将固定盘片的螺丝依次拧松,并尝试旋转盘片。这样旋转一段时间后,可能会使主轴变松

并磨掉毛刺,从而上电时自由起转。操作过程中要谨防螺丝刀或者螺丝掉到盘面。

(3) 如果放松主轴的方法不能奏效,可以通过替换盘片、磁头、PCB到其他硬盘的

方法来恢复数据。为此需要准备一个相同的备件盘。东芝硬盘的盘片替换时相当容易,只

需要微小的调整。如果有两个盘片,它们的相对位置需要保持,但多数情况下小的位移并

不影响数据恢复的成功率。

11.6.4 PC-3000 中添加新型号

使用 PC-3000东芝程序修复硬盘时,有时所测型号并不在支持型号列表中,这里支持

用户创建新的自定义硬盘类型。自定义配置保存在东芝程序配置目录“\!profiles\Toshiba”

下的配置文件“Toshiba.ini”中。可以用任意的文本编辑器编辑 Toshiba.ini来添加新的硬盘

类型,或者删除编辑已经存在的类型。记录格式前面已经介绍。

同时 PC-3000也支持以交互形式添加自定义型号配置。在“Tools”→“Settings”对话

框选择“Toshiba utility”。程序将显示一个包含可用硬盘型号(先前创建的自定义型号)的

列表,如图 11-32所示。

图 11-32 自定义型号列表窗口

当一个存在的记录选中后高亮,则“Editing”与“Deleting”按钮变为可用,则此条记

录可以修改或者删除。

要创建一个自定义硬盘型号,单击“Adding”按钮,出现如图 11-33所示对话框。

深度剖析——硬盘固件级数据恢复

286

图 11-33 添加家族参数对话框

添加配置参数需要了解型号名称、CP模块及其大小,还需要知道区域分配表的结构。

在“Name”字段输入硬盘或者硬盘家族名称。在“Zone table type”字段选择区域分配表

的结构(8或 12字节)。可用配置页列表通过单击“Load from HDD”按钮获取。基本上全

部配置页大小为一个扇区(AA、BB、DD例外,占用扇区数分别为 3,4或 16,16或 32)。

获取后可以通过单击“Adding”或者“Editing”按钮来添加新的 CP 模块或者修改存在的

CP。单击“OK”按钮后新的硬盘类型即创建在“utility selection”菜单的“supported families”

区域中。

第 12 章 固态硬盘固件损坏的维修

12.1 固态硬盘物理结构

传统硬盘都是采用机、电、磁一体化的温氏硬盘架构,经过多年的发展其固有劣势逐

渐显现出来。首先,由于采用高速旋转的盘片作为存储体,机械硬盘对抗震、抗摔要求都

比较高。现在移动硬盘广泛使用,机械故障在硬盘故障中所占的比例越来越大。其次,由

于采用机械结构作为存储体,虽然现在硬盘的接口速度越来越高,但实际存取速度由于机

械结构的瓶颈无法得到大的提升。硬盘转速从 5400转提升到 2 万转获取的速度提升只有几

倍,但付出的技术成本则可能需要增加几十倍。于是固态硬盘 SSD(solid state disk)逐渐

走进个人消费领域,大有取代传统硬盘的趋势。

固态硬盘采用固态电子芯片阵列作为存储介质,并没有可以旋转的盘状结构,但是依

照人们的命名习惯,仍然称其为“硬盘”。

12.1.1 固态硬盘简介

采用电子芯片作为存储体的存储架构本身历史比较久远。例如,U 盘。作为机械硬盘

替代品的 SSD可以追溯到 2005年。当时微软预计将在Windows vista中推出“超级缓存”

(superfetch)技术,据说可以利用闪存大幅提升系统性能。2005年 5月,三星第一款固态

硬盘抢先出货,据称此款 SSD 功耗不到传统机械硬盘的 5%。2008年 8月,英特尔 NAND

产品事业部宣布正式进军高效能固态硬盘领域。2009 年 3 月,西数宣布完成对 Silicon

Systems公司的收购,作为其固态存储业务部门。由于固态硬盘技术与传统硬盘技术不同,

所以产生了不少新兴的存储器厂商。目前全球固态硬盘厂商已达数百家。

固态硬盘按功能结构划分主要有 4部分:接口模块、控制模块、缓存模块、存储模块,

如图 12-1所示。

图 12-1 固态硬盘功能架构

深度剖析——硬盘固件级数据恢复

288

其中接口模块为硬盘的对外接口,一般只包括物理接口,接口协议在主控芯片内已经

实现。某些硬盘中还包含桥接芯片,用于实现接口协议的转换。控制模块即主控芯片,为

硬盘的中枢单元,用于实现数据存储、ECC数据纠错、坏块处理、磨损平衡等功能。缓存

模块即 DDR 芯片,并不是所有的固态硬盘都含有此模块。存储模块即闪存芯片阵列,占

据了硬盘电路板的大部分面积。根据要实现的硬盘容量,电路板会有部分闪存芯片的焊盘

空焊,如图 12-2所示。

图 12-2 根据硬盘容量 Flash空焊

与传统硬盘相比,固态硬盘在以下方面具有明显的优势:

(1) 工作温度范围大,为-40℃~+85℃。

(2) 防震抗摔。因为全部采用了闪存芯片,固态硬盘不存在任何机械部件。这样即

使在高速移动或者旋转倾斜的情况下也不会影响正常使用。在发生碰撞或者意外摔落时能

够将数据丢失的可能性降到最小。

(3) 噪音小。因为没有机械部件,固态硬盘工作时无任何噪音产生。而且由于闪存

芯片发热小,散热快,计算机风扇的起转间隔也会变长,使系统工作时非常安静。

(4) 更快的系统响应时间与开关机时间。固态硬盘数据存放在闪存芯片上,能够在

低于 1 ms的时间内完成对任意位置存储单元的读写操作。突破了机械硬盘的速度瓶颈。

(5) 更长的电池续航能力。得益于闪存芯片的低功耗,采用固态硬盘的笔记本电脑

比其他配置相同的电脑续航时间可延长 10% 。

就目前来说,固态硬盘还远未达到普及,其不足之处体现在以下几个方面:

(1) 成本问题。以往 NAND 闪存由于价格高昂,通常只在军事及工业领域使用。目

前虽然成本在迅速下降,但同容量的高性能固态硬盘的价格仍然要比机械硬盘高 10 倍以

上。大多数消费者不愿意为寻求高性能支付太多的费用。不过到 2013年,固态硬盘售价将

下降到 2元/GB以下,或许将迎来其普及期。

第 12 章 固态硬盘固件损坏的维修

289

固态硬盘的性能主要取决于控制芯片。同一家的控制芯片不同年代的型号可能在性能

和可靠性方面相差很多,因此在选购固态硬盘时应尽量购买最新年代的型号。

(2) 使用寿命。NAND 闪存都有一定的写入次数,到达次数后硬盘数据将无法读出。

因此对于长期保存数据来说,固态硬盘不是一个好的选择。可以通过主控算法的改进与 SSD

架构的改良(使用高速缓存)增加固态硬盘的使用寿命。但在相当一段时间内,只用它做

系统盘还是比较保险。

(3) 性能下降问题。在固态硬盘长期使用时,会产生许多磁盘碎片,特别是用它做

系统盘时,这是由 NAND Flash的读写方式决定的。NAND Flash可以直接读取页,或者直

接写入空的页。但在写入操作时,如果该页所在的块非空,则必须将块载入缓存,然后对

整个块进行回写操作。这样在数据越来越多后会造成硬盘存取性能急剧下降。此问题只能

通过改进主控的算法来改善,但不能完全解决。

(4) 数据恢复问题。现在机械硬盘的数据恢复技术比较成熟。固态硬盘的数据恢复

则还处于起步阶段。即使负责储存数据的闪存没有任何损坏,但主控损坏时往往很难从中

提取用户数据。所以这里还是建议用户尽量只用固态硬盘做系统盘而不是数据盘。

12.1.2 接口类型

作为机械硬盘的替代品,固态硬盘在接口规范的定义、功能及使用方法上都没有改变。

外形上常见的有 1.8 英寸、2.5 英寸、3.5 英寸的规格,接口有 PATA、EIDE、USB、CF、

SATA等类型。由于传输速度上的优势,目前固态硬盘普遍采用 SATA 2.0接口。

2009年 3月,高性能固态硬盘厂商 Fusion-io发布了采用 PCI Express 接口的型号 ioDri

ve Duo如图 12-3所示。此款硬盘支持 PCI Express 2.0 x4 接口,数据传输能力达 1.5 GB/s,

这让很多应用程序提高到了一个新的性能水平。

图 12-3 PCI-E接口硬盘

12.1.3 存储介质

固态硬盘按存储介质可分为两大类:基于易失性存储 DRAM 与基于非易失性存储器

Flash。基于易失性存储的固态硬盘可以追溯到 20 世纪 70 年代,主要用于临时性存储。

DRAM的访问速度快且使用寿命长,但掉电后数据会丢失。因此这类固态硬盘需要配合电

池才能使用。一般使用时是将需要运行的程序从传统硬盘复制到固态硬盘中执行,从而保

深度剖析——硬盘固件级数据恢复

290

证程序的性能。此外它还可以用于应急备份。当电源意外中断时,它有足够的时间将数据

转移到传统硬盘中;当电力恢复后,再从传统硬盘中恢复数据。由于多年来 DRAM的单位

容量成本并没有发生大的变化,所以消费级领域的固态硬盘全部是基于非易失性存储的。

非易失性存储 Nand Flash的数据存取速度介于易失性存储与机械硬盘之间。与易失性

存储相比,非易失性存储的数据不需要电力来维持,且 Nand Flash的生产成本下降很快,

因此更适合做传统硬盘的替代品。Nand Flash 有 SLC(Single Layer Cell单层单元)和MLC

(Multi-Level Cell多层单元)两种。

SLC 采用单层式存储,结构相对简单,一个单元只储存一位数据 0 或 1,只需要一组

高低不同的电压即可区分。这样在写入数据时 SLC的电压变化区间小,具备更好的写入性

能与数据保持能力,而且寿命也较长,覆写次数可以达到 10 万次。但是 SLC 无法在相同

晶圆面积上实现较高的存储密度,只有在制程上不断改进才能满足用户在容量方面的要求。

所以 SLC固态硬盘的成本也是居高不下,消费领域使用较少。

MLC 采用多层式存储结构,由英特尔在 1997 年开发成功。它采用较高的电压驱动,

通过不同级别的电压,在同一单元记录两位数据(00、01、10、11),从而将原本 SLC 的

存储密度提高了一倍。但除成本低与同制程、同晶圆面积时储存空间大一倍的优点外,MLC

存在诸多弊端。首先是使用寿命短,SLC 架构的可擦写次数为 10 万次,而MLC 架构由于

电压变换频繁,理论可擦写次数只有 1 万次(实际为 5000次);其次是存取速度慢,MLC

每个结构单元有双倍的储存密度,自然需要更长的时间,同时出错的概率也会增加,因此

需要在电压控制、CRC校验等多个方面进行优化,这也导致其性能大幅落后于结构简单的

SLC;再次是功耗偏高,相同使用条件下MLC要比 SLC多出 15%左右的能耗。

综上,目前能够为个人用户所接受的固态硬盘基本都是 MLC 闪存,但是厂商要在闪

存写入策略上进行优化,以提高其读写性能与使用寿命。

12.1.4 Nand Flash 存储管理

在 Flash中含有多个区域 plane,如图 12-4所示。

每个 plane中又包含多个区块 block,如图 12-5所示。

图 12-4 Nand Flash中的区域 图 12-5 Nand Flash中的区块

而每个 block中又有多个页 page,如图 12-6所示。

与普通的硬盘相比,Flash的一个特性是无法对同一块内存位置重复执行 write操作,

必须先 erase,才可执行 write操作。其中 erase的操作单位为 block,而 write的操作单位为

第 12 章 固态硬盘固件损坏的维修

291

page。

图 12-6 Nand Flash中的页

页的大小有很多种,结构也因开发者的设计不同而复杂多样,但大体上可以分为页头、

数据区、管理区、页尾四部分。其中数据区的长度为 512字节(一个扇区长度)的整数倍,

我们把其中每个 512字节叫做物理扇区。与机械硬盘一样,每个物理扇区都有 ECC校验等

管理信息,其大小可为 8字节或 16字节。下面为大小为 2112字节的页的几种结构。

(1) 各物理扇区的管理字为 16字节,集中存储在页后,无页头页尾,如图 12-7所示。

图 12-7 一种页结构

(2) 各物理扇区的管理字为 16 字节,位于所属扇区后部,无页头页尾,如图 12-8

所示。

图 12-8 一种页结构

(3) 各物理扇区的管理字为 8字节,都集中在页后,有页头页尾,如图 12-9所示。

图 12-9 一种页结构

(4) 各物理扇区的管理字为 8 字节,位于所属扇区后部,有页头页尾,如图 12-10

所示。

深度剖析——硬盘固件级数据恢复

292

图 12-10 一种页结构

前面已经讲到,Nand Flash中 erase的操作单位为 block,而 write的操作单位为 page,

这样就会导致对某个有数据的页面进行重写时,并不仅仅只对该页面进行擦除重写操作,

而是需要对所在的整个块进行重写,类似于 512e 高级格式(AF)硬盘的软件适配层所执

行的“读取-修改-写入”机制。根据此机制,假如某 Flash 的一个块含有 64 个页,如果需

要对已写有数据的页面 1进行重写,需要首先将页面 1所在块的 64个页复制到缓存区,然

后对这个块进行 erase 操作,随后将缓存区内的数据进行修改,最后将该块的最新数据写

入。这样,表面上需要写入 1个页,实际上需要对 64个页进行写入操作。这里主控实际写

入的数据与主控想要写入的数据之比叫做写入放大WA(Write Amplification)。可以看出,

对于某个块,主机一次写入的页越多,写入放大的值就越大,读写性能就越低。

写入放大是固态硬盘的一个关键指标。如图 12-11 所示,频繁执行“读取-擦除-修改-

写入”不仅严重影响读写性能,而且也会降低 Flash 的使用寿命,所以开发者应努力增加

一次写入的数据,减小WA值。

图 12-11 写入放大机理

当某个块达到其覆写次数后就会变为坏块。Nand Flash中的坏块是随机分布的,在出

厂进行量产设置时,需要对其进行初始化扫描以发现坏块并将其标记为不可用,类似于机

第 12 章 固态硬盘固件损坏的维修

293

械硬盘的 P表。在运行过程中在使用中如果发现某个块的数据发生错误,也会将其标为坏

块,并用预留的冗余块代替,类似于机械硬盘的 G表。

12.2 固态硬盘主控固件

主控芯片是固态硬盘的核心部件,决定了固态硬盘的性能与可靠性。虽然全球固态硬

盘厂家成百家,但使用的主控都出自为数不多的几家,如 Intel、Sandforce、Indilinx、Micron、

Toshiba、Phison、Samsung、Jmicron等。主控中的控制算法与配置信息一部分是通过硬件

逻辑来实现,而大部分则通过固件,即固化在可编程 ROM 中的软件来实现。这样便于厂

商在发现 bug与改进控制算法时能够方便的对主控进行修改。将固件批量写入主控的过程

叫做量产,每个盘上闪存的初始坏块信息也是在量产时扫描得出的。

固态硬盘的性能指标包括持续写入、随机写入、响应时间等。持续写入性能体现了固

态硬盘的理论吞吐量。当固态硬盘持续写入时,写入放大值接近于 1,因为持续写入不需

要主控判断太多,简单的“擦除-写入”或者“写入”自然比“读取-擦除-修改-写入”更快

速高效。因此可以认为,持续写入评价的是硬盘的硬件性能。而随机写入是模拟系统盘操

作,采用多线程小文件随机读写来检验硬盘写入速度,因此更体现了硬盘的实际工作性能

(固件算法优劣)。

12.2.1 固态硬盘主流主控介绍

Intel是固态硬盘的领军厂商,其主控架构采用大容量 DRAM缓存,支持多达 10通道

存取,在持续读写与随机读写性能上都处于业内领先地位,另外其使用了高级动态损耗均

衡算法,并限制了写入速度,有效提高了 MLC 的可靠性与耐用性。Intel 声称其写入放大

值可以达到 1.0x的级别。根据使用MLC、SLC两类不同的闪存颗粒,Intel的主控分为X25-M

与 X25-E两个系列。Intel的缺点是价格昂贵。

Sandforce 是在固态硬盘上可以与 Intel 抗衡的企业,声称其设计的主控算法甚至可以

将写入放大降到 0.55,打破了写入放大值大于 1的传统观念。其独有的 Dual Class 技术通

过牺牲持续读写性能、保证随机性能大幅提高了MLC硬盘的性能与使用寿命。但 Sandforce

很不适合做数据盘,是作为系统盘的首选之一。

Marvell是机械硬盘控制器的王者,也是固态硬盘控制器的佼佼者,不过其产品主要面

对企业用户,价格高昂无法进入个人消费领域。Marvell在高负载条件下的写入优化明显优

于 Sandforce与 Intel。

Indilinx是一家韩国公司,2006年由 3个年轻人创立,专门研发 SSD主控,最终被 OCZ

收购。Indilinx的优势主要体现在持续读写性能上。其价格适中,持续读写性能超过了其他

所有竞争对手,适合经常传输大文件的用户。但其在随机读写与产品稳定性方面都存在问

题,并且还有写入放大值偏大的问题。Indilinx经常更新固件改善性能,所以适合发烧友使

用。随着闪存价格的持续下滑,保守用户更倾向于使用 Intel 与 Sandforce,而不愿在升级

OCZ固件上耗费太多精力。

Jmicron是台湾的一家传输控制芯片设计公司,其生产的芯片一直是廉价的代名词,广

泛应用于当今的主板与笔记本电脑中。Jmicron 生产的 SSD 主控寿命低,写入放大高(早

深度剖析——硬盘固件级数据恢复

294

期产品甚至达到 5以上),无外置缓存,随机读写性能甚至不如机械硬盘,可以看作是大容

量的 U盘。不过正因为其廉价,所以成就了很多固态硬盘山寨厂家,连金士顿的固态硬盘

都使用它。

其他如三星、东芝、Micron等厂家的主控,产品更新慢,无论是价格还是性能都没有

任何优势,面临被淘汰的危险。

12.2.2 主控体系架构

主控在系统中是主要角色被称为 FTL(Flash Translation Layer)。Flash的操作与传统硬

盘的操作不同,可以直接完成对页的读取以及第一次写操作。但对某页进行改写,必须先

擦除该页所在的块再对其进行改写。因而一般的文件系统并不能直接在 Flash 上使用,这

就需要一个 Translation Layer来完成转换,使系统能像操作硬盘一样只对某 LBA地址进行

读写操作。

图 12-12为主控 FTL的体系架构,由上至下分为 FAL与 FMD两层。

图 12-12 主控体系结构

FMD(FLASH Media Driver)是针对特定厂商的 Flash,将 Flash的读写操作转换为通

用的 read、write、erase等操作函数。这样在更换 Flash后读写时序等发生改变后,上层固

件并不需要改动,只需要针对该 Flash重新设计 FMD即可。

FAL(FLASH Abstraction Layer)主要完成由 Flash物理扇区 PBA到逻辑扇区 LBA的

转换。文件系统要操作Flash某一位置时,首先向FAL发送LBA值,FAL根据映射表Mapping

Table确定此 LBA对应的 PBA,然后 FAL将此 PBA值以及要进行的操作发送给 FMD执行。

主控将 Flash 的所有块分为两类:数据块与空闲块。为保证映射表的动态更新,空闲

块需要占整个闪存的 2%以上。

12.2.2.1 映射表

硬盘运行时,映射表是在 SRAM 中进行储存与操作的,但 SRAM 为易失性存储器,

第 12 章 固态硬盘固件损坏的维修

295

所以 Flash必须预留专门的区域储存映射表,类似于机械硬盘的盘面固件区 SA。硬盘上电

时将映射表加载到 SRAM中,并每隔一段时间或者断电时重新写入 Flash对其进行备份。

SRAM的价格相对比较高昂,因此维护一个比较合理的映射表对于节约成本很有意义。

我们知道 Flash读写的最小单位为页,而文件簇的最小单位为 4KB(8x512字节),因此如

果每页包含的数据小于 8 个扇区时,对于维护映射表是不利的。例如,若页大小为 2112

字节(512×4+64),则文件操作的最小粒度就是两页,根本无需对这两页同时索引。所以

现在页大小一般设计为 4224字节(512×8+128),以达到更好的文件读写性能。而早期的

528、1056、2112大小的页将逐渐被淘汰。

Intel的映射表是动态的,即已经用了某页后该页才会显示在映射表中,映射表大小表

现为不断增长。其他厂商一般使用静态映射表,即硬盘量产时就生成一份映射总表,在使

用时不断修改表中的有关条目。

映射表的组织形式有三种:页映射、块映射与混合映射。

在页映射 page mapping中,每个逻辑页都可以映射到任意的物理页。要查找某页的内

容直接查找映射表即可。Page 级别的映射表高效灵活,但需要大的 RAM,因此对于大容

量硬盘不太适用。

块映射是另一个极端。在块映射 block mapping中,只有逻辑块和物理块可以任意映射。

每个页只能映射到某个物理块的固定位置。Block级别的映射表对 RAM的需求量较小,但

会导致性能下降,不灵活。系统用 LBA查找查找物理地址时,将 LBA分为两部分,前一

部分通过查找映射表获取 block号,后一部分则根据主控的算法索引 block中的 page号。

常见的算法有顺序映射、逆向

映射与折半映射。例如,每个

块有 128个页,则顺序映射时,

page0 就 对 应 block 中 的

Page0,page1 就对应 block 中

的 Page1 等;逆向映射时,

page0 对 应 block 中 的

Page127,page1 对应 block 中

的 Page126等;折半映射时,

则 page0 → Page0, page1 →

Page127,page2→Page1,page3

→Page126…(page 表示逻辑

页,Page 表示物理页),如图

12-13所示。

混合映射 hybrid mapping

则是一种折中。加载到 SRAM

中的映射表还是属于 block 级

别,而在每个 page的管理区中

存有其对应的逻辑页地址。系统对某逻辑页进行操作时,首先定位到 block,然后读取 block

中每个页的管理区进行比对,直到找到该页。

图 12-13 块映射折半算法

深度剖析——硬盘固件级数据恢复

296

还有的厂商采取两级映射表的模式,把最近更新过的部分page使用page mapping表格,

余下的 page 使用 block mapping 表格,这种块映射与页映射相结合的管理方式逻辑更为

复杂。

12.2.2.2 重映射与垃圾回收

重映射(remapping)也称为页交换,是将某一逻辑页重新映射到另一物理页的过程。

机械硬盘只有在出现扇区缺陷时才会执行重映射,而固态硬盘则将重映射作为常态机制。

为了避免频繁的“擦除-改写”,Flash在更新某逻辑页的内容时并不会写入原来对应的物理

页 1,而是查找其他空闲的页 2,将更新的数据写入页 2中,并修改映射表,将此逻辑页对

应的物理页改为页 2。原来页 1 中的数据会被标记为无效数据,该页所在的块号会保存在

一个称为 Dirty Block的列表中,该列表中的每个脏块还会标记它里面 dirty page的数量。

固态硬盘中还会保存一个称为 Free Page 的列表,系统在写硬盘向主控申请新的物理 page

时,首先从这个列表中分配而当空闲页不足时,就需要将先前 Dirty Block列表中的无效页

变为空闲页以重复使用,此之谓“垃圾回收”。

垃圾回收(Garbage Collection)就是将脏块中存有无效数据的页重新变为空闲页的过

程,有的场合也把它称为压缩 Compaction。此操作类似于硬盘的碎片整理,具体是首先执

行 copy block,将块内的有效数据全部提取到缓存,然后将这些数据写入另外的空闲页中

(并更新映射表),最后将块全部擦除。垃圾回收会占用主控的操作周期,降低主控的性能,

因此一些主控设计了自动后台回收机制,主控利用空闲时间执行回收,避免影响用户体验。

回收算法的好坏直接影响硬盘的性能,可能用到的回收策略有:(1)记录 Block 中无

效 page的个数,无效数据占比超过一定阈值(如 80%)后就执行回收;(2)设计随机算法,

随机选择一脏块进行回收;(3)为了保持硬盘整体损耗和负载的平衡,选择覆写次数少的

块进行回收。

垃圾回收操作在提升性能的同时,也带来了写入放大,影响硬盘寿命,因此自动回收

一般不会“尽全力”,只是把某些认为应该优先擦除的块进行回收。而很多主控提供了手工

回收的功能,此时主控会不采取任何策略,将全部含有无效 page的块进行重写与擦除,从

而使硬盘的空闲页达到最多。

根据重映射与垃圾回收的机制不难知道,如果硬盘采用 block 级别的映射表,会减少

很多 page 映射的机会(page 在该 block 中的相对位置固定,重映射的自由度很小),从而

使垃圾回收频繁进行,影响系统的性能。因此只有在块粒度相对较小时(每个 block 中含

有较少的页)才适合使用块映射。事实上现在主流 SSD基本都是采用两级映射表的模式。

12.2.2.3 损耗平衡

损耗平衡(Wear-Leveling)是一种理念与机制,而非具体的某种算法。其核心思想是

将“擦除-改写”平均地分配到 Flash的每个块中,避免对同一存储单元进行持续不断地擦

写操作,让全盘各 block损耗程度接近并同时报废。

固态硬盘的存储介质一般为多个 Nand Flash的 raid 阵列,如果其中一块 Flash损坏,

则整个盘将会报废。采取损耗平衡机制会增加写入放大,但是从全局出发,避免了木桶效

应的发生,保证硬盘各闪存芯片寿命同时终结,实际上也是延长了硬盘的整体寿命。影响

第 12 章 固态硬盘固件损坏的维修

297

SSD寿命的因素有很多,例如,映射表形式、电气性能、环境温度等,但是否采用损耗平

衡机制无疑是最重要的。据统计,目前的企业级 SSD采用损坏平衡策略后,无故障运行时

间可以达到 200 万小时,足以保证硬盘使用 20年以上,已经可以与传统硬盘相媲美。在机

械硬盘中,可能有这样的现象,系统分区由于数据更新频繁,最容易出现坏道,而数据分

区则不会轻易出现坏道。这在采用损耗平衡的固态硬盘中是不会出现的,如果损耗平衡技

术成熟,各物理块的损耗程度都应该是接近的。

损耗平衡具体被贯彻到重映射与垃圾回收等过程中。在 FAL中保存着一份叫做擦除计

数表(ECT)的表格,记录了每个块的擦写次数。当块进行一次擦除时,ECT中该块的擦

写次数会自动加 1,在执行 remapping时,主控会根据损耗平衡策略,决定将哪些数据块转

移到空闲块中,并将逻辑页地址重新分配到新的物理页地址。

高端 SSD主控将逻辑地址中经常写入的数据(Dynamic Data,动态数据,热数据)与

不经常写入的数据(Static Data,静态数据,冷数据)分别进行处理。

动态损耗平衡的核心思想是:将新写入的数据写到写入次数较少的块,将擦写次数较

多的数据移到擦写次数较少的块。当系统发送对某逻辑页进行改写的请求后,主控即执行

动态Wear-Leveling机制。主控对 ECT表格进行浏览时,寻找一个擦除计数值最小的空闲块,

并将数据写入其中,然后将新页的物理地址与系统的逻辑地址在映射表中建立映射关系。

动态损耗平衡能够避免对同一物理块进行持续擦写,但却对静态数据所在物理块不起

作用。某些数据写入 Flash 中后有可能相当长时间甚至永远不再改动,其他物理块不停地

交换、擦除,编程次数远远大于这些静态块的编程次数,从而造成颗粒损耗不均。这就需

要使用静态损耗平衡机制。

静态损耗平衡主要执行两个策略:(1)检测数据块的闲置时间,如果超过某阈值后,

对 ECT表格进行浏览,寻找擦除计数值最小的数据块与擦除计数值最大的空闲块;(2)将

空闲块中最大的擦除计数值与数据块中最小的擦除计数值相减,如果超过某阈值后,将两

块的内容进行交换。原先的数据块变为空闲块,原先的空闲块则变为数据块。

12.2.2.4 TRIM

TRIM是为增强 SSD主控垃圾回收效率而新引入的 ATA指令。此指令相当于操作系统

级别“磁盘碎片整理”程序的“预执行”。

大家都知道,操作系统在删除某个文件或者格式化某个分区后,数据并未真正删除,

只是为这些文件添加了“已删除”的标记。这些操作系统级别的“垃圾”在主控看来仍然

是有效的数据,只有在执行操作系统级别的“磁盘碎片整理”时才会将其清除。倘若从未

进行碎片整理,则主控的压力会大大增加。倘若 SSD的空闲块已经用完,则接下来进行的

写入操作,只能是对操作系统标记为删除的 LBA 对应的物理单元进行“读取-擦除-修改-

写入”的操作,(全部是有效页,无法进行页交换与重映射,只能进行改写操作,别无其他

选择)这将显著降低硬盘的读写性能。

为预防此问题,Windows 7首先将“磁盘整理程序”加入系统计划任务中,空闲时间

就会在后台执行。同时系统还加入了对 TRIM命令的支持。操作系统一旦删除某文件,就

会同时通知主控“这些数据所在的页可以认为是无效页了”,SSD 收到 TRIM 指令后,就

会根据策略立即(或在空闲时间)将这些数据位置全部标识为“无效”,并进行垃圾回收。

深度剖析——硬盘固件级数据恢复

298

TRIM 与垃圾回收 GC 结合使用,可以及时清空无效系统数据对应的物理块,减少写

入放大的同时也提升了性能。

TRIM的执行需要以下三个要素:

(1) 硬盘主控支持(当前主流产品都支持)。

(2) 操作系统支持(win7及以后系统)。

(3) 驱动支持。

TRIM通过通知主控,及时将系统无效数据对应的页转为 dirty page,提高了垃圾回收

的效率,但也增加了误格式化或误删除等情况下数据恢复失败的概率。不过由于 TRIM只

是通知,并非即刻执行,所以实践中只要误操作后送修及时,恢复的成功率并没有明显降

低。

12.2.2.5 其他技术

预留空间(Over-provisioning): SSD的闪存一般会划出一部分区域用作主控优化,包

括垃圾回收、损耗平衡、坏块映射、TRIM 等。预留空间虽然让硬盘可使用容量变小了,

但是减少了写入放大,提高了硬盘的工作效率与寿命。

缓存转储(cache flushing):利用主控的缓存处理机制,避免直接向 Flash写入很多碎

小的文件,而是合并写入,从而避免出现系统拥塞的概率。

12.3 固态硬盘固件故障维修

固态硬盘不存在机械结构,因此不会有机械故障。其内部主要是数字电路,电路稳定

性较高,因此电路故障也很少出现。所以固态硬盘除常见的软件故障外,其余故障基本都

是固件故障。这里的固件故障与机械硬盘类似,可分为两类:一类是主控芯片中的固件逻

辑发生紊乱;一类是保存在存储介质预留空间(Flash中的 SA区)中的表格数据发生损坏。

产生固件故障的原因主要有:

(1) Flash质量不好,预留空间中 FAL数据损坏。

(2) 固件逻辑不完善,运行时出现 bug。

(3) 突然掉电造成 FAL相关表格,特别是映射表写入 Flash出错。

在机械硬盘中,虽然也有 P表、G表,但总体上从物理扇区到逻辑扇区映射比较简单。

固态硬盘相比起来就复杂得多,硬盘工作时其映射表一直在动态更新,因此数据在物理层

可以认为是无序存放。FAL中的 mapping table、dirty block list、free page list、ECT等表格

都对硬盘的正常运行至关重要,损坏后恢复也相当复杂。由于不同厂商不同型号设计的主

控算法多种多样,且技术资料很难获取,所以现在固态硬盘固件故障恢复的成功率不是太

高,平均不到 50%。

SSD固件故障维修时遵循以下思路:

(1) 如果固件轻微受损,操作系统无法正常加载但不影响恢复软件读取,则不用修

复,先恢复数据后再重新量产。

(2) 如果固件受损严重,恢复软件已无法正常读取扇区内容,但厂商有恢复解决方

案,则建议首先尝试厂商的解决方案。

第 12 章 固态硬盘固件损坏的维修

299

(3) 如果主控芯片的固件逻辑正常,只是 Flash中 SA区数据紊乱,且主控支持 SA

区的读写指令,则尝试采用指令模式修复。

(4) 如果主控芯片不支持 SA 区读写指令或者主控芯片固件逻辑发生紊乱,则看厂

商的量产工具是否会清空 Flash。如果可以选择不清空 Flash,则尝试用量产工具对硬盘重

新量产后再进一步处理。

(5) 如果以上步骤皆无法恢复,则将 Flash 从电路板上吹下,对原始数据读取后进

行分析重组。逆向分析难度很大,所以此方法成功率有限,只作为最后尝试手段考虑。

12.3.1 Winhex 镜像法

对于发生固件故障的 SSD,首先应该用Winhex打开看能否看到数据。例如,如图 12-14

所示,一个 16G的固态硬盘,使用过程中变成了 64G,用恢复软件扫描都会报错中止,用

winhex 打开后发现,其前 1/4 的扇区的数据是不规则,后面 3/4 的数据为全 F。所以这时

硬盘中的有效数据是可以读取的,如图 12-14所示。

图 12-14 前 16G的数据为有效数据

解决此问题,只要将其有效容量镜像改为 img文件,再用恢复软件对镜像文件 img 扫

描即可,如图 12-15所示。

图 12-15 对 SSD进行部分镜像

12.3.2 主控自修复法

主控自修复法的实质是逆向重组映射表,主要适用于 Marvell 的某些型号。这些主控

深度剖析——硬盘固件级数据恢复

300

的映射表采用混合映射,每个 page的管理区中存有其对应的逻辑页地址,也就是实际上详

细的映射表是内嵌在页中的,丢掉的只有 block级别的映射表。这就为 FTL错乱时重组映

射表提供了可能。而事实上这些主控是能够在通电状态下实现自我修复的。具体执行步骤

如下:

(1) 对故障硬盘只连接电源线,数据线须与计算机断开。

(2) 对硬盘上电,等待较长一段时间。(对于使用 Marvell 此类主控的 Micron M4

128GB硬盘,其官方给出的建议是等待 20分钟)。

(3) 硬盘断电 30 秒钟。

(4) 重复执行步骤 1与步骤 2。

(5) 正常连接硬盘到计算机,启动计算机验证是否修复。

12.3.3 PC-3000 指令修复法

“指令修复”是与“Flash芯片修复”相区别的,主要用于主控芯片的固件逻辑正常,

仅仅 Flash中 SA区紊乱的情形。此时不需要将 Flash芯片吹焊,但需要结合 PC-3000 UDMA

或者 PC-3000 Portable 使用。操作步骤如下:

(1) 将故障硬盘通过转接卡与 PC-3000 UDMA板卡(或 PC-3000 Portable设备)相连。

(2) 将 PC-3000 FLASH配套的 Flash芯片

读取设备与计算机相连。

(3) 打开 PC-3000 FLASH软件,出现模

式选择界面,选择 PC-3000 UDMA(或 PC-3000

Portable),如图 12-16所示。

(4) 单击 OK按钮后,程序会调用 PC-3000

UDMA 外壳程序,出现如下界面,对硬盘所在

端口上电(这里是 ATA0),如图 12-17所示。

图 12-17 调用 PC-3000 UDMA外壳程序

(5) 选择硬盘对应的主控及家族,单击程序中的右三角图标▶,进入对应程序即可

尝试修复,如图 12-18所示。

图 12-16 PC-3000 Flash模式选择界面

第 12 章 固态硬盘固件损坏的维修

301

图 12-18 启动专修程序

需要注意的是,PC-3000 FLASH此模式目前的版本仅支持 Intel 的 510系列、OCZ的

vertex与 solid2、Micron的 crucial M225、Corsair的 extreme系列,且支持有限。

12.3.4 Flash 数据重组法

一般 SSD发生固件故障后都可通过重新量产进行修复,但数据却不容易恢复,若数据

非常重要但各种途径都无法恢复,则只能尝试利用 PC-3000 FLASH直接对 Flash芯片内容

进行提取分析与重组操作。操作步骤如下:

(1) 将 SSD电路板上各 Flash芯片吹下来,并标记各芯片在电路板上的相对位置。

(2) 将一块芯片放入 PC-3000 FLASH配套的 Flash芯片读取设备,并与计算机相连。

读取设备只能直接读取 TSOP-48封装的 Nand Flash,其他封装需要采用适配电路转接。

放置芯片时需要注意 1 脚(圆点)应与▼图标所指位置相一致。如图 12-19 的放置位置是

错误的。

图 12-19 Flash圆点应与▼图标所指位置相一致

(3) 打开 PC-3000 FLASH软件,出现模式选择界面,选择 No SATA access如图 12-20

所示。

图 12-20 PC-3000 FLASH模式选择界面

深度剖析——硬盘固件级数据恢复

302

(4) 单击 OK按钮后,程序会调用 PC-3000 FLASH外壳程序,出现如图 12-21所示

界面,工具栏选择 Task 菜单新建任务。

图 12-21 PC-3000 FLASH外壳程序

如图 12-22 所示,新建任务时首先需要选择任务数据所保存的文件夹。单击 Select 按

钮,从弹出的对话框选择目标位置即可。最好为此任务新建一个文件夹,而不是选择已有

路径,因为程序默认会把该路径下早前的文件清空。

图 12-22 新建任务对话框

接下来会选择要操作的设备,选择 PC-3000 FLASH,如图 12-23所示。

第 12 章 固态硬盘固件损坏的维修

303

图 12-23 源设备选择界面

出现如图 12-24所示的对话框,填写 SSD中的 Flash芯片数量及主控型号(如果知道

的话)。单击 Next按钮后,任务创建完成。

图 12-24 SSD参数设置界面

(5) 任务创建完成后即进入 Flash恢复的主界面。其中的 Options 菜单可以提供主控

型号选择(Flash controllers)、Flash 型号选择(Memory chips)、正则表达式查看(Grep

expressions)等多项设置,如图 12-25所示。

深度剖析——硬盘固件级数据恢复

304

图 12-25 Flash恢复主界面

(6) 设置完成后,对所放置芯片单击右键即可进行扫描、分析等一系列操作,如

图 12-26所示。

图 12-26 Flash恢复操作示意

附录 1 术语与缩略语

Power key:电源键

stabilizer:稳压管

Map:映射图,有效为 1,无效为 0

ROM microprogram:ROM固件

Track number combined with the minus sign:负磁道号

Limiting stop :限位区

Positioner:反馈放大器

HDA:head and disk assembly,盘体

Readiness:就绪

Contacts and connector 触点与接插件

identification field:识别字段

SA:Service area,盘面固件区

SPT:sectors per track,每磁道扇区数

OTP:one time programmable,一次性编程

SOIC:Small Outline Integrated Circuit Package,小尺寸集成电路封装

TSOP:Thin Small Outline Package,薄型小尺寸封装

SMART:Self-Monitoring,Analysis and Reporting Technology,自检分析报告技术

LBA:Logical Block Addressing,逻辑块寻址模式

UBA: = Unit Block Addressing,单位块寻址模式

LCHS:Logical Cylinder-head-sector,逻辑 CHS值

PCHS:Physical Cylinder-head-sector,物理 CHS值

MHA:magnetic head assembly 磁头组件

visual examination 直观检查

STW:Servo Track Writer伺服道刻写器

DE:Data Extractor数据提取器

Hex editor 16:进制编辑器

Choke:扼流圈,阻流线圈,电感的一种

inductance:电感

RPM:revolutions per minute 每分钟多少转,转速

Dump:转储(一份镜像)

S/N:serial number序列号

P/N: product number产品编号

Field:字段,区域

深度剖析——硬盘固件级数据恢复

306

performance chart:性能曲线图

practical example:案例

SF:servo fields伺服区

RAM:random access memory随机存取器

SM:Security Master主安全(密码)

SU:Security User用户安全(密码)

SPM: spindle motor主轴电机

VCM:voice coil motor直线电机,音圈电机

CP:configuration page配置页

CS:checksum校验和

MPU:microprocessor unit微处理器单元

Zone allocation table:区域分配表

附录 2 三星 Burn test 完成代码总表

Stop Condition Description

0x00 程序结束

0x02 无效的中止状态

0x11 Bias强制过高

0x12 寻址错误

0x13 磁头失速

0x14 Bias校准错误

0x15 主轴旋转速度出错

0x16 主轴启动错误

0x17 未发现 0磁道

0x18 NP-偏移测试结果错误

0x19 AB-slope测试结果错误

0x1A 全部增益校准错误

0x1B 循环增益校准错误

0x21 磁头倾斜校准错误

0x22 VCM 强制检测错误

0x23 寻址时间错误

0x24 1个磁道寻址超时

0x25 1/3寻址超时

0x26 完全寻址超时

0x27 磁头转换时间过长

0x28 主轴启动时间错误

0x29 锁存器强制过低

0x2A PES错误过多

0x2B 伺服口损坏

0x2C 柱面上伺服缺陷过多

0x2D 区的伺服缺陷过多

0x2E 盘面上伺服缺陷过多

0x2F 格雷码错误过多

0x31 伺服缺陷过多

0x32 错误日志溢出

0x33 限位器错误

0x34 每个区的缺陷过多

0x35 磁头所在盘面缺陷过多

0x36 磁道缺陷过多

0x37 无缺陷图存在

0x38 缺陷格式错误

0x39 伺服缺陷过于密集

0x3A 表面划伤过多

0x3B 缓冲中的 dlist过多

0x3C 过多 ecc错误

深度剖析——硬盘固件级数据恢复

308

(续表)

Stop Condition Description

0x3D 写错误过多

0x41 错误比率过多

0x42 Gap填充期间错误过多

0x43 磁头预补偿测试损坏

0x44 软错误过多

0x45 格式化错误

0x46 Burn-In脚本错误

0x47 RCO超时

0x48 最后步骤测试错误

0x49 持续测试

0x51 PCB未就绪

0x52 加载系统表失败

0x53 保持写状态错误

0x55 Burn-In代码版本低

0x57 加电初始化错误

0x59 错误的毁掉磁头信息

0x5A IPC相关错误

0x5B 保持读状态错误

0x5C 功能测试超时

0x61 CPU RAM错误

0x62 音序器 RAM错误

0x63 Buffer RAM错误

0x64 Flash ROM错误

0x65 Burn-in 脚本错误

0x66 磁头特性测试错误

0x67 校验 SN错误

0x68 TA错误过多

0x69 寻址错误过多

0x6A 伺服 RAM错误

0x71 FSAM错误

0x72 FGRAY错误

0x73 PES错误

0x74 索引错误

0x75 磁头边缘测试失败

0x82 BLPL测试失败

0x83 Head特性测试失败

0x85 TA错误过多

0x86 写失败错误过多

0x87 重置错误

0x88 锁存器强制过高

0x89 锁存器强制过高

0x91 Rco标准系统写错误

0x92 Rco标准系统读错误

0x93 Rco标准未发现

0x94 Rco导致系统写错误

0x95 Rco导致系统写错误

附录 2 三星 Burn test 完成代码总表

309

(续表)

Stop Condition Description

0x96 TF_Rco导致系统写错误

0x97 优化错误

0x98 磁头功能削弱

0x99 发现测试磁道错误

0x00 程序结束

0x02 无效的中止状态

0x11 Bias强制过高

0x12 寻址错误

0x13 磁头失速

0x14 Bias校准错误

0x15 主轴旋转速度出错

0x16 主轴启动错误

0x17 未发现 0磁道

0x18 NP-偏移测试结果错误

0x19 AB-slope测试结果错误

0x1A 全部增益校准错误

0x1B 循环增益校准错误

0x21 磁头倾斜校准错误

0x22 VCM 强制检测错误

0x23 寻址时间错误

0x24 1个磁道寻址超时

0x25 1/3寻址超时

0x26 完全寻址超时

0x27 磁头转换时间过长

0x28 主轴启动时间错误

0x29 锁存器强制过低

0x2A PES错误过多

0x2B 伺服口损坏

0x2C 柱面上伺服缺陷过多

0x2D 区的伺服缺陷过多

0x2E 盘面上伺服缺陷过多

0x2F 格雷码错误过多

0x31 伺服缺陷过多

0x32 错误日志溢出

0x33 限位器错误

0x34 每个区的缺陷过多

0x35 磁头所在盘面缺陷过多

0x36 磁道缺陷过多

0x37 无缺陷图存在

0x38 缺陷格式错误

0x39 伺服缺陷过于密集

0x3A 表面划伤过多

0x3B 缓冲中的 dlist过多

0x3C 过多 ecc错误

0x3D 写错误过多

0x41 错误比率过多

0x42 Gap填充期间错误过多

深度剖析——硬盘固件级数据恢复

310

(续表)

Stop Condition Description

0x43 磁头预补偿测试损坏

0x44 软错误过多

0x45 格式化错误

0x46 Burn-In脚本错误

0x47 RCO超时

0x48 最后步骤测试错误

0x49 持续测试

0x51 PCB未就绪

0x52 加载系统表失败

0x53 保持写状态错误

0x55 Burn-In代码版本低

0x57 加电初始化错误

0x59 错误的毁掉磁头信息

0x5A IPC相关错误

0x5B 保持读状态错误

0x5C 功能测试超时

0x61 CPU RAM错误

0x62 音序器 RAM错误

0x63 Buffer RAM错误

0x64 Flash ROM错误

0x65 Burn-in 脚本错误

0x66 磁头特性测试错误

0x67 校验 SN错误

0x68 TA错误过多

0x69 寻址错误过多

0x6A 伺服 RAM错误

0x71 FSAM错误

0x72 FGRAY错误

0x73 PES错误

0x74 索引错误

0x75 磁头边缘测试失败

0x82 BLPL测试失败

0x83 Head特性测试失败

0x85 TA错误过多

0x86 写失败错误过多

0x87 重置错误

0x88 锁存器强制过高

0x89 锁存器强制过高

0x91 Rco标准系统写错误

0x92 Rco标准系统读错误

0x93 Rco标准未发现

0x94 Rco导致系统写错误

0x95 Rco导致系统写错误

0x96 TF_Rco导致系统写错误

0x97 优化错误

0x98 磁头功能削弱

0x99 发现测试磁道错误