Linux驱动学习:Kconfig

本文介绍了Linux内核的配置选项,如MODVERSIONS的定义,以及Kconfig和Makefile脚本的使用,涉及菜单结构的两种方式和嵌入式Linux的bootloader(U-Boot)及其ATAG机制。
摘要由CSDN通过智能技术生成


以下基于宋宝华老师的《Linux设备驱动开发详解 基于最新的Linux4.0内核》

配置选项

config MODVERSIONS
	bool "Module versioning support"
     help
         .....
  1. config MODVERSIONS:定义新的配置选项,MODVERSIONS
  2. bool:配置选项的类型,每个配置选项都必须指定类型
    1. 类型还有:booltristatestringhexint
      1. 基本类型:tristatestring
    2. 类型后面可以紧跟提示
  3. prompt:提示关键字,一般格式:prompt <prompt> [if <expr>]
    1. if:可选,表示该提示的依赖关系
  4. default <expr> [if <expr>]:默认值的格式,如果用户不设置对应的选项,配置选项的值就是默认值
  5. depends on(或者是requires) <expr>:依赖关系的格式,表示当为真时,对应的配置选项才会被启用或显示 。类似于条件表达式,可以使用||&&!=!等符号
  6. select <symbol> [if <expr>]:选择关系的格式,指定选项被选中了,该选项自动被选中
  7. 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

所有处于menuendmenu之间的配置选项都会成为A的子菜单,而且所有子菜单选项都会基础父菜单的依赖关系

第二种

分析依赖关系,生成菜单结构,比如利用booldepends on
除此之外,还可以使用choices .. endchoicecommentif...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.txtMakefiles.txt

Linux内核的引导

  1. 嵌入式Linux领域最著名的bootloader是U-Boot,代码仓库:http://git.denx.de/u-boot.git/
  2. 以前bootloader需要将启动信息以ATAG的形式封装,并且把ATAG的地址填充在r2寄存器中,机型号填充在r1寄存器中,详情:Documentation/arm/booting
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值