知识屋:更实用的电脑技术知识网站
所在位置:首页 > 操作系统 > linux

linux设备驱动程序编写--最简单的hellomod

发布时间:2014-09-05 13:30:47作者:知识屋

1、下载系统内核版本对应的源码包,版本查看方式:uname -r。

我的是2.6.32

下载命令:apt-get install linux-source-2.6.32

我下载的是linux-source-2.6.32.tar.bz2

2、配置内核:

tar jxvf linux-source-2.6.32.tar.bz2

cd linux-source-2.6.32

make oldconfig #配置原版

3、编译内核(此过程耗时长,编译完后在linux-source-2.6.32多出一个vmlinux)

make

4、编译模块

make modules

5、安装模块(操作结束后多出目录/lib/modules/2.6.32.61+drm33.26)

make modules_install

6、测试

①、hellomod.c

#include<linux/init.h>  //初始换函数#include<linux/kernel.h>  //内核头文件#include<linux/module.h>  //模块的头文件MODULE_LICENSE("GPL");//提示可能没有GNU许可证static   int  lkp_init(void)//初始化{  printk("Hello, world/n"); //模块运行在内核态,不能使用用户态C库函数中的printf函数,而要使用printk函数 return 0;}static int lkp_cleanup(void)//退出和清理函数{ printk("Goodbye,Hello world/n");}module_init(lkp_init);//驱动程序初始化入口点module_exit(lkp_cleanup);//会调用cleanup_module()函数

②、Makefile
obj-m :=hellomod.oKERNELDIR=/lib/modules/2.6.32.61+drm33.26/buildPWD :=$(shell pwd)modules:        $(MAKE) -C $(KERNELDIR) M=$(PWD) modulesmodules_install:        $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
③执行make

输出:

root@master:~/Downloads/.1/lken# makemake -C /lib/modules/2.6.32.61+drm33.26/build M=/root/Downloads/.1/lken modulesmake[1]: Entering directory `/usr/src/linux-source-2.6.32'  Building modules, stage 2.  MODPOST 1 modules  CC      /root/Downloads/.1/lken/hellomod.mod.o  LD [M]  /root/Downloads/.1/lken/hellomod.komake[1]: Leaving directory `/usr/src/linux-source-2.6.32'

会在目录下生成hellomod.ko文件

④、插入内核并查看

insmod hellomod.ko

root@master:~/Downloads/.1/lken# lsmod |grep hellomod
hellomod 679 0

⑤移除模块

rmmod hellomod

查看日记

tail /var/log/message

输出:

Jan  5 16:18:49 master kernel: [161488.154792] Hello, worldJan  5 16:19:20 master kernel: [161519.197040] Goodbye,Hello world
(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜