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,单选题中的默认值

 

5、发生的问题

 

 

 

 

 

 

 

 

你可能感兴趣的:(ESP32开发)