Audit and eliminate redundant #include directives in core target files.
[fw/openocd] / src / scripting.txt
index 7242e73f1701918b0eaa3b7516abb5250138bcdf..cc8f59713cc42cd28461ad10b576df95787d45f3 100644 (file)
@@ -1,25 +1,80 @@
-Plan for hosted scripting support in OpenOCD\r
-============================================\r
-Jim Tcl support in OpenOCD currently exists as a patch.\r
-\r
-There has been some discussion on the list as to what\r
-purpose scripting support might serve in OpenOCD.\r
-\r
-Also Lua was proposed as a scripting language, but \r
-only Jim Tcl has been forwarded as a patch.\r
-\r
-Tcl is also backwards syntax compatible with OpenOCD \r
-commands.\r
-\r
-Uses of scripting\r
-=================\r
-\r
-Default implementation of procedures in tcl/procedures.tcl.\r
-\r
-- Polymorphic commands for target scripts.\r
-  - produce <file> <serialnumber>. Default implementation\r
-    is to ignore serial number and write a raw binary file\r
-    to beginning of first flash. \r
-  - reset handling. Precise control of how srst, trst & \r
-    tms is handled and when.\r
-  
\ No newline at end of file
+Plan for hosted scripting support in OpenOCD
+============================================
+
+What scripting will not do
+==========================
+It is not the intention that normal OpenOCD users will
+use tcl scripting extensively, write lots of clever scripts,
+or contribute back to OpenOCD. 
+
+The scripting support is intended for developers of 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.
+
+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.
+
+- Polymorphic commands for target scripts.
+  - there will be added some commands in Tcl that the target
+    scripts can replace.
+  - produce <productionfile> <serialnumber>. Default implementation
+    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 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.
+- 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.
+- 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! :-)