2009-05-27 10:15:06 -05:00
|
|
|
|
/** @page scripting Scripting Overview
|
2008-07-04 12:49:45 -05:00
|
|
|
|
|
2009-05-23 17:53:39 -05:00
|
|
|
|
@section scriptingisnt What scripting will not do
|
2009-05-20 03:16:50 -05:00
|
|
|
|
|
|
|
|
|
The scripting support is intended for developers of OpenOCD.
|
2008-07-04 12:49:45 -05:00
|
|
|
|
It is not the intention that normal OpenOCD users will
|
|
|
|
|
use tcl scripting extensively, write lots of clever scripts,
|
|
|
|
|
or contribute back to OpenOCD.
|
|
|
|
|
|
|
|
|
|
Target scripts can contain new procedures that end users may
|
|
|
|
|
tinker to their needs without really understanding tcl.
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
2008-07-10 01:44:11 -05:00
|
|
|
|
Jim Tcl was chosen as it was easy to integrate, works
|
|
|
|
|
great in an embedded environment and <20>yvind Harboe
|
|
|
|
|
had experience with it.
|
|
|
|
|
|
2009-05-23 17:53:39 -05:00
|
|
|
|
@section scriptinguses Uses of scripting
|
2009-05-20 03:16:50 -05:00
|
|
|
|
|
2008-07-04 12:49:45 -05:00
|
|
|
|
Default implementation of procedures in tcl/procedures.tcl.
|
|
|
|
|
|
|
|
|
|
- Polymorphic commands for target scripts.
|
|
|
|
|
- there will be added some commands in Tcl that the target
|
|
|
|
|
scripts can replace.
|
2009-06-02 23:44:38 -05:00
|
|
|
|
- produce \<productionfile\> \<serialnumber\>. Default implementation
|
2008-07-04 12:49:45 -05:00
|
|
|
|
is to ignore serial number and write a raw binary file
|
|
|
|
|
to beginning of first flash. Target script can dictate
|
|
|
|
|
file format and structure of serialnumber. Tcl allows
|
2009-03-12 09:48:51 -05:00
|
|
|
|
an argument to consist of e.g. a list so the structure of
|
2008-07-04 12:49:45 -05:00
|
|
|
|
the serial number is not limited to a single string.
|
|
|
|
|
- reset handling. Precise control of how srst, trst &
|
|
|
|
|
tms is handled.
|
|
|
|
|
- replace some parts of the current command line handler.
|
|
|
|
|
This is only to simplify the implementation of OpenOCD
|
|
|
|
|
and will have no externally visible consequences.
|
|
|
|
|
Tcl has an advantage in that it's syntax is backwards
|
|
|
|
|
compatible with the current OpenOCD syntax.
|
2008-07-10 01:44:11 -05:00
|
|
|
|
- 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
|
2008-07-11 01:52:33 -05:00
|
|
|
|
be simpler.
|
|
|
|
|
|
|
|
|
|
|
2009-05-23 17:53:39 -05:00
|
|
|
|
@section scriptingexternal External scripting
|
2009-05-20 03:16:50 -05:00
|
|
|
|
|
2008-07-11 01:52:33 -05:00
|
|
|
|
The embedded Jim Tcl interpreter in OpenOCD is very limited
|
|
|
|
|
compared to any full scale PC hosted scripting language.
|
|
|
|
|
|
|
|
|
|
The goal is to keep the internal Jim Tcl interpreter as
|
|
|
|
|
small as possible and allow any advanced scripting,
|
|
|
|
|
especially scripting that interacts with the host,
|
|
|
|
|
run on the host and talk to OpenOCD via the TCP/IP
|
|
|
|
|
scripting connection.
|
|
|
|
|
|
|
|
|
|
Another problem with Jim Tcl is that there is no debugger
|
|
|
|
|
for it.
|
|
|
|
|
|
|
|
|
|
With a bit of trickery it should be possible to run Jim
|
|
|
|
|
Tcl scripts under a Tcl interpreter on a PC. The advantage
|
|
|
|
|
would be that the Jim Tcl scripts could be debugged using
|
|
|
|
|
a standard PC Tcl debugger.
|
|
|
|
|
|
|
|
|
|
The rough idea is to write an unknown proc that sends
|
|
|
|
|
unknown commands to OpenOCD.
|
|
|
|
|
|
|
|
|
|
Basically a PC version of startup.tcl. Patches most
|
|
|
|
|
gratefully accepted! :-)
|
2009-05-20 03:16:50 -05:00
|
|
|
|
|
|
|
|
|
*/
|