ao-tools: complain if st-flash is not available
[fw/altos] / ao-tools / ao-flash / ao-flash-stm
index c5aeb7ae0a67501a675cd51f2f6a06a398d00c4e..9eebf5d2e55eb0dde1312d95cf53c8c95a669db5 100644 (file)
@@ -5,17 +5,29 @@ case "$#" in
        exit 1
        ;;
 esac
-cmds=/tmp/flash$$
-trap "rm $cmds" 0 1 15
-for file in "$@"; do
-       echo "flash write_image $file"
-done > $cmds
-openocd \
-       -f interface/stlink-v2.cfg \
-       -f target/stm32lx_stlink.cfg \
-       -c init \
-       -c 'reset halt' \
-       -f $cmds \
-       -c 'reset init' \
-        -c 'reset run' \
-       -c shutdown
+
+ST_FLASH=st-flash
+
+if which $ST_FLASH > /dev/null; then
+    :
+else
+    echo "$0: $ST_FLASH not found. Check to see if the stlink package is installed"
+    exit 1
+fi
+
+file=$1
+
+bin=/tmp/flash$$.bin
+trap "rm $bin" 0 1 15
+
+base=`arm-none-eabi-nm $file | awk '/interrupt_vector/ { print $1 }'`
+case x"$base" in
+x)
+    echo "$file: No interrupt vector address found"
+    exit 1
+    ;;
+esac
+
+arm-none-eabi-objcopy -O binary $file $bin
+
+$ST_FLASH --reset write $bin $base