# NuttX 板移植指南
要将 NuttX 上的 PX4 移植到新的硬件目标,该硬件目标必须得到 NuttX 的支持。NuttX 项目维护着一个出色的 移植指南 (打开新窗口) 用于将 NuttX 移植到新的计算平台。
以下指南假定您使用的是已受支持的硬件目标机或已将 NuttX(包括 PX4 基础层 (打开新窗口))了。
所有电路板的配置文件,包括链接器脚本和其他必要设置,都位于 /板 (打开新窗口) 在供应商和电路板特定的目录中(即 板/供应商/型号/)).
下面的示例使用的是 FMUv5,因为它是最近的版本。 参考配置 用于基于 NuttX 的飞行控制器:
- 跑步
make px4_fmu-v5_default
从 PX4-自动驾驶仪 目录下创建 FMUv5 配置 - FMUv5 基本配置文件位于 /boards/px4/fmu-v5 (打开新窗口).
- 电路板专用针座(NuttX 引脚和时钟配置): /boards/px4/fmu-v5/nuttx-config/include/board.h (打开新窗口).
- 电路板专用接头(PX4 配置): /boards/px4/fmu-v5/src/board_config.h (打开新窗口).
- NuttX 操作系统配置(使用 NuttX menuconfig 创建): /boards/px4/fmu-v5/nuttx-config/nsh/defconfig (打开新窗口).
- 构建配置: boards/px4/fmu-v5/default.px4boards (打开新窗口).
# NuttX Menuconfig 设置
要修改 NuttX 操作系统的配置,可以使用 菜单 (打开新窗口) 使用 PX4 快捷键:
生产 px4_fmu-v5_default menuconfig
生产 px4_fmu-v5_default qconfig
在 Ubuntu 上重新安装 PX4 时,使用 ubuntu.sh (打开新窗口) 您还需要安装 kconfig 工具 NuttX 工具 (打开新窗口).
备注
如果使用 px4-dev-nuttx (打开新窗口) docker 容器,或使用我们的正常说明安装到 macOS(因为这些说明包括kconfig-mconf
).
从任意目录运行以下命令:
Git 克隆 https://bitbucket.org/nuttx/tools.git
CD tools/kconfig-frontends
苏都 适切 安装 gperf ./configure --enable-mconf --disable-nconf --disable-gconf --enable-qconf --prefix=/usr
生产
苏都 生产 安装
--prefix=/usr
确定具体的安装位置(必须在 路径
环境变量)。环境变量 --启用--配置
和 --启用--qconf
选项将启用 菜单
和 qconfig
选项。
运行 qconfig
您可能需要安装其他 Qt 依赖项。
# 启动程序
首先,您需要一个引导加载程序,这取决于硬件目标:
- STM32H7:引导加载程序基于 NuttX,包含在 PX4 固件中。参见 这里 (打开新窗口) 为例。
- 对于所有其他目标,https://github.com/PX4/Bootloader。参见 这里 (打开新窗口) 以了解如何添加新目标。然后查看 建筑和闪光说明.
# 固件移植步骤
- 确保您的 开发设置 并安装了 NuttX menuconfig 工具(见上文)。
- 下载源代码并确保可以构建现有目标:
Git clone --recursive https://github.com/PX4/PX4-Autopilot.git CD PX4-自动驾驶仪 生产 px4_fmu-v5
- 查找使用相同(或密切相关)CPU 类型的现有目标,然后复制它。例如 STM32F7:改变 生产商 到制造商名称和 我的目标-v1 到您的板名。
mkdir 板/制造商 cp -r boards/px4/fmu-v5 boards/manufacturer/my-target-v1
接下来,您需要查看 板/制造商/我的目标-V1 并根据电路板进行更新。
- 固件原型更新板 ID 和名称
- default.px4board:更新 供应商 和 型号 以匹配目录名称 (我的目标-v1).配置串行端口。
- 配置 NuttX (定义通过
make manufacturer_my-target-v1 menuconfig
:调整 CPU 和芯片,配置外设(UART、SPI、I2C、ADC)。 - nuttx-config/include/board.h:配置 NuttX 引脚。对于所有具有多个引脚选项的外设,NuttX 需要知道引脚。它们在芯片特定的引脚映射头文件中定义,例如 stm32f74xx75xx_pinmap.h (打开新窗口).
- 来源文件:查看 来源 并根据需要进行更新,特别是 board_config.h.
- init/rc.board_sensors:启动连接到电路板上的传感器。