2.6
内核的源码树目录下一般都会有两个文文:
Kconfig
和
Makefile
。分布在各目录下的
Kconfig
构成了一个分布式的内核配置数据库,每个
Kconfig
分别描述了所属目录源文件相关的内核配置菜单。在内核配置
make menuconfig(
或
xconfig
等
)
时,从
Kconfig
中读出配置菜单,用户配置完后保存到
.config(
在顶层目录下生成
)
中。在内核编译时,主
Makefile
调用这个
.config
,就知道了用户对内核的配置情况。
上面的内容说明:
Kconfig
就是对应着内核的配置菜单。假如要想添加新的驱动到内核的源码中,可以通过修改
Kconfig
来增加对我们驱动的配置菜单,这样就有途径选择我们的驱动,假如想使这个驱动被编译,还要修改该驱动所在目录下的
Makefile
。
因此,一般添加新的驱动时需要修改的文件有两种(注意不只是两个)
*Kconfig
*Makefile
要想知道怎么修改这两种文件,就要知道两种文档的语法结构。
First:
Kconfig
每个菜单项都有一个关键字标识,最常见的就是
config
。
语法:
config symbol
options
symbol
就是新的菜单项,
options
是在这个新的菜单项下的属性和选项
其中
options
部分有:
1
、类型定义:
每个
config
菜单项都要有类型定义,
bool
:布尔类型,
tristate
三态:内建、模块、移除,
string
:字符串,
hex
:十六进制,
integer
:整型
例如
config
HELLO_MODULE
bool "hello test module"
bool
类型的只能选中或不选中,
tristate
类型的菜单项多了编译成内核模块的选项,假如选择编译成内核模块,则会在
.config
中生成一个
CONFIG_HELLO_MODULE=m
的配置,假如选择内建,就是直接编译成内核影响,就会在
.config
中生成一个
CONFIG_HELLO_MODULE=y
的配置
.
2
、依赖型定义
depends
on
或
requires
指此菜单的出现是否依赖于另一个定义
config HELLO_MODULE
bool "hello test module"
depends on ARCH_PXA
这个例子表明
HELLO_MODULE
这个菜单项只对
XScale
处理器有效,即只有在选择了
ARCH_PXA
,
该菜单才可见
(
可配置
)
。
3
、帮助性定义
只是增加帮助用关键字
help
或
---help---
更多详细的
Kconfigconfig
语法可参考:
Second:
内核的
Makefile
内核的
Makefile
分为
5
个组成部分:
Makefile
最顶层的
Makefile
.config
内核的当前配置文档,编译时成为顶层
Makefile
的一部分
arch/$(ARCH)/Makefile
和体系结构相关的
Makefile
s/ Makefile.*
一些
Makefile
的通用规则
kbuild Makefile
各级目录下的大概约
500
个文档,编译时根据上层
Makefile
传下来的宏定义和其他编译规则,将源代码编译成模块或编入内核。
顶层的
Makefile
文档读取
.config
文档的内容,并总体上负责
build
内核和模块。
Arch Makefile
则提供补充体系结构相关的信息。
s
目录下的
Makefile
文档包含了任何用来根据
kbuild Makefile
构建内核所需的定义和规则。
(其中
.config
的内容是在
make menuconfig
的时候,通过
Kconfig
文档配置的结果)
在
linux2.6.x/Documentation/kbuild
目录下有详细的介绍有关
kernel makefile
的知识。
最后举个例子:
假设想把自己写的一个
flash
的驱动程式加载到工程中,而且能够通过
menuconfig
配置内核时选择该驱动该怎么办呢?能够分三步:
第一:将您写的
flashtest.c
文档添加到
/driver/mtd/maps/
目录下。
第二:修改
/driver/mtd/maps
目录下的
kconfig
文档:
config MTD_flashtest
tristate “ap71 flash"
这样当
make
menuconfig
时
,将会出现
ap71 flash
选项。
第三:修改该目录下
makefile
文档。
添加如下内容:
obj-$(CONFIG_MTD_flashtest)
+= flashtest.o
这样,当您运行
make
menucofnig
时,您将发现
ap71
flash
选项,假如您选择了此项。该选择就会保存在
.config
文档中。当您编译内核时,将会读取
.config
文档,当发现
ap71 flash
选项为
yes
时,系统在调用
/driver/mtd/maps/
下的
makefile
时,将会把
flashtest.o
加入到内核中。即可达到您的目的。
分享到:
相关推荐
Kconfig文件的作用是让用户配置内核,定义了一些变量,用户通过设置变量的值来选择如何个性化自己的系统内核。 Kconfig文件的作用可以分为两个方面:一是定义变量,二是提供菜单项。定义的变量将在每个菜单都有一个...
Kconfig文件的作用就是为了让用户配置内核。在Kconfig中定义了一些变量,用户通过设置变量的值来选择如何个性化自己的系统内核。定义的变量将在每个菜单都有一个关键字标识,最常见的就是config语法: config ...
Kconfig文件的详细语法规则可以在内核文档`Documentation/kbuild/kconfig-language.txt`中找到。通过Kconfig,开发者可以轻松地启用或禁用内核的特定功能,根据硬件特性定制内核,甚至在不修改源码的情况下调整内核...
在Linux内核的配置过程中,Kconfig文件会被用来生成图形化的配置菜单(如menuconfig),允许用户在编译内核之前选择或取消选择特定的配置。 在Kconfig文件中,每个配置项由一个关键字标识,如config。这个关键字...
在内核源码树中,每个目录下都存在一个Kconfig文件和一个Makefile文件,共同构成了分布式内核配置数据库。 #### 二、Kconfig的作用与语法 ##### 1. 作用 - **配置选项管理**:Kconfig定义了内核编译时的可配置...
Kconfig不仅让Linux内核拥有更好的模块化特性,而且通过灵活的配置选项,为开发者提供了更高效和个性化定制内核的能力。随着Linux内核的不断演进,对Kconfig语法和Makefile编译系统的理解对于嵌入式系统开发者尤为...
下面将详细阐述这两个文件的作用以及如何使用它们。 `Kconfig`文件是内核配置的元数据源,它定义了内核配置菜单的结构。每个`Kconfig`文件都包含了与相应目录下源代码相关的配置选项。这些选项通常包括布尔值(bool...
2. 脚本支持:可以使用Kconfiglib库生成Python或Perl脚本,对Kconfig进行自动化处理,例如检查配置一致性或生成文档。 3. 依赖关系:通过`depends on`关键字,配置项可以依赖于其他配置项,确保只有当依赖项满足...
关于`Kconfig`的详细说明可以在Linux内核文档`/Documentation/kbuild/kconfig-language.txt`中找到。 #### 二、配置选项树结构 配置数据库中的配置选项是以树的形式组织的。例如: ``` +- Code maturity level ...
至于压缩包内的文件"px4___kconfig-frontends-4.11.0.1.tar.bz2",这可能是将px4项目与kconfig-frontends-4.11.0.1集成后的结果,意味着你将得到一个包含了所需的所有源代码和相关资源的包,可以直接在你的开发环境...
`Kconfig`文件分散在整个内核源码树中,每一个文件对应一个特定的目录或子系统,描述了该部分相关的内核配置项。当运行`make menuconfig`或`xconfig`等配置命令时,这些`Kconfig`文件会被解析,生成配置菜单供用户...
接下来,我们将详细探讨这些文件及其在LED驱动开发中的作用。 首先,`led.c`是LED驱动的核心代码,通常包含以下功能: 1. 初始化:初始化LED的硬件接口,例如设置GPIO引脚为输出模式。 2. 开启和关闭LED:通过设置...
在Linux系统中,驱动开发是不可或缺的一部分,而Kconfig和Makefile文件则在驱动构建过程中起着关键作用。本文将详细解析这两个文件的功能以及它们如何协同工作,以便于理解Linux驱动程序的构建流程。 首先,Kconfig...
Kconfig 脚本文件一般位于各个内核子目录中,并且通常与 `.config` 文件一起使用,该文件保存着用户的配置选项。通过运行 `make menuconfig` 或者 `make xconfig` 命令,用户可以看到一个由 Kconfig 文件生成的配置...
根据给定文件内容,我们可以提炼出关于NuttX操作系统、Kconfig配置系统以及genromfs工具的相关知识点。 首先,NuttX是一个开源的实时操作系统(RTOS),适用于嵌入式系统,支持广泛的硬件平台,包括STM32微控制器。...
为此,Linux内核开发团队引入了`Makefile`和`Kconfig`两个关键文件,以简化和自动化这一过程。 #### 二、Makefile文件 `Makefile`是一种用于指导编译工具如何构建程序的脚本文件。在Linux内核中,`Makefile`文件被...
5. **自动更新:** 当Kconfig文件改变时,通过运行make oldconfig或make nconfig,可以自动更新.config文件,确保配置与Kconfig文件同步。 **内核配置与裁剪:** 1. **内核裁剪:** 内核裁剪是指根据设备和应用需求...
首先,我们需要了解Linux内核配置文件Kconfig和构建文件Makefile的作用。 **1. Kconfig文件** Kconfig是Linux内核配置系统的文本文件,用于定义内核配置选项。在为内核添加新的驱动时,我们需要在相应的Kconfig...
为了探索Linux内核是如何编译的,本文将深入研究Kconfig/kBuild内部进程,解释.config文件和vmlinux/bzImage文件是如何生成的,并介绍一个用于依赖性跟踪的智能技巧。 Kconfig 构建内核的第一步总是配置。Kconfig...
该项目为kconfig服务器与客户端配置管理系统的设计源码,采用JavaScript核心技术,包含346个文件,涵盖35个PHP脚本、30个文档、30个演示文稿、30个电子表格、29个shell脚本、25个JSON和JavaScript文件,以及其他格式...