Linux内核驱动学习(二)添加自定义菜单到内核源码menuconfig

举报
小麦大叔 发表于 2021/12/30 01:01:10 2021/12/30
【摘要】 文章目录 目标drivers/Kconfigdemo下的Kconfig 和 MakefileKconfigMakefiledemo_gpio.c 目标 Kernel:Linux ...

目标

Kernel:Linux 4.4

我编写一个简单的hello worldLinux 内核模块后,已经可以通过insmod动态加载到系统内核中,并通过rmmod卸载模块。但是出于学习的目的,我想把这个内核添加到Linux源码中,并且可以通过Kconfig进行配置,在make menuconfig的指令下,可以生成相应的菜单可以进行配置。

drivers/Kconfig

在Linux内核源码路径下,可以找到drivers文件夹路径,这里保存的是各种驱动程序。在终端输入make menuconfig可以在终端上显示一个用户界面能对内核进行相应的配置。

Device Drivers 就是驱动的配置选型的菜单。

在这里插入图片描述

将光标移动到exit退出当前界面,返回到最初的终端。

sudo cd drivers
sudo mkdir demo
vi Kconfig # 或者使用 gedit Kconfig

  
 
  • 1
  • 2
  • 3

drivers路径下创建一个文件夹demo,打开Kconfig,把drivers/demo/Kconfig的文件路径添加到drivers/Kconfig

menu "Device Drivers"
source drivers/demo/Kconfig //只需要添加这一行
endmenu

  
 
  • 1
  • 2
  • 3

demo下的Kconfig 和 Makefile

demo下添加KconfigMakefile,当前demo下的文件列表

├── demo_gpio.c
├── Kconfig
├── Makefile

  
 
  • 1
  • 2
  • 3

Kconfig

menuconfig DEMO_DRIVERS #DEMO_DRIVERS 菜单
    tristate "demo drivers" 
    help
        demo

if DEMO_DRIVERS 
config DEMO_PLATFORM_GPIO # 菜单子项
    tristate "the most simplest driver"	#子项显示内容
    help
        Driver learning # help显示内容        
endif


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

Makefile

obj-$(CONFIG_DEMO_PLATFORM_GPIO) +=demo_gpio.o

  
 
  • 1

demo_gpio.c

#include <linux/init.h>
#include <linux/module.h>

static int __init demo_gpio_init(void){
        printk(KERN_INFO "demo gpio module init\n");
        return 0;
}

module_init(demo_gpio_init);

static void  __exit demo_gpio_exit(void){
        printk(KERN_INFO "demo gpio module exit\n");
}

module_exit(demo_gpio_exit);

MODULE_LICENSE("GPL");
MODULE_AUTHOR("gw");


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

在这里插入图片描述
在这里插入图片描述
最后,可以看到,demo_gpio已经成功添加到menuconfig的里了。

文章来源: great.blog.csdn.net,作者:小麦大叔,版权归原作者所有,如需转载,请联系作者。

原文链接:great.blog.csdn.net/article/details/86667649

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。