微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Linux内核配置系统详解

Linux内核配置系统详解

时间:05-07 来源:IBM 点击:

  以字符界面配置(make config)为例,顶层 Makefile 调用 scripts/Configure, 按照 arch/arm/config.in 来进行配置。命令执行完后产生文件 .config,其中保存着配置信息。下一次再做 make config 将产生新的 .config 文件,原 .config 被改名为 .config.old

  3.2 配置语言

  1) 顶层菜单

  mainmenu_name /prompt/ /prompt/ 是用'或"包围的字符串,'与"的区别是'…'中可使用$引用变量的值。mainmenu_name 设置最高层菜单的名字,它只在 make xconfig 时才会显示。

  2) 询问语句

        bool      /prompt/ /symbol/
    hex       /prompt/ /symbol/ /word/
    int       /prompt/ /symbol/ /word/
    string     /prompt/ /symbol/ /word/
    tristate    /prompt/ /symbol/

  询问语句首先显示一串提示符 /prompt/,等待用户输入,并把输入的结果赋给 /symbol/ 所代表的配置变量。不同的询问语句的区别在于它们接受的输入数据类型不同,比如 bool 接受布尔类型( y 或 n ),hex 接受 16 进制数据。有些询问语句还有第三个参数 /word/,用来给出缺省值。

  3) 定义语句

        define_bool   /symbol/ /word/
    define_hex   /symbol/ /word/
    define_int   /symbol/ /word/
    define_string  /symbol/ /word/
    define_tristate /symbol/ /word/

  不同于询问语句等待用户输入,定义语句显式的给配置变量 /symbol/ 赋值 /word/。

  4) 依赖语句

    dep_bool    /prompt/ /symbol/ /dep/ ...
    dep_mbool    /prompt/ /symbol/ /dep/ ...
    dep_hex     /prompt/ /symbol/ /word/ /dep/ ...
    dep_int     /prompt/ /symbol/ /word/ /dep/ ...
    dep_string   /prompt/ /symbol/ /word/ /dep/ ...
    dep_tristate  /prompt/ /symbol/ /dep/ ...

  与询问语句类似,依赖语句也是定义新的配置变量。不同的是,配置变量/symbol/的取值范围将依赖于配置变量列表/dep/ …。这就意味着:被定义的配置变量所对应功能的取舍取决于依赖列表所对应功能的选择。以dep_bool为例,如果/dep/ …列表的所有配置变量都取值y,则显示/prompt/,用户可输入任意的值给配置变量/symbol/,但是只要有一个配置变量的取值为n,则/symbol/被强制成n。

  不同依赖语句的区别在于它们由依赖条件所产生的取值范围不同。

  5) 选择语句

choice     /prompt/ /word/ /word/

  choice 语句首先给出一串选择列表,供用户选择其中一种。比如 Linux for ARM 支持多种基于 ARM core 的 CPU,Linux 使用 choice 语句提供一个 CPU 列表,供用户选择:

         choice 'ARM system type'
    "Anakin         CONFIG_ARCH_ANAKIN
     Archimedes/A5000    CONFIG_ARCH_ARCA5K
     Cirrus-CL-PS7500FE   CONFIG_ARCH_CLPS7500
      ……
     SA1100-based      CONFIG_ARCH_SA1100
     Shark         CONFIG_ARCH_SHARK" RiscPC

  Choice 首先显示 /prompt/,然后将 /word/ 分解成前后两个部分,前部分为对应选择的提示符,后部分是对应选择的配置变量。用户选择的配置变量为 y,其余的都为 n。

  6) if语句

        if [ /expr/ ] ; then
     /statement/
     ...
    fi
    
    if [ /expr/ ] ; then
     /statement/
     ...
    else
     /statement/
     ...
    fi

  if 语句对配置变量(或配置变量的组合)进行判断,并作出不同的处理。判断条件 /expr/ 可以是单个配置变量或字符串,也可以是带操作符的表达式。操作符有:=,!=,-o,-a 等。

  7) 菜单块(menu block)语句

mainmenu_option next_comment
comment '…..'

endmenu

  引入新的菜单。在向内核增加新的功能后,需要相应的增加新的菜单,并在新菜单下给出此项功能的配置选项。Comment 后带的注释就是新菜单的名称。所有归属于此菜单的配置选项语句都写在 comment 和 endmenu 之间。

  8) Source 语句

  source /word/

  /word/ 是文件名,source 的作用是调入新的文件。

  3.3 缺省配置

  Linux 内核支持非常多的硬件平台,对于具体的硬件平台而言,有些配置就是必需的,有些配置就不是必需的。另外,新增加功能的正常运行往往也需要一定的先决条件,针对新功能,必须作相应的配置。因此,特定硬件平台能够正常运行对应着一个最小的基本配置,这就是缺省配置。

Linux 内核中针对每个 ARCH 都会

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top