1 裝置驅動基礎

2021-07-11 04:27:27 字數 2176 閱讀 5111

一.驅動程式程式設計概念:

1.驅動學習知識結構:

1.linux驅動設計模式,框架.(40%)

2.核心相關的知識.(30%)

2.驅動程式的分類:

1.字元裝置驅動:能以位元組來訪問。通過字元裝置檔案訪問塊驅動程式。

2.網路介面:乙個網路負責傳送和接受資料報文。通過套接字訪問塊驅動程式,不是通過檔案。

3.塊裝置:乙個塊來訪問資料,linux中允許塊裝置傳送任意數目的位元組,區別是驅動與核心介面不同。通過檔案系統訪問塊驅動程式。

3.如何把乙個驅動程式編譯進核心,修改makefile和kconfig.加_init段的函式,啟動核心自動執行.

4.裝載模組

insmod和modprobe可以用來裝載模組

5.insmod和modprobe主要區別

modprobe會考慮要裝載的模組是否引用了一些當前核心不存在的符號。如果有這類引用,modprobe會在當前模組路徑中搜尋定義了這些符號的其他模組,並同時將這些模組也裝載到核心。如果在這種情況下使用insmod,該命令則會失敗,並在系統日誌檔案中記錄「unresolved symbols(未解析的符號)」訊息。 

6.解除安裝模組

從核心中解除安裝模組可以用rmmod工具.注意,如果核心認為該模組任然在使用狀態,或者核心被禁止移除該模組,則無法移除該模組。 

二.程式模板

module_license()---模組許可證宣告(必須)

module_author(author); ---宣告模組的作者 (可選)

module_description(description); ---宣告模組的描述

module_version(version_string); ---宣告模組的版本 

module_alias(alternate_name); ---宣告模組的別名

module_device_table(table_info); ---宣告模組的裝置表

export_symbol()---模組匯出符號(可選)

export_symbol_gpl(name); 

static int __init initialization_function(void)

static void  __exit cleanup_function(void)

module_exit(initialization_function)---模組解除安裝函式(必須)

module_init(cleanup_function)---模組載入函式(必須) 

module_param(引數名,引數型別,引數讀/寫許可權)

module_param_array(陣列名,陣列型別,陣列長,引數讀/寫許可權)

裝置驅動基礎1 裝置模型之匯流排,驅動,裝置

kobject,kset是裝置模型的基本結構體,裝置模型使用這兩個結構體來完成裝置的層次關係,但在實際的裝置驅動編寫中,我們基本上用不到kobject,kset這些結構體,是因為這些結構體又被嵌入到更大的結構體中,原因在於kobject,kset結構體只能表徵裝置的層次關係,但是乙個裝置的驅動,並不...

裝置驅動基礎1 裝置模型之匯流排,驅動,裝置

原文 kobject,kset是裝置模型的基本結構體,裝置模型使用這兩個結構體來完成裝置的層次關係,但在實際的裝置驅動編寫中,我們基本上用不到kobject,kset這些結構體,是因為這些結構體又被嵌入到更大的結構體中,原因在於kobject,kset結構體只能表徵裝置的層次關係,但是乙個裝置的驅動...

塊裝置驅動1 塊裝置基礎知識

塊裝置與字元裝置 1.訪問方式的不同 字元裝置按照位元組進行讀取,塊裝置按塊進行讀取 2.緩衝區 塊裝置本身驅動層支援緩衝區 軟體實現的緩衝區 所以塊裝置驅動最適合儲存裝置 儲存裝置按塊進行讀寫的特點決定 而字元裝置驅動層沒有緩衝 3.訪問的順序 塊裝置可以實現隨機的訪問,不連續塊的訪問,而字元裝置...