1. 程式人生 > >Linux核心移植 -- Kconfig

Linux核心移植 -- Kconfig

1 Kconfig的作用

在核心開發中我們在配置核心時,執行指令

make menuconfig

看到的配置介面,就是通過Kbuild-language讀取總目錄下的Kconfig語句生成的配置畫面,因此在配置核心時,瞭解Kconfig語法級顯得尤其重要

linux-xx-xx/Kconfig	核心的Kconfig總目錄
uboot/Kconfig		U-boot中Kconfig總目錄

Kconfig的語法可以參見linux官方的參考文件

/Docunmentation/kbuild/kconfig-language.txt

2 Kconfig語法詳解

config條目

 config TMPFS_POSIX_ACL
 	bool "Tmpfs POSIX Access Control Lists"
 	depends on TMPFS
 	select GENERIC_ACL

  • config是關鍵字,表示一個配置選項的開始;緊跟著的TMPFS_POSIX_ACL是配置選項的名稱,省略了字首"CONFIG_"

  • bool表示變數型別,即"CONFIG_ TMPFS_POSIX_ACL "的型別,有5種類型:bool、tristate、string、hex和int,其中tristate和string是基本的型別。

     	 bool變數的值:    y和n
    
          	 tristate變數的值:y、n和m
    
          	 string變數的值:  字串
    
     bool之後的字串“Tmpfs POSIX Access Control Lists”是提示資訊(在上面的配置介面中就是通過它來識別CONFIG_TMPFS_POSIX_ACL),在配置介面中上下移動游標選中它時,就可以通過按空格或回車鍵來設定CONFIG_ TMPFS_POSIX_ACL的值(即選擇了哪個值就會把該值賦值給CONFIG_TMPFS_POSIX_ACL)
    
  • depends on:表示依賴於XXX,“depends on TMPFS”表示只有當TMPFS配置選項被選中時,當前配置選項的提示資訊才會出現,才能設定當前配置選項

  • select:是反向依賴關係的意思,即當前配置選項被選中,則GENERIC_ACL就會被選中。

menu條目

menu條目用於生成選單,其格式如下:

menu "Floating point emulation"

         config FPE_NWFPE

         ..............

         config FPE_NWFPE_XP

         .............

         endmenu

menu之後的Floating poing emulation是選單名。menu和endmenu間有很多config條目,在配置介面中如下所示:

其中Floating point emulation就是選單名,然後進入這個選單有 FPE_NWFPE、FPE_NWFPE_XP…等config條目選擇

     Floating point emulation--->

                   [] FPE_NWFPE

                   [] FPE_NWFPE_XP

choice條目

choice條目將多個類似的配置選項組合在一起,供使用者單選或多選,這不同於menu條目

choice

             prompt "ARM system type"
             default ARCH_VERSATILE
            config ARCH_AAEC2000
             .........
             config ARCH_REALVIEW
              .........
       endchoice

prompt "ARM system type"給出提示資訊“ARM system type”,游標選中後回車進入就可以看到多個config條目定義的配置選項

 choice條目中定義的變數只有bool和tristate

comment條目

comment條目用於定義一些幫助資訊,出現在介面的第一行,如在arch/arm/Kconifg中有如下程式碼:

menu "Floating point emulation"                                                                                        
comment "At least one emulation must be selected"                                                                                             config FPE_NWFPE
.........                                                                               
config FPE_NWFPE_XP

source條目

source條目用於讀取另一個Kconfig檔案,如:

 source "net/Kconifg"