Plan for hosted scripting support in OpenOCD
============================================
-Jim Tcl support in OpenOCD currently exists as a patch.
-
-There has been some discussion on the list as to what
-purpose scripting support might serve in OpenOCD.
-
-Also Lua was proposed as a scripting language, but
-only Jim Tcl has been forwarded as a patch.
-
-Tcl is also backwards syntax compatible with OpenOCD
-commands.
What scripting will not do
==========================
language, the choice of language is not terribly important
to those same end users.
+Jim Tcl was chosen as it was easy to integrate, works
+great in an embedded environment and Øyvind Harboe
+had experience with it.
+
Uses of scripting
=================
Default implementation of procedures in tcl/procedures.tcl.
and will have no externally visible consequences.
Tcl has an advantage in that it's syntax is backwards
compatible with the current OpenOCD syntax.
+- external scripting. Low level tcl functions will be defined
+ that return machine readable output. These low level tcl
+ functions constitute the tcl api. flash_banks is such
+ a low level tcl proc. "flash banks" is an example of
+ a command that has human readable output. The human
+ readable output is expected to change inbetween versions
+ of OpenOCD. The output from flash_banks may not be
+ in the preferred form for the client. The client then
+ has two choices a) parse the output from flash_banks
+ or b) write a small piece of tcl to output the
+ flash_banks output to a more suitable form. The latter may
+ be simpler.
\ No newline at end of file
openocd_throw exit
}
-# If a fn is unknown to Tcl, we try to execute it as an OpenOCD command
-proc unknown {args} {
-
- # This is uglier than it needs to be since the "flash banks" is really
- # a single command. For now only "flash banks" has been converted from
- # C to Tcl as an example, but if we do decide to go down this path, then
- # some more generic scheme will be put in place here.
- #
- # Help texts need a makeover. There needs to be help texts for
- # tcl procs + perhaps some work w.r.t. making the help command
- # format things prettier.
- if {[string compare [lindex $args 0] flash]==0 && [string compare [lindex $args 1] banks]==0} {
+# 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"
+}
- # We print out as we run the command
+# If a fn is unknown to Tcl, we try to execute it as an OpenOCD command
+proc unknown {args} {
if {[string length $args]>0} {
- openocd_throw "$args"
+ openocd_throw $args
}
+ # 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.