zoukankan      html  css  js  c++  java
  • Linux内核配置---menuconfig

    1. 示例

    config SGI_NEWPORT_CONSOLE
            tristate "SGI Newport Console support"
            depends on SGI_IP22 
            select FONT_SUPPORT
            help
              Say Y here if you want the console on the Newport aka XL graphics
              card of your Indy.  Most people say Y here.
    
    config DUMMY_CONSOLE_COLUMNS
            int "Initial number of console screen columns"
            depends on DUMMY_CONSOLE && !ARM
            default 160 if PARISC
            default 80
            help
              On PA-RISC, the default value is 160, which should fit a 1280x1024
              monitor.
              Select 80 if you use a 640x480 resolution by default.
    
    config FRAMEBUFFER_CONSOLE
        bool "Framebuffer Console support"
        depends on FB && !UML
        select VT_HW_CONSOLE_BINDING
        select CRC32
        select FONT_SUPPORT
        default n
        help
          Low-level framebuffer-based console driver.
    config DRM_KMS_FB_HELPER
        bool
        depends on DRM_KMS_HELPER
        select FB
        # select FRAMEBUFFER_CONSOLE if !EXPERT
        # select FRAMEBUFFER_CONSOLE_DETECT_PRIMARY if FRAMEBUFFER_CONSOLE
        select FB_SYS_FOPS
        select FB_SYS_FILLRECT
        select FB_SYS_COPYAREA
        select FB_SYS_IMAGEBLIT
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
        select FB_DEFERRED_IO
        help
          FBDEV helpers for KMS drivers.

    2. 关键字解释

    Kconfig按照一定的格式来书写,menuconfig程序可以识别这种格式,然后从中提取出有效信息组成menuconfig中的菜单项。将来在做驱动移植等工作时,有时需要自己添加Kconfig中的一个配置项来将某个设备驱动添加到内核的配置项目中,这时候就需要对Kconfig的配置项格式有所了解,否则就不会添加。

    menuconfig表示菜单(本身属于一个菜单中的项目,但是他又有子菜单项目)、config表示菜单中的一个配置项(本身并没有子菜单下的项目)。一个menuconfig后面跟着的所有config项就是这个menuconfig的子菜单。这就是Kconfig中表示的目录关系。

    source:内核源码目录树中每一个Kconfig都会用source引入其所有子目录下的Kconfig,从而保证了所有的Kconfig项目都被包含进menuconfig中。这个也说明了:如果你自己在linux内核中添加了一个文件夹,一定要在这个文件夹下创建一个Kconfig文件,然后在这个文件夹的上一层目录的Kconfig中source引入这个文件夹下的Kconfig文件。

    menu: 表示一个菜单项,例如 menu "Console display driver support",  菜单项里面是各种配置。

    tristate:意思是三态(3种状态,对应Y、N、M三种选择方式),意思就是这个配置项可以被三种选择。

    bool:是要么真要么假(对应Y和N)。意思是这个配置项只能被2种选择。

    int:  可以指定一个值,在autoconfig.h中会生成 #define CONFIG_DUMMY_CONSOLE_COLUMNS 80,   make menuconfig中显示为:  (80)Initial number of console screen columns

    depends:意思是本配置项依赖于另一个配置项。如果那个依赖的配置项为Y或者M,则本配置项才有意义;如果依赖的那个配置项本身被设置为N,则本配置项根本没有意义。depends项会导致make menuconfig的时候找不到一些配置项。所以在menuconfig中如果找不到一个选项,但是这个选项在Kconfig中却是有的,则可能的原因就是这个配置项依赖的一个配置项是不成立的。depends依赖的配置项可以是多个,还可以有逻辑运算。这种时候只要依赖项目运算式子的结果为真则依赖就成立。

    select:表示depends on的值有效时,下面的select也会成立,将相应的内容选上。 此时被别人选中的选项失去了自我决定自己是否选择的能力,如上例中 FRAMEBUFFER_CONSOLE 被 DRM_KMS_FB_HELPER 选中后menuconfig中它只能显示被选中状态,而且无法被更改!

    default:表示depends on的值有效时,下面的default也会成立,将相应的选项选上,有三种选项,分别对应y,n,m。

    help:帮助信息,解释这个配置项的含义,以及如何去配置他。

    comment: comment条目用于定义一些帮助信息,出现在界面的第一行,如在arch/arm/Kconifg中有如下代码:

    choice: choice条目将多个类似的配置选项组合在一起,供用户单选或多选,这不同于menu条目

    3. Kconfig和.config文件和Makefile三者的关联

    配置项被配置成Y、N、M会影响“.config”文件中的CONFIG_XXX变量的配置值。“.config”中的配置值(=y、=m、没有)会影响最终的编译链接过程。如果=y则会被编入(built-in),如果=m会被单独连接成一个”.ko”模块,=n则对应的代码不会被编译。通过makefile实现的。

    Kconfig中:config VGACON_SOFT_SCROLLBACK

    makefile中:obj-$(VGACON_SOFT_SCROLLBACK) += xxxxx.c

    autoconf.h中:#define CONFIG_VGACON_SOFT_SCROLLBACK 1

  • 相关阅读:
    LightOJ 1132 Summing up Powers(矩阵快速幂)
    hdu 3804 Query on a tree (树链剖分+线段树)
    LightOJ 1052 String Growth && uva 12045 Fun with Strings (矩阵快速幂)
    uva 12304 2D Geometry 110 in 1! (Geometry)
    LA 3263 That Nice Euler Circuit (2D Geometry)
    2013 SCAUCPC Summary
    poj 3321 Apple Tree (Binary Index Tree)
    uva 11796 Dog Distance (几何+模拟)
    uva 11178 Morley's Theorem (2D Geometry)
    动手动脑
  • 原文地址:https://www.cnblogs.com/hellokitty2/p/9879238.html
Copyright © 2011-2022 走看看