分类: LINUX
2014-10-15 17:20:08
分布在各目录下的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文件相关的内核配置菜单。在内核配置make menuconfig(或xconfig等)时,从Kconfig中读出配置菜单,用户配置完后保存到.config(在顶层目录下生成)中。在内核编译 时,主Makefile调用这个.config,就知道了用户对内核的配置情况。Kconfig就是对应着内核的配置菜单。假如要想添加新的驱动到内核的 源码中,可以通过修改Kconfig来增加对我们驱动的配置菜单,这样就有途径选择我们的驱动,假如想使这个驱动被编译,还要修改该驱动所在目录下的 Makefile。
先来看下一个相对完整的Kconfig文件:
点击(此处)折叠或打开
2.菜单结构:
配置文件描述了菜单选项,每行都是以一关键字开头(除了帮助信息)。下面的关键字结束一菜单选项:
- config
- menuconfig
- choice/endchoice
- comment
- menu/endmenu
- if/endif
- source
2.options类型定义:
每个config菜单项都要有类型定义:bool布尔类型、 tristate三态(内建、模块、移除)、 string字符串、 hex十六进制、 integer整型。
例如:
点击(此处)折叠或打开
点击(此处)折叠或打开
4.select与depends on是相反的逻辑关系。
A depends on B
那么只有在B选中才能选A
A select B
那么只要选中A就会选中B
5.帮助性定义
只是增加帮助用关键字help或者---help---,"---help---" 和 "help" 在实现的作用上没有区别,"---help---" 有助于将文件中的配置逻辑与给开发人员的提示分开。
6.prompt --输入提示
1.顶层的Makefile文档读取 .config文档的内容,并总体上负责build内核和模块。
2.Arch Makefile则提供补充体系结构相关的信息。
3.scripts目录下的Makefile文档包含了任何用来根据kbuild Makefile 构建内核所需的定义和规则。
其中.config的内容是在make menuconfig的时候,通过Kconfig文档配置的结果,在/Documentation/kbuild目录下有详细的介绍有关kernel makefile的知识。
假设想把G-sensor LSM303D驱动code加载到工程中,配置内核时该怎么办呢?
1:将您写的lsm303d.c 文档添加到/driver/misc/ 目录下。
2:修改/driver/misc/ 目录下的kconfig文档:
点击(此处)折叠或打开
点击(此处)折叠或打开
点击(此处)折叠或打开