Linux 下的驅(qū)動(dòng)開發(fā)最簡單例子
Linux下的驅(qū)動(dòng)程序也沒有聽上去的那么難實(shí)現(xiàn),我們可以看一下helloworld這個(gè)例子就完全可以了解它的編寫的方式!
我們還是先看一個(gè)這個(gè)例子,helloworld
[1].[代碼] helloworld.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#include <linux/module.h>//與module相關(guān)的信息 #include <linux/kernel.h> #include <linux/init.h> //與init相關(guān)的函數(shù) static int __init hellokernel_init( void ) { printk(KERN_INFO "Hello kernel!\n" ); return 0; } static void __exit hellokernel_exit( void ) { printk(KERN_INFO "Exit kernel!\n" ); } module_init(hellokernel_init); module_exit(hellokernel_exit); MODULE_LICENSE( "GPL" ); MODULE_AUTHOR( "xxxx" ); |
[2].[代碼] Makefile
1
2
3
4
5
6
7
8
9
|
obj-m := helloworld.o PWD := $(shell pwd) all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules clean: rm -rf *.o *~ core .*.cmd *.mod.c ./tmp_version |
[3].[代碼] 執(zhí)行與運(yùn)行結(jié)果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
3)執(zhí)行make 編譯成功之后會生成相應(yīng)有ko文件,也就是我們想要的驅(qū)動(dòng)了 4)驅(qū)動(dòng)程序的相關(guān)操作 a)查看ko模塊的信息 modinfo b)插入模塊 insmod helloworld.ko c)卸載模塊 rmmod helloworld d)還有一個(gè)modprobe功能,以后介紹! 5)查看驅(qū)動(dòng)的打印信息 使用dmesg可以查看在驅(qū)動(dòng)的相關(guān)打印信息! 現(xiàn)在有例子是會有如下的打印內(nèi)容: ---------------------log start---------------------------- [27520.195551] Exit kernel! [27948.531569] Hello kernel! ---------------------log end---------------------------- |