驱动编程之hello
1).hello.c模块代码如下
#include<linux/init.h>
#include<linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int py_init(void)
{
printk("welcome to you!!!\n");
return 0;
}
static void py_exit(void)
{
printk("goodbye!I go out!\n");
return ;
}
module_init(py_init);
module_exit(py_exit);
MODULE_AUTHOR("cuina");
2).编写Makefile,代码如下:
ifneq ($(KERNELRELEASE),)
obj-m :=hello.o
else
KDIR:=/lib/modules/2.6.28/build
all:
make -C $(KDIR) M=`pwd` modules //-C表示使用KDIR所指向的内容
clean:
-rm -f *.ko *.o *.mod.o *.symvers
Endif
3)make Makefile后显示的内容如下:
make -C /lib/modules/2.6.28/build M=`pwd` modules
make[1]: Entering directory `/root/2013-10-linux-DR/linux-2.6.28'
CC [M] /root/2013-10-linux-DR/mode/hello.o
Building modules, stage 2.
MODPOST 1 modules //1modules说明有一个模块被编写了
CC /root/2013-10-linux-DR/mode/hello.mod.o
LD [M] /root/2013-10-linux-DR/mode/hello.ko
make[1]: Leaving directory `/root/2013-10-linux-DR/linux-2.6.28'
4)用nm hello.c可以看.ko里的内容,readelf hello.ko -a也可以看
5).模块加载:insmod hello.ko ,回车没有反应说明模块已经加载好
6).查看加载后的信息:dmesg //实质是查看日志文件
7).查看加载的状况:lsmod
8).卸载模块:rmmod hello,注意:此处不用加.ko