内核中的Kconfig文件

Kconfig解析

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

tristate 表示该模块可以选择  Y  N  M(.ko形式),后面为该模块的描述,
如果是bool则表示该模块只能选择 Y Ndepends 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文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/509642.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【物联网应用案例】从0到N,智慧农业的数据价值

智慧农业全方位渗透到农业的每一个环节,云端解决方案更推动了研究人员、农艺师及农民间的密切协作,为研发企业提供了既经济又具扩展性的完美方案。 据IDC预计,到2036年,农场收集的数据量将增加800%以上,这凸显了农业数…

从零开始手写RPC框架(4)

这一节主要讲述网络传输模块的代码,并且几乎每一行代码都加上了我个人理解的注释,同时也讲述了其中一些以前没见过的函数,和大致的底层运行逻辑。 目录 网络传输实体类网络传输实现基于Socket实现网络传输基于Netty实现网络传输客户端服务端 …

java 从环境变量中获取参数及值

window直接在这设置: linux在/etc/profile文件里存放: export keyvalue 然后立即生效:source /etc/profile 代码获取值这样获取: System.getenv("key");

windows环境下Grafana+loki+promtail入门级部署日志系统,收集Springboot(Slf4j+logback)项目日志

🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 往期热门专栏回顾 专栏…

萌新学习RSA第二天(离线分解整数N)

1.yafu的使用(离线环境分解N)、 下载 打开 及使用 下载地址:https://sourceforge.net/projects/yafu/ 在下载好的并解压好的文件夹上鼠标右键打开终端 然后输入.\yafu-x64.exe并回车运行 .\yafu-x64.exe 来到这个页面就OK了 然后输入 fa…

基于Mahout实现K-Means聚类

需求分析 需要对数据集进行预处理,选择合适的特征进行聚类分析,确定聚类的数量和初始中心点,调用Mahout提供的K-Means算法进行聚类计算,评估聚类结果的准确性和稳定性。同时,需要对Mahout的使用和参数调优进行深入学习…

关于拖拽功能

文章目录 写在前面自己手动实现拖拽的demo技术细节:Js中拖拽(拉)事件(drag 和 drop)浏览器兼容性拖拽Api的介绍拖拽流程1.dragstart事件2.dragenter事件3.dragover事件4.drop事件(必须要dragover事件触发)5.dragend事件MDN关于拖拽的解析 相关…

STM32(6)中断

1.中断 1.1 中断的概念 STM32的中断: 1.2 中断优先级 用数字的大小表示中断优先级的高低,数字的范围:0000--1111(二进制),即0-15,共16级优先级。 进一步对这4位二进制数进行划分,可…

嵌入式Qt 对话框及其类型 QDialog

一.对话框的概念 对话框是与用户进行简短交互的顶层窗口。 QDialog是Qt中所有对话框窗口的基类。 QDialog继承与QWidfet是一种容器类型的组件。 QDialog的意义: QDialog作为一种专业的交互窗口而存在。 QDialog不能作为子部部件嵌入其他容器中。 QDialog是定制…

基于单片机的高精度心理测试仪设计

0 前言 随着社会的不断发展,人们的物质文化生活水平也随之不断提高,但在满足个人需求的同时,心理健康问题也不断出现,且趋于更加严峻的形势。因此,做好日常的心理监测既能够将心理健康问题扼杀在源头处,又能够提醒测试者及时进行状态的调整。当前的心理测试方法众多,主要通过…

转转测试环境docker化实践

【软件测试面试突击班】2024吃透软件测试面试最全八股文攻略教程,一周学完让你面试通过率提高90%!(自动化测试) 测试环境对于任何一个软件公司来讲,都是核心基础组件之一。转转的测试环境伴随着转转的发展也从单一的几…

2024.03.02蓝桥云课笔记

1.scanf与printf取消分隔符的限制方法 示例代码: int main() { char s[10];scanf("%d[^\n]",s);printf("%s",s);return 0; } 运行: 输入:Hello World 输出:Hello World 注:其中[]中是一个正则…