八喜 发表于 2007-1-26 11:19:57

迈托硬盘微代码

Maxtor硬盘的微代码在主存储器中运行,微代码可以从三个地方载入:

第一个地方——硬盘主处理器的掩码ROM中(boot--ROM);
第二个地方——电路板上的Flash ROM(扩展boot—ROM,如果安装了的话);
第三个地方——固件区,硬盘被正确的检测到并进入LBA运行方式时,硬盘会先执行电路板的驻留代码,然后再使用固件区的代码执行初始化。

    在电路板上可以从两个地方载入微代码:处理其中的掩码ROM和扩展的并行或串行Flash ROM。之所以这样安排是由于处理器中的掩码ROM不容易进行修改。主处理器一般情况下从扩展ROM中载入微代码,但是如果没有扩展ROM或扩展ROM损坏,主处理器就会从掩膜ROM中启动微代码。还存在处理器内部的代码属于其它系列的硬盘的情况,例如:去掉扩展ROM的CALYPSO硬盘可能被检测为N40P。

    Maxtor 硬盘的固件区使用称为“UBA (UtilBlockAddressing , 与LBA相似)”的逻辑方式进行寻址——微代码会自动的将逻辑地址转换物理地址,因此在寻址是可以将固件区的缺陷扇区(坏区)隐藏(译者注:使用U--List)。“Half Size(半容量)”硬盘的固件区位于扩展磁道(磁盘的外边缘),而“Full Size(全容量)”硬盘的固件区位于内圈(靠近停泊区)。

    Maxtor 硬盘可以通过设置跳线进入“安全模式”。如果将跳线设置为“安全模式”,那么硬盘仅载入电路板上的微代码,而不会启动电机,不会初始化固件区的程序。另外在安全模式下可以通过载入LDR文件(overlay)来进行初步初始化,而不会进行进一步的初始化——这就是为什么在安全模式下载入LDR文件与在正常模式下启动硬盘存在差别。在安全模式下可以检测到电路板上的微代码的版本:将跳线设置为安全模式后启动PC3000的Maxtor 程序,在“Firmware”行就会显示ROM的版本。如果在启动硬盘电源是短路串行Flash 的第5和第6脚,这时显示的微代码与用先前的方法显示的版本不同——此时代码是从硬盘主处理器启动的。有关备用固件区(ALT--SA)的说明见第4.5节。
硬盘在正常运转状态下,在进行初始化时会将固件区的程序写入到电路板上。如果由于某些原因不能从固件区启动程序,硬盘就会进入“FALL(失败)”的状态——类似“安全模式”状态——营盘被检测为属系名。要想脱离“FALL”状态,应该使用LDR文件引导,将所有微代码(ROM--Overlay)强制写入微处理器中的主存储器中。记住LDR文件只包含程序代码(ROM和Overlay)而不包含硬盘完全运转所需要的数据(缺陷表,校准数据和其它参数)。电路板上的程序和固件区中的程序的版本是不同的可以据此判断处理器中当前运行的是电路板上的程序还是固件区的程序。如果版本号为“Z”(版本号的最后一个字母),那么说明硬盘没有进行完全初始化——如:硬盘在完全初始化时显示的版本号应为WAK21R90;在没有完全初始化时显示的版本号为WAK21R9Z。

Poker/Ardent系列硬盘的固件区有两个控制程序:

程序1:包括模块:38h,39h,4Fh;
程序2:包括模块:97h,96h,98h;

    在这种情况下会存在三种微代码,以版本号中的字符来区分:A,B和C——以N40P为例就是NARxxxxZ,NBRxxxxZ和NCRxxxxZ。但是版本号标识为NARxxxxZ的固件中的代码与bootROM中的程序是不同的。

    注意不同的硬盘生产商(如IBM,Samsung等)Loader的运行思想是不同的。但是共同的地方是所有的硬盘都是使用ATA指令“DOWNLOAD MICRCODE (92h)”来载入Loader从而启动微代码;

SYLB 发表于 2017-2-21 10:25:48

谢谢!!!!!!!!!!!!!
页: [1]
查看完整版本: 迈托硬盘微代码