##### Page tree
Go to start of banner

If you want to upload a flat binary, it needs to be converted to an ELF first. In order to do that, use this script: https://gist.github.com/pavel-kirienko/6835194423df07f6160af19f7ea33a4d

Now you have your ELF. To upload it, start a GDB client and pass the path to the ELF as a command line argument. For example:

arm-none-eabi-gdb firmware.elf

Then, execute the following in the GDB's internal command line:

tar ext /dev/ttyACM0    # Or another port
mon swdp_scan
attach 1
load

You can use the following script to automate the process:

#!/bin/bash

PORT="$1" elf="$2"

arm-none-eabi-size $elf || exit 1 tmpfile=.blackmagic_gdb.tmp cat >$tmpfile <<EOF
target extended-remote $PORT mon swdp_scan attach 1 load kill EOF arm-none-eabi-gdb$elf --batch -x $tmpfile rm -f$tmpfile

Invoke it as follows:

upload.sh /dev/ttyACM0 firmware.elf