# 启动程序更新

PX4 引导加载程序 用于为 Pixhawk 电路板 (PX4FMU、PX4IO)。

Pixhawk 控制器通常预装了适当版本的引导加载程序。但在某些情况下,它并不存在,或者存在需要更新的旧版本。

本主题介绍更新 Pixhawk 引导加载程序的几种方法。

备注

您可能需要更新安装 FMUv2 固件的 Pixhawk 板卡: 固件 > FMUv2 引导加载程序更新.

# 构建 PX4 引导加载程序

从 FMUv6X (STM32H7) 开始的电路板使用树内 PX4 引导加载程序。

可在 PX4-Autopilot 文件夹中使用 生产 命令和特定于板卡的目标 _bootloader 后缀。对于 FMUv6X,命令为

make px4_fmu-v6x_bootloader

这将构建引导加载程序二进制文件,即 build/px4_fmu-v6x_bootloader/px4_fmu-v6x_bootloader.elf它可以通过 SWD 或 DFU 闪存。如果您正在构建引导加载程序,那么您应该已经熟悉这些选项中的一种。

如果需要 HEX 文件而不是 ELF 文件,请使用 objcopy:

arm-none-eabi-objcopy -O ihex build/px4_fmu-v6x_bootloader/px4_fmu-v6x_bootloader.elf px4_fmu-v6x_bootloader.hex

# 构建传统 PX4 引导加载程序

直到 FMUv5X 的 PX4 板(STM32H7 之前)都使用传统的 PX4 引导加载程序 (打开新窗口) 存放处。

请参阅 README 中的说明,了解如何使用它。

# QGC 引导加载程序更新

最简单的方法是首先使用 QGroundControl 以安装包含所需/最新引导加载程序的固件。然后,您可以通过设置参数在下次重启时启动引导加载程序更新: SYS_BL_UPDATE.

备注

这种方法只能在以下情况下使用 SYS_BL_UPDATE 存在于固件中(目前只有 FMUv2 和一些定制固件)。

步骤如下

  1. 插入 SD 卡(启用启动日志以调试任何问题)。

  2. 更新固件 包含新的/所需的引导加载程序的映像。

    备注

    更新的引导加载程序可能在定制固件中提供(即开发团队提供),也可能包含在最新的主程序中。

  3. 等待载具重新启动。

  4. 查找并启用 参数 SYS_BL_UPDATE.

  5. 重新启动(断开/重新连接电路板)。更新引导加载程序只需几秒钟。

一般来说,此时您可能需要 更新固件 再次使用正确/新安装的启动加载程序。

更新 FMUv2 引导加载程序的具体过程示例如下。

# FMUv2 引导加载程序更新

如果 QGroundControl 如果您安装了 FMUv2 目标机(请参阅安装过程中的控制台),并且使用的是较新的板,则可能需要更新引导加载程序,以便访问飞行控制器上的所有内存。

备注

早期 FMUv2 Pixhawk 系列 飞行控制人员有 硬件问题 该问题在更新的电路板上已经解决,但您可能需要更新出厂时提供的引导加载程序,以便安装 FMUv3 固件并访问全部 2MB 可用内存。这个问题在较新的电路板上得到了解决,但您可能需要更新出厂时提供的引导加载程序,以便安装 FMUv3 固件并访问全部 2MB 可用内存。

更新引导加载程序

  1. 插入 SD 卡(启用启动日志以调试任何问题)。

  2. 更新固件 至 PX4 版本(更新固件时,请检查 高级设置 然后选择 开发人员构建(主版本) 从下拉列表中选择)。 QGroundControl 将自动检测硬件是否支持 FMUv2,并安装相应的固件。

    FMUv2 更新

    等待载具重新启动。

  3. 查找并启用 参数 SYS_BL_UPDATE.

  4. 重新启动(断开/重新连接电路板)。更新引导加载程序只需几秒钟。

  5. 那么 更新固件 又来了这一次 QGroundControl 将自动检测硬件为 FMUv3,并适当更新固件。

    FMUv3 更新

    备注

    如果硬件具有 硅勘误表 在这种情况下,您将无法安装 FMUv3 硬件。在这种情况下,您将无法安装 FMUv3 硬件。

# Dronecode 探针引导加载程序更新

以下步骤说明了如何使用 dronecode 探头手动更新引导加载程序:

  1. 获取包含引导加载程序的二进制文件(从开发团队获取或自行构建)。

  2. 通过 USB 将 Dronecode 探头连接到电脑。

  3. 进入包含二进制文件的目录,在终端运行以下命令:

    arm-none-eabi-gdb px4fmuv5_bl.elf
    
  4. gdb 终端 出现,并显示以下输出:

    GNU gdb (GNU 工具 对于 Arm 嵌入式处理器 7-2017-Q4-主要) 8.0.50.20171128-git 版权所有 (C) 2017 自由软件基金会许可证 GPLv3+:GNU GPL 版本 3 或更晚 <;http://gnu.org/licenses/gpl.html>;
    这是 免费的 软件:您是 免费的 更改和重新分发。在法律允许的范围内,不作任何担保。类型 "显示复制";"显示保修"; 对于 详情该 GDB 配置为 "--host=x86_64-linux-gnu --target=arm-none-eabi".
    类型 "显示配置"; 对于 配置详情。有关错误报告说明,请参阅:
    <;http://www.gnu.org/software/gdb/bugs/>;.在线查找 GDB 手册和其他文档资源,请访问
    <;http://www.gnu.org/software/gdb/documentation/>;.寻求帮助、 类型 帮助";.
    类型 quot;恰当的词"; 搜索 对于 相关的命令 "单词";...从 px4fmuv5_bl.elf 读取符号...完成。
    
  5. 查找您的 <dronecode-probe-id>; 通过在 /dev/serial/by-id 目录。

  6. 现在用以下命令连接 Dronecode 探头:

    卷烟 ext /dev/serial/by-id/<;dronecode-probe-id>;
    
  7. 用另一根 USB 电缆接通 Pixhawk 的电源,将 Dronecode 探头连接到 FMU-DEBUG 端口。

    备注

    要将 Dronecode 探头连接到 FMU-DEBUG 端口,可能需要卸下外壳(例如,在 Pixhawk 4 上,需要使用 T6 梅花螺丝刀)。

  8. 使用以下命令扫描 Pixhawk 的 swd 并与其连接:

    (gdb) MON SWDP_SCAN
    (gdb) 缚上 1
    
  9. 将二进制文件加载到 Pixhawk 中:

    (gdb) 负荷
    

更新引导加载程序后,您可以 加载 PX4 固件 使用 QGroundControl.

# 其他电路板(非 Pixhawk)

不属于 Pixhawk 系列 它们将有自己的引导程序更新机制。

对于预闪存了 Betaflight 的电路板,请参见 在 Betaflight 系统上刷新引导加载程序.