驱动和固件(firmware)都是代码,前者为软件效劳,后者为硬件效劳。

在操作系统概念还不明白的时代,二者是没有清楚区别的。

但是随着计算机体系结构的开展,硬件的种类末尾变多,操作系统的种类也变多了。

这个时分,由于各种技术的、商业的缘由,硬件厂商希望自己的硬件能被更多的软件厂商运用,所以就需求在硬件之上做一些封装,让自己的硬件操纵起来更容易,这个时分就要有firmware这种东西了,它简化了软件与硬件的交互。

但是为什么不把fimware做的很完美,做的不需求驱动支持呢?由于有不同的操作系统。我不知道你对操作系统的了解是到什么水平?只知道Windows?还是还仅仅知道Linux?还是清楚Unix和FreeBSD是不同的系统?知道有RTOS?知道有上百种不同的内核?

不同的操作系统,关于操作硬件的方式完全不同,在Windows里运用态是无法直接写IO端口的,而在嵌入式系统里,普通都不限制直接操作IO端口。所以,硬件厂商一方面为了自己的硬件能被软件更复杂的运用,就需求写firmware,而另一方面为了兼容各种操作系统,又不能把firmware写的太死,必需预留足够的余地让软件自在发扬——软件的自在发扬就是驱动。

不同操作系统的驱动是不能兼容的,缘由就是驱动是为操作系统效劳的,有的操作系统是单线程的,有些操作系统不允许静态央求内存,所以不同的操作系统要操作硬件,就要依据自身的特性编写对应的操作代码,这就是驱动存在的意义——顺应系统需求。

假设世界上只要一种操作系统,并且版本永远不会改动,那么firmware和驱动就可以融合在一同,但这只能一个不理想的梦想,要知道民用操作系统和工业控制操作系统差异是十分庞大的。

提供最优质的资源集合

立即查看 了解详情