• 手把手教你写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去看看效果,根据需求去配置就可以了。


  • 相关阅读:
    java坏境内存不够用 大量占用swap 临时加swap
    磁盘分区
    简述raid0,raid1,raid5,raid10 的工作原理及特点
    给用户提权
    用户的环境变量被删除了
    定时任务
    linux权限
    kafka部署
    数据仓库
    kylin
  • 原文地址:https://www.cnblogs.com/alan666/p/8312002.html
Copyright © 2020-2023  润新知