红联Linux门户
Linux帮助

第一个LINUX驱动程序

发布时间:2012-04-07 09:33:06来源:红联作者:songjiacai
LINUX系统:虚拟机+DEBIAN
内核:LINUX-2.6.32
说明:此文档中所说的参作只是针对个人的使用情况而论,可能不具有通用性,特别是当操作系统的
的发行的版本不同时,如在REDHAT、UBUNTU等可能情况有所不同。
实现步骤:
su root #进入到root模式后按照如下操作
1. apt-get install build-essential #若已经有gcc编译器可以跳过
1. cd /usr/src #可以到任意的文件目录下
2. apt-get install linux-source-2.6.32 #获取内核源码
3. apt-get linux-headers-2.6.32-5-686 #获取头文件,可用uname -r 获取内核版本信息
4. tar -jxf ./liunx-source-2.6.32.tar.bz2
5. cp -a ./linux-headers-2.6.32-5-686/Module.symvers ./linux-source-2.6.32
6. cd ./linux-source-2.6.32
7. make oldconfig
8. make prepare
9. make scripts
10. cd /tmp
11. vi hello.c #编辑hello.c程序,此处代码参考LINUX设备驱动程序(第三版)
/*----------------一下为参考程序--------------------------*/
#include
#include
MODULE_LICENSE("Dual BSD/GPL");

static int hello_init(void)
{
printk(KERN_ALERT "Hello, world\n");
return 0;
}

static void hello_exit(void)
{
printk(KERN_ALERT "Goodbye, cruel world\n");
}

module_init(hello_init);
module_exit(hello_exit);
/***********************END********************************/
11. vi Makefile #注意Makefile中的M要大写,此Makefile虽能用,但不规范
#sample Makefile
obj-m := hello.o
#end
13. make -C /usr/src/linux-source-2.6.32 M=/tmp modules
#编译通过后生成hello.ko
14. insmod hello.ko #挂载驱动程序
#此时终端中可能不会输出信息,因为KERN_ALERT的优先级较低
15. rmmod hello #卸载驱动程序
16. cat /var/log/syslog #捕捉驱动程序输出的信息,可以在最后两行看到hello驱动程序输出的信息
#至此hello.c的驱动程序即完成,linux的设备驱动程序开发的环境亦基本搭建完成
#let's go!
文章评论

共有 9 条评论

  1. wpitsoft 于 2013-10-22 12:02:59发表:

    学习了。谢谢楼主的分享

  2. lipeijie00 于 2013-10-21 13:35:04发表:

    dongbuqi

  3. lipeijie00 于 2013-10-21 13:34:48发表:

    xuexi

  4. jeffkuang1 于 2013-10-14 15:54:27发表:

    学习了。

  5. happynail1989 于 2012-08-09 16:54:30发表:

    起步刚开始。

  6. gudaoqiufeng 于 2012-07-25 09:55:40发表:

    学习

  7. wueric 于 2012-07-06 12:31:59发表:

    学习一下了

  8. honglianqxw123 于 2012-07-05 09:17:21发表:

    学习,提高,谢谢。

  9. drivers 于 2012-04-07 11:18:33发表:

    向高人学习