Next: FAQ, Previous: GDB and OpenOCD, Up: Top [Contents][Index]
Tcl commands are stateless; e.g. the telnet
command has
a concept of currently active target, the Tcl API proc’s take this sort
of state information as an argument to each proc.
There are three main types of return values: single value, name value pair list and lists.
Name value pair. The proc ’foo’ below returns a name/value pair list.
> set foo(me) Duane > set foo(you) Oyvind > set foo(mouse) Micky > set foo(duck) Donald
If one does this:
> set foo
The result is:
me Duane you Oyvind mouse Micky duck Donald
Thus, to get the names of the associative array is easy:
foreach { name value } [set foo] { puts "Name: $name, Value: $value" }
Lists returned should be relatively small. Otherwise, a range should be passed in to the proc in question.
By "low-level", we mean commands that a human would typically not invoke directly.
Return information about the flash banks
Run <command> and return full log output that was produced during its execution together with the command output. Example:
> capture "reset init"
OpenOCD commands can consist of two words, e.g. "flash banks". The startup.tcl "unknown" proc will translate this into a Tcl proc called "flash_banks".
OpenOCD provides a simple RPC server that allows to run arbitrary Tcl commands and receive the results.
To access it, your application needs to connect to a configured TCP port
(see tcl port
). Then it can pass any string to the
interpreter terminating it with 0x1a
and wait for the return
value (it will be terminated with 0x1a
as well). This can be
repeated as many times as desired without reopening the connection.
It is not needed anymore to prefix the OpenOCD commands with
ocd_
to get the results back. But sometimes you might need the
capture
command.
See contrib/rpc_examples/ for specific client implementations.
Notifications are sent asynchronously to other commands being executed over the RPC server, so the port must be polled continuously.
Target event, state and reset notifications are emitted as Tcl associative arrays in the following format.
type target_event event [event-name] type target_state state [state-name] type target_reset mode [reset-mode]
Toggle output of target notifications to the current Tcl RPC server. Only available from the Tcl RPC server. Defaults to off.
Trace data is sent asynchronously to other commands being executed over the RPC server, so the port must be polled continuously.
Target trace data is emitted as a Tcl associative array in the following format.
type target_trace data [trace-data-hex-encoded]
Toggle output of target trace data to the current Tcl RPC server. Only available from the Tcl RPC server. Defaults to off.
See an example application here: https://github.com/apmorton/OpenOcdTraceUtil [OpenOcdTraceUtil]
Next: FAQ, Previous: GDB and OpenOCD, Up: Top [Contents][Index]