以下基于宋宝华老师的《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