driver 和 firmware 的區別

2021-07-24 11:37:36 字數 788 閱讀 5100

驅動和韌體(firmware)都是**,前者為軟體服務,後者為硬體服務

在作業系統概念還不明確的時代,二者是沒有明顯區別的。

但是隨著計算機體系結構的發展,硬體的種類開始變多,作業系統的種類也變多了。

這個時候,因為各種技術的、商業的原因,硬體廠商希望自己的硬體能被更多的軟體廠商使用,所以就需要在硬體之上做一些封裝,讓自己的硬體操縱起來更容易,這個時候就要有firmware這種東西了,它簡化了軟體與硬體的互動。

但是為什麼不把fimware做的很完美,做的不需要驅動支援呢?因為有不同的作業系統。我不知道你對作業系統的理解是到什麼程度?只知道windows?還是還僅僅知道linux?還是清楚unix和freebsd是不同的系統?知道有rtos?知道有上百種不同的核心?

不同的作業系統,對於操作硬體的方式完全不同,在windows裡應用態是無法直接寫io埠的,而在嵌入式系統裡,一般都不限制直接操作io埠。所以,硬體廠商一方面為了自己的硬體能被軟體更簡單的使用,就需要寫firmware,而另一方面為了相容各種作業系統,又不能把firmware寫的太死,必須預留足夠的餘地讓軟體自由發揮——軟體的自由發揮就是驅動。

不同作業系統的驅動是不能相容的,原因就是驅動是為作業系統服務的,有的作業系統是單執行緒的,有些作業系統不允許動態申請記憶體,所以不同的作業系統要操作硬體,就要根據自身的特性編寫對應的操作**,這就是驅動存在的意義——適應系統需要。

假如世界上只有一種作業系統,並且版本永遠不會改變,那麼firmware和驅動就可以融合在一起,但這只能乙個不現實的夢想,要知道民用作業系統和工業控制作業系統差別是十分巨大的。

Firmware 載入原理分析

前言 前段時間移植 wifi 驅動到 android 的核心上,發現 firmware 的載入始終出錯,問了幾個人,都不是很了解,沒辦法,只好自己研究一下。從本質上來說,firmware 需要做的事情包括兩件 2,使用者態程式把使用者態的資料 copy 到核心層 3,核心把核心態的資料寫到裝置上,比...

Spark的Driver節點和Executor節點

自 1 驅動器節點 driver spark的驅動器是執行開發程式中的 main方法的程序。它負責開發人員編寫的用來建立sparkcontext 建立 rdd,以及進行 rdd 的轉化操作和行動操作 的執行。如果你是用spark shell,那麼當你啟動 spark shell的時候,系統後台自啟了...

driver的註冊流程

本文是基於mini2440開發板linux版本號是linux 2.6.32.2的學習筆記 一.device driver結構體描述struct device driver 二.註冊乙個driver 註冊driver呼叫的函式是 driver register int driver register ...