linux设备驱动编程学习——内核树的配置与构造(稍后补完)

来源:互联网 发布:iosselect.js andriod 编辑:程序博客网 时间:2024/05/18 03:00
在配置好了NFS服务后,小Kra正式进入了驱动程序设计的学习。驱动编程涉及到了内核的编译、而内核的编译配置正确版本的编译工具和内核树,但是书上并没有介绍这些工作的详细步骤,小Kra也是花了半天时间找资料,才完成了相关的配置工作!  

 

 

 --------------------------------------------------------我是分割线-----------------------------------------------------------

 

一、编译器的安装:编译器arm-linux-gXX的版本并不是越新越好,不同版本的编译器对应着不同版本的linux内核,所以在安装编译器是一定要选择正确的版本安装(小Kra当时就是因为版本不对程序编译了半天也不能运行)

1.查看arm板上的linux内核版本:

      输入命令:uname -a

点击查看原始尺寸

可以看到,2440上的linux版本为2.6.12

2.下载对应版本的编译器:(正常来讲选择arm板自带资料里提供的编译器肯定是没错的,但是这块板TMD的没给资料,只能自己找了啊魂淡)

点击查看原始尺寸

这里小Kra找到的是arm-linux-gcc 3.4.1

3.将压缩包解压到/usr/local/arm目录下

         输入命令:tar jxvf arm-linux-gcc-3.4.1.tar.bz2 \usr\local\arm

         如果没有该目录则自己创建一个:mkdir \usr\local\arm

4.修改环境变量,编译器路径加入到PATH中:

         a.打开修改配置文件:vim \etc\bash.bashrc

         b.最后加上export PATH=$PATH:/usr/local/arm/3.4.1/bin

         c.保存

5.使新的环境变量生效:

         输入命令:source \root\.bashrc

6. 检查是否将路径加入到PATH:

              输入命令:echo $PATH

点击查看原始尺寸

   如图,显示的内容中有/usr/local/arm/bin,说明已经将交叉编译器的路径加入PATH。

7.       测试安装是否完成:

         输入命令:arm-linux-gcc  –v  

      显示版本号,说明编译器安装成功

 

 

 

 

--------------------------------------------------------我是分割线--------------------------------------------------------

 

安装好了编译工具后,接下来就是要构造内核树。因为要给arm板写程序,所以要构造的内核树的版本要和arm板上的linux内核版本一样。

 

1.查看arm板上的linux内核版本:

      输入命令:uname -a

点击查看原始尺寸

    可以看到,2440上的linux版本为2.6.12

2.下载版本为2.6.12的linux内核源代码,并解压。

     解压命令:tar -jxvf linux-2.6.12.tar.bz2

点击查看原始尺寸

      得到源码文件

3.进入源码目录,使用旧配置编译内核:

        a.输入命令:cd ema

        b.输入命令:make oldconfig

        c.输入命令:make bzImage

        等待...

4.编译模块:

        输入命令:make module

5.安装模块:

        输入命令:make module_install

6.可以查看/lib/modules下是否生成了相应的内核文件,如果是,则说明内核树的配置完成

点击查看原始尺寸

如图:

 

--------------------------------------------------------我是分割线--------------------------------------------------------

 

 此时我们已经完成了编译气的安装和内核树配置,下面就写一个驱动程序测试一下吧:

1.编写以下程序,保存文件名为hello.c(程序由《linux设备驱动程序》提供):

2.编写Makefile(由BOSS CHEN提供):

点击查看原始尺寸

其中KIDR为配置的内核树路径,CROSS_COMPILE为:arm-linux-gcc的绝对路径

3.MAKE,生成模块hello.ko

      输入命令:make

点击查看原始尺寸

4.测试该模块:

     输入命令:insmod hello.ko安装

     输入命令:rmmod hello 卸载

点击查看原始尺寸

如果有以上输出,则说明成功了!