Linux 下的驅(qū)動開發(fā)最簡單例子
inux下的驅(qū)動程序也沒有聽上去的那么難實現(xiàn),我們可以看一下helloworld這個例子就完全可以了解它的編寫的方式!
我們還是先看一個這個例子,helloworld
1. [代碼]helloworld.c
?
#include //與module相關的信息
#include
#include //與init相關的函數(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
?
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í)行與運行結(jié)果
?
3)執(zhí)行make
編譯成功之后會生成相應有ko文件,也就是我們想要的驅(qū)動了
4)驅(qū)動程序的相關操作
a)查看ko模塊的信息 modinfo
b)插入模塊 insmod helloworld.ko
c)卸載模塊 rmmod helloworld
d)還有一個modprobe功能,以后介紹!
5)查看驅(qū)動的打印信息
使用dmesg可以查看在驅(qū)動的相關打印信息!
現(xiàn)在有例子是會有如下的打印內(nèi)容:
---------------------log start----------------------------
[27520.195551] Exit kernel!
[27948.531569] Hello kernel!
---------------------log end----------------------------