微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Linux内核驱动程序的配置

Linux内核驱动程序的配置

时间:10-08 来源:互联网 点击:

,在此过程中生成的 ext2.o 将被连接进 built-in.o 最终连接进内核。这里需要注意的一点是,该 kbuild Makefile 所在的目录中不能再包含和模块名相同的源文件和 ext2.c/ext2.s.或者写如 -objs 的形式:obj-$(CONFIG_ISDN) +=isdn.o isdn-objs := isdn_net_lib.o isdn_v110.o isdn_common.o(3)目录层次的迭代示例:obj-$(CONFIG_EXT2_FS) += ext2/当 CONFIG_EXT2_FS 的值为 y 或 m时,kbuild 将会把 ext2 目录列入向下迭代的目标中,具体 ext2 目录下的文件是要作为模块编译还是链入内核由 ext2 目录下的 Makefile 文件的内容决定。

3. Kconfig(1)菜单入口大多数的内核配置选项都对应 Kconfig 中的一个菜单入口,如下所示:config MODVERSIONS bool Set version information on all module symbols depends on MODULES help Usually, modules have to be recompiled whenever you switch to a new kernel……

config 关键字定义新的配置选项,之后的几行定义了该配置选项的属性。配置选项的属性包括类型、数据范围、输入提示、依赖关系(及反向依赖关系)、帮助信息和默认值等。

每个配置选项都必须制定类型,类型包括bool、tristate、string、hex 和 int,其中 tristate 和string 是两种基本的类型,其他类型都基于这两种基本类型。类型定义后可以紧跟输入提示,下面的两段脚本是等价的。

脚本1: bool Networking support脚本2: bool prompt Networking support输入提示的一般格式的如下所示:prompt[if ]其中可选的 if 用来表示该提示的依赖关系。

默认值的格式如下所示: default [if ]一般配置选项可以存在任意多个默认值,这种情况下,只有第一个被定义的值是可用的。如果用户不设置对应的选项,配置选项的值就是默认值。

依赖关系的格式如下所示:depends on (或者 requires) 如果定义了多个依赖关系,他们之间用 “”间隔。依赖关系也可以应用到该菜单中所有的其他选项中(这些选项同样可接受 if 表达式),下面的两端段脚本是等价的。

脚本1: bool foo if BAR default y if BAR脚本2: depends on BAR bool foo default y反向依赖关系的格式如下所示:select [if ] depends能限定一个 symbol 的上限,即如果 A 依赖于 B,则在 B 被配置为 Y 的情况下,A 可以为“Y、M 和N;在 B 被配置为 ”M 情况下,A 可以被配置为M 或 N;B 在被配置为 N 的情况下,A 只能为 “N. select 能限定一个 symbol 的下限,若 A 反向依赖于 B,则 A 的配置值会高于或等于 B(正好与 depends)。如果 symbol 反向依赖于多个对象,则它的下陷是这些对象的最大值。

kbuild Makefile 中的 expr (表达式) 定义如下所示: ::= '=' '!=' ' ( ' ' ) ' ' ! ' '' ' || ' 也就是说 expr 是由 symbol 、两个 symbol 相等、两个symbol 不等以及 expr 的赋值、非、与、或运算构成。而 symbol 分为两类,一类是由菜单入口定义配置选项定义的非常数 symbol,另一类是作为 expr 组成部分的常数 symbol.数据范围的格式如下:rang [if ]为 int 和 hex 类型的选项设置可以接受的输入值范围,用户只能输入大于等于第一个 symbol,小于等于第二个 symbol 的值。

帮助信息的格式如下: help(或 ——help——)

开始……

结束帮助信息完全靠文本缩进识别结束。——help—— 和 help 在作用上没有区别,设计——help—— 的初衷在于将文件中的配置逻辑与给开发人员的提示分开。

menuconfig 关键字的作用与 config 类似,但它在 config 的基础上要求所有的子选项作为独立的行显示。

(2)菜单结构菜单入口在菜单树结构中的位置可由两种方法决定。第一种方式如下所示:menu Networking device support depends on NET config NETDEVICES……

endmenu所有处于menu 和 endmenu 之间的菜单入口都会成为 Network device support 的子菜单。而且,所有子菜单选项都会继承父菜单的依赖关系,比如, Network device support 对 Net 的依赖被加到了配置选项 NETDEVICES 的依赖列表中。

另一种方式是通过分析依赖关系生成菜单结构。如果菜单选项在一定程度上依赖于前面的选项,它就恩能能成为该选项的子菜单。如果父选项为 N,则子选项不可见;如果父选项为 Y 或 M ,则子选项可见,例如:config MODULES bool Enable loadable module support

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top