Commit 313547dd authored by oharboe's avatar oharboe
Browse files

very slight cleanup of flash banks handling.

git-svn-id: svn:// b42882b7-edfa-0310-969c-e2dbd0fdcd60
parent 92beb99b
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
What scripting will not do
......@@ -26,6 +16,10 @@ Since end users are not expected to mess with the scripting
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.
......@@ -46,3 +40,15 @@ 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
......@@ -34,25 +34,22 @@ proc exit {} {
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.
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment