目的:写一个简单的hello驱动模块,直接在Linux下运行,学习最基本的驱动。
步骤:
1、需要先确认本机linux上存在已经编译好的kernel-devel。
可以用 ls -d /lib/module/$(uname -r)/build 查看
一般来说,安装好的linux操作系统基本上都会有,如果没有可以采用yum install kernel-devel 命令来安装。(注意有可能下载的版本与你Linux自带的版本不一样)最好的解决方法是要不重装系统要不采用光盘安装rpm包。
2、hello.c
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#define DRIVER_AUTHOR "lhqsine"
#define DRIVER_DESC "A driver"
static int __init hello_2_init (void)
{
printk (KERN_ALERT "Hello world\n");
return 0;
}
static void __exit hello_2_exit (void)
{
printk (KERN_ALERT "Goodbye world\n");
}
module_init (hello_2_init);
module_exit (hello_2_exit);
MODULE_LICENSE ("GPL");
MODULE_AUTHOR (DRIVER_AUTHOR);
MODULE_DESCRIPTION (DRIVER_DESC);
MODULE_SUPPORTED_DEVICE ("TestDevice");
3、Makefile
ifneq ($(KERNELRELEASE),)
obj-m:= hello.o
else
PWD:=$(shell pwd)
# KVER?=$(shell uname -r)
KERNELDIR:= /usr/src/kernels/2.6.35.6-45.fc14.i686 #这里是你的 uname -r
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif
clean:
rm -f *.ko *.mod.c *.mod.o *.o modules.* Module.*<strong>
4、加载测试
执行make命令编译。
加载驱动:insmod hello.ko
卸载驱动:rmmod hello.ko
查看:
(1)、可以直接在控制台上加载卸载即可看到(GOME,KDE的虚拟控制台)
(2)、dmesg | tail
(3)、cat /var/log/messages |tail