【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和驅動就能夠融合在一塊兒,但這隻能一個不現實的夢想,要知道民用操做系統和工業控制操做系統差異是十分巨大的。
相關文章
相關標籤/搜索