ESP32 系統架構+KConfig+component.mk

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,單選題中的默認值

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章