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


    目标

    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
    

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

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

    demo下的Kconfig 和 Makefile

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

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

    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
    
    

    Makefile

    obj-$(CONFIG_DEMO_PLATFORM_GPIO) +=demo_gpio.o
    

    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
    ");
            return 0;
    }
    
    module_init(demo_gpio_init);
    
    static void  __exit demo_gpio_exit(void){
            printk(KERN_INFO "demo gpio module exit
    ");
    }
    
    module_exit(demo_gpio_exit);
    
    MODULE_LICENSE("GPL");
    MODULE_AUTHOR("gw");
    
    

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

  • 相关阅读:
    Leetcode167-Two Sum II Input array is sorted-Easy
    Leetcode122-Best Time to Buy and Sell Stock II-Easy
    Leetcode121-Best Time to Buy and Sell Stock I
    Leetcode118_Pascal's Triangle_Easy
    Leetcode88_Merge Sorted Array_Easy
    Leetcode66-Plus One-Eassy
    Open DS
    python, general, for quick review
    [python] CSV read and write using module xlrd and xlwt
    [python] xlrd
  • 原文地址:https://www.cnblogs.com/unclemac/p/12783413.html
Copyright © 2020-2023  润新知