aboutsummaryrefslogtreecommitdiff
path: root/src/flash
diff options
context:
space:
mode:
Diffstat (limited to 'src/flash')
-rw-r--r--src/flash/startup.tcl36
1 files changed, 23 insertions, 13 deletions
diff --git a/src/flash/startup.tcl b/src/flash/startup.tcl
index b8d280b8..7a96a3e3 100644
--- a/src/flash/startup.tcl
+++ b/src/flash/startup.tcl
@@ -3,16 +3,28 @@
#
# program utility proc
# usage: program filename
-# optional args: verify, reset and address
+# optional args: verify, reset, exit and address
#
+proc program_error {description exit} {
+ if {$exit == 1} {
+ echo $description
+ shutdown
+ }
+
+ error $description
+}
+
proc program {filename args} {
+ set exit 0
foreach arg $args {
if {[string equal $arg "verify"]} {
set verify 1
} elseif {[string equal $arg "reset"]} {
set reset 1
+ } elseif {[string equal $arg "exit"]} {
+ set exit 1
} else {
set address $arg
}
@@ -20,16 +32,12 @@ proc program {filename args} {
# make sure init is called
if {[catch {init}] != 0} {
- echo "** OpenOCD init Failed **"
- shutdown
- return
+ program_error "** OpenOCD init failed **" 1
}
# reset target and call any init scripts
if {[catch {reset init}] != 0} {
- echo "** Unable to reset target **"
- shutdown
- return
+ program_error "** Unable to reset target **" $exit
}
# start programming phase
@@ -48,7 +56,7 @@ proc program {filename args} {
if {[catch {eval verify_image $flash_args}] == 0} {
echo "** Verified OK **"
} else {
- echo "** Verify Failed **"
+ program_error "** Verify Failed **" $exit
}
}
@@ -60,15 +68,17 @@ proc program {filename args} {
reset run
}
} else {
- echo "** Programming Failed **"
+ program_error "** Programming Failed **" $exit
}
- # shutdown OpenOCD
- shutdown
+ if {$exit == 1} {
+ shutdown
+ }
+ return
}
-add_help_text program "write an image to flash, address is only required for binary images. verify, reset are optional"
-add_usage_text program "<filename> \[address\] \[verify\] \[reset\]"
+add_help_text program "write an image to flash, address is only required for binary images. verify, reset, exit are optional"
+add_usage_text program "<filename> \[address\] \[verify\] \[reset\] \[exit\]"
# stm32f0x uses the same flash driver as the stm32f1x
# this alias enables the use of either name.