驅動程式module的工作流程

2021-06-25 11:21:10 字數 1099 閱讀 3482

驅動程式module的工作流程主要分為四個部分:

1、 insmod module

2、 驅動module的初始化(初始化結束後即進入「潛伏」狀態,直到有系統呼叫)

3、 當操作裝置時,即有系統呼叫時,呼叫驅動module提供的各個服務函式

4、 rmmod module

一、 驅動程式的載入

linux驅動程式分為兩種形式:一種是直接編譯進核心,另一種是編譯成module,然後在需要該驅動module時手動載入。

在用insmod載入module時,還可以給提供模組引數,如:

static char *whom=」world」;

static int  howmany=10;

module_param(howmany,int,s_irugo);

module_param(whom,charp,s_irugo);

這樣,當使用insmod scull.ko  whom=」string」  howmany=20這樣的命令載入驅動時,whom和howmay的值就會傳入scull驅動模組了。

二、 驅動module的初始化

scull_init_module函式中主要做了以下幾件事情:

a) 分配並註冊主裝置號和次裝置號

int register_chrdev_region(dev_t first, unsigned int count, char *name)

int alloc_chrdev_region(dev_t *dev, unsigned int firstminor, unsigned int count, char *name)

b) 初始化代表裝置的struct結構體:scull_dev

c) 初始化互斥體init_mutex

d) 初始化在核心中代表裝置的cdev結構體,最主要是將該裝置與file_operations結構體聯絡起來。在linux核心中,cdev結構體才是真正代表了某個裝置。在核心呼叫裝置的open,read等操作之前,必須先分配並註冊乙個或者多個cdev結構。

三、裝置操作

涉及open ,close ioclt,release等函式

四、解除安裝

scull_cleanup_module

按鍵的裝置驅動程式流程

按鍵的裝置驅動 1.按鍵的硬體原理 在嵌入式系統中,通過乙個上拉電阻將處理器的外部中斷引腳拉高,電阻的另一端連線按鈕並接地即可實現。當按鈕被按下時,eint10 ein13 eint14 eint15 上將產生低電平,這個低電平將中斷cpu,cpu可以依據中斷判斷按鍵被按下。僅僅依據中斷被產生就認定...

USB裝置驅動程式載入流程

使用者插入usb裝置 usb匯流排 或者是pci匯流排,這個不太清楚,反正就是匯流排來著 識別到插入了usb裝置。匯流排和usb裝置進行通訊,獲取usb的硬體id 產品id,以及bcdversion。根據這些資訊組成裝置硬體id號 vid x pid x rev x。匯流排根據usb裝置的插槽位置,...

程式設計師工作流程總結

1 整理需求 帶問題 需求是否合理 可行,是否是使用者真實的本質需求,明確需求邊界。2 設計流程 複雜業務uml建模,流程設計和uml建模應該遵循各自的基本原則。3 流程可行性 合理性 技術實現討論 複雜問題帶著2種以上的解決方案,並能說出各自的優缺點,在保證可行性的前提下站在使用者的角度從體驗上分...