内核中的Kconfig文件

Kconfig解析

编译内核时用于配置的Kconfig文件
以内核中的ttyprintk.c为例,其位于/kernel-sources/dirver/char/ttyprintk.c
如何将其编译进内核?
在char目录下有Kconfig文件,其中有如下内容
在这里插入图片描述

tristate 表示该模块可以选择  Y  N  M(.ko形式),后面为该模块的描述,
如果是bool则表示该模块只能选择 Y N
 depends on EXPERT && TTY 表示依赖关系,其同时依赖EXPERT 和 TTY 
 default n 表示默认为关闭
 help下面的内容为提醒信息,在menuconfig中找到该模块,键入?可以查看help如下图

在这里插入图片描述

如何编译进内核?

当在menuconfig配置为yes后,会在.config中生成相关配置,以ttyprintk为例,在.config中会生成以下内容

CONFIG_TTY_PRINTK=y

在内核代码中会有以下内容

#ifdef CONFIG_TTY_PRINTK
// 相关的代码,当 CONFIG_TTY_PRINTK 被定义时编译
#endif

在ttyprintk.c的同级Makefile中有

obj-$(CONFIG_TTY_PRINTK)	+= ttyprintk.o

CONFIG_TTY_PRINTK被定义为y,因此会编译ttyprintk.o

添加自己的驱动代码目录和子目录

如何添加自己的驱动代码,结构如在
在这里插入图片描述
在char下添加test目录,其中test.c为main函数文件,在Kconfig中配置如下
在这里插入图片描述
Makefile如下
在这里插入图片描述
这里需要注意下,我们是在test 目录下创建了Kconfig,因此还需要再char目录下的Kconfig中添加

source “/driver/char/test/Kconfig”

如果test目录下没有单独创建Kcofig,则只需要将
在这里插入图片描述
直接添加到char/Kconfig中即可。
menuconfig中可以查看到我们新添加的TEST

bitbake -c menuconfig -f linux-imx

打开test的开关后,在.config文件中可以看到

CONFIG_TEST = y

注意当我们使用yocto编译内核时有两个路径都存在kernel的源码
1.build/tmp/work/imx6ull14x14evk-poky-linux-gnueabi/linux-imx/5.4-r0/build 该路径下存放的是真正意义上的源码,包含.config文件
2./build/tmp/work-shared/imx6ull14x14evk/kernel-source这个目录是为了支持在多个不同的构建任务之间共享内核源代码而设置的,不包含.config文件

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值