Linux驅動 按鍵驅動

2021-06-19 23:57:17 字數 1413 閱讀 2607

開發板:tiny6410

核心版本:linux2.6.38

要想寫出案件驅動:需要複習的知識:1、混雜裝置的使用原理 2、系統呼叫驅動函式的原理 3、中斷處理機制 4、阻塞性裝置驅動的書寫規範  

1、混雜裝置的註冊和使用比較簡單,以前也複習過,這裡不再複習

3、中斷處理機制 也有部落格內容中斷處理機制部落格鏈結

4、阻塞型字元驅動的書寫規則:

實現read和write函式的時候可能會出現阻塞的情況。因此,在這種情況下,我們的驅動程式應該(預設)阻塞該程序,將其置入休眠狀態直到請求可以繼續。

等待佇列,在核心裡面,等待佇列是有很多用處的,尤其是在中斷處理,程序同步、定時等場合,可以通過等待佇列來實現阻塞程序的喚醒。它是以隊列為基礎資料結構、與程序排程機制緊密結合,能夠用於實現核心中的非同步事件通知機制,同步對系統資源的訪問等。

等待佇列的型別在核心源**的標頭檔案 include/linux/wait.h 

struct_wait_queue_head ;

typedef struct_wait_queue_head wait_queue_head_t;

使用核心等待佇列的步驟:

1、定義核心等待佇列

2、初始化核心等待佇列

3、等待事件

4、喚醒佇列

分別使用什麼函式實現著這四個步驟:

1、定義核心等待佇列

wait_queue_head_t my_queue;//定義等待佇列

2、初始化核心等待佇列

init_waitqueue_head(&my_queue);//初始化核心等待佇列

以上兩步:可以並作一步來實現,定義並初始化 使用乙個巨集函式來直接實現核心等待佇列的定義和初始化。

3、等待事件

等待時間通常由如下程式設計介面來實現:

wait_event(queue,condition);//但是使用這個函式結構,程序將被置於非中斷休眠-------所以通常不適用這個介面函式

當condition(bool變數) 為真時,立即返回。否則將當前程序放入等待佇列queue中,並將該程序的狀態設定為task_interrupteible(可中斷的睡眠模式)

通常使用的事件介面函式:

wait_event_interruptible(queue,condition);//這個函式介面可以被某個訊號中斷

4、喚醒佇列

喚醒佇列的函式介面:

有兩個函式供呼叫:

wake_up(wait_queue_t *q);//喚醒等待佇列的所有程序

wake_up_interruptible(wait_queue_t *q);//喚醒等待佇列中程序狀態為task_interruptible的所有程序。

在阻塞型驅動中,read實現方式如下:如果程序呼叫read,但裝置沒有資料或資料不足,則程序阻塞。當新資料到達後,喚醒被阻塞的程序。

Linux系統按鍵驅動

linux系統下對於按鍵裝置不僅可以進行讀操作,還可以進行寫操作。對鍵盤 滑鼠等裝置進行寫操作可以實現模擬按鍵的功能。另外,想知道 dev input eventx分別是哪些裝置可以通過執行下面的命令進行檢視,如下所示 yuhaiping neolix cat proc bus input devi...

linux鍵盤按鍵驅動

1.先來介紹以下幾個結構體使用和函式,下面 中會用到 1 input dev驅動裝置結構體中常用成員如下 struct input dev2.然後開始寫 1 向核心申請input dev結構體 2 設定input dev的成員 3 註冊input dev 驅動裝置 4 初始化定時器和中斷 5 寫中斷...

Linux 按鍵驅動程式設計

一。混雜裝置驅動模型 1.混雜裝置驅動描述 在linux系統中,存在一類字元裝置,它們擁有相同的主裝置號 10 但次裝置號不同,我們稱這類裝置為混雜裝置 miscdevice 所有的混雜裝置形成乙個鍊錶,對裝置訪問時核心根據次裝置號查詢到相應的混雜裝置。linux中使用struct miscdevi...