very slight cleanup of flash banks handling.
git-svn-id: svn://svn.berlios.de/openocd/trunk@782 b42882b7-edfa-0310-969c-e2dbd0fdcd60__archive__
parent
92beb99bf7
commit
313547ddd6
|
@ -1,15 +1,5 @@
|
||||||
Plan for hosted scripting support in OpenOCD
|
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
|
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
|
language, the choice of language is not terribly important
|
||||||
to those same end users.
|
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
|
Uses of scripting
|
||||||
=================
|
=================
|
||||||
Default implementation of procedures in tcl/procedures.tcl.
|
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.
|
and will have no externally visible consequences.
|
||||||
Tcl has an advantage in that it's syntax is backwards
|
Tcl has an advantage in that it's syntax is backwards
|
||||||
compatible with the current OpenOCD syntax.
|
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.
|
|
@ -34,25 +34,22 @@ proc exit {} {
|
||||||
openocd_throw exit
|
openocd_throw exit
|
||||||
}
|
}
|
||||||
|
|
||||||
# If a fn is unknown to Tcl, we try to execute it as an OpenOCD command
|
# We have currently converted only "flash banks" to tcl.
|
||||||
proc unknown {args} {
|
proc flash args {
|
||||||
|
if {[string compare [lindex $args 0] banks]==0} {
|
||||||
# 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} {
|
|
||||||
return [flash_banks_pretty]
|
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} {
|
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,
|
# The primary return value have been set by "openocd" above,
|
||||||
# so we need to clear it, lest we print out the output from
|
# so we need to clear it, lest we print out the output from
|
||||||
# the command twice.
|
# the command twice.
|
||||||
|
|
Loading…
Reference in New Issue