The main OpenOCD web site is available at @uref{http://openocd.berlios.de/web/}.
+@section Coding Style
+@cindex Coding Style
+
+The following rules try to describe formatting and naming conventions that should be
+followed to make the whole OpenOCD code look more consistent. The ultimate goal of
+coding style should be readability, and these rules may be ignored for a particular
+(small) piece of code if that makes it more readable.
+
+@subsection Formatting rules:
+@itemize @bullet
+@item remove any trailing white space
+@item use TAB characters for indentation, not spaces
+@item displayed TAB width is 4 characters
+@item make sure NOT to use DOS '\r\n' line feeds
+@item do not add more than 2 empty lines to source files
+@item do not add trailing empty lines to source files
+@item do not use C++ style comments (//)
+@item lines may be reasonably wide - there's no anachronistic 80 characters limit
+@end itemize
+
+@subsection Naming rules:
+@itemize @bullet
+@item identifiers use lower-case letters only
+@item identifiers consisting of multiple words use underline characters between consecutive words
+@item macros use upper-case letters only
+@item structure names shall be appended with '_s'
+@item typedefs shall be appended with '_t'
+@end itemize
+
+@subsection Function calls:
+@itemize @bullet
+@item function calls have no space between the functions name and the parameter
+list: my_func(param1, param2, ...)
+@end itemize
+
@node Building
@chapter Building
@cindex building OpenOCD
In the OpenOCD case, this generally refers to @b{a small adapater} one
attaches to your computer via USB or the Parallel Printer Port. The
execption being the Zylin ZY1000 which is a small box you attach via
-an ethernet cable.
+an ethernet cable. The Zylin ZY1000 has the advantage that it does not
+require any drivers to be installed on the developer PC. It also has
+a built in web interface. It supports RTCK/RCLK or adaptive clocking
+and has a built in relay to power cycle targets remotely.
@section Choosing a Dongle
@section Stand alone Systems
@b{ZY1000} See: @url{http://www.zylin.com/zy1000.html} Technically, not a
-dongle, but a standalone box.
+dongle, but a standalone box. The ZY1000 has the advantage that it does
+not require any drivers installed on the developer PC. It also has
+a built in web interface. It supports RTCK/RCLK or adaptive clocking
+and has a built in relay to power cycle targets remotely.
@section USB FT2232 Based
@itemize @bullet
@item @b{-expected-id NUMBER}
@* By default it is zero. If non-zero represents the
-expected tap ID used when the JTAG chain is examined. See below.
+expected tap ID used when the JTAG chain is examined. Repeat
+the option as many times as required if multiple id's can be
+expected. See below.
@item @b{-disable}
@item @b{-enable}
@* By default not specified the tap is enabled. Some chips have a
@itemize @bullet
@item @b{target_request debugmsgs} <@var{enable}|@var{disable}|@var{charmsg}>
@cindex target_request debugmsgs
-@*Enable/disable target debugmsgs requests. debugmsgs enable messages to be sent to the debugger while the target is running. @var{charmsg} recives the message like linux kernel ``Kernel low-level debugging via EmbeddedICE DCC channel'' option way.
+@*Enable/disable target debugmsgs requests. debugmsgs enable messages to be sent to the debugger while the target is running. @var{charmsg} receives messages if Linux kernel ``Kernel low-level debugging via EmbeddedICE DCC channel'' option is enabled.
@end itemize
@node JTAG Commands