PX4 板卡配置(Kconfig)
PX4 自动驾驶仪固件可以在构建时进行配置,使其适用于特定的应用场景(固定翼飞机、多旋翼飞行器、无人车等),启用新的实验性功能(如 Cyphal),或者通过禁用某些驱动程序和子系统来节省闪存和随机存取存储器(RAM)的使用量。
这种配置是通过 Kconfig 来处理的,它与 NuttX 使用的配置系统相同。
配置选项(在 kconfig 语言中通常称为“符号”)在 /src 目录下的 Kconfig
文件中定义。
PX4 Kconfig 符号命名约定
按照惯例,模块/驱动程序的符号是根据模块文件夹路径来命名的。
例如,位于 src/drivers/adc/board_adc
的模数转换器(ADC)驱动程序的符号必须命名为 DRIVERS_ADC_BOARD_ADC
。
要为驱动程序/模块的特定选项添加符号,命名约定是模块名称后跟选项名称。
例如,UAVCAN_V1_GNSS_PUBLISHER
是 UAVCAN_V1
模块的一个选项 GNSS_PUBLISHER
。
这些选项必须放在 if
语句后面进行条件判断,以确保只有在模块本身被启用时,这些选项才会显示。
完整示例:
menuconfig DRIVERS_UAVCAN_V1
bool "UAVCANv1"
default n
---help---
启用对 UAVCANv1 的支持
if DRIVERS_UAVCAN_V1
config UAVCAN_V1_GNSS_PUBLISHER
bool "GNSS 发布器"
default n
endif #DRIVERS_UAVCAN_V1
INFO
在 *.px4board
配置文件中,构建过程会默默忽略任何缺失或拼写错误的模块。
PX4 Kconfig 标签继承
每个 PX4 板卡必须有一个 default.px4board
配置文件,并且可以有一个可选的 bootloader.px4board
配置文件。
不过,你也可以在不同的标签下添加单独的配置文件,例如 cyphal.px4board
。
请注意,默认情况下,cyphal.px4board
的配置会继承 default.px4board
中设置的所有参数。
在修改 cyphal.px4board
时,它只会存储与 default.px4board
中不同的 Kconfig 键的差异部分,这对于简化配置管理很有用。
INFO
当在 default.px4board
中修改一个 Kconfig 键时,在同一板卡的所有派生配置中,如果这些配置原本具有相同的设置,那么该键也会被修改。
PX4 Menuconfig 设置
menuconfig 工具用于修改 PX4 板卡的配置,添加/删除模块、驱动程序和其他功能。
它有命令行和图形用户界面(GUI)两种变体,都可以使用 PX4 构建快捷方式来启动:
make px4_fmu-v5_default boardconfig
make px4_fmu-v5_default boardguiconfig
INFO
Kconfiglib 和 menuconfig 是 kconfiglib Python 包的一部分,通过常规的 ubuntu.sh 安装脚本即可安装。
如果未安装 kconfiglib,可以使用以下命令进行安装:pip3 install kconfiglib
命令行界面和图形用户界面如下所示。