學習目標:
了解linux系統中驅動程式的概念、作用,為後續學習驅動程式編寫打下基礎!
u-boot的目的是啟動核心,核心的目的是啟動應用程式。應用程式中可能會涉及到讀寫檔案、點亮led、獲取按鍵值等操作,而對於寫應用程式的人來說不必去關心具體硬體如何操作,僅僅只呼叫open、rend、write等標準介面,便可完成上述一些功能。應用程式裡使用open、read、write等標準介面函式,其實就是去呼叫驅動程式,完成底層硬體操作。
以點亮乙個led為例說明,最簡單的對應方法是:應用程式中有open函式,對應led驅動程式中也有led_open;應用程式中有write函式,對應led驅動程式中也有led_write;應用程式中有read函式,對應led驅動程式中也有led_read函式。應用程式通過read函式讀取led狀態時,呼叫驅動函式led_read實現讀取led狀態目的,通過write函式改變led狀態時,呼叫驅動函式led_write改變led狀態。
下面來介紹應用程式open、read、write等標準介面函式,最終如何呼叫到驅動程式中的led_open、led_read、led_write,中間有哪些東西。
從上到下,乙個軟體系統可以分為:應用程式、庫、核心、驅動程式。開發人員可以專注於自己熟悉的部分,對於相鄰層,只需要了解它的介面,無需關注它的實現細節。linux中這4層的協作關係如下圖所示:
2②庫函式根據open函式傳入的引數執行「swi」指令,這條指令會引起cpu異常,進入核心空間。
從上面操作可以知道,驅動程式和應用程式不同,驅動程式從不主動執行,它是被動載入的:根據應用程式的要求進行初始化,,根據應用程度的要求進行讀寫。驅動程式載入進核心時,只是告訴核心「我在這裡,我能做這些工作」,至於這些「工作」何時開始,取決於應用程式。
1 驅動程式概念介紹
u boot的任務是啟動核心,核心的任務是啟動應用程式,應用程式會涉及很多檔案和硬體操作 當然不會直接操作硬體 比如讀寫檔案,點燈 獲取按鍵值。比如對於控制led燈的使用者程式與驅動程式,最簡單的實現方法是 那麼應用程式中的open read函式最終怎樣呼叫到驅動程式中的led open led r...
Linux驅動程式框架介紹
一 linux的裝置驅動程式與外界的介面可以分為三個部分 1 驅動程式與作業系統核心的介面。通過file operations include linux fs.h 資料結構來完成的。2 驅動程式與系統引導的介面。這部分利用驅動程式對裝置進行初始化。3 驅動程式與裝置的介面。這部分描述了驅動程式如何...
Linux驅動程式框架介紹
一 linux的裝置驅動程式與外界的介面可以分為三個部分 1 驅動程式與作業系統核心的介面。通過file operations include linux fs.h 資料結構來完成的。2 驅動程式與系統引導的介面。這部分利用驅動程式對裝置進行初始化。3 驅動程式與裝置的介面。這部分描述了驅動程式如何...