迅维网

查看: 2744|回复: 10
打印 上一主题 下一主题

备用服务区的原理(作者不明)

 关闭 [复制链接]
跳转到指定楼层
1#
发表于 2007-12-25 08:40:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 来自: 四川绵阳 来自 四川绵阳

马上注册,获取阅读精华内容及下载权限

您需要 登录 才可以下载或查看,没有帐号?注册

x
备用服务区



一、备用服务区的原理

  厂商在N40P/CALYPSO/SABRE/FALCON系列硬盘驱动器中使用了备用服务区,N40P系列比较特殊,不是所有N40P系列驱动器都具有备用服务区,通过查看模块列表可以验证N40P系列是否具有备用的服务区。如果PN=95h模块存在,说明这个硬盘不具有备用服务区。有一个特殊的情况,应当注意,当你在一个具有备用服务区的N40P系列驱动器上,加载了一个创建自没有备用服务区硬盘的LDR以后,或许在模块列表中会出现PN=95h模块,一旦打开它,你会发现PN=95h模块是空的。这样的盘,是具有备用服务区的。而CALYPSO/SABRE/FALCON系列全部具有备用服务区。
  备用服务区是厂商用来在生产过程中创建主服务区,以及隐藏它的缺陷。在备用服务区中包含了该驱动器的部分原始模块,它的结构与主服务区类似,但是功能与模块内容是有区别的。
  主服务区的FW,叫做Program A,人们习惯称它为A区;备用服务区的FW,叫做ProgramC,也就是大家说的C区。N40P系列备用服务区的FW版本类似于NCRxxxx0,CALYPSO系列备用服务区的FW版本类似于YCRxxxx0,只有FALCON系列特殊,它的FW版本类似于RDMxxx0的样子。[因此,FALCON系列的备用服务区也被称为D区。]
  在一个具有备用服务区的驱动器引导过程中,主轴启转后,BOOT-ROM首先从主服务区读取模块中的微代码以及转译器,并检查它们的结构状态,如果它们的结构无效或者无法读取,BOOT-ROM便转向装载备用固件区。也就是说,当主服务区的代码模块或者转译器异常,BOOT-ROM便转向装载备用固件区。
  使一个具有备用服务区的硬盘驱动器转向备用服务区引导,有两个办法:
  1、在安全模式下,使用专用的ProgramC_LDR引导驱动器到备用固件区。
   [此方法适用于无法从主服务区正常引导的驱动器,在技术支持群已经提供LDR文件]
  2、·在“Utility status”对话框中,勾选“Write all module copies”。
     ·在module viewing (Ctrl-Alt-2)中打开PN=18h模块,并修改模块头的两个字节为任意字符,回写。
   [此方法适用于可从主服务区完整引导的驱动器]

二、备用服务区的功能
  在原理部分曾提到“备用服务区是厂商用来在生产过程中创建主服务区,以及隐藏它的缺陷。”,事实上,备用服务区的使用贯穿了驱动器生产的整个环节,当驱动器的HDA装配完毕,首先要写Sevo标志,以及我们刚刚提到的备用服务区。再封闭Sevo Window,装配PCB。这个环节中装配的PCB并不是销售时我们见到的样子,它是带有AI接口的工程PCB,上面有各TP以及串行通讯口。这个AI接口是通过一条专用电缆与工厂的I/O盒相连,I/O盒是一个通用设备,它可以从工厂的控制主机中Download某系列驱动器的控制代码,然后脱机使用。当工程PCB接驳好带有相应控制代码的I/O盒,就可以启动备用服务区的SelfTest程序了。
  SelfTest程序首先应用工厂计算得到的SA缺省适配,按照物理地址检查预设的主服务区范围,排除缺陷,并将完好扇区编目,生成主服务区的转译器,并缓冲在备用服务区的Swap0区域。对于FALCON系列驱动器,还要检查另外一个预设服务区,我们把它叫做“ProgramB”,也就是B区,生成B区的转译器,并缓冲在备用固件区的Swap1区域。之后,应用编目后的UBA地址对主服务区做适配调整,再根据调整的结果,继续编目一定数量的扇区作为SA保留扇区,但这些保留扇区不做缺陷检测。
  生成了SA区的转译器以后,SelfTest程序试图将两个特定扇区填充数据,并标记为缺陷。如果成功,开始根据备用固件区的模块生成主服务区模块。对新生成模块进行校验。校验结束,对主服务区模块进行标记,标记当前进程,并暂停SelfTest,等待I/O盒的键盘交互式返回PN=48h中一些数据,PN=48h的数据填充完毕,将继续进行SelfTest进程。
  接下来的进程,就是我们在主服务区可以看到的那些进程了。
  如果SelfTest进程因为媒质缺陷过多,会返回0006进程,等待I/O盒的键盘返回下一级型号所需的PN=48h中的一些数据……
  这就是在工厂中备用服务区的功能。
  在现有条件下,多数朋友可能无法获得I/O盒以及控制代码。但是,备用固件区中的大部分功能仍然是可以利用的,因为最后一次工厂测试时使用的控制代码,被保存在备用固件区的SelfTest模块组中了。我们通过打开、注销、更改个别流程,可以基本实现工厂级别的SelfTest.

[ 本帖最后由 河东 于 2007-12-25 10:24 编辑 ]

评分

参与人数 1下载分 +10 收起 理由
孤帆远影 + 10

查看全部评分

2#
发表于 2007-12-25 08:40:43 | 只看该作者 来自: 四川绵阳 来自 四川绵阳
首先我们应该明白,哪些硬盘具备C区(备用固件区),哪些系列不具备,迈拓硬盘微代码机制与Self Test启动方式有什么变化和要求,这样直观的给大家说一下;   
  LDR:包含ROM和Overlay而不包含硬盘完全运行所需要的数据,比如缺陷表,校准数据和其他参数;电路板中的程序和固件区中的程序版本也自然不同,这样我们可以判断处理器中当前运行的代码是运行在电路板上的还是固件区的程序,如果版本号为“Z”(版本号最后一个字母),那么说明硬盘没有进行完全初始化(我们通常为寻道)例如硬盘在完全初始化后版本为WAK21R90;在没有完全初始化的时候就是WAK21R9Zlker/ardent系列硬盘的固件区有两个控制程序;分别为:   
程序1;包含模块38H 39H 4FH;
程序2;包含模块97H 96H 98H;
    在这种情况下自然存在了三种微代码,我们以版本号中的字否来区别:A,B,C---以N40P为例就是NARxxxxZ,NBRxxxxZ,和NCRxxxxZ;当版本号标示为NARxxxxZ的固件区中代码与BootROM中程序是不同的;   
ATA指令“DOWNLOAD MICROCODE”92H来载入LDR从而启动微代码;当然有很大一部分硬盘不需要修改92H,直接可以启动,以下是迈拓硬盘启动Self Test的一些说明;
   
MAX VL40(PROXIMA)系列; 不存在ALT-SA,启动Self tels不需要修改脚本,启动时间大约30秒;
MAX PLUS60(RIGEL)系列; 不存在ALT-SA,启动Self tels不需要修改脚本,启动时间大约30秒;
D531(NIKE)系列;       不存在ALT-SA,启动Self tels不需要修改脚本,启动时间大约30秒;   
ATHENA DSP系列;       不存在ALT-SA,启动Self tels不需要修改脚本,启动时间大约30秒;   
ATHENA PKR系列;       不存在ALT-SA,启动Self tels不需要修改脚本,启动时间大约30秒;   
VULCAN系列;           不存在ALT-SA,启动Self tels不需要修改脚本,启动时间大约30秒;
ARES 64K系列;           不存在ALT-SA,启动SF需要修改ID=89H;启动时间大约30秒/10分钟;
MAX16(FALCON)系列;     不存在ALT-SA,启动Self tels不需要修改脚本,启动时间大约30秒;   
MAX PLUS8(N40P);有些硬盘含有/有些不含有ALT-SA,没有程序备用固件区的,修改ID=89直接测试,如果带有备用固件区,那么启动Self test需要选择从A还是B来创建原始固件区,然后从备用固件区启动,启动时间大约30秒/10分钟;   
MAX PLUS9(CALYPSO)系列;每个硬盘都存在ALT-SA,支持从基本固件区和备用固件区执行,两种方式可以自由选择执行,启动时间大约30秒/10分钟;   
大家了解了以上原理,我们分别对金8/金9两种启动Self Test做出说明;   

金8开始执行Self Test流程如下:   

1:安全模式载入LDR;
2:执行"ASSPORT READING"检查固件版本号是否为NCRxxxx0标称,检查是否出现序列号,如果没有出现序列号,那么ldr没有启动,这个时候选择另外ldr或者说明备用固件区有故障;当然,这种情况下执行self test不会产生任何效果; 3:选择"Utility state"比较载入代码与ROM_SA的校验和,如果他们不一致,那么立即从硬盘中生成LDR,并且使用生成的LDR启动;或者可以将所有模块保存在数据库,然后从数据库中启动LDR(运行To form来生成程序),备用固件区的程序都是相似的;
注意:如果在数据库中已经存在相同校验的rom,那么应该使用另外的文件名保存;
4:执行Self Test,保持电源打开和PC-3000程序执行;
5:关闭电源在此载入同一个LDR,再次载入LDR后自捡发光二极管会闪烁10分钟,之后开始启动Self test,要察看Self test的状态,那么启动pc3000的mt程序时,选择"Self test state monitoring"按下“launch utility”这个时候就可以从文件中加载脚本并监视Self test状态;
  Self test的启动需要5分钟左右,然后硬盘回重载被用固件区89H来重建基本固件区(隐藏缺陷,写入基本模块,重新计算校准参数);然后回关闭硬盘,移除“安全模式”跳线并打开电源;   
现在不需要载入LDR,发光二极管闪烁10分钟之后开始执行SELFTEST,不过此时是从基本固件区执行;

CALYPSO执行Self test
CALYPSO可以从基本固件区启动Self Test;也可以从备用固件区启动Self Test;不过有些硬盘虽然具有备用固件区,可是却不能从备用固件区启动SelfTest,我们可以通过固件区脚本察看来得到,如果调用出来的测试数量为7,那么就不能够从备用固件区启动Self Test,这个时候需要从基本固件区启动Self test;从备用固件区启动还是从基本固件区启动Selftest开始决定使用那个程序来创建原始固件区;
从备用固件区启动self test的操作流程如下; )

1:安全模式加载LDR
2:执行“Passport reading”检查固件版本号为NCRxxxx0的形式,会差看到是否出现序列号,如果没有出现序列号,就说明ldr没有启动(尝试使用其他的ldr)或备用固件区损坏; I )
注意:备用固件区损坏或者ldr不启动,启动self test 不发生任何效果;
3:启动pc3000程序并执行"utility state",比较载入的rom和rom_sa的校验和--如果两者不同,那么立即从此硬盘中生成ldr并使用生成的ldr启动硬盘,或者也可以将所有模块保存到数据库,然后从数据库中启动ldr(运行"to form"来生成程序);备用固件区的程序都是相似的;
注意:如果在数据库中已经存在相同校验的rom,那么应该使用另外的文件名保存(不要覆盖);
4:现在开始执行self test,察看脚本中测试的数量,如果数量过少(7个),那么就不能执行self test-此硬盘不能从备用固件区启动self test;
5:我们需要修改脚本;使用"NOP"来注释掉“Waiting outside event(ID=06H)”测试(数据一般位于第二项);循环(LOOP)(等待外部时间时的循环(Waiting outside event))另外还要将id=90测试注释为"nop";PC-3000不会自动禁用前面提出的测试;
6:修改后的脚本保存到硬盘文件《以后直接可以从文件载入脚本》;
7:执行“Start Self Test”保持电源开启和pc3000程序在运行;
8:关闭硬盘电源再打开,然后载入ldr,大约30秒后(30秒之间发光二极管不会跳闪),这个时候就会启动selftest;大约5分钟左右程序开始执行id=89h,从基本固件区载入,发光二极管会跳闪30秒,之后将从基本固件区继续执行self test,这个时候中止测试并察看基本固件区变化;
9:从基本固件区继续执行self test;
备用固件区的脚本更改后的硬盘启动不需要再次做更改脚本工作,只需要从上面的第5步开始,从备用固件区启动self test即可;
注意:以上操作为PC-3000使用流程;希望能够给朋友们带来方便;

回复 支持 反对

使用道具 举报

3#
发表于 2007-12-25 08:41:20 | 只看该作者 来自: 四川绵阳 来自 四川绵阳
在安全模式下装载的LDR引导进入之后,硬盘进入的是AL-SA(备份SA区模式),看ID变化.
思路:通过安全模式下,用LDR引导进入,不管校验和是否一致,都直接生成LDR(注意,这个LDR与正常模式下的LDR不同),这就是俗称C 区的LDR文件.
以金8为例子,从安全模式下生成C区的LDR,断电,加载所生成的C区LDR文件,进入SELFSCAN模式,通过89H模块的引导(这个模块在这里不是普通的数据模块,更像批处理文件---类似IBM的LDR文件功能"插曲:IBM的LDR不是引导文件,而是告诉硬盘去执行什么命令的文件,例如砍头,为什么IBM砍头需要多次写入LDR就是这个原因"),进入,SELFSCAN准备工作,调用所需的数据,断电,开始真正的SELFSCAN

回复 支持 反对

使用道具 举报

4#
发表于 2007-12-25 08:41:50 | 只看该作者 来自: 四川绵阳 来自 四川绵阳
6Y进c区自检方法(
1认盘进pci-pc3000   TOOLS->UTILITY EXTENSIONS->VIEW MODULES->#18->修改第一个字节为00并校正验证码->write to hdd->退出pci-pc3000 断电,通电再进入pcipc3000就进入C区---Firmware 由原来 YAR41BWO 变为YCR41VJO ,生成ldr文件(如果是用别的ldr进入的最好读出c区固件,通过from profile files 生成,)断电退出pc3000 ,跳安全模式用上面生产的ldr 这时要注意2点1.sn有没有读出,2点UTILITY STATE 看看两个验证码是否相同 如果没有说明固件有错误,自检不会成功,启动自检 关掉id=06 id=90 进程,写入硬盘,退出再重进,开始跑自检(选第一项不断电),断电推出再次通电加ldr 等大概不到1分钟,自检自动启动,通过selftest monitoring 查看进程,到id=89 后开始从A区载认,然后从A区继续执行.

从c区启动自检有很大局限性,1首先c区固件好的不多,碰到的没有几个c区是好的,c区固件坏了读出来用mrt修一下再写进去没有问题,和A区的方法没有区别,但好像不能写其他盘的固件写了以后,即使写测试通过也写不进任何东西,一写或一开自检就busy,2.C区的副头是空的主头坏了就没发做自检.我碰到过C区自检敲盘,在A区做成功的.总的说来对C区认识还不深.

回复 支持 反对

使用道具 举报

5#
发表于 2007-12-25 10:55:01 | 只看该作者 来自: 福建泉州 来自 福建泉州
很详细的介绍,对硬盘底层有个清楚的认识,谢谢楼主

回复 支持 反对

使用道具 举报

6#
发表于 2007-12-25 11:41:37 | 只看该作者 来自: 四川乐山 来自 四川乐山
好帖子
还比较全面

回复 支持 反对

使用道具 举报

7#
发表于 2007-12-25 22:28:10 | 只看该作者 来自: 广东湛江 来自 广东湛江
真的顶得不得了~~~~~~~~~~~~~~
学习拉~~~~~

回复 支持 反对

使用道具 举报

8#
发表于 2007-12-27 21:03:09 | 只看该作者 来自: 云南昆明 来自 云南昆明
很好的东西,非常谢谢,希望高手今后发这样的帖子.

回复 支持 反对

使用道具 举报

9#
发表于 2007-12-27 21:05:29 | 只看该作者 来自: 云南昆明 来自 云南昆明
很好的东西,非常谢谢,希望高手今后多发这样的帖子.还有就是请教到哪有C区的LDR下载?请赐教,俺非常谢谢了,我的QQ:75358841

回复 支持 反对

使用道具 举报

10#
发表于 2008-1-16 16:19:27 | 只看该作者 来自: 湖南衡阳 来自 湖南衡阳
这是我见过备用务服区最详细的介绍了?

精典!

回复 支持 反对

使用道具 举报

11#
发表于 2008-1-16 22:15:05 | 只看该作者 来自: 江苏苏州 来自 江苏苏州
好东西!!!好东西!!!好东西!!!好东西!!!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表
附近
店铺
微信扫码查看附近店铺
维修
报价
扫码查看手机版报价
信号元
件查询
点位图 AI维修
助手



芯片搜索

快速回复