热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

第一个LINUX驱动程序

第一个LINUX驱动程序--Linux通用技术-Linux编程与内核信息,下面是详情阅读。
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!
推荐阅读
author-avatar
心碎的醉鬼
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有