学校地址:湖南省 长沙市 雨花区 车站南路红花坡路口 |
学校地址:湖南省 长沙市 雨花区 车站南路红花坡路口 |
大家经常能够看到关于FIRMWARE讨论的文章,感觉大家对FIRMWARE还是比较生疏,有的居然想出一些拆掉芯片用编程器烧录后再焊回去的方式,这种方式千万不能使用,因为一些隐含的问题会发生。具体的问题不必多说大家都会明白。
为什么很难获得FIRMWARE?
作为一个程序员,我这里几乎有全部种类的FIRMWARE,但是,有些不能公开,有的是为一些厂商而做的,是规定收取费用的种类,有的是内部测试版本,针对特定的方案而专门编写的,不能公开。一般公开的版本号有特别的规定,不能高于市场正在销售的版本。
1.对于普通用户来说,有没有升级硬盘固伯的必要?如果有,什么情况下推荐升级Firmware?
2.如果真的要升级硬件固件,是如何升级?跟升级DVD的Firmware一样的道理,即跟涮新BIOS相似的道理和过程?
3.厂商会不会不断升级Firmware,就像升级驱动程序一样,不断更新版本?这就想请你深入探讨一下Firmware的作用了...
1.对于普通用户来说,有没有升级硬盘固伯的必要?如果有,什么情况下推荐升级Firmware?
>>对于普通用户来说,没有必要升级硬盘固件,一般微小的缺陷可以在软件里使用补丁程序解决。除非和适配器的兼容性存在问题或者弥补硬件的某些缺陷,厂家才会推出升级的程序(括全部升级或部分补丁升级)。这里要着重说一下补丁,补丁具有很严密的针对性,不是每个同型号的产品都适用补丁,不正当的升级会导致严重的问题。
2.如果真的要升级硬件固件,是如何升级?跟升级DVD的Firmware一样的道理,即跟涮新BIOS相似的道理和过程?
>>PC里的SCSI硬盘升级程序只是一个传送升级代码的程序,是把升级代码送到硬盘缓冲里,然后让硬盘的DSP运行升级代码,升级代码运行过程中执行升级过程并修改EEPROM相应的区域,这时候升级程序进入了状态监视过程。
你们看到的FIRMWARE为什么和EEPROM的大小不一样,现在该明白是什么原因了吧。
3.厂家会不会不断升级Firmware,就像升级驱动程序一样,不断更新版本?这就想请你深入探讨一下Firmware的作用了...
>>厂家会不断升级Firmware,并且应用到新生产的产品中去,但是厂家不会公开发布FIRMWARE,只有当厂家判定你的硬盘确实需要升级的时候才会给你。当然对于升级的后果厂家不会承担任何责任。FIRMWARE的作用,打个比方硬盘的控制板是台电脑,FIRNWARE就是操作系统,它括很多模块:驱动,控制,解码,传送,检测……
低级格式化,大家可能不陌生,很多SCSI卡的BIOS里都带了个小工具可以做到,但是如果我问你格式化进行到多少了,你就不能回答上来了,能不能象校验磁盘一样可以看到进度呢,答案是肯定的。不过是让硬盘的FIRMWARE一个一个BLOCK的执行格式化,发现坏道就把他仍到P——LIST里,格完了还不需要校验,更省时间,剩下的咱们不过是作个状态监视就可以了。
既然是硬盘的FIRMWARE来执行格式化,不需要占用系统的资源那样就可以几个硬盘一起来格式化,一个状态监视他们所有设备的进度,更省了大家的时间。
这个功能其实是硬盘固件的功能,你让它开始格式化了,你还可以用计算机干其他的活儿,只要不断电,硬盘会一直到任务完成为止,在这期间内,即使你拔掉信号线也终止不了任务。
上次说到低级格式化,涉及到缺陷列表的问题,看了这里好多的帖子,大家对缺陷列表的分类还是不明确,实际缺陷列表分为四类,1PLIST,2GLIST,3CLIST,4DLIST。
明确了这几个列表的区别,才能更好的编制FIRMWARE来管理自己的硬盘,维护自己的数据。
1,PLIST,基本缺陷列表是厂家使用专门的测试设备发现的缺陷,这些缺陷是磁介质寿命完成之后产生的永久缺陷,对于非厂家来说是不能够取消的,只能使用特别的设备来增加它,因为有GLIST,一般没有必要去动它,所以有些厂家的新销售磁盘里的GLIST的列表并不是空的。
2,GLIST,成长缺陷列表,对硬盘操作过程中发现的缺陷,这些缺陷可以在格式化的过程中发现,也可以由自动的(就是上面所说的让FIRMWARE自动格式过程)或者使用REASSIGN BLOCK(操作码为0X07,上面的程序里有例子)命令做重新分配的过程中发现。
3,CLIST,检查列表,含了在操作系统格式化过程中发现的列表,一般也存储为GLIST方式,
4,DLIST,可以人为定义的列表,先定义了这个列表, 后由系统传送给硬盘的缺陷列表,在格式化的过程中,它将变成GLIST的一部分。也可以把好的块定义进去。
实际234 后都存储在GLIST列表里,这个GLIST总的列表和存储PLIST的列表也是存放在一起的,都在磁盘的介质上。对于一些软件表面看来是两个大类,但是实际上由于产生的原因不同,软件所发出的指令也是不一样的。这点对一般人来说怎么分类不重要。
硬盘的代替扇区和柱面,模式页参数和缺陷列表都是存储在盘体的磁介质上的,这些参数和VID,PID,LBA(not LBN)等基本参数是分开的。从这一点大家可以想象,修改了FIRMWARE后还要修改盘片上的一些信息。一般情况下,修改了FIRMWARE后,低级格式化可以恢复一部分FIRMWARE预制的参数到盘片上,但是有些预制参数往往是编写FIRMWARE时任意设置的,如果造成了数据偏移,就会使GLIST出现错误,SCSI的GLIST列表记录一般 大为2000H(8191)个.发现接近或超过这个数目的GLIST记录,那这个硬盘可能就报废了。
另外说明一点,GLIST是可以读取(0X37)清除(格式化)的,但是清楚以后故障还会存在。
再放一段程序便于你们理解。
int glist(SCSI *sp)
{
SCSI *s;
int al= 8, retval= -1, rv, format;
char format_mask[]= { 0x00, 0x04, 0x05, 0 };
int format_size[]= { 4,8,8,0 };
s= scsi_init(al);
idcpy(s, sp);
s->s.scsi_command[0]= 0x37;
s->s.scsi_command[2]= 0x08;
*(unsigned int *) &s->s.scsi_command[7]= swapint(al);
for (rv= 0, format= 0; format < 3 && rv!= 1; format++)
{
s->s.scsi_command[2]&= 0xf8;
s->s.scsi_command[2]|= format_mask[format];
rv= scsi_execute(s, 0);
}
format--;
if (rv== 1)
{
retval= swapint(*(unsigned int *)&s->s.data_buffer[2])
format_size[format];
}
scsi_destroy(s);
return(retval);
}
|
|