Linux操作系统的移植(九)
[ 2007-11-2 10:31:00 | By: 山野村夫 ]
 

23内核配置实例

 

对于一个开发者来说,将自己开发的内核代码加入到Linux内核中,需要有3个步骤。

 

·首先,确定把自己开发代码放入到内核的位置;

 

·其次,把自己开发的功能增加到Linux内核的配置选项中,使用户能够选择此功能;

 

·最后,构建子目录Makefile,根据用户的选择,将相应的代码编译到最终生成的Linux    内核中去。

 

以下通过一个简单的例子--test driver,结合前面学过的知识,来说明如何向Linux内核中增加新的功能。

 

    1.源代码目录结构

 

添加自己的源代码,将test driver文件夹放置在driverstest/目录下,其目录结构如下:
 

2.配置文件说明

 

(1)driverstestConfigin文件。
 

由于test driver对于内核来说是新的功能,所以首先创建一个菜单TEST Driver。然后,显示“TEST support”,等待用户选择;接下来判断用户是否选择了TEST Driver,如果是(CONFIG_TEST=y),则进一步显示子功能:用户接口与CPU功能支持;由于用户接口功能可以被编译成内核模块,所以这里的询问语句使用了tristate(因为tristate的取值范围包括Ynmm就是对应着模块)

 

 (2)archarmconfigin

 

在文件的最后加入:source driverstestConfigin,将TEST Driver子功能的配置纳入到Linux内核的配置中。

 

3Makefile文件说明

 

(1)driverstestMakefile文件。



driverstest目录下最终生成的目标文件是testa。由于在testCtest-clientC中使用了EXPORT_SYMBOL输出符号,所以testOtest-clientO位于export-objs列表中。然后,根据用户的选择(具体来说,就是配置变量的取值),构建各自对应的obj-*列表。由于TESTDriver中包一个子目录cpu,当CONFIG_TEST_CPU=y(即用户选择了此功能)时,需要将cpu目录加入到subdir-y列表中。

 

(2)driverstestcpuMakefile文件说明。



(3)driversMakefile文件修改。



driversMakefile中加入subdir-$(CONFIG_TEST)+=test,使得在用户选择TESTDriver功能后,内核编译时能够进入test目录。

 

  (4)顶层Makefile文件修改。



 在顶层Makefile中加入DRIVERS-$(CONFIG_TEST)+=driverstesttestaDRIVERS-$(CONFIG_TEST_CPU)+=driverstestcputest_cpua。如果用户选择了TEST Driver,那么CONFIG_TESTCONFIG_TEST_CPU都是Ytestatest_cpua就都位于DRIVERS-Y列表中,然后又被放置在DRIVERS列表中。在前面曾经提到过,Linux内核文件vmlinux的组成中包括DRIVERS,所以testatest_cpua最终可被链接到vmlinux中。

 

关于驱动程序源代码本处不再介绍。

 
 

发表评论:

    大名:
    密码: (游客无须输入密码)
    主页:
    标题:

时 间 记 忆
最 新 评 论
专 题 分 类
最 新 日 志
最 新 留 言
搜 索
用 户 登 录
友 情 连 接
博 客 信 息