欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

firmware文件是什么,firmware是什么意思

程序员文章站 2022-04-16 23:43:47
firmware文件是什么,firmware是什么意思firmware一般存储于设备中的电可擦除只读存储器EEPROM(Electrically Erasable Programmable ROM)或FLASH芯片中,一般可由用户通过特定的刷新程序进行升级的程序。一般来说,担任着一... 13-05-21...

固件(firmware)就是写入erom或eprom(可编程只读存储器)中的程序,通俗的理解就是“固化的软件”,台港澳称为“韧体”。更简单的说,固件就是bios的软件,但又与普通软件完全不同,它是固化在集成电路内部的程序代码,负责控制和协调集成电路的功能。
 
固件(firmware)一般存储于设备中的电可擦除只读存储器eeprom(electrically erasable programmable rom)或flash芯片中,一般可由用户通过特定的刷新程序进行升级的程序。一般来说,担任着一个数码产品最基础、最底层工作的软件才可以称之为固件,比如计算机主板上的基本输入/输出系统bios(basic input/output system),在以前其实更多的专业人士叫它固件。

通常这些硬件内所保存的程序是无法被用户直接读出或修改的。在以前,一般情况下是没有必要对固件进行升级操作的,即使在固件内发现了严重的bug也必须由专业人员带着写好程序的芯片把原来机器上的更换下来。早期固件芯片一般采用了rom设计,它的irmware代码是在生产过程中固化的,用任何手段都无法修改。随着技术的不断发展,修改固件以适应不断更新的硬件环境成了用户们的迫切要求,所以,可重复写入的可编程可擦除只读存储器eprom(erasable programmable rom),eeprom和flash出现了。这些芯片是可以重复刷写的,让固件得以修改和升级。
 
固件担任着一个系统最基础最底层工作的软件。而在硬件设备中,固件就是硬件设备的灵魂,因为一些硬件设备除了固件以外没有其它软件组成,因此固件也就决定着硬件设备的功能及性能。

拿常见的combo光驱举例来说,固件可以说是它的神经中枢,也可以称作combo的操作系统,它包括很多模块:驱动、控制、解码、传送、检测……,只有在它的控制下combo才能正常工作。同时,固件还带有许多附加功能,如纠错技术、安全刻录技术、播放控制技术等。

实际上,combo光驱固件中的关键技术就是对各种盘片的识别,而这是通过识别cd、cd-r(w)和dvd盘片在数据凹槽的密度与盘片的化学层的不同完成的。当把盘片放入光驱中,光驱收到操作命令后,含有固件的控制芯片会发出指令,激光头根据指令依次发出dvd读取、cd-rom读取以及cd-r写入、cd-rw擦写的四种激光试探,如果收到反馈则判断它是何种类别的盘片。按照这一操作程序,一般dvd-rom盘片需要一次识别,cd盘片需要两次识别,而cd-r和cd-rw则要经过三次。很显然,固件的制作水平决定着combo光驱的质量。

由combo光驱中可以看出,硬件设备的固件与它的硬件有着几乎相等的地位,而在某些程度上来说固件可能更重要一些。因为只有编写出出色的固件程序才可以更加充分、巧妙的发挥硬件的作用,而且优秀的固件还可以弥补一些硬件上的缺陷。

使用产品(哪些数码设备有固件)
其实任何数码设备都有固件,只是我们有时忽略它的存在而已。
先举一些常见的例子:手机、数码相机、mp3、mp4、路由器、电子书、交换机、猫、psp、ps3、nds、xbox、u盘、主板的bios(bios就是一种固件)、显卡的bios。
以上产品的固件也许略有耳闻。但下面设备的固件很多人就没听说过了。
鼠标、显示器、光驱、硬盘、键盘、数码卫星接收器、gps终端、精密的电子仪器(比如核磁共振仪)等等。
固件既然是软件,就有大小之分。大的可有几百兆,小的也许只有几k,甚至不足1k。
为什么很多设备都没听说过有固件的说法呢?因为有些设备,在硬件上会出问题,而在软件上(即固件)永远都不会出问题,而且这些固件对于普通用户是无法更新的(或者更新的技术难度比较大)。它距离我们太遥远,所以被我们忽略掉而已。
对于独立可操作的电子产品,固件一般指它的操作系统(“担任着一个数码产品最基础、最底层工作的软件才可以称之为固件”,这和操作系统的定义很一致)。比如psp的固件,就是指psp 的操作系统。同理,iphone的固件也是其操作系统,路由器的固件就是路由器的操作系统,mp4的固件就是mp4的操作系统等。
而对于非独立的电子产品,比如硬盘、鼠标、bios、光驱、u盘等设备,固件就是指其最底层的,让设备得以运行的程序代码。