Linux 下的驅(qū)動(dòng)開(kāi)發(fā)最簡(jiǎn)單例子
掃描二維碼
隨時(shí)隨地手機(jī)看文章
Linux下的驅(qū)動(dòng)程序也沒(méi)有聽(tīng)上去的那么難實(shí)現(xiàn),我們可以看一下helloworld這個(gè)例子就完全可以了解它的編寫(xiě)的方式!
我們還是先看一個(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.oPWD := $(shell pwd)all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modulesclean: 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編譯成功之后會(huì)生成相應(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)在有例子是會(huì)有如下的打印內(nèi)容:---------------------log start----------------------------[27520.195551] Exit kernel![27948.531569] Hello kernel!---------------------log end---------------------------- |





