以下基于宋宝华老师的《Linux设备驱动开发详解 基于最新的Linux4.0内核》
配置选项
config MODVERSIONS
bool "Module versioning support"
help
.....
config MODVERSIONS:定义新的配置选项,MODVERSIONS。bool:配置选项的类型,每个配置选项都必须指定类型- 类型还有:
bool、tristate、string、hex、int- 基本类型:
tristate和string
- 基本类型:
- 类型后面可以紧跟提示
- 类型还有:
prompt:提示关键字,一般格式:prompt <prompt> [if <expr>]if:可选,表示该提示的依赖关系
default <expr> [if <expr>]:默认值的格式,如果用户不设置对应的选项,配置选项的值就是默认值depends on(或者是requires) <expr>:依赖关系的格式,表示当为真时,对应的配置选项才会被启用或显示 。类似于条件表达式,可以使用||、&&、!=和!等符号select <symbol> [if <expr>]:选择关系的格式,指定选项被选中了,该选项自动被选中help或---help---:帮助信息的格式,完全依靠文本缩进识别结束
<expr> ::= <symbol>
<symbol> '=' <symbol>
<symbol> '!=' <symbol>
'('<expr>')'
'!' <expr>
<expr> '&&' <expr>
<expr> '||' <expr>
如以下表示,A只有当,B被选中且C不为n时,才可能出现。
config A
def_bool y
depends on B && C!=n
菜单结构
配置选项在菜单树结构中的位置可由两种方法决定
第一种为:
menu "A"
depends on NET
config NETDEVICES
....
endmenu
所有处于menu和endmenu之间的配置选项都会成为A的子菜单,而且所有子菜单选项都会基础父菜单的依赖关系
第二种
分析依赖关系,生成菜单结构,比如利用bool和depends on
除此之外,还可以使用choices .. endchoice、comment、if...endif这样的结构
choices...endchoice结构:
choice
<choice options>
<choice block>
endchoce
定义一个选择群,其中<choice options>可以是前面描述的如何熟悉,比如LDD6410的VGA输出分辨率可以是1024×769或者是800×600,可以参考drivers/video/samsung/Kconfig文件
Kconfig和Makefile脚本的参考
Documentation目录内的kbuild下的Kconfig-language.txt和Makefiles.txt
Linux内核的引导
- 嵌入式Linux领域最著名的bootloader是
U-Boot,代码仓库:http://git.denx.de/u-boot.git/ - 以前
bootloader需要将启动信息以ATAG的形式封装,并且把ATAG的地址填充在r2寄存器中,机型号填充在r1寄存器中,详情:Documentation/arm/booting
本文介绍了Linux内核的配置选项,如MODVERSIONS的定义,以及Kconfig和Makefile脚本的使用,涉及菜单结构的两种方式和嵌入式Linux的bootloader(U-Boot)及其ATAG机制。

5681

被折叠的 条评论
为什么被折叠?



