zoukankan      html  css  js  c++  java
  • 手把手教你写Kconfig---基于tiny4412开发板

    转自:http://blog.csdn.net/morixinguan/article/details/54744237

    今天,我就来教大家写写最简单的Kconfig,什么是Kconfig?

    我们配置过的信息最终会在这以下的两个文件中找到。


    这个文件会被.c包含

    include/generated/autoconf.h 

    这个autoconf.h中对应的就是一些宏,打开看看就明白了 

    这个文件根据.config生成,而.config是根据make menuconfig来进行生成,内核中的makefile包含了这个文件
    inlcude/config/auto.conf   


    简单的说吧,它是一个Linux驱动的配置文件,配置什么东西呢?在linux设备驱动中,我们写的驱动程序最终会加入到内核的Makefile中进行编译,那么具体要编译成什么呢?要编译成.o文件还是.ko文件,还是不编译?

    由那个命令来进行配置呢?

    那就是make menuconfig

    在这个menuconfig中,有很多菜单,其实,那些就是通过Kconfig一个一个加进去的。

    如图所示:


    那么如何来写这样的一个配置选项呢?

    我还是以上一节手把手教大家学第一个例程,在其中添加一个Kconfig来进行说明。

    在linux内核源代码drivers目录下创建一个4412_driver的目录:

    然后进到这个目录下,创建hello_kernel.c ,  Makefile , Kconfig 这三个文件。

    hello_kernel.c代码如下:

    1. #include <linux/kernel.h>  
    2. #include <linux/module.h>  
    3.   
    4. static int __init hello_init(void)  
    5. {  
    6.     printk("Hello, kenerl installed ! ");  
    7.     return 0;  
    8. }  
    9.   
    10. static void __exit hello_cleanup(void)  
    11. {  
    12.     printk("Good-bye, removed! ");  
    13. }  
    14.   
    15. module_init(hello_init);  
    16. module_exit(hello_cleanup);  
    17.   
    18. MODULE_LICENSE("GPL");  
    Makefile如下:

    obj-$(CONFIG_HELLO_KERNEL) += hello_kernel.o

    Kconfig如下:

    [plain] view plain copy
     print?在CODE上查看代码片派生到我的代码片
    1. menu "4412_driver"  
    2.      config HELLO_KERNEL  
    3.           bool "hello_kernel"  
    4.           default n  
    5.       help  
    6.       if you select , you can use it  
    7.   
    8. endmenu  
    这里要说说参数,menu是什么?menu就是只这个配置选项中的菜单:

    config表示要配置的参数

    bool表示提示配置这个选项

    default表示默认配置,有y,n,后面还会有模块

    help表示帮助,help下面的字符串表示提示的信息,可以自由添加

    配置最终结果如图所示:

    我们回车进去,看到:

    这时候我们按下空格键就打上*会对这个我们刚刚写的驱动进行配置,配置完毕,我们就可以开始编译linux内核了;

    编译中,我们看到内核已经将我们的选项进行了配置:

    编译完成,将在arch/arm/boot/zImage这个内核镜像下载入开发板:

    然后启动开发板,就可以在串口中看到打印信息了:

    我们在这里看到,3.670133秒的时候,打印了Hello,kernel  installed ! 也就是.c文件里的字符串。

    关于Kconfig配置还有很多,说到底也不用去记,因为内核中有很多个Kconfig,我们可以打开看看去多尝试尝试,然后make menuconfig去看看效果,根据需求去配置就可以了。


  • 相关阅读:
    27. Remove Element
    26. Remove Duplicates from Sorted Array
    643. Maximum Average Subarray I
    674. Longest Continuous Increasing Subsequence
    1. Two Sum
    217. Contains Duplicate
    448. Find All Numbers Disappeared in an Array
    566. Reshape the Matrix
    628. Maximum Product of Three Numbers
    UVa 1349 Optimal Bus Route Design (最佳完美匹配)
  • 原文地址:https://www.cnblogs.com/alan666/p/8312002.html
Copyright © 2011-2022 走看看