diff options
Diffstat (limited to 'stm32/unittest/scripts/run_stm32_prog')
| -rwxr-xr-x | stm32/unittest/scripts/run_stm32_prog | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/stm32/unittest/scripts/run_stm32_prog b/stm32/unittest/scripts/run_stm32_prog new file mode 100755 index 0000000..652f715 --- /dev/null +++ b/stm32/unittest/scripts/run_stm32_prog @@ -0,0 +1,91 @@ +#!/bin/bash + +####################################### +# Parse command line options +# Options (starting with "--") are stored in $ARGS. +# Non-options are taken as the test name (last one sticks). + +declare -A ARGS +for arg in "$@"; do + if [[ ${arg} == --* ]] ; then ARGS[${arg}]=true + else ELF=${arg} + fi + done + +# Add the parameters for connecting via ssh to +# your machine with an stm32 connected to +# UT_SSH_PARAMS +# e.g. +# UT_SSH_PARAMS="-p 22 user@host_with_stm32" + +if [ -z "$UT_SSH_PARAMS" ]; then + UT_SSH="" + UT_SLEEP=${UT_SLEEP:=1} + UI_SH_FIO="disable" +else + UT_SSH="ssh -f -L 3333:localhost:3333 $UT_SSH_PARAMS" + UT_SLEEP=${UT_SLEEP:=4} + UT_SH_FIO="enable" +fi + +rm -f gdb_cmds + +if [ ! ${ARGS[--st-util]+_} ] ; then + # OpenOCD + if [ -n "$UT_SSH" ]; then + cat <<-EEOOFF >> gdb_cmds + shell ${UT_SSH} killall -q openocd\; sleep 1\; openocd -d0 -f board/stm32f4discovery.cfg 2> >(tee stderr.log >&2) | tee stdout.log & + EEOOFF + else + cat <<-EEOOFF >> gdb_cmds + shell killall -q openocd + shell openocd -d0 -f board/stm32f4discovery.cfg 2> >(tee stderr.log >&2) | tee stdout.log & + EEOOFF + fi + + cat <<-EEOOFF >> gdb_cmds + shell sleep ${UT_SLEEP} + target remote :3333 + monitor arm semihosting enable + monitor arm semihosting_fileio $UT_SH_FIO + EEOOFF + + SHUTDOWN="monitor shutdown" +else + # ST-Util + echo "---------------------- STARTING gdb/st-util ------------------------------" + cat <<-EEOOFF >> gdb_cmds + shell st-util --verbose=0 --semihosting 2>stutil_stderr.log >stutil_stdout.log & + shell sleep ${UT_SLEEP} + target remote :4242 + EEOOFF + + SHUTDOWN="" +fi + +if [ ! ${ARGS[--noload]+_} ] ; then + cat <<-EEOOFF >> gdb_cmds + load + EEOOFF + fi + +cat <<-EEOOFF >> gdb_cmds + monitor reset halt + monitor adapter speed 4000 + break EndofMain + break abort + EEOOFF + +if [ -z ${ARGS[--debug]+_} ] ; then + cat <<-EEOOFF >> gdb_cmds + shell printf "\n----------------------------STARTING PROGRAM-------------------------\n\n" + continue + set confirm off + $SHUTDOWN + quit + EEOOFF + arm-none-eabi-gdb -batch -x gdb_cmds ${ELF} + else + arm-none-eabi-gdb -x gdb_cmds ${ELF} + fi + |
