STM32 Bootloader
The code for the PX4 bootloader is available from the Github Bootloader repository.
Supported Boards
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)
Building the Bootloader
After this step a range of elf files for all supported boards are present in the Bootloader directory.
Flashing the Bootloader
:::warning The right power sequence is critical for some boards to allow JTAG / SWD access. Follow these steps exactly as described. :::
The instructions below are valid for a Blackmagic / Dronecode probe. Other JTAG probes will need different but similar steps. Developers attempting to flash the bootloader should have the required knowledge. If you do not know how to do this you probably should reconsider if you really need to change anything about the bootloader.
The sequence is
Disconnect the JTAG cable
Connect the USB power cable
Connect the JTAG cable
Black Magic / Dronecode Probe
Using the right serial port
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
J-Link
These instructions are for the J-Link GDB server.
Prerequisites
Download the J-Link software from the Segger website and install it according to their instructions.
Run the JLink GDB server
The command below is used to run the server for flight controllers that use the STM32F427VI SoC:
The --device
/SoC for common targets is:
FMUv2, FMUv3, FMUv4, aerofc-v1, mindpx-v2: STM32F427VI
px4_fmu-v4pro: STM32F469II
px4_fmu-v5: STM32F765II
crazyflie: STM32F405RG
Connect GDB
Troubleshooting
If any of the commands above are not found, you are either not using a Blackmagic probe or its software is outdated. Upgrade the on-probe software first.
If this error message occurs:
Disconnect the target (while leaving JTAG connected) and run
This will disable target powering and attempt another flash cycle.
Last updated