Chinaunix首页 | 论坛 | 博客
  • 博客访问: 339621
  • 博文数量: 117
  • 博客积分: 650
  • 博客等级: 中士
  • 技术积分: 738
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-21 13:07
文章分类

全部博文(117)

文章存档

2014年(2)

2013年(2)

2012年(112)

2010年(1)

分类: C/C++

2012-02-20 22:42:34

Linux下的驱动程序也没有听上去的那么难实现,我们可以看一下helloworld这个例子就完全可以了解它的编写的方式!

我们还是先看一个这个例子,helloworld

[代码] helloworld.c

#include //与module相关的信息 
#include  
#include       //与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----------------------------


 

阅读(934) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~