主题位置:论坛首页>>论坛大类>>电子基础  发布新贴 版 主:linelayout
楼 主
·网名:rrtyu
·头衔:大咕噜
·级别:
·资历:5980
·经验:1210
·注册:2009-9-13
·发送短信 加为好友
主 题:固件(firmware)是什么?
固件(firmware)是指设备内部保存的设备“驱动程序”,通过固件,操作系统才能按照标准的设备驱动实现特定机器的运行动作,比如光驱、刻录机等都有内部固件。
  Firmware是固化在了硬件中的软件,光存储的Firmware是运行在驱动器上的软件指令集,它存储着计算机系统中硬件设备最基本的参数,为系统提供最底层、最直接的硬件控制。Firmware功能上有点类似于主板上BIOS,同样在开机过程中,系统会先读取其内部的硬件设备初始化信息,使操作系统能够正确识别硬件,并为其他软件的运行提供最基本的依据。部分厂商还会在Firmware内存储市面上各式光盘的资料数据,主要是刻录机的Firmware存储刻录盘的资料,在刻录时检测当前使用盘的信息,与存储的资料进行对比,进而采取相应的刻录方法。
  Firmware是存储在硬件中的,其存储介质主要有ROM、PROM、EPROM、EEPROM和Flash Rom,现在的光储产品基本都使用可擦写的存储介质存储Firmware,便于用户刷新。Flash Rom是一种在EEPROM基础上改进的非易失性的存储介质,它在擦写数据时是以“块”为单位进行的,块的大小由厂商自定,而EEPROM则是以字节为单位进行擦写的,因此Flash Rom的擦写速度较快,其技术的先进性和操作的便捷性非常方便用户自行对固件进行升级。具体采用何种存储介质,设备制造商往往是根据制造成本、安全性能、是否需要升级、设备标准的发展变化等实际情况来综合考虑的。
  Firmware的重要性不言而喻,采用可擦写的介制是为了对其进行升级。厂家可以提供对Firmware的升级,以便为Firmware增加更多的功能或改进其性能,甚至修正其中的错误。虽然有些固件的问题可以通过软件补丁来弥补,但终归还是不如直接进行固件的升级来得可靠和方便。因此目前绝大多数的厂家在推出硬件产品时,都采用了可以升级的固件设计以提供更加灵活的适用性。
  一般光储厂商都会提供必要的Firmware升级程序,可以去其官方网站直接下载,此类程序容量都较小,一般在一二百KB以内。大部分的Firmware升级程序都需要在纯DOS环境下运行。注意并不是指Windows下的DOS窗口,而是指未进入Windows界面之前的DOS操作环境。
个人签名档还未设置,请点击这里进行设置
  删除 置顶 推荐 精华 加锁 编辑 取消
 2009-11-23 18:53:55 
Re:固件(firmware)是什么?
·网名:jiangxia4
·头衔:大咕噜
·级别:
·资历:5970
·经验:1215
·注册:2009-9-13
·发送短信 加为好友
固件(Firmware)有两种定义。一个指的是嵌于只读内存(ROM)的程序和数据。换句话说,就是在只读存储中所存在的内容。而另一种定义则是将电脑芯片中的ROM及其内容看作一个整体,都被称作固件。总之,无论是那种定义,ROM中的软件成分都属于固件。 当它被嵌入硬件设备后,就变成该硬件设备的永久性的一部分。只读存储器中有一种是可编程只读内存(Programmable ROM),而在可编程只读内存中还有一种是可删除可编程只读内存(Erasable Programmable ROM)。

  值得一提的是,并不是只有苹果机里才有固件,也不是只有苹果机需要用户来做固件更新。一些扫描仪、打印机内都存在固件,厂商也经常为用户提供固件更新。

  苹果机上的固件随不同机型而不同。主要的固件是处理启动的BootROM以及某些机型上的SMC(系统管理控制器)的固件。对于PowerPC构架的苹果机BootROM采用的是所谓的开放固件(Open Firmware)固件界面,其界面本身的技术规定是由Sun微系统公司开创的; 而Intel构架的苹果机的BootROM采用的是EFI(可扩展固件界面)。EFI规定了操作系统与平台固件的界面。它是由Intel的首推的技术,本身的目的是来取代PC机上的BIOS固件。BootROM主要与系统的启动的设置相关; 而SMC与机器的用电、睡眠等设置有关。除此之外,还有Graphics(显卡)固件、光驱固件、Airport固件等等。

  Programmable ROM (包括Erasable Programmable ROM)是可以通过软件升级来进行更新的。由于固件有其特殊性,如果更新不当,存储器得不到正确的信息,可以会使机器不能启动。但是,如果不更新固件,一方面,固件中存在的错误(bug)不能得以弥补,另一方面,升级后的固件可能带有新的功能,支持操作系统的更新和新的软件。除非自己不使用新的软件或者能忍受固件中存在的bug,否则,适时的固件更新是应该的。

  同系统更新一样,总有人喜欢尝鲜的用户,因此在做固件更新前,不妨先到网上搜索一下,看看那些先行者都遇到了哪些问题,这样也就清楚了自己应该注意些什么。在进行升级时,应该仔细阅读升级说明。还要注意的是,一定要保证外接电源供电正常,并尽可能将可拆除的电脑外置附件拆下,然后再开始做固件升级。如果升级中出现故障,可以到苹果官方网站下载固件恢复映像并将其刻成CD,试用该CD将固件复原,如果复原不成功或自己没有把握,应该及时与苹果销售商或维修点取得联系,寻求解决方案。

 

个人签名档还未设置,请点击这里进行设置
  删除 置顶 推荐 精华 加锁 引用 编辑
 2009-11-23 18:56:19 
Re:固件(firmware)是什么?
·网名:jiangxia4
·头衔:大咕噜
·级别:
·资历:5970
·经验:1215
·注册:2009-9-13
·发送短信 加为好友

大家经常能够看到关于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);
}

个人签名档还未设置,请点击这里进行设置
  删除 置顶 推荐 精华 加锁 引用 编辑
 2009-11-23 19:03:01 
 
回 复:固件(firmware)是什么?
回复内容:
上传图片: (允许上传gif|jpg类型的图片)
图片说明: