驅(qū)動程序(Driver)是一種可以使應(yīng)用軟件和硬件通信的特殊底層軟件,其功能是為上層軟件提供調(diào)用接口,控制硬件設(shè)備的工作。固定是指被硬件廠商固化在硬件內(nèi)部的驅(qū)動程序。
系統(tǒng)芯片軟硬件構(gòu)架自下而上可分為硬件設(shè)備,硬件驅(qū)動和上層軟件,其中硬件驅(qū)動又可分為硬件依賴層(Hardware Dependent Layer)和硬件抽象層(Hardware Abstraction Layer),如圖5-98(a)所示。作為系統(tǒng)架構(gòu)的重要組成部分,硬件驅(qū)動主要完成以下的功能:初始化和釋放設(shè)備;讀取上層軟件傳送給硬件設(shè)備的請求數(shù)據(jù)和回送硬件設(shè)備的響應(yīng)數(shù)據(jù);檢測錯誤和處理中斷。
由于硬件驅(qū)動程序與硬件設(shè)備緊密相關(guān),硬件驅(qū)動程序通常由系統(tǒng)芯片廠商提供。硬件廠商根據(jù)硬件特性編寫硬件驅(qū)動程序。硬件驅(qū)動程序所需實現(xiàn)的接口和功能由硬件特性決定。從系統(tǒng)芯片軟件框架的角度看,硬件驅(qū)動程序向下控制硬件設(shè)備運行,向上提供標準的調(diào)用接口方便上層軟件使用。對于上層軟件,硬件驅(qū)動程序是一個個獨立的“黑盒子”,其功能是使特定硬件以標準化應(yīng)用接口的方式對上層軟件提供服務(wù),隱藏設(shè)備的工作過程中的細節(jié)操作。只要保證驅(qū)動層調(diào)用接口相同,軟件設(shè)計者就可以讓應(yīng)用程序在不同的硬件上運行,硬件設(shè)計者可以不斷升級硬件而不影響舊軟件在新設(shè)備上運行。當上層軟件需要使用某個硬件功能,上層軟件會先發(fā)送相應(yīng)指令到外設(shè)驅(qū)動程序,外設(shè)驅(qū)動程序接收指令后,將其翻譯成外設(shè)控制器能讀懂的電子信號命令。
在操作系統(tǒng)中,硬件依賴層通常由硬件廠商以固件的形式提供,而硬件抽象層被集成到操作系統(tǒng)中,由操作系統(tǒng)廠商以標準設(shè)備驅(qū)動的形式提供,如圖5-98(b)所示。目前,市場占有率領(lǐng)先的Windows和Linux操作系統(tǒng)內(nèi)核中均集成了硬件抽象層。然而,不同操作系統(tǒng)的設(shè)備驅(qū)動上層接口不一致,且不同設(shè)備廠商的固件接口也存在差異,導致軟件開發(fā)者無法隨意選擇設(shè)備廠商。未來,標準設(shè)備驅(qū)動接口與固件接口將進一步標準化,使得軟件開發(fā)者可以在不同設(shè)備廠商的設(shè)備間無縫切換。
審核編輯 :李倩
-
控制器
+關(guān)注
關(guān)注
112文章
16461瀏覽量
179548 -
驅(qū)動程序
+關(guān)注
關(guān)注
19文章
848瀏覽量
48229 -
系統(tǒng)芯片
+關(guān)注
關(guān)注
0文章
38瀏覽量
18390
原文標題:系統(tǒng)芯片設(shè)計—驅(qū)動程序
文章出處:【微信號:Semi Connect,微信公眾號:Semi Connect】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
用于InterBase的ODBC驅(qū)動程序:可與多個第三方工具兼容
![用于InterBase的ODBC<b class='flag-5'>驅(qū)動程序</b>:可與多個第三方工具兼容](https://file1.elecfans.com/web3/M00/06/DE/wKgZO2eQUY2AXIlfAAAUmEa4U9Q436.png)
適用于MySQL的dbExpress驅(qū)動程序:提供對MySQL的快速訪問
適用于Oracle的ODBC驅(qū)動程序
適用于Oracle的dbExpress驅(qū)動程序
![適用于Oracle的dbExpress<b class='flag-5'>驅(qū)動程序</b>](https://file1.elecfans.com/web3/M00/05/71/wKgZO2d_g9uAIznrAAA1JGQSBxk688.png)
pcie設(shè)備驅(qū)動程序安裝步驟
硬盤電機怎么驅(qū)動程序?它有什么典型特征?
LSP 2.10 DaVinci Linux驅(qū)動程序
![LSP 2.10 DaVinci Linux<b class='flag-5'>驅(qū)動程序</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Linux設(shè)備驅(qū)動程序分類有哪些
linux驅(qū)動程序如何加載進內(nèi)核
linux驅(qū)動程序主要有哪些功能
linux驅(qū)動程序的編譯方法是什么
linux驅(qū)動程序運行在什么空間
怎么編寫Framebuffer驅(qū)動程序
![怎么編寫Framebuffer<b class='flag-5'>驅(qū)動程序</b>](https://file1.elecfans.com/web2/M00/C6/45/wKgaomX829SAfIacAAAbtdy6Rus988.png)
評論