驅動與執行module

2021-06-29 03:43:52 字數 1099 閱讀 1388

驅動與執行module

一、驅動是什麼?

驅動提供的是機制而非策略。

二、可載入模組(.ko)

每個模組由目標**組成( 沒有連線成乙個完整可執行檔案 ), 可以動態連線到執行中的核心中, 通過 insmod 程式, 以及通過 rmmod 程式去連線。

三、建立模組

在建立模組中,呼叫的函式必須是核心自帶函式。

module_init()

module_exit()

四、編譯模組

hello模組的makefile如下:

obj-m:=hello.o

modules:

make -c /lib/modules/`uname -r`/build/m='pwd' modules

make clean

clean:

rm -f .......

需要注意的幾點:

1、·uname -r·    是用來查詢當前核心版本號

obj-m := module.o

module-objs := file1.o file2.o

五、補充

1、指定模組的初始化和清理函式的巨集定義.

__init

__initdata

__exit

__exitdata

函式( __init 和 __exit )和資料 (__initdata 和 __exitdata)的標記, 只用在模組初始化或者清理時

間. 為初始化所標識的項可能會在初始化完成後丟棄; 退出的項可能被丟棄如果核心沒有配

置模組解除安裝. 這些標記通過使相關的目標在可執行檔案的特定的 elf 節裡被替換來工作.

2、module_init()與 module_exit()

在資料段中分配特有的init段和exit段,用來存放_init與_exit函式

可以使用__attribute__((__section__(".init"))),將其加在函式或變數前,就可以指定該函式或變數存放到init段中

3、帶有兩個下劃線的函式如__attribute__,為底層函式

回宿舍

驅動程式module的工作流程

驅動程式module的工作流程主要分為四個部分 1 insmod module 2 驅動module的初始化 初始化結束後即進入 潛伏 狀態,直到有系統呼叫 3 當操作裝置時,即有系統呼叫時,呼叫驅動module提供的各個服務函式 4 rmmod module 一 驅動程式的載入 linux驅動程式...

Function與Module的差異與應用場景

function與module都可以對pytorch進行自定義拓展,使其滿足網路的需求,但這兩者還是有十分重要的不同 function一般只定義乙個操作,因為其無法儲存引數,因此適用於啟用函式 pooling等操作 module是儲存了引數,因此適合於定義一層,如線性層,卷積層,也適用於定義乙個網路...

Function與Module的差異與應用場景

function與module都可以對pytorch進行自定義拓展,使其滿足網路的需求,但這兩者還是有十分重要的不同 function一般只定義乙個操作,因為其無法儲存引數,因此適用於啟用函式 pooling等操作 module是儲存了引數,因此適合於定義一層,如線性層,卷積層,也適用於定義乙個網路...