1、背景
事情搞到一半,又回頭搞這些東西,基礎沒打牢固,只能回頭看看。
1.1 資料
Kconfigs詳解-文件的基本要素**** https://www.cnblogs.com/jiangzhaowei/p/7528099.html
2、整體架構
3、Makefile 和component.mk
4、Kconfig 和 Kconfig.projbuild
分佈在各個級的Kconfig決定了內核要實現某一功能,每一步該怎麼走。每個Kconfig描述了所述目錄源文件中相關的配置菜單,即執行make menuconfig命令後產生的配置菜單。。配置菜單包含(連接)多層,每個層次都是由各個目錄中的Kconfig產生。配置工具讀取各個Kconfig文件,生成配置界面供開發人員配置,在配置菜單中配置整個應用的各項配置,根據需求,裁剪程序,最後把配置的結果保存到".config"的文件中。Documentation/kbuild/kconfig-language.txt
最後在make時,即執行Makefile時,根據.config的結果實現應用程序的編譯。
4.1 Kconfig文件的組成
Kconfig用來鏈接各個層的樹枝。
menu "HCI UART(H4) Options" //菜單條目
visible if BTDM_CONTROLLER_HCI_MODE_UART_H4
config BT_HCI_UART_NO
int "UART Number for HCI"
depends on BTDM_CONTROLLER_HCI_MODE_UART_H4
range 1 2
default 1
help
Uart number for HCI. The available uart is UART1 and UART2.
config BT_HCI_UART_BAUDRATE
int "UART Baudrate for HCI"
depends on BTDM_CONTROLLER_HCI_MODE_UART_H4
range 115200 921600
default 921600
help
UART Baudrate for HCI. Please use standard baudrate.
endmenu //菜單條目結束
寫各層條目,有配對的一定配對寫。
4.1.1 menu條目
menu條目用於生成菜單。
menu
.......
endmenu
menu 之後是菜單名,用雙引號""擴起來,menu和endmenu間有很多config條目。
4.1.2 config條目
config是關鍵詞,表示一個配置選項的開始。例子中緊跟在config後的 BT_HCI_UART_NO和BT_HCI_UART_BAUDRATE項 是配置選項的名稱。
第二行表示變量類型,即配置選項的類型。共有5中類型:bool、tristate(三態)、string、hex、int。
提一提tristate類型,三態指的是n/m/y(移除/模塊/內建)
bool類型的值:y和n
類型後的字符串如"UART Number for HCI",是在菜單中顯示做提示用,可以在上下移動光標選中,修改它的配置。
第三行可以添加depends on,表示依賴關係,depends on BTDM_CONTROLLER_HCI_MODE_UART_H4,表示只有當BTDM_CONTROLLER_HCI_MODE_UART_H4配置選項選中時,當前配置選型纔會出現,才能設置當前配置選項
4.1.3 choice條目
用途1:choice條目將多個類似的配置選項組合在一起,供用戶單選或多選。
choice BTDM_MODEM_SLEEP_MODE
prompt "Bluetooth Modem sleep mode"
depends on BTDM_CONTROLLER_MODEM_SLEEP
help
To select which strategy to use for modem sleep
config BTDM_MODEM_SLEEP_MODE_ORIG
bool "ORIG Mode(sleep with low power clock)"
help
ORIG mode is a deep sleep mode that can be used for dual mode controller. In this mode, bluetooth controller sleeps between BR/EDR frames and BLE events. A low power clock is used to maintain bluetooth reference clock.
config BTDM_MODEM_SLEEP_MODE_EVED
bool "EVED Mode "
help
This mode is for BLE only.
endchoice
choice
......
endchoice
例子中的prompt "Bluetooth Modem sleep mode"給出了在菜單欄提示信息,光標選中它回車進入可以看見多個config條目定義的配置選項。
注意:在choice條目中定義的變量只有bool或tristate,類比單選框、多選框。
用途2 choice的默認值&依賴
在choice下添加 default NODISPLAY_OSD_STYLE_FORMAL,單選題中的默認值