为了说明什么是Program C,请允许我先引用一段来自ACE说明书中的内容,引用的文字是英文的,大家看起来不要觉得枯燥,尽管我随后将有中文解释,我也将在本文中陆续谈到Program C,但我认为语言经过转述,永远不可能与原文一致。我建议有条件的朋友还是先看原文。
4.5. Alternate service area
The manufacturer uses the alternate service area (ALT-SA) in N40P, CALYPSO and SABRE drive families.
Still, not all the N40P drives have an alternative service area. For convenience, the utility at the start logs for supporting
models a message informing the user that "HDD has an alternate service area". The presence of an alternate SA can be
identified by the PN=95h module in the module table; if module 95h is present, the drive has no alternate SA. This rule
has exceptions in N40P family because a drive with an alternate SA can be used to start a loader created from another
drive without alternate SA. In that case the module table will contain a record of module 95h; however, an attempt to
read it will demonstrate that it is empty.
The alternate service area is used during drive manufacturing for creation of the main SA and hiding of its
defects; it contains the same collection of modules, but their content differs.
The alternative program version is NCRxxxx0 in N40P or YCRxxxx0 in Calypso family; its brief representation
is "Program C". The program from the main SA is called "Program A", respectively.
In a HDD with an alternate SA, drive boot ROM after motor start reads the modules containing program code
and the translator from the main SA checking their structure. If the structure turns out to be invalid of a module cannot
be read, then loading switches to the alternate SA (see Fig. 1). A drive in that case initializes on its own using the
alternate SA. It means that switching the drive back to operation with the main SA requires recovery of its translator
and program modules. The opportunity for recording the main SA from another drive to an alternate SA is not
thoroughly studied yet. We can only make assumptions about possible results. The program in the main SA is set up to
work with its physical location despite its launch from the alternate SA. Boot ROM will run the code of program A
from the alternate SA, but the data modules will still be read from the main SA. If you start a loader with program А,
then the main SA will be linked to the UBA space; if you start it with program C, then the alternate SA will be linked
instead. There is one more difference between the A and C programs: the overlays of program A are modified during
Self Test while the overlays of program C remain the same for an identical checksum.
Microprogram С is unable to run the translator of the user zone and its adaptive modules are not suitable for
reading that zone. As a result, such drive will not be visible in LBA.
In section 4.1 we introduced the notions of: ?program 1? and ?program 2?. It is essential to understand the
difference between an alternate SA and program 2. It follows from the mechanism implemented in a drive for switching
between HDD start with program 1 or program 2 using the PN=95h module. However, in case of an alternate SA there
is no such switch. A drive switches in case of problems with the main SA.
Is there a way to switch between service areas on a functional drive? There are two methods for switching a
functional drive to the alternate SA:
1. Start an alternative loader created from the drive, when it initialized using its ALT-SA.
2. You can also switch a drive from the main to its alternate SA by enabling the ?Write all module copies?
option in the ?Utility status? dialog (Fig. 2), then modify a byte of the PN=18h module header in the module
viewing mode (Ctrl-Alt-2) and save the module.
In some drives the ?program 2? in the alternate (4.1) SA contains program A in its state prior to modification by
Self Test; it has the same ROM version as the main one, which may be useful. To start a drive using that program:
? enable the “safe mode” jumper
? start an alternative loader
? perform a ?Restart using internal HDD SA?, having selected ?program 2?.
上述的黑体字部分,就是引用的PC3000 For Windows Ver 2.20的原文说明,接下来的内容,为了理解上的方便,我不再遵循原文的结构顺序,并结合俄文的说明来讲。但我还是要强调,下面的内容,并不是上文的翻译,具体来源我不便说明,对各位有所帮助就够了。本文只在此发表,任何人无权转载,请自重。
备用服务区
一、备用服务区的原理
厂商在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.
至此,适合公共阅读的“ProgramC浅谈”告一段落,对于C区的使用技巧,我们在技术支持群中提供讲解。