1 驅動程式概念介紹

2021-08-21 15:26:54 字數 1367 閱讀 3844

u-boot的任務是啟動核心,核心的任務是啟動應用程式,應用程式會涉及很多檔案和硬體操作(當然不會直接操作硬體),比如讀寫檔案,點燈、獲取按鍵值。

比如對於控制led燈的使用者程式與驅動程式,最簡單的實現方法是:

那麼應用程式中的openread函式最終怎樣呼叫到驅動程式中的led_openled_read呢,中間有哪些東西?

在linux中共有4層軟體,如下圖:

應用程式:就是被呼叫的那些庫函式,例如openreadwrite… …

c庫(系統呼叫):其中的其實就是實現openread這些函式來呼叫swi val指令進入核心(函式不同val值都會不同)

核心: 核心根據swi後面不同的值去呼叫vfs中的system_open/system_read/ system_write等異常處理函式 找到相應的驅動程式(vfs:virtual file system 虛擬檔案系統)

例如:

int main()
上面的應用程式主要實現點燈與開啟文字檔案,都是用的同樣的函式。但是點燈與開啟文字檔案的行為顯然不一樣。那麼誰來實現這些不一樣的行為呢?

對於led燈,有led_open驅動程式。對於文字檔案存在於flash裝置上,也有對於的驅動程式。system_opensystem_read最終會根據開啟的不同檔案,找到底層的不同驅動程式,然後呼叫驅動程式中的硬體操作函式,比如led_open來實現對具體硬體裝置的操作。

這就是整個的字元裝置驅動程式框架

例如led如下:

在應用層應用程式中有openreadwrite

同樣,在驅動程式中也對應有led_openled_readled_write

剩下的就是驅動框架了。

下一節開始講解驅動框架,然後寫出led驅動程式

驅動程式概念介紹

學習目標 了解linux系統中驅動程式的概念 作用,為後續學習驅動程式編寫打下基礎!u boot的目的是啟動核心,核心的目的是啟動應用程式。應用程式中可能會涉及到讀寫檔案 點亮led 獲取按鍵值等操作,而對於寫應用程式的人來說不必去關心具體硬體如何操作,僅僅只呼叫open rend write等標準...

1 字元裝置驅動程式概念介紹

u boot的任務是啟動核心,核心的任務是啟動應用程式。應用程式會涉及很多檔案和硬體操作 當然不會直接操作硬體 比如讀寫檔案,點燈 獲取按鍵值。對於應用程式的開發人員不要求去閱讀晶元手冊,了解硬體的構造。應用程式的開發人員在使用者空間直接使用open read write等等這些被稱為系統呼叫的函式...

1 裝置驅動程式的概念

系統呼叫是作業系統核心和應用程式之間的介面,裝置驅動程式是作業系統核心和機器硬體之間的介面。裝置驅動程式為應用程式遮蔽了硬體的細節,這樣在應用程式看來,硬體裝置只是乙個裝置檔案,應用程式可以象操作普通檔案一樣對硬體裝置進行操作。裝置驅動程式是核心的一部分。linux將裝置主要分成兩大類 一類是塊裝置...