!REDIRECT “https://docs.px4.io/master/zh/software_update/stm32_bootloader.html

STM32 Bootloader

PX4 引导加载程序的代码可从 Github Bootloader 存储库获得。

支持的飞控板

  • FMUv2 (Pixhawk 1, STM32F4)
  • FMUv3 (Pixhawk 2, STM32F4)
  • FMUv4 (Pixracer 3 and Pixhawk 3 Pro, STM32F4)
  • FMUv5 (Pixhawk 4, STM32F7)
  • TAPv1 (TBA, STM32F4)
  • ASCv1 (TBA, STM32F4)

构建 Bootloader

  1. git clone https://github.com/PX4/Bootloader.git
  2. cd Bootloader
  3. git submodule init
  4. git submodule update
  5. make

在此步骤之后,所有支持的主板的 elf 文件范围都出现在引导 Bootloader 目录中。

刷写 Bootloader

Warning The right power sequence is critical for some boards to allow JTAG / SWD access. 请完全按照所述步骤操作。

以下说明适用于 Blackmagic/Dronecode probe。 其他 JTAG 仿真器需要不同但相似的步骤。 试图刷新引导加载程序的开发人员应具备所需的知识。 如果您不知道如何执行此操作,您可能应该重新考虑是否确实需要更改引导加载程序的任何内容。

顺序为:

  1. 断开 JTAG 电缆的连接
  2. 连接 USB 电源线
  3. 连接 JTAG 电缆

黑魔法/无人机探测器

使用正确的串行端口

  • On LINUX: /dev/serial/by-id/usb-Black_Sphere_XXX-if00
  • On MAC OS: Make sure to use the cu.xxx port, not the tty.xxx port: tar ext /dev/tty.usbmodemDDEasdf
  1. arm-none-eabi-gdb
  2. (gdb) tar ext /dev/serial/by-id/usb-Black_Sphere_XXX-if00
  3. (gdb) mon swdp_scan
  4. (gdb) attach 1
  5. (gdb) mon option erase
  6. (gdb) mon erase_mass
  7. (gdb) load tapv1_bl.elf
  8. ...
  9. Transfer rate: 17 KB/sec, 828 bytes/write.
  10. (gdb) kill

J-Link

这些指令适用于 J-Link GDB server

系统必备组件

Download the J-Link software 并按照 Segger 网站的说明进行安装。

运行 JLink GDB 服务器

以下命令用于为使用 STM32F427VI SoC 的飞行控制器运行服务器:

  1. JLinkGDBServer -select USB=0 -device STM32F427VI -if SWD-DP -speed 20000

常见目标的 --device/SoC是:

  • FMUv2、FMUv3、FMUv4、aerofc-v1、mindpx-v2:STM32F427VI
  • px4_fmu-v4pro:STM32F469II
  • px4_fmu-v5: STM32F765II
  • crazyflie:STM32F405RG

连接 GDB

  1. arm-none-eabi-gdb
  2. (gdb) tar ext :2331
  3. (gdb) load aerofcv1_bl.elf

故障处理

如果找不到上述任何命令,则表示您未使用 Blackmagic 探针或其软件已过期。 首先更新 on-probe 软件。

If this error message occurs:

  1. Error erasing flash with vFlashErase packet

断开目标连接(同时保持 JTAG 连接)并运行

  1. mon tpwr disable
  2. swdp_scan
  3. attach 1
  4. load tapv1_bl.elf

这将禁用目标供电并尝试另一个闪光周期。