X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Fscripting.txt;h=cc8f59713cc42cd28461ad10b576df95787d45f3;hb=044e3a4904c75f95819303190845511beb16ee90;hp=fa7b94c3fc9bd58acf2b3f86cf844ec72eebeb02;hpb=2514493bd8c6f65aae006cd48bf34ce4c21738a3;p=openocd.git diff --git a/src/scripting.txt b/src/scripting.txt index fa7b94c3fc..cc8f59713c 100644 --- a/src/scripting.txt +++ b/src/scripting.txt @@ -1,15 +1,5 @@ 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 ========================== @@ -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. @@ -37,7 +31,7 @@ Default implementation of procedures in tcl/procedures.tcl. 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 - an argument to consit of e.g. a list so the structure of + an argument to consist of e.g. a list so the structure of the serial number is not limited to a single string. - reset handling. Precise control of how srst, trst & tms is handled. @@ -46,3 +40,41 @@ 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. + + +External scripting +================== +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! :-)