字元裝置驅動框架 一、
linux軟體系統的層次關係
乙個應用程式操作底層驅動程式的過程:
1 . 應用程式使用庫提供的
open函式開啟某乙個裝置檔案。
2. 庫根據
open函式傳入的引數執行
swi(軟體中斷)指令,這會引起
cpu異常,進入核心。
3 . 核心的異常處理函式根據這些引數找到相應的驅動程式,返回乙個檔案控制代碼給庫,進而返回給應用程式。
4. 應用程式的到檔案控制代碼後,使用庫函式提供的
write或
ioctl函式發出控制命令。
5. 庫根據
write或
ioctl函式傳入的引數執行
swi(軟體中斷)指令,這會引起
cpu異常,進入核心。
6. 核心的異常處理函式根據這些引數呼叫驅動程式的相應函式,實現對裝置的控制。
以上內容參照《嵌入式
linux應用開發完全手冊 韋東山編著》
二、編寫字元裝置驅動程式的步驟
1. 定義相應
file_operation
結構型別的變數,並實現結構中的函式(驅動作者的的主要任務就在於此),如
read, write ,ioctl等。
2. 定義變數(以
led驅動為例):
/*當led_major為
0時,led_init採取動態分配裝置號。在此預設採用動態分配,第乙個次裝置號為
0,所請求裝置個數
dev_num為
1*/
static int led_major = 0; //儲存主裝置號
字元裝置驅動框架
標頭檔案 linux cdev.h linux fs.h 描述字元裝置共性資訊的結構體 struct cdev 操作方法集 struct file operations 裝置號,本質是32位無符號整型數 dev t dev 該裝置號由兩部分組成,1.主裝置號 2.次裝置號 major dev t d...
字元裝置驅動框架
include file operations宣告 include module init module exit宣告 include init exit 巨集定義宣告 include class devise宣告 include copy from user 的標頭檔案 include 裝置號 d...
linux 字元裝置驅動框架
linux 字元裝置驅動是3種型別中最簡單的一種,其實就是實現 file operations 中的函式,基本實現框架如下 1,需要包含的標頭檔案 include include include include include 2.定義及實現 file operations 中的函式,file op...