首頁>Club>
7
回覆列表
  • 1 # 使用者5480262765187

    驅動和韌體(firmware)都是程式碼,前者為軟體服務,後者為硬體服務。

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

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

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

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

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

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

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

  • 中秋節和大豐收的關聯?
  • in front of和in the front of的區別?