驅(qū)動(dòng)程序(Driver)是一種可以使應(yīng)用軟件和硬件通信的特殊底層軟件,其功能是為上層軟件提供調(diào)用接口,控制硬件設(shè)備的工作。固定是指被硬件廠商固化在硬件內(nèi)部的驅(qū)動(dòng)程序。
系統(tǒng)芯片軟硬件構(gòu)架自下而上可分為硬件設(shè)備,硬件驅(qū)動(dòng)和上層軟件,其中硬件驅(qū)動(dòng)又可分為硬件依賴層(Hardware Dependent Layer)和硬件抽象層(Hardware Abstraction Layer),如圖5-98(a)所示。作為系統(tǒng)架構(gòu)的重要組成部分,硬件驅(qū)動(dòng)主要完成以下的功能:初始化和釋放設(shè)備;讀取上層軟件傳送給硬件設(shè)備的請(qǐng)求數(shù)據(jù)和回送硬件設(shè)備的響應(yīng)數(shù)據(jù);檢測錯(cuò)誤和處理中斷。

由于硬件驅(qū)動(dòng)程序與硬件設(shè)備緊密相關(guān),硬件驅(qū)動(dòng)程序通常由系統(tǒng)芯片廠商提供。硬件廠商根據(jù)硬件特性編寫硬件驅(qū)動(dòng)程序。硬件驅(qū)動(dòng)程序所需實(shí)現(xiàn)的接口和功能由硬件特性決定。從系統(tǒng)芯片軟件框架的角度看,硬件驅(qū)動(dòng)程序向下控制硬件設(shè)備運(yùn)行,向上提供標(biāo)準(zhǔn)的調(diào)用接口方便上層軟件使用。對(duì)于上層軟件,硬件驅(qū)動(dòng)程序是一個(gè)個(gè)獨(dú)立的“黑盒子”,其功能是使特定硬件以標(biāo)準(zhǔn)化應(yīng)用接口的方式對(duì)上層軟件提供服務(wù),隱藏設(shè)備的工作過程中的細(xì)節(jié)操作。只要保證驅(qū)動(dòng)層調(diào)用接口相同,軟件設(shè)計(jì)者就可以讓應(yīng)用程序在不同的硬件上運(yùn)行,硬件設(shè)計(jì)者可以不斷升級(jí)硬件而不影響舊軟件在新設(shè)備上運(yùn)行。當(dāng)上層軟件需要使用某個(gè)硬件功能,上層軟件會(huì)先發(fā)送相應(yīng)指令到外設(shè)驅(qū)動(dòng)程序,外設(shè)驅(qū)動(dòng)程序接收指令后,將其翻譯成外設(shè)控制器能讀懂的電子信號(hào)命令。
在操作系統(tǒng)中,硬件依賴層通常由硬件廠商以固件的形式提供,而硬件抽象層被集成到操作系統(tǒng)中,由操作系統(tǒng)廠商以標(biāo)準(zhǔn)設(shè)備驅(qū)動(dòng)的形式提供,如圖5-98(b)所示。目前,市場占有率領(lǐng)先的Windows和Linux操作系統(tǒng)內(nèi)核中均集成了硬件抽象層。然而,不同操作系統(tǒng)的設(shè)備驅(qū)動(dòng)上層接口不一致,且不同設(shè)備廠商的固件接口也存在差異,導(dǎo)致軟件開發(fā)者無法隨意選擇設(shè)備廠商。未來,標(biāo)準(zhǔn)設(shè)備驅(qū)動(dòng)接口與固件接口將進(jìn)一步標(biāo)準(zhǔn)化,使得軟件開發(fā)者可以在不同設(shè)備廠商的設(shè)備間無縫切換。
審核編輯 :李倩
-
控制器
+關(guān)注
關(guān)注
114文章
17787瀏覽量
193079 -
驅(qū)動(dòng)程序
+關(guān)注
關(guān)注
19文章
869瀏覽量
50456 -
系統(tǒng)芯片
+關(guān)注
關(guān)注
0文章
39瀏覽量
18579
原文標(biāo)題:系統(tǒng)芯片設(shè)計(jì)—驅(qū)動(dòng)程序
文章出處:【微信號(hào):Semi Connect,微信公眾號(hào):Semi Connect】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
【「Linux 設(shè)備驅(qū)動(dòng)開發(fā)(第 2 版)」閱讀體驗(yàn)】Linux內(nèi)核平臺(tái)抽線共和設(shè)備驅(qū)動(dòng)程序
哪些Windows作系統(tǒng)支持Nu-Link-Me的VCOM功能?是否需要安裝任何其他驅(qū)動(dòng)程序?
摩爾線程發(fā)布圖形顯卡驅(qū)動(dòng)程序v310.120
為FreeRTOS增加新的設(shè)備驅(qū)動(dòng)程序
zephyr設(shè)備驅(qū)動(dòng)程序模型
如何安裝 CY7C65213 的驅(qū)動(dòng)程序?
如何處理FX3 USB驅(qū)動(dòng)程序與MFI相關(guān)接口的安裝?
CY4500 EZ-PD協(xié)議分析儀缺少驅(qū)動(dòng)程序怎么解決?
如何在Android設(shè)備上安裝Cyusb3014芯片驅(qū)動(dòng)?
是否有辦法用標(biāo)準(zhǔn)Windows驅(qū)動(dòng)程序控制GPIO嗎?
Linux環(huán)境再升級(jí):PLIN驅(qū)動(dòng)程序正式發(fā)布
系統(tǒng)芯片設(shè)計(jì)—驅(qū)動(dòng)程序(Driver)
評(píng)論