探傷系統驅動程序開發流程
探傷系統驅動程序開發流程
探傷系統進行嵌入式系統的底層開發,大部分的工作是針對各種硬件開發設備驅動程序。Linux 設備驅動在 Linux 內核源碼中也占有很大的比例。由于 Linux 將操作系統分為內核態和用戶態,設備驅動運行在內核空間,而用戶程序運行在用戶空間。這樣就實現了保護機制,用戶空間的進程一般無法直接訪問硬件。一般來說,設備驅動的開發具有一些共同點,Linux 為設備驅動開發也提供了一套良好的支持機制。設備驅動的共性一般有:
1. 讀/寫操作:設備驅動的主要任務是負責完成系統的輸入輸出,所以一般的驅動程序都有讀/寫操作。每個設備驅動程序負責實現其控制的硬件設備的讀寫,而系統其他部分不知道其讀寫的實現細節。設備驅動程序根據操作系統定義的讀寫接口,實現針對特定硬件的讀寫操作。
2. 中斷服務程序:系統對硬件設備的訪問方式一般可以分為查詢方式和中斷方式。中斷方式具有高效、快速的特點,在現代操作系統中占有重要的地位。Linux 提供了一套良好的中斷支持機制,支持中斷的共享;設備驅動程序通過 request_irq()和 free_irq()向系統申請和釋放中斷信號線。
3. 時間、延遲和定時器:與時間有關的操作包括獲得系統時間、延遲操作或者定時器事件等。驅動程序可以度量時間差,進行時間的比較,或者獲得當前的系統時間。操作硬件時,為了滿足接口的特定時序要求,需要使用延遲操作。而內核定時器可以用來在特定時間之后調用已經注冊的定時器函數。
目前開發的設備驅動程序主要是字符型設備驅動,這類設備驅動適合于大多數簡單的硬件設備。在設備驅動程序的開發過程中,首先要定義驅動程序為用戶程序提供的功能,即機制。然后要根據具體的硬件說明手冊或者硬件物理連接關系以及操作系統提供的機制和接口來實現這些功能。