Skip to content

STM32 引导加载程序

PX4 引导加载程序的代码可从 Github 的 引导加载程序 代码仓库获取。

支持的飞行控制板

  • FMUv2(Pixhawk 1,STM32F4 芯片)
  • FMUv3(Pixhawk 2,STM32F4 芯片)
  • FMUv4(Pixracer 3 和 Pixhawk 3 Pro,STM32F4 芯片)
  • FMUv5(Pixhawk 4,STM32F7 芯片)
  • TAPv1(待定,STM32F4 芯片)
  • ASCv1(待定,STM32F4 芯片)

构建引导加载程序

sh
git clone https://github.com/PX4/Bootloader.git
cd Bootloader
git submodule init
git submodule update
make

在此步骤之后,所有支持的主板对应的 elf 文件都会出现在引导加载程序目录中。

刷写引导加载程序

:::警告 对于某些主板,正确的供电顺序对于实现 JTAG / SWD 访问至关重要。其他 JTAG 仿真器需要不同但类似的步骤。 :::

以下说明适用于 Blackmagic / Dronecode 探针。 其他 JTAG 探针将需要不同但类似的步骤。 尝试刷写引导加载程序的开发人员应具备所需的知识。 如果您不知道如何操作,或许应该重新考虑是否真的需要对引导加载程序进行任何更改。

这些指令适用于 J-Link GDB 服务器

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

黑魔法/无人机探测器

使用正确的串行端口

  • 在 LINUX 系统上:/dev/serial/by-id/usb-Black_Sphere_XXX-if00
  • 在 MAC OS 系统上:确保使用 cu.xxx 端口,而不是 tty.xxx 端口:tar ext /dev/tty.usbmodemDDEasdf
sh
arm-none-eabi-gdb
  (gdb) tar ext /dev/serial/by-id/usb-Black_Sphere_XXX-if00
  (gdb) mon swdp_scan
  (gdb) attach 1
  (gdb) mon option erase
  (gdb) mon erase_mass
  (gdb) load tapv1_bl.elf
        ...
        传输速率:17 KB/秒,每次写入 828 字节。
  (gdb) kill

这些说明适用于 J-Link GDB 服务器

系统必备组件

从 Segger 网站 下载 J-Link 软件 ,并按照其说明进行安装。

常见目标的 --device/片上系统(SoC)是:

sh
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

sh
arm-none-eabi-gdb
  (gdb) tar ext :2331
  (gdb) load aerofcv1_bl.elf

故障处理

如果找不到上述任何命令,那么您要么没有使用 Blackmagic 探针,要么其软件已过时。 请先升级探针上的软件。

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

使用 vFlashErase 数据包擦除闪存时出错

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

sh
mon tpwr disable
swdp_scan
attach 1
load tapv1_bl.elf

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