Linux驅動學習(模組1)

2021-07-12 05:14:32 字數 2174 閱讀 5256

驅動學習第一篇 hello world

hello.c

/*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

**** > file name: hello.c

* > author: devil_box

* > mail: [email protected]

* > created time: 2023年05月20日 星期五 14時07分58秒

* > introduction:

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*****

*******/

#include

#include

#include

module_license ("gpl");

//模組載入函式

int __init init_module (void)

//模組解除安裝函式

void __exit cleanup_module (void)

makefile

nelrelease enviroment value

ifeq ($(

kernelrelease),)

#it's null, so to set the enviroment value

kerneldir ?= /lib/modules

/$(shell uname -r)/build

pwd:=$(shell pwd)

modules:

$(make) -c

$(kerneldir) m=$(

pwd) modules

modules_install:

$(make) -c

$(kerneldir) m=$(

pwd) modules_install

clean:

rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions module* modules*

.phony

: modules modules_install clean

#to create obj file

else

obj-m := hello.o

endif

在終端裡面 執行make,如下圖所示:

生成ko檔案。

再在root使用者下,將ko檔案載入到核心裡面去。insmod 核心名

檢視模組是否載入進去 lsmod

說明已經載入了進去,列印核心輸出語句 dmesg

說明模組載入進核心並正常初始化

解除安裝模組 rmmod 核心名

檢視核心輸出結果

說明模組正常被解除安裝並列印解除安裝資訊。

核心模組學習第一篇完!!

linux學習1 驅動模組的載入

編譯環境 ubuntu 16.04 linux板子 exynos4412 目錄1.編譯生成模組檔案.ko 1.1 板子執行最小系統 1.2 編譯模組 1.3 掛載u 盤 2 模組操作 2.1 載入模組 2.2 檢視模組 2.3 解除安裝模組 linux 驅動有兩種執行方式,第一種就是將驅動編譯進 l...

Linux核心驅動模組學習

ko檔案在是elf excutable and link format 格式,是一種可重定位的目標檔案。在編譯驅動模組時,我們在makefile中用obj m o來指定生成核心驅動模組檔案,即.ko檔案。首先insmod會通過檔案系統將ko讀到使用者空間的一塊記憶體中,然後執行系統呼叫sys ini...

linux驅動學習 二 核心模組

因為linux 核心的整體結構非常龐大,包含的元件非常多,如何使用需要的元件呢?有一種方法是把所有的元件都編譯進核心檔案 zimage 或bzimage 但是這樣會產生兩個問題 一是生成的核心檔案過大 二是如果要新增或刪除某乙個元件,需要重新刪除編譯整個核心。於是我們需找另外一種機制讓核心檔案本身不...