diff options
author | Spencer Oliver <spen@spen-soft.co.uk> | 2013-03-06 15:29:15 +0000 |
---|---|---|
committer | Øyvind Harboe <oyvindharboe@gmail.com> | 2013-03-12 08:44:22 +0000 |
commit | 2467da4b4aad750d2b3d56998bcf07674047687a (patch) | |
tree | dcba97801f91ec3968030010ef0a3b7b5ff35a34 /src | |
parent | a84d237acfa06ed2e40d5db807ff1a1a7d28cd8d (diff) |
tcl: add flash programming helper
This adds a program proc that simplifies using OpenOCD as a standalone
programmer.
Change-Id: I6ece492cd878c170b734e8bb2e09fe8c4557d5a6
Signed-off-by: Spencer Oliver <spen@spen-soft.co.uk>
Reviewed-on: http://openocd.zylin.com/1199
Tested-by: jenkins
Reviewed-by: Jörg Fischer <turboj@gmx.de>
Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
Reviewed-by: Øyvind Harboe <oyvindharboe@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/flash/startup.tcl | 69 |
1 files changed, 68 insertions, 1 deletions
diff --git a/src/flash/startup.tcl b/src/flash/startup.tcl index 5f40e649..82959c8a 100644 --- a/src/flash/startup.tcl +++ b/src/flash/startup.tcl @@ -1,5 +1,73 @@ # Defines basic Tcl procs for OpenOCD flash module +# +# program utility proc +# usage: program filename +# optional args: verify, reset and address +# + +proc program {filename args} { + + foreach arg $args { + if {[string equal $arg "verify"]} { + set verify 1 + } elseif {[string equal $arg "reset"]} { + set reset 1 + } else { + set address $arg + } + } + + # make sure init is called + if {[catch {init}] != 0} { + echo "** OpenOCD init Failed **" + shutdown + return + } + + # reset target and call any init scripts + if {[catch {reset init}] != 0} { + echo "** Unable to reset target **" + shutdown + return + } + + # start programming phase + echo "** Programming Started **" + if {[info exists address]} { + set flash_args "$filename $address" + } else { + set flash_args "$filename" + } + + if {[catch {eval flash write_image erase $flash_args}] == 0} { + echo "** Programming Finished **" + if {[info exists verify]} { + # verify phase + echo "** Verify Started **" + if {[catch {eval verify_image $flash_args}] == 0} { + echo "** Verified OK **" + } else { + echo "** Verify Failed **" + } + } + + if {[info exists reset]} { + # reset target if requested + echo "** Resetting Target **" + reset run + } + } else { + echo "** Programming Failed **" + } + + # shutdown OpenOCD + shutdown +} + +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\]" + # ease migration to updated flash driver proc stm32x args { echo "DEPRECATED! use 'stm32f1x $args' not 'stm32x $args'" @@ -10,4 +78,3 @@ proc stm32f2xxx args { echo "DEPRECATED! use 'stm32f2x $args' not 'stm32f2xxx $args'" eval stm32f2x $args } - |