Linux设备驱动开发环境的搭建

对Linux设备驱动开发有了个初步的认识,下面对Linux设备驱动开发环境的搭建做个小结,以方便自己以后查询,同时也能给同道的初学者一点帮助。

刚接触Linux设备驱动时,初学者往往连如何编译驱动程序都不懂,更别说编译进内核或加载测试了。一般都是在网上找个最简单的 helloworld驱动程序,然后严格按照网上所说的步骤编译,结果却得到一大堆见都没见过的错误,更不要说根据错误信息来解决问题了,很多人到这里就 不知道如何往下进行了。十几天前我也卡在这里很长时间,现在知道所以然了就记下来,些许对一些同道者有帮助。

一个基本的Linux设备驱动开发环境由宿主机和目标机组成,宿主机就是用来做驱动开发工作的主机,目标机就是用来运行和测试设备驱动的主机,在宿 主机上需要有开发工具(gcc,gdb,make等)和linux源码(版本要对应目标机上的linux内核),而目标机上只要运行linux即可。由于 步骤有所不同,下面分为普通Linux设备驱动开发和嵌入式Linux设别驱动开发两种情况来讲述环境的搭建和驱动程序的编译:

(一)普通Linux设备驱动开发

普通Linux主要是区分于嵌入式Linux(一般指uClinux),在这种开发中宿主机和目标机可以是一台主机,即在本机上开发编译然后在本机 上加载运行(Linux设备驱动也可以直接编译进内核,但为了开发工作方便,一般采用动态加载的方式),当然也可以是两台主机,如果是两台主机的话,要保 证宿主机上的linux源码的版本号与目标机中的linux内核版本一致。普通Linux设备驱动开发的步骤如下:

在宿主机上安装开发工具和下载linux源码(要求版本号和目标机上的linux内核版本一致)。开发工具主要有gcc、gdb、make等,这些工具在RedHat或fc中默认就安装了,在debian或Ubuntu中可以通过下面这个命令安装:

apt-get install build-essential

linux源码可以通过以下几种途径获得:

直接去www.kernel.org下载

通过包管理工具下载源码,在debian和Ubuntu中可以通过下面这个命令下载,

apt-get install linux-source-(版本号) ,下载后的文件在/usr/src目录中,解压到该目录即可

将源码解压到/usr/src/目录后,进入linux-source-(版本号)目录中执行下面几个命令:

make oldconfig

make prepare

make scripts

编写Linux驱动程序,以一个最简单的hello.c为例,hello.c的内容如下:

#include "linux/init.h"

#include "linux/module.h"

static int hello_init(void)

{

printk(KERN_ALERT "Hello World linux_driver_module\n");

return 0;

}

static void hello_exit(void)

{

printk(KERN_ALERT "Goodbey linux_driver_module\n");

}

module_init(hello_init);

module_exit(hello_exit);

MODULE_LICENSE("GPL");

MODULE_AUTHOR("lpj");

相关推荐