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 服务器。
- 断开 JTAG 电缆的连接
- 连接 USB 电源线
- 连接 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
这些说明适用于 J-Link GDB 服务器。
系统必备组件
从 Segger 网站 下载 J-Link 软件 ,并按照其说明进行安装。
运行 JLink GDB 服务器
常见目标的 --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
这将禁用目标供电并尝试另一个闪存写入周期。