Kconfig文件是各種配置界面的源文件,在bsp目錄下使用env工具執(zhí)行menuconfig命令調(diào)出的系統(tǒng)配置界面,就是通過讀取當(dāng)前bsp目錄下的Kconfig文件來生成的配置界面,這個(gè)文件是所有配置的總?cè)肟?。不同層?jí)目錄下的Kconfig文件可以通過這個(gè)入口包含到配置界面上來,配置工具通過讀取各個(gè)目錄下的Kconfig文件,從而生成配置界面供開發(fā)人員配置系統(tǒng),最終生成RT-Thread系統(tǒng)的配置文件rtconfig.h。所以詳細(xì)學(xué)習(xí)一下Kconfig的語(yǔ)法還是至關(guān)重要的,前面我們?cè)贐SP制作的時(shí)候,已經(jīng)簡(jiǎn)單使用過Kconfig文件,就從這里入手開始詳細(xì)學(xué)習(xí)。

config語(yǔ)句
一個(gè)config語(yǔ)句定義一組新的配置選項(xiàng),代碼對(duì)應(yīng)界面內(nèi)容,示例如下:

語(yǔ)句主要包括以下幾部分:類型,輸入提示,依賴關(guān)系,默認(rèn)值,幫助信息

類型:每個(gè)config菜單項(xiàng)都要有類型定義,變量共有五種類型:bool,tristate(三態(tài)),string,hex,int
反向依賴關(guān)系:select語(yǔ)句表示反向依賴關(guān)系,即當(dāng)前配置選項(xiàng)被選中
默認(rèn)值:表示當(dāng)前配置選項(xiàng)的默認(rèn)值,很好理解
通過以上語(yǔ)句配置之后,最終就會(huì)在rtconfig.h文件中生成如下兩個(gè)宏:
#define RT_USING_PIN
#define BSP_USING_GPIO
特別說明:其中tristate類型的取值范圍值y,n和m,分別代表不選中,選中直接編譯進(jìn)內(nèi)核,手動(dòng)添加驅(qū)動(dòng),其使用方法和bool類型相似。
menu語(yǔ)句
menu語(yǔ)句用于生成菜單,使用menu和endmenu定義一個(gè)菜單,其中可以包含很多條config語(yǔ)句。這個(gè)很簡(jiǎn)單,不做詳細(xì)展開。
if/endif語(yǔ)句
用于定義條件判斷語(yǔ)句,通過判斷一個(gè)標(biāo)志,來決定是否顯示某個(gè)配置項(xiàng)。
menuconfig語(yǔ)句
表示帶菜單的配置項(xiàng),menuconfig語(yǔ)句和config語(yǔ)句相似,但它在config的基礎(chǔ)上要求所有的子選項(xiàng)作為獨(dú)立的行顯示。用depends on表示依賴某個(gè)配置選項(xiàng)。
choice/endchoice語(yǔ)句
將多個(gè)類似的配置選項(xiàng)組合在一起,供用戶選擇一組配置項(xiàng)。用prompt給出提示信息,作為彈出框的標(biāo)題,在一組choice語(yǔ)句中,可以給出多個(gè)配置項(xiàng)供選擇,但是在配置界面只能選擇一個(gè)配置項(xiàng),相當(dāng)于是一個(gè)單選框。
comment語(yǔ)句
comment 語(yǔ)句出現(xiàn)在界面的第一行,用于定義一些提示信息。
source語(yǔ)句
用于讀取另一個(gè)文件中的 Kconfig 文件