Answers:
固件是软件运行在设备上。驱动程序是告诉操作系统如何与设备通信的软件。并非所有设备都具有固件-只有具有一定智能水平的设备。
我不确定您的意思是什么...一般来说,固件与“启动”无关...我想也许您要问的是,具有固件的设备是否始终在设备上安装了固件,还是在引导时间后加载。如果这是您要的,答案是否定的。
最常见的是,带有固件的设备已将固件编程到设备中(使用ROM芯片或可编程ROM芯片),但是有些设备在初始化时将固件加载到设备中。我可以想到一些以这种方式运行的网卡和网络摄像头,但我敢肯定还有其他网络卡和网络摄像头。
only devices with some level of intelligence have firmware
?我想说的是相反的情况,简单的(电子)设备可能没有操作系统,但确实有固件。
固件实现了操作硬件所需的低级详细信息,并提供了更高级别的API / ABI。设备驱动程序在操作系统和固件公开的API / ABI之间提供适配器。
固件的现代定义或常用用法与特定软件功能无关。固件只是存储在非易失性半导体存储器(例如PROM,EEPROM或闪存)芯片中的软件,而不是诸如硬盘驱动器之类的大容量存储设备。存储的软件可以是单片链接的二进制文件,也可以由加载器,内核和应用程序模块组成。(OTOH,我已经看到了一些PC的电视调谐器卡,这些卡需要Linux内核加载“固件”才能完成初始化。)
该术语的起源与处理器控制逻辑和硬连线逻辑有关。存储在硬盘驱动器上的软件可以轻松进行修改和更新。修订和更新硬连线逻辑需要重新设计和更换电路板或模块。中间立场是处理器执行软件来控制硬件。该软件被称为公司洁具以反映之间的中间地带软洁具与硬接线逻辑。最初,固件存储在ROM,PROM或EPROM芯片中,以保持板卡的模块化。EEPROM和闪存芯片的进步允许在线升级固件。
随着处理器(和外围设备)变得越来越小,越来越便宜,功耗越来越低,将它们嵌入到各种设备/设备中的可能性越来越大。为了使操作这些设备的软件坚固耐用,该软件存储在闪存芯片中,而不是硬盘中。它也使设备更小,更便宜。固件一词已扩展为涵盖具有嵌入式处理器的设备/设备中的所有软件,即使所存储代码的某些部分与替换硬连线逻辑无关。
最近有人发布了这个问题,说:
固件是持久性内存,程序代码以及其中存储的数据的组合。包含固件的设备的典型示例是嵌入式系统,例如交通信号灯,消费类电器,数字手表,计算机,计算机外围设备,移动电话和数码相机。这些设备中包含的固件提供了该设备的控制程序。
实际上,SuperUser的drivers
标签已定义:
驱动程序,也称为设备驱动程序或软件驱动程序,是允许更高级别的计算机程序与硬件设备进行交互的软件。当计算机程序请求与某个硬件设备进行交互时,驱动程序将处理该设备与调用驱动程序的计算机程序之间的指令和输出转换。
并且,firmware
定义了标签:
通常,软件和固件之间的区别在于它与硬件交互的级别。固件在硬件的较低层级进行交互,而软件在较高层级进行交互。固件通常控制硬件的基本时序,控件和功能。
最初,我认为它firmware
是直接安装在芯片或板上并在其中居住的,这就是为什么必须对其进行“刷新”的原因,而您则需要driver
在操作系统之上安装。
结论:
Firmware
允许硬件“做”事情,并drivers
允许软件与硬件交互。