#!/bin/bash set -e set -o pipefail unset elf unset hex unset cfg unset openocd unset jlink unset gdb while [[ "$1" != "" ]] do case "$1" in --elf) elf="$2"; shift 2;; --hex) hex="$2"; shift 2;; --openocd) openocd="$2"; shift 2;; --openocd-config) cfg="$2"; shift 2;; --jlink) jlink="$2"; shift 2;; --gdb) gdb="$2"; shift 2;; *) echo "$0: Unknown argument $1"; exit 1;; esac done if [ "$elf" == "" -a "$hex" == "" ] then echo "$0: --elf or --hex is required" >&2 exit 1 fi export GDB_PORT=3333 if [ "$jlink" != "" ] then echo -e "loadfile $hex\nrnh\nexit" | $jlink -device FE310 -if JTAG -speed 4000 -jtagconf -1,-1 -autoconnect 1 else $openocd -f $cfg & $gdb $elf --batch -ex "set remotetimeout 240" -ex "target extended-remote localhost:${GDB_PORT}" -ex "monitor reset halt" -ex "monitor flash protect 0 64 last off" -ex "load" -ex "monitor resume" -ex "monitor shutdown" -ex "quit" kill %1 fi