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、发生的问题