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

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

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

Kconfig作用

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

Kconfig語法

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

config

config <symbol>

<config options>

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

例如上圖中:

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

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

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

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

select:當(dāng)前選項選中后則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文件會根據(jù)這項配置選擇編譯該功能驅(qū)動。

menuconfig

menuconfig <symbol>

<config options>

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

choices

choice

<choice options>

<choice block>

endchoice

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

comment

comment <prompt>

<comment options>

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

例如:

menu

menu <prompt>

<menu options>

<menu block>

endmenu

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

如下圖,menu關(guān)鍵字之后是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 "
飛凌嵌入式

飛凌嵌入式

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

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

查看更多

相關(guān)推薦