固件和设备驱动程序之间的区别和关系


27
  1. 固件和设备驱动程序有何不同和关联?我认为这两个控制设备?
  2. 固件是否总是自启动,而驱动程序必须由OS运行/启动?

Answers:


24
  1. 固件是软件运行设备上。驱动程序是告诉操作系统如何与设备通信的软件。并非所有设备都具有固件-只有具有一定智能水平的设备。

  2. 我不确定您的意思是什么...一般来说,固件与“启动”无​​关...我想也许您要问的是,具有固件的设备是否始终在设备上安装了固件,还是在引导时间后加载。如果这是您要的,答案是否定的。

最常见的是,带有固件的设备已将固件编程到设备中(使用ROM芯片或可编程ROM芯片),但是有些设备在初始化时将固件加载到设备中。我可以想到一些以这种方式运行的网卡和网络摄像头,但我敢肯定还有其他网络卡和网络摄像头。


谢谢!在2中,通过自我引导,我的意思是说,如果固件不是由别人自己运行的,而驱动程序是由OS自己运行的,则不是?我在en.wikipedia.org/wiki/Operating_system
Tim

1
固件由硬件设备本身运行...我认为这可以回答问题?考虑一下:许多非计算机设备都具有“固件”,例如数码相机,DVD播放器,手机等。因此,在这些情况下,显然,固件完全独立于设备本身。仅当/当您将其中一台设备插入计算机时,才需要驱动程序
Flimzy 2011年

1
谢谢!来自en.wikipedia.org/wiki/Computer_software:“固件是通常存储在电可编程存储设备中的低级软件。固件之所以被命名,是因为它像硬件一样对待,并由其他软件程序运行(“执行”)。固件是由其他软件程序还是由硬件本身运行?
蒂姆

-1为什么说only devices with some level of intelligence have firmware?我想说的是相反的情况,简单的(电子)设备可能没有操作系统,但确实有固件。
Celeritas

@Celeritas:因为只有具有一定智能水平的设备才具有固件,而不是没有固件的设备(例如RS-232端口)。如果要比较具有整个操作系统的设备(移动电话,iPod,可编程GPS等),则是在讨论完全不同的抽象层,这与传统意义上的“设备驱动程序”完全无关。此类访问软件通常称为“设备驱动程序”,但实际上,它是在设备驱动程序(例如与USB端口或蓝牙通信的设备驱动程序)之上实现的网络应用协议。
Flimzy

5

固件实现了操作硬件所需的低级详细信息,并提供了更高级别的API / ABI。设备驱动程序在操作系统和固件公开的API / ABI之间提供适配器。


1
谢谢!设备驱动程序是否是操作系统的一部分,并由操作系统内核运行?固件是设备内核的一部分,还是由操作系统内核或固件本身运行的?

1
设备驱动程序被视为操作系统的一部分,通常在主机CPU上运行。固件通常由设备运行。操作系统可能会将其上传到设备。
伊格纳西奥·巴斯克斯

这应该是公认的答案。
埃里克·王

4

固件的现代定义或常用用法与特定软件功能无关。固件只是存储在非易失性半导体存储器(例如PROM,EEPROM或闪存)芯片中的软件,而不是诸如硬盘驱动器之类的大容量存储设备。存储的软件可以是单片链接的二进制文件,也可以由加载器,内核和应用程序模块组成。(OTOH,我已经看到了一些PC的电视调谐器卡,这些卡需要Linux内核加载“固件”才能完成初始化。)

该术语的起源与处理器控制逻辑和硬连线逻辑有关。存储在硬盘驱动器上的软件可以轻松进行修改和更新。修订和更新硬连线逻辑需要重新设计和更换电路板或模块。中间立场是处理器执行软件来控制硬件。该软件被称为公司洁具以反映之间的中间地带洁具与接线逻辑。最初,固件存储在ROM,PROM或EPROM芯片中,以保持板卡的模块化。EEPROM和闪存芯片的进步允许在线升级固件。

随着处理器(和外围设备)变得越来越小,越来越便宜,功耗越来越低,将它们嵌入到各种设备/设备中的可能性越来越大。为了使操作这些设备的软件坚固耐用,该软件存储在闪存芯片中,而不是硬盘中。它也使设备更小,更便宜。固件一词已扩展为涵盖具有嵌入式处理器的设备/设备中的所有软件,即使所存储代码的某些部分与替换硬连线逻辑无关。


那么,在海量存储上安装固件意味着什么?喜欢这个Debian软件包吗?
xuhdev 2014年

1
@xuhdev-Debian软件包包含各种Linux设备驱动程序可以使用的文件。这些文件被称为“固件”,因为它们是由Linux驱动程序写入附加设备的。这些文件可能包含设备的嵌入式uC / uP的操作数据或代码。请注意,传输到设备的文件已加载到设备的易失性内存中,并且必须在每次重置设备或系统后进行加载。在“安装”本的“固件”上主机的海量存储仅仅是一个程序性机制(即包处理)。
锯末2014年

3

最近有人发布了这个问题,说:

固件是持久性内存,程序代码以及其中存储的数据的组合。包含固件的设备的典型示例是嵌入式系统,例如交通信号灯,消费类电器,数字手表,计算机,计算机外围设备,移动电话和数码相机。这些设备中包含的固件提供了该设备的控制程序。

实际上,SuperUser的drivers标签已定义:

驱动程序,也称为设备驱动程序或软件驱动程序,是允许更高级别的计算机程序与硬件设备进行交互的软件。当计算机程序请求与某个硬件设备进行交互时,驱动程序将处理该设备与调用驱动程序的计算机程序之间的指令和输出转换。

并且,firmware定义了标签:

通常,软件和固件之间的区别在于它与硬件交互的级别。固件在硬件的较低层级进行交互,而软件在较高层级进行交互。固件通常控制硬件的基本时序,控件和功能。

最初,我认为它firmware是直接安装在芯片或板上并在其中居住的,这就是为什么必须对其进行“刷新”的原因,而您则需要driver在操作系统之上安装。

结论:

Firmware允许硬件“做”事情,并drivers允许软件与硬件交互。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.