- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
linux kconfig详解及语法45
2.6内核的源码树目录下一般都会有两个文件:Kconfig和Makefile。分布在
各目录下的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别
描述了所属目录源文件相关的内核配置菜单。在内核配置make
menuconfig(或xconfig等)时,从Kconfig中读出配置菜单,用户配置完后保
存到.config(在顶层目录下生成)中。在内核编译时,主Makefile调用这
个.config,就知道了用户对内核的配置情况。
上面的内容说明:Kconfig就是对应着内核的配置菜单。假如要想添加新的驱动
到内核的源码中,可以通过修改Kconfig来增加对我们驱动的配置菜单,这样
就有途径选择我们的驱动,假如想使这个驱动被编译,还要修改该驱动所在目录
下的Makefile。
因此,一般添加新的驱动时需要修改的文件有两种(注意不只是两个)
*Kconfig
*Makefile
要想知道怎么修改这两种文件,就要知道两种文档的语法结构。
First: Kconfig
每个菜单项都有一个关键字标识,最常见的就是config。
语法:
config symbol
options
!--[if !supportLineBreakNewLine]--
!--[endif]--
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
!--[if !supportLineBreakNewLine]--
!--[endif]--
更多详细的Kconfigconfig语法可参考:
Second: 内核的Makefile
内核的Makefile分为5个组成部分:
Makefile 最顶层的Makefile
.config 内核的当前配置文档,编译时成为顶层Makefile的一部分
arch/$(ARCH)/Makefile 和体系结构相关的Makefile
s/ Makefile.* 一些Makefile的通用规则
kbuild Makefile 各级目录下的大概约500个文档,编译时根据上层
Makefile传下来的宏定义和其他编译规则,将源代码编译成模块或编入内核。
顶层的Makefile文档读取 .config文档的内容,并总体上负责build内核和模
块。ArchMakefile则提供补充体系结构相关的信息。 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选项。
第三:修改该
您可能关注的文档
最近下载
- 不锈钢管道安装施工与方案.doc VIP
- 喜茶运营管理手册和员工操作管理手册.doc VIP
- 施工总包合同.docx VIP
- 土木专业英国规范NA to BS EN 1991-1-4_2005+A1_2010.pdf VIP
- 软件风险管理计划.docx VIP
- 2024年秋季人教版7年级上册数学全册教学课件(新教材).pptx
- 中山市八年级下期末考试数学试题(有答案)-精品 .pdf VIP
- Module10 Unit 2 Don’t shout please!(教案)外研版(三起)英语五年级上册1.docx VIP
- 顶格筹码峰与平均成本双线合一选股公式.docx VIP
- Module 10 Unit 2 Don’t shout, please! (教案)外研版(三起)英语五年级上册1.docx VIP
文档评论(0)