出来混迟早是要还的,技术学习也是如此。以前学习linux驱动只是停留在教科书理论知识上,基本上动手很少,结果真的要用的时候或者阅读大气磅礴的项目源码的时候才发现基础竟然是如此的重要,已经到了影响你理解整个逻辑的时候,这个时候就不得重新将原来跳过的东西再拾取一下了,不过,应该也会很快 呵呵


原文地址:感谢博文作者

http://www.oschina.net/code/snippet_12_364#524



一  代码  helloworld.c
#include <linux/module.h>//与module相关的信息

#include <linux/kernel.h>
#include <linux/init.h>      //与init相关的函数

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");


二 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)执行make

编译成功之后会生成相应有ko文件,也就是我们想要的驱动了

4)驱动程序的相关操作

      a)查看ko模块的信息 modinfo

      b)插入模块 insmod helloworld.ko

      c)卸载模块 rmmod helloworld

      d)还有一个modprobe功能,以后介绍!

5)查看驱动的打印信息

      使用dmesg可以查看在驱动的相关打印信息!

       现在有例子是会有如下的打印内容:

---------------------log start----------------------------

[27520.195551] Exit kernel!
[27948.531569] Hello kernel!

---------------------log end----------------------------