驱动与固件的区别

作者:时国怀
链接:https://www.zhihu.com/question/22175660/answer/20547502
来源:知乎

驱动和固件(firmware)都是代码,前者为软件服务,后者为硬件服务。在操作系统概念还不明确的时代,二者是没有明显区别的。但是随着计算机体系结构的发展,硬件的种类开始变多,操作系统的种类也变多了。这个时候,因为各种技术的、商业的原因,硬件厂商希望自己的硬件能被更多的软件厂商使用,所以就需要在硬件之上做一些封装,让自己的硬件操纵起来更容易,这个时候就要有firmware这种东西了,它简化了软件与硬件的交互。但是为什么不把fimware做的很完美,做的不需要驱动支持呢?因为有不同的操作系统。我不知道你对操作系统的理解是到什么程度?只知道Windows?还是还仅仅知道Linux?还是清楚Unix和FreeBSD是不同的系统?知道有RTOS?知道有上百种不同的内核?不同的操作系统,对于操作硬件的方式完全不同,在Windows里应用态是无法直接写IO端口的,而在嵌入式系统里,一般都不限制直接操作IO端口。所以,硬件厂商一方面为了自己的硬件能被软件更简单的使用,就需要写firmware,而另一方面为了兼容各种操作系统,又不能把firmware写的太死,必须预留足够的余地让软件自由发挥——软件的自由发挥就是驱动。不同操作系统的驱动是不能兼容的,原因就是驱动是为操作系统服务的,有的操作系统是单线程的,有些操作系统不允许动态申请内存,所以不同的操作系统要操作硬件,就要根据自身的特性编写对应的操作代码,这就是驱动存在的意义——适应系统需要。假如世界上只有一种操作系统,并且版本永远不会改变,那么firmware和驱动就可以融合在一起,但这只能一个不现实的梦想,要知道民用操作系统和工业控制操作系统差别是十分巨大的。

作者:Sinaean Dean
链接:https://www.zhihu.com/question/22175660/answer/273740705
来源:知乎

相同点都是管理硬件的,区别是随谁一起发布。随硬件一起发布的叫固件,随软件一起发布的叫驱动。随硬件一起发布是因为没有固件,硬件本身无法工作,如bios。随软件一起发布是因为为没有它软件无法在目标硬件上工作,如linux驱动。说白了只看出身立场,不看能力。软件厂商和硬件厂商之间有一个接口界面,这个界面下的软件通常叫firmware,由硬件厂商提供,之上的操作硬件的叫驱动,有软件厂商提供。这个界面可以是大家一起订立的,也可以是软件厂商定义的,也可以是硬件厂商定义的。硬件厂商定义的话,通常倾向于把界限网上推,这样他能干更多的事情,能对软件友好,从而提高市场占有率。软件厂商定义的话,倾向于往下推,这样它可以要求硬件厂商开放更多硬件信息,软件可以做更多优化。通常的结果是大家定义一个最合适的界限,然后都想越过这个界限。比如说uefi,它做了很多驱动做的事情,试图取代驱动。而linux内核也不肯放弃驱动,所以选择不使用uefi提供的好多功能。
 

原文链接:https://blog.csdn.net/jiaolu295/article/details/119887594

补充内容:

操作系统与固件间最大的区别是:

1、对于独立可操作的电子产品,固件一般指它的操作系统(“担任着一个数码产品最基础、最底层工作的软件才可以称之为固件”,这和操作系统的定义很一致)。比如PSP的固件,就是指PSP 的操作系统。同理,IPHONE的固件也是其操作系统,路由器的固件就是路由器的操作系统,MP4的固件就是MP4的操作系统等。

2、而对于非独立的电子产品,比如硬盘、鼠标、BIOS、光驱、U盘等设备,固件就是指其最底层的,让设备得以运行的程序代码。此时管理这些非独立电子产品的全部软硬件资源,合理组织它们的工作流程,为用户提供使用它们的友好界面等等功能的软件,也称为操作系统,如Windows系统。

固件(Firmware)就是写入EROM(可擦写只读存储器)或EEPROM(电可擦可编程只读存储器)中的程序。固件担任着一个系统最基础最底层工作的软件。而在硬件设备中,固件就是硬件设备的灵魂,因为一些硬件设备除了固件以外没有其它软件组成,因此固件也就决定着硬件设备的功能及性能。

参考百度百科:https://baike.baidu.com/item/%E5%9B%BA%E4%BB%B6/627829

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值