zoukankan      html  css  js  c++  java
  • Kconfig文件分析

    1. Kconfig文件的作用

    Kcongfig用于构建Linux内核配置的图形界面,配置界面所有配置项都从Kconfig中读取。

    2. Kconfig文件的格式说明

    Kconfig文件遵循一定的格式,menuconfig程序可以识别其格式,并从中提取相关信息形成menuconfig界面中的菜单项。

    在进行驱动移植等移植工作时,需要自己添加Kconfig中的一个配置项来将某个设备驱动添加到内核的配置项目中。

    #
    # Network device configuration
    #
    
    menuconfig NETDEVICES
    default y if UML
    depends on NET
    bool "Network device support"
    ---help---
      You can say N here if you don't intend to connect your Linux box to
      any other computer at all..........................................
    
    # All the following symbols are dependent on NETDEVICES - do not repeat
    # that for each of the symbols.
    if NETDEVICES
    ........................................
    config DM9000
    tristate "DM9000 support"
    depends on ARM || BLACKFIN || MIPS
    select CRC32
    select MII
    ---help---
      Support for DM9000 chipset.
    
      To compile this driver as a module, choose M here.  The module
      will be called dm9000.
    
    config DM9000_16BIT
    bool "DM9000 16-bit"
    depends on DM9000
    default n
    help
      Support DM9000 ethernet controller with 16bit data bus
    ........................................
    
    source "drivers/net/pcmcia/Kconfig"
    source "drivers/net/wan/Kconfig"
    .......................................


    (2)config XXX,表示菜单中的一个配置选项。一个menuconfig XXX下的所有config XXX都属于该菜单下的配置项。XXX表示该配置项的名称,该字符串用CONFIG_修饰就构成.config文件中的配置项名称CONFIG_XXX。(1)menuconfig    XXX,表示一个菜单项(它本身也是其上一级菜单中的一个配置选项)。XXX表示该配置项的名称,该字符串用CONFIG_修饰就构成.config文件中的配置项名称CONFIG_XXX。

    (3)bool,表示该配置项只有两种选择,编入(Y)或去除(N)。

    (4)tristate,表示该配置项是三态的,对应:编入(Y)、去除(N)、模块化(M)。

    (5)bool、tristate后的字符串,表示该配置项在menuconfig界面上显示的名称。

    (6)depends,表示该配置项依赖于其他配置项,只有依赖的配置项为Y或M时,本配置项才有意义。

    (7)select,表示若该配置项成立,则select下的配置项也会成立。

    (8)help,表示该配置项对应的帮助信息;在menuconfig界面下,选中某一表项并按“?”即可显示该项对应的帮助信息。

    (9)source,内核源码目录树中每一个Kconfig都会用source引入其所有子目录下的Kconfig,从而保证了所有的Kconfig项目都被包含进menuconfig中。因此,若在linux内核中添加了一个文件夹,一定要在该文件夹下创建一个Kconfig文件,然后在该文件夹的上一层目录的Kconfig中source引入该文件夹下的Kconfig文件。

    3. Kconfig、.config、autoconfig.h、Makefile之间的关联

    menuconfig图形界面中所有表项都从Kcongfig中读取,所有表项的设置值都从.config文件中读取。menuconfig界面中的修改部分会同步至.config文件中;同时还会将所有的配置选项以宏的形式保存在/kernel/include/generated/autoconfig.h中,Makefile会根据其中的宏对相应的配置项进行条件编译。
     
     
    参考链接:https://www.cnblogs.com/linfeng-learning/p/9285548.html
  • 相关阅读:
    安卓API首页
    安卓开发学习1
    Unity3D安卓交互
    跨天查询,少一天的问题
    COALESCE关键字的使用
    Map构造器模式 map builder pattern
    Linux服务器端使用tcpdump抓redis报文
    Java Unsigned Bytes
    JAVA与c#中byte取值范围的差异
    jack反序列化自定义字段绑定,报错:can only instantiate non-static inner class by using default, no-argument constructor
  • 原文地址:https://www.cnblogs.com/CaesarTao/p/10600444.html
Copyright © 2011-2022 走看看