Linux字符驱动HelloWorld
2023-06-07
62
0
一个简单的驱动代码示例 :
#include<linux/init.h>
#include<linux/module.h>
static int hello_init(void)
{
printk(KERN_INFO "hello pnpon.com\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_INFO "pnpon.com\n");
}
MODULE_DESCRIPTION("USB test");
MODULE_AUTHOR("my test");
MODULE_LICENSE("GPL");
module_init(hello_init);
module_exit(hello_exit);
Makefile
obj-m += mychardev.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
makefile文件如下:
#编译中间文件为.o文件
obj-m += hello_module.o
#指定linux kernel源码的目标变量
KDIR := ~/src/kenel/tc4_kenel_3.8
#当前目录
PWD ?=$( shell pwd)
#make -C 就是指调用执行的路径
#modules 示示将驱动编译成模块,最终生成.ko文件
all:
make -C $(KDIR) M=$(PWD) modules
clean:
rm -rf *.o *.mod.* *.order *.symvers
使用如下命令来安装驱动:
insmod hello_module.ko
执行完成上面的命令后,控制台输出:
hello pnpon.com
然后我们可以使用如下命令卸载驱动:
rmmod hello_module
控制台输出:
bye bye pnpon.com