添加module过程

来源:互联网 发布:2016农行网银 mac 编辑:程序博客网 时间:2024/06/08 19:04
说明:    目标机:联想Y450
    操作系统:ubuntu 10.04
    内核编号:2.6.32-33-generic

1    创建模块目录,我的目录是/home/wt/work/modules/m1
2    编写Makefile,内容如下:

KERN =/lib/modules/$(shell uname -r)/build         #获得目标操作系统配置的路径,通过它来获取编译需要的一切系统信息
SRCS =/$(shell pwd)                #获得源程序的路径
obj-m += m1.o

all:
    make -C $(KERN) M=$(SRCS) modules    #通过-C选项来指定系统目录,通过M来指定模块目录,通过modules来表明来编译模块

clean:
    make -C $(KERN) M=$(SRCS) clean

.PHONY: all clean

3    编写模块的源文件,内容如下:

#include <linux/kernel.h>
#include <linux/module.h>

/*这里的__init表示代码放在init段
init段由linux指定,这里的代码会运行一次
以减少系统的开销,下文的__exit同理
*/
void __init init_m1(void)
{
    printk("Hello World!\n");
}

void __exit exit_m1(void)
{
    printk("Byebye! \n");
}

/*注册,一下的两种注册的方法优先级是比较低的,驱动上常用这种方法*/
module_init(init_m1);
module_exit(exit_m1);

4    make编译,会生成m1.ko文件,这个文件用来加载我们的模块
5    使用insmod m1.ko文件进行加载,使用dmesg命令查看消息
6    使用lsmod来查看当前加载的模块,使用rmmod m1来卸载模块,并使用dmesg来查看它的打印数据