Skip to content

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_PUBLISHERUAVCAN_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

Kconfiglibmenuconfigkconfiglib Python 包的一部分,通过常规的 ubuntu.sh 安装脚本即可安装。

如果未安装 kconfiglib,可以使用以下命令进行安装:pip3 install kconfiglib

命令行界面和图形用户界面如下所示。

menuconfig 命令行界面

menuconfig 图形用户界面