diff options
author | oharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2008-07-11 06:44:22 +0000 |
---|---|---|
committer | oharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2008-07-11 06:44:22 +0000 |
commit | efc6063df873b3419010ad66d183b997d52e630c (patch) | |
tree | a47636c216015a530f0fb3adc05bac8a6ad3f8d5 /src/startup.tcl | |
parent | 2b3f4fd293398f1868f8bad864f68f6ffec12ada (diff) | |
download | openocd_libswd-efc6063df873b3419010ad66d183b997d52e630c.tar.gz openocd_libswd-efc6063df873b3419010ad66d183b997d52e630c.tar.bz2 openocd_libswd-efc6063df873b3419010ad66d183b997d52e630c.tar.xz openocd_libswd-efc6063df873b3419010ad66d183b997d52e630c.zip |
startup.tcl (former commands.tcl) is now embedded into OpenOCD executable.
git-svn-id: svn://svn.berlios.de/openocd/trunk@787 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src/startup.tcl')
-rw-r--r-- | src/startup.tcl | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/startup.tcl b/src/startup.tcl new file mode 100644 index 00000000..0a829128 --- /dev/null +++ b/src/startup.tcl @@ -0,0 +1,69 @@ +#
+# Defines basic Tcl procs that must be there for
+# OpenOCD to work.
+#
+# Embedded into OpenOCD executable
+#
+
+# Production command
+# FIX!!! need to figure out how to feed back relevant output
+# from e.g. "flash banks" command...
+proc board_produce {filename serialnumber} {
+ openocd "reset init"
+ openocd "flash write_image erase $filename [flash] bin"]]
+ openocd "verify_image $filename [flash] bin"]]
+ echo "Successfully ran production procedure"
+}
+
+proc board_test {} {
+ echo "Production test not implemented"
+}
+
+# Show flash in human readable form
+# This is an example of a human readable form of a low level fn
+proc flash_banks_pretty {} {
+ set i 0
+ set result ""
+ foreach {a} [flash_banks] {
+ if {$i > 0} {
+ set result "$result\n"
+ }
+ set result [format "$result#%d: %s at 0x%08x, size 0x%08x, buswidth %d, chipwidth %d" $i [lindex $a 0] [lindex $a 1] [lindex $a 2] [lindex $a 3] [lindex $a 4]]
+ set i [expr $i+1]
+ }
+ return $result
+}
+
+# We need to explicitly redirect this to the OpenOCD command
+# as Tcl defines the exit proc
+proc exit {} {
+ openocd_throw exit
+}
+
+# We have currently converted only "flash banks" to tcl.
+proc flash args {
+ if {[string compare [lindex $args 0] banks]==0} {
+ return [flash_banks_pretty]
+ }
+ openocd_throw "flash $args"
+}
+
+# If a fn is unknown to Tcl, we try to execute it as an OpenOCD command
+proc unknown {args} {
+ if {[string length $args]>0} {
+ set cmd ""
+ # We need to add back quotes for arguments w/space
+ # for args without space, we can add quotes anyway
+ foreach {a} $args {
+ set cmd "$cmd \"$a\""
+ }
+ openocd_throw $cmd
+ }
+ # openocd_throw outputs while running and also sets the
+ # primary return value to the output of the command
+ #
+ # The primary return value have been set by "openocd" above,
+ # so we need to clear it, lest we print out the output from
+ # the command twice.
+ return ""
+}
|