Linux裝置驅動(1)模組的相關概念

2021-07-11 16:18:43 字數 1281 閱讀 4619

#include

#include

static

int __init hello_init(void) //核心初始化函式

static

void __exit hello_exit(void)//核心清除函式

module_init(hello_init); //指定初始化函式

module_exit(hello_exit); //指定清除函式

module_license("gpl"); //指定**使用的許可證

module_author("laowu"); //指定作者

module_version("1.0"); //指定**修訂號

obj-m := hello.o             

kdir

:=~/linux-

2.6make -c

$(kdir) m=`pwd` modules

obj-m := hello.o說明有乙個核心模組需要從hello.o構造,生成的模組名稱是hello.ko.

如果hello.ko是由兩個原始檔生成,例如file1.c file2.c,則應該如下編寫

obj-m := hello.ko

hello-objs := file1.o file2.0

make -c $(kdir) m=pwdmodules

首先改變目錄到-c指定的位置(即核心源**目錄),其中儲存有核心的頂層makefile檔案, m=選項,讓該makefile在構造modules目標之前返回到模組源**目錄

insmod hello.ko

module_param函式使用方法:

module_param(name, type, perm)

name:核心引數的名稱,自己定義;

type:核心引數的型別,常見的型別byte、short、int、long、ulong、bool 、charp(字元指標);

perm:核心引數的許可權s_irugo(對模組引數具有讀許可權)。其實許可權和檔案的 許可權差不多

核心載入模組時傳遞引數的方法:

使用命令:insmod ***.ko a=1

模組載入後,並且他的許可權不為0,就可在/sys/module/***/parameter目錄下 找到對應的模組引數。

使用export_symbol將函式匯出,供其他模組使用;在」/proc/kallsyms」檔案中對應這符號表,它記錄了函式的符號和函式在記憶體所在的位址。

Linux裝置驅動 模組

模組檔案 在檔案系統中可以被直接插入到核心的檔案 模組三要素 模組載入函式 必須 當在檔案系統中使用insmod或者該模組在核心被執行的時候,自動執行該函式 函式方式 1 預設方式 int init module void 2 使用者自定義 int test init void module ini...

LINUX塊裝置驅動 1

編寫塊裝置驅動的關鍵步驟 1 呼叫register blkdev申請或註冊主裝置號及裝置名稱,詳見核心原始碼中該函式的注釋。不過下面這篇文章裡並未用到這一步 2 呼叫blk init queue函式建立並初始化乙個 request queue 結構,該函式需要乙個用來處理請求的do request函...

USB 裝置相關驅動模組 2 6核心

a.核心模組 usbcore 對應核心配置引數 config usb b.usb 主控制器驅動模組 ehci hcd ehci usb 2.0 支援 config usb ehci hcd uhci hcd uhci pc 系統的晶元支援 config usb uhci hcd ohci hcd o...