Skip to content

机架参考

为了将基于 Nuttx 的 PX4 移植到新的硬件平台上,Nuttx 必须支持该硬件平台。 NuttX 项目维护着一份优秀的移植指南,用于将 NuttX 移植到新的计算平台。

以下指南假定您正在使用已受支持的硬件目标,或者已经移植了 NuttX(包括 PX4 基础层)。

所有板卡的配置文件,包括链接脚本和其他必需的设置,都位于 /boards 目录下特定厂商和板卡的目录中(即 boards/VENDOR/MODEL/)。

以下示例使用 FMUv5,因为它是基于 NuttX 的飞行控制器的最新参考配置

NuttX Menuconfig 设置

要修改 NuttX 操作系统的配置,您可以使用 menuconfig,通过 PX4 的快捷方式:

sh
make px4_fmu-v5_default menuconfig
make px4_fmu-v5_default qconfig

对于使用 ubuntu.sh 在 Ubuntu 上全新安装 PX4 的情况,您还需要从 NuttX 工具 安装 kconfig 工具。

INFO

如果使用 px4-dev-nuttx Docker 容器,或者按照我们的常规说明安装到 macOS 上(因为这些安装方式包含 kconfig-mconf),则不需要执行以下步骤。

从任意目录运行以下命令:

sh
git clone https://bitbucket.org/nuttx/tools.git
cd tools/kconfig-frontends
sudo apt install gperf
./configure --enable-mconf --disable-nconf --disable-gconf --enable-qconf --prefix=/usr
make
sudo make install

--prefix=/usr 确定了具体的安装位置(该位置必须在 PATH 环境变量中)。 --enable-mconf--enable-qconf 选项将分别启用 menuconfigqconfig 选项。

要运行 qconfig,您可能需要安装额外的 Qt 依赖项。

引导加载程序

首先,您需要一个引导加载程序,这取决于硬件目标:

固件移植步骤

  1. 确保您有一个可用的开发设置,并安装了 NuttX menuconfig 工具(见上文)。

  2. 下载源代码,并确保您可以构建一个现有的目标:

    sh
    git clone --recursive https://github.com/PX4/PX4-Autopilot.git
    cd PX4-Autopilot
    make px4_fmu-v5
  3. 找到一个使用相同(或密切相关)CPU 类型的现有目标并复制它。 例如,对于 STM32F7:

    sh
    mkdir boards/manufacturer
    cp -r boards/px4/fmu-v5 boards/manufacturer/my-target-v1

    manufacturer 替换为制造商名称,将 my-target-v1 替换为您的板卡名称。

接下来,您需要遍历 boards/manufacturer/my-target-v1 下的所有文件,并根据您的板卡进行更新。

  1. firmware.prototype:更新板卡 ID 和名称。
  2. default.px4board:更新 VENDORMODEL,使其与目录名称(my-target-v1)匹配。 配置串行端口。
  3. 通过 make manufacturer_my-target-v1 menuconfig 配置 NuttX(defconfig):调整 CPU 和芯片,配置外围设备(UART、SPI、I2C、ADC)。
  4. nuttx-config/include/board.h:配置 NuttX 引脚。 对于所有具有多个引脚选项的外围设备,NuttX 需要知道具体的引脚。 它们在特定芯片的引脚映射头文件中定义,例如 stm32f74xx75xx_pinmap.h
  5. src:遍历 src 下的所有文件,并根据需要进行更新,特别是 board_config.h
  6. init/rc.board_sensors:启动连接到板卡的传感器。