我是靠谱客的博主 俊秀咖啡,最近开发中收集的这篇文章主要介绍kernel驱动配置文件的编写的记录,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

概要:简单记录Kconfig 编写方法和 make menuconfig 配置时的展现形式的对应。

平台:ubuntu 20.04

kernel 版本:linux-4.0

在上一篇博客《驱动的第一个模块》中,编写驱动Kconfig后,配置时呈现的效果和代码对比如下:

 此时进了 Device drivers 就可以看到 Hello Word driver support,也就是说 Hello Word 是在二级目录下。假如rivotek下的驱动很多,希望进入三级目录进行配置呢?

仿照着kernel里的的其他模块编写了Makefile 和修改了 drivers下的Makefile,编译老是报错:

linux-4.0$ make menuconfig
scripts/kconfig/mconf Kconfig
drivers/rivotek/Kconfig:18: 'endmenu' in different file than 'menu'
drivers/rivotek/Kconfig:1: location of the 'menu'
drivers/Kconfig:187: 'endmenu' in different file than 'menu'
drivers/rivotek/Kconfig:1: location of the 'menu'
make[1]: *** [scripts/kconfig/Makefile:24:menuconfig] 错误 1
make: *** [Makefile:543:menuconfig] 错误 2

核对许久,没有找到问题,百度了该错误,找到如下相同错误的博客:编译错误-----Kconfig之'endmenu' in different file than 'menu'

再仔细对比,缺少少了一个回车,添加后可以出配置界面。 查看配置项,和代码对应关系如下:

Kconfig 配置

menu "Rivotek"

config RIVOTEK
	bool "Rivotek Drivers"
	---help---
	  Enable support for various drivers write by Rivotek

if RIVOTEK

config HELLOWORLD
	tristate "Hello Word driver support"
	default m
	help
	  This is a driver module test,just for pratice.

endif # if RIVOTEK

endmenu

还需更改drivers下的Makefile配置,如下:

diff --git a/drivers/Makefile b/drivers/Makefile
index 527a6da8..0ef64a04 100644
--- a/drivers/Makefile
+++ b/drivers/Makefile
@@ -165,3 +165,6 @@ obj-$(CONFIG_RAS)           += ras/
 obj-$(CONFIG_THUNDERBOLT)      += thunderbolt/
 obj-$(CONFIG_CORESIGHT)                += coresight/
 obj-$(CONFIG_ANDROID)          += android/
+
+
+obj-$(CONFIG_RIVOTKE)       += rivotek/

编译后,居然没有Helloworld.ko 生成!

检查 .config 文件,有配置,无误。

 检查 Makefile,和rivotek 文件夹下的Kconfig 对比

配置名字写错了…………

更改为

diff --git a/drivers/Makefile b/drivers/Makefile
index 527a6da8..0ef64a04 100644
--- a/drivers/Makefile
+++ b/drivers/Makefile
@@ -165,3 +165,6 @@ obj-$(CONFIG_RAS)           += ras/
 obj-$(CONFIG_THUNDERBOLT)      += thunderbolt/
 obj-$(CONFIG_CORESIGHT)                += coresight/
 obj-$(CONFIG_ANDROID)          += android/
+
+
+obj-$(CONFIG_RIVOTEK)       += rivotek/

主要更改点:CONFIG_RIVOTKE ====》 CONFIG_RIVOTEK

编译,生成Helloworld.ko。

drivers文件夹 下 Makefile 最初写错了,后面又修正;这里有占用篇幅的嫌疑,但真实的记录了debug的过程。同时,假如有读过这篇博客的朋友在自己工作中遇到类似的情况,此处提供一个debug思路。

最后

以上就是俊秀咖啡为你收集整理的kernel驱动配置文件的编写的记录的全部内容,希望文章能够帮你解决kernel驱动配置文件的编写的记录所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部