【Base】固件,软件,硬件,驱动

###Date: 2018-3-20编程

参考:https://baike.baidu.com/item/%E5%9B%BA%E4%BB%B6/627829?fr=aladdin性能

https://www.zhihu.com/question/22175660/answer/20547502
spa

驱动与固件的区别是什么?

固件(Firmware)就是写入EROM(可擦写只读存储器)或EEPROM(电可擦可编程只读存储器)中的程序。
固件是指设备内部保存的设备“驱动程序”,经过固件,操做系统才能按照标准的设备驱动实现特定机器的运行动做,好比光驱、刻录机等都有内部固件。
固件是担任着一个系统最基础最底层工做的软件。而在硬件设备中,固件就是硬件设备的灵魂,由于一些硬件设备除了固件之外没有其它软件组成,所以固件也就决定着硬件设备的功能及性能。

    驱动和固件(firmware)都是代码,前者为软件服务,后者为硬件服务操作系统

    在操做系统概念还不明确的时代,两者是没有明显区别的。线程

    可是随着计算机体系结构的发展,硬件的种类开始变多,操做系统的种类也变多了。这个时候,由于各类技术的、商业的缘由,硬件厂商但愿本身的硬件能被更多的软件厂商使用,因此就须要在硬件之上作一些封装,让本身的硬件操纵起来更容易,这个时候就要有firmware这种东西了,它简化了软件与硬件的交互。内存

      可是为何不把fimware作的很完美,作的不须要驱动支持呢?由于有不一样的操做系统。我不知道你对操做系统的理解是到什么程度?只知道Windows?仍是还仅仅知道Linux?仍是清楚Unix和FreeBSD是不一样的系统?知道有RTOS?知道有上百种不一样的内核?get

     不一样的操做系统,对于操做硬件的方式彻底不一样,在Windows里应用态是没法直接写IO端口的,而在嵌入式系统里,通常都不限制直接操做IO端口。因此,硬件厂商一方面为了本身的硬件能被软件更简单的使用,就须要写firmware,而另外一方面为了兼容各类操做系统,又不能把firmware写的太死,必须预留足够的余地让软件自由发挥——软件的自由发挥就是驱动。it

     不一样操做系统的驱动是不能兼容的,缘由就是驱动是为操做系统服务的,有的操做系统是单线程的,有些操做系统不容许动态申请内存,因此不一样的操做系统要操做硬件,就要根据自身的特性编写对应的操做代码,这就是驱动存在的意义——适应系统须要。io

     假如世界上只有一种操做系统,而且版本永远不会改变,那么firmware和驱动就能够融合在一块儿,但这只能一个不现实的梦想,要知道民用操做系统和工业控制操做系统差异是十分巨大的。
相关文章
相关标签/搜索