• 正文
    • Kconfig作用
    • Kconfig語法
  • 相關推薦
申請入駐 產業(yè)圖譜

飛凌嵌入式ElfBoard ELF 1板卡-Linux內核移植之Kconfig介紹

01/04 09:50
792
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

Kconfig作用

之前章節(jié)中,講解了使用make menuconfig圖形化界面來配置內核,而界面中這些選項菜單列表主要是由arch/arm/下Kconfig輸出給menuconfig工具。我們將一個新的驅動程序添加進內核,只需要我們按照一定的格式將此驅動信息添加進該驅動所屬的Kconfig中,menuconfig工具就可以識別到這種格式,并將新的驅動信息呈現(xiàn)到配置選項菜單列表中,下面簡單講解一下Kconfig語法規(guī)則。

Kconfig語法

Kconfig文件描述了菜單選項,每行都是以關鍵字開頭,我們逐一解釋關鍵字意義:

config

config <symbol>

<config options>

config是關鍵字,表示一個配置選項的開始;緊跟著的<symbol>是配置選項的名稱。

例如上圖中:

config是關鍵字,緊跟著的VXLAN是配置選項的名稱,其實省略了前綴"CONFIG_"

tristate表示變量類型,即"CONFIG_VXLAN"的類型,有5種類型:bool,tristate,string,hex和int,其中bool類型變量的值:y和n;tristate類型變量的值:y,n和m;string變量的值:字符串;hex類型變量的值:是一個十六進制的數(shù)據;int類型變量的值:是一個整型的數(shù)據。

tristate之后的字符串“Virtual eXtensible Local Area Network (VXLAN)”是提示信息,在配置界面中上下移動光標選中它時,就可以通過按空格或回車鍵來設置CONFIG_VXLAN的值。

depends on:表示依賴于XXX,“depends on IENT”表示只有當IENT配置選項被選中時,當前配置選項的提示信息才會出現(xiàn),才能設置當前配置選項。

select:當前選項選中后則select后指定的選項自動被選擇。

比如我們在圖形界面中選中CONFIG_VXLAN這一項,CONFIG_VXLAN類型為tristate,所以可通過空格選擇此項是y,n,m:

然后在.config文件中就多出一項:

#CONFIG_NET_TEAM is not set

#CONFIG_MACVLAN is not set

#CONFIG_IPVLAN is not set

#CONFIG_VXLAN = y

#CONFIG_NETCONSOLE is not set

Makefile文件會根據這項配置選擇編譯該功能驅動。

menuconfig

menuconfig <symbol>

<config options>

此關鍵字是一個菜單名稱,該菜單名下有一系列的配置選項,只有選中該菜單項后,才會呈現(xiàn)該菜單下的配置選項。例如下圖,使用if/endif語句判斷NEW_LEDS選項是否被選中,如果被選中,則會出現(xiàn)LEDS_CLASS,LEDS_CLASS_FLASH等配置選項。

choices

choice

<choice options>

<choice block>

endchoice

該關鍵字定義了一組配置選擇項,用戶只能在這些配置項中選擇一項。比如,RTC支持多種型號時鐘芯片,我們只能選擇其中一種:

comment

comment <prompt>

<comment options>

這里定義了在配置過程中顯示給用戶的提示信息。

例如:

menu

menu <prompt>

<menu options>

<menu block>

endmenu

這里定義了一個簡單的菜單名,與menuconfig關鍵字的菜單名不同,menuconfig關鍵字的菜單名自身可配置,menu關鍵字的菜單名不可配置。

如下圖,menu關鍵字之后是USB HID support菜單名。

source

source用于引用讀取其他目錄中Kconfig文件,如:

menu " Device Drivers "

source " drivers/amba/Kconfig "

source " drivers/base/Kconfig "

source " drivers/bus/Kconfig "

source " drivers/connector/Kconfig "

source " drivers/mtd/Kconfig "

source " drivers/of/Kconfig "

source " drivers/parport / Kconfig "

source " drivers/pnp/Kconfig "

source " drivers/block/Kconfig "
飛凌嵌入式

飛凌嵌入式

保定飛凌嵌入式技術有限公司,創(chuàng)建于2006年,是一家專注嵌入式核心控制系統(tǒng)研發(fā)、設計和生產的高新技術企業(yè),是國內較早專業(yè)從事嵌入式技術的企業(yè)之一。 經過十幾年的發(fā)展與積累,公司擁有業(yè)內優(yōu)秀的軟硬件研發(fā)團隊,在北京及保定建立兩大研發(fā)基地,在蘇州、深圳設有華東、華南技術服務中心,并在北美、歐洲以及亞太等其他國家和地區(qū)擁有國際業(yè)務網絡。公司研發(fā)的智能設備核心平臺廣泛應用于物聯(lián)網、工控、軌道交通、醫(yī)療、電力、商業(yè)電子、智能家居、安防、機器人、環(huán)境監(jiān)測等諸多領域。

保定飛凌嵌入式技術有限公司,創(chuàng)建于2006年,是一家專注嵌入式核心控制系統(tǒng)研發(fā)、設計和生產的高新技術企業(yè),是國內較早專業(yè)從事嵌入式技術的企業(yè)之一。 經過十幾年的發(fā)展與積累,公司擁有業(yè)內優(yōu)秀的軟硬件研發(fā)團隊,在北京及保定建立兩大研發(fā)基地,在蘇州、深圳設有華東、華南技術服務中心,并在北美、歐洲以及亞太等其他國家和地區(qū)擁有國際業(yè)務網絡。公司研發(fā)的智能設備核心平臺廣泛應用于物聯(lián)網、工控、軌道交通、醫(yī)療、電力、商業(yè)電子、智能家居、安防、機器人、環(huán)境監(jiān)測等諸多領域。收起

查看更多

相關推薦