changeset 596:d729dea5c4a8

* user-guide.sgml: * config-tool.sgml: * configuration.sgml: Files extensively modified to bring them up to date. Essentially the old Tutorial document has been merged in with the User Guide to give a single document from which to start with eCos. * introduction.sgml: * installation.sgml: * programming.sgml: * programming-concepts-techniques.sgml: * target-setup.sgml: * real-time-characterization.sgml: New files containing both fresh text and text merged in from the old tutorial, which is now obsolete. * pix/templates01.png: * pix/ARMStartup01.png: * pix/build-lib01.png: * pix/build-tests01.png: * pix/twothreads2.png: Graphics copied here from old tutorial.
author nickg
date Wed, 12 Feb 2003 18:36:12 +0000
parents c2d1fd823f09
children fb98fd01eb56
files doc/sgml/user-guide/ChangeLog doc/sgml/user-guide/config-tool.sgml doc/sgml/user-guide/configuration.sgml doc/sgml/user-guide/ecos-license.sgml doc/sgml/user-guide/installation.sgml doc/sgml/user-guide/introduction.sgml doc/sgml/user-guide/pix/ARMStartup01.png doc/sgml/user-guide/pix/build-lib01.png doc/sgml/user-guide/pix/build-processalt.png doc/sgml/user-guide/pix/build-tests01.png doc/sgml/user-guide/pix/build-tools.png doc/sgml/user-guide/pix/templates01.png doc/sgml/user-guide/pix/twothreads2.png doc/sgml/user-guide/programming-concepts-techniques.sgml doc/sgml/user-guide/programming.sgml doc/sgml/user-guide/real-time-characterization.sgml doc/sgml/user-guide/target-setup.sgml doc/sgml/user-guide/user-guide.sgml
diffstat 18 files changed, 9409 insertions(+), 360 deletions(-) [+]
line wrap: on
line diff
--- a/doc/sgml/user-guide/ChangeLog
+++ b/doc/sgml/user-guide/ChangeLog
@@ -1,3 +1,29 @@
+2003-02-12  Nick Garnett  <nickg@calivar.com>
+
+	* user-guide.sgml: 
+	* config-tool.sgml: 
+	* configuration.sgml: 
+	Files extensively modified to bring them up to date. Essentially
+	the old Tutorial document has been merged in with the User Guide
+	to give a single document from which to start with eCos.
+	
+	* introduction.sgml: 
+	* installation.sgml: 
+	* programming.sgml: 	
+	* programming-concepts-techniques.sgml: 
+	* target-setup.sgml: 
+	* real-time-characterization.sgml: 
+	New files containing both fresh text and text merged in from the
+	old tutorial, which is now obsolete.
+
+	* pix/templates01.png:
+	* pix/ARMStartup01.png:
+	* pix/build-lib01.png:
+	* pix/build-tests01.png:
+	* pix/twothreads2.png:
+	Graphics copied here from old tutorial.
+
+	
 2002-10-15  Iztok Zupet <iz@vsr.si>
 
 	* user-guide.sgml: pictures (gif==>png)
--- a/doc/sgml/user-guide/config-tool.sgml
+++ b/doc/sgml/user-guide/config-tool.sgml
@@ -31,51 +31,61 @@
 
 <part ID="THE-ECOS-CONFIGURATION-TOOL">
 <TITLE>The eCos Configuration Tool</TITLE>
+
+<!-- {{{ Getting Started                -->
+
 <CHAPTER id="config-tool-getting-started">
 <TITLE>Getting Started</TITLE>
+
+<!-- ====================================================================== -->
+    
 <SECT1 id="config-tool-getting-started-intro">
 <TITLE>Introduction</TITLE>
-<PARA>The <EMPHASIS>eCos Configuration Tool</EMPHASIS> is used
-	  to tailor eCos at source level, prior to compilation or
+
+<PARA> The <productname>eCos</productname> <application>Configuration Tool</application> is used
+	  to tailor <productname>eCos</productname> at source level, prior to compilation or
 	  assembly, and provides a configuration file and a set of
 	  files used to build user applications. The sources and other
 	  files used for building a configuration are provided in a
 	  <EMPHASIS>component repository</EMPHASIS>, which is loaded
-	  when the eCos <APPLICATION>Configuration Tool</APPLICATION>
+	  when the <productname>eCos</productname> <APPLICATION>Configuration Tool</APPLICATION>
 	  is invoked. The component repository includes a set of files
 	  defining the structure of relationships between the
-	  Configuration Tool and other components, and is written in a
+	  <application>Configuration Tool</application> and other components, and is written in a
 	  <FIRSTTERM>Component Definition Language</FIRSTTERM> (<ACRONYM>CDL</ACRONYM>).
 	  For a description of the concepts underlying component
 	  configuration, see <xref linkend="cdl-concepts">.</PARA>
 </SECT1>
+
+<!-- ====================================================================== -->
+    
 <SECT1 id="config-tool-invoking">
-<TITLE>Invoking the eCos Configuration Tool</TITLE>
+<TITLE>Invoking the <productname>eCos</productname> <application>Configuration Tool</application></TITLE>
 
 <SECT2>
 <TITLE>On Linux</TITLE>
 
-<PARA>Add the eCos Configuration Tool install directory to your PATH, for example:</PARA>
+<PARA>Add the <productname>eCos</productname> <application>Configuration Tool</application> install directory to your PATH, for example:</PARA>
 
 <PROGRAMLISTING>
-export PATH=/opt/ecos/ecos1.5.0/bin:$PATH
+export PATH=/opt/ecos/ecos<replaceable>&Version;</replaceable>/bin:$PATH
 </PROGRAMLISTING>
 
-<PARA>You may run configtool with zero, one or two arguments. You can specify the eCos repository
- location, and/or an eCos save file (extension .ecc) on the command line. The ordering of these
+<PARA>You may run configtool with zero, one or two arguments. You can specify the <productname>eCos</productname> repository
+ location, and/or an <productname>eCos</productname> save file (extension .ecc) on the command line. The ordering of these
 two arguments is not significant. For example:</PARA>
 
 <PROGRAMLISTING>
-configtool /opt/ecos/ecos1.5.0/packages myfile.ecc
+configtool /opt/ecos/ecos<replaceable>&Version;</replaceable>/packages myfile.ecc
 </PROGRAMLISTING>
 
-<PARA>The Configuration Tool will be displayed (see <xref linkend="figure-configuration-tool">).</PARA>
+<PARA>The <application>Configuration Tool</application> will be displayed (see <xref linkend="figure-configuration-tool">).</PARA>
 </SECT2>
 
 <SECT2>
 <TITLE>On Windows</TITLE>
 
-<PARA>There are two ways in which to invoke the eCos Configuration Tool:</PARA>
+<PARA>There are two ways in which to invoke the <productname>eCos</productname> <application>Configuration Tool</application>:</PARA>
 <ITEMIZEDLIST>
 <LISTITEM>
 <PARA>	      from the desktop explorer or program set up at installation
@@ -84,7 +94,7 @@ configtool /opt/ecos/ecos1.5.0/packages 
 	      -&gt;
 	      <EMPHASIS>Programs</EMPHASIS>
 	      -&gt;
-	      <EMPHASIS>Red Hat eCos</EMPHASIS>
+	      <EMPHASIS>eCos</EMPHASIS>
 	      -&gt;
 	      <EMPHASIS>Configuration Tool</EMPHASIS>
 	      ).</PARA>
@@ -95,27 +105,38 @@ configtool /opt/ecos/ecos1.5.0/packages 
 	    menu&rsquo;s 
 	    <EMPHASIS>Run</EMPHASIS>
 	    item): &lt;foldername&gt;&bsol;ConfigTool.exe where &lt;foldername&gt; is
-	    the full path of the directory in which you installed the eCos
-	    <EMPHASIS> </EMPHASIS>
-	    Configuration Tool
-	    <EMPHASIS>.</EMPHASIS></PARA>
+	    the full path of the directory in which you installed the <productname>eCos</productname>
+	    <application>Configuration Tool</application>.</PARA>
+<!--
+<para>
+XXXXX Change location of configtool in line with installation
+              instructions. XXXXX
+</para>
+-->
+            
 </LISTITEM>
 <LISTITEM>
 <PARA>The 
-	    <EMPHASIS>Configuration Tool</EMPHASIS>
+	    <application>Configuration Tool</application>
 	    will be displayed (see <xref linkend="figure-configuration-tool">).</PARA>
 </LISTITEM>
 </ITEMIZEDLIST>
 
 <PARA>
-You may run configtool with zero, one or two arguments. You can specify the eCos repository
-location, and/or an eCos save file (extension .ecc) on the command line. The ordering of these
+You may run configtool with zero, one or two arguments. You can specify the <productname>eCos</productname> repository
+location, and/or an <productname>eCos</productname> save file (extension .ecc) on the command line. The ordering of these
 two arguments is not significant. For example:</PARA>
 
 <PROGRAMLISTING>
-configtool "c:\Program Files\Red Hat\eCos\packages" myfile.ecc
+configtool "c:\Program Files\eCos\packages" myfile.ecc
 </PROGRAMLISTING>
 
+<!--        
+        <para>
+XXXXX Change location of eCos in line with installation instructions. XXXXX
+        </para>
+-->
+        
 <PARA>If you invoke the configuration tool from the command line with
 <EMPHASIS>--help</EMPHASIS>, you will see this output:</PARA>
 
@@ -132,27 +153,31 @@ both short form and long form.</PARA>
 
 <PARA><EMPHASIS>--help</EMPHASIS> shows valid options and parameters, as above.</PARA>
 
-<PARA><EMPHASIS>--edit-only</EMPHASIS> runs the Configuration Tool in a mode that
+<PARA><EMPHASIS>--edit-only</EMPHASIS> runs the <application>Configuration Tool</application> in a mode that
 suppresses creation of a build tree, in case you only want to create and edit save files.</PARA>
 
 <PARA><EMPHASIS>--version</EMPHASIS> shows version and build date information, and exits.</PARA>
 
 <PARA><EMPHASIS>--compile-help</EMPHASIS> compiles help contents files from the HTML documentation
-files that the tool finds in the eCos repository, and exits.</PARA>
+files that the tool finds in the <productname>eCos</productname> repository, and exits.</PARA>
 
 <FIGURE id="figure-configuration-tool">
-<TITLE>Configuration Tool</TITLE>
+<TITLE><application>Configuration Tool</application></TITLE>
 <GRAPHIC ENTITYREF="graphic1"></GRAPHIC>
 </FIGURE>
 </SECT2>
 </SECT1>
+
+<!-- ====================================================================== -->
+    
+    
 <SECT1 id="config-tool-component-repository">
 <TITLE>The Component Repository</TITLE>
-<PARA>When you invoke the eCos Configuration Tool, it accesses the Component
+<PARA>When you invoke the <productname>eCos</productname> <application>Configuration Tool</application>, it accesses the Component
 	  Repository, a read-only location of configuration
 	  information. For an explanation of &ldquo;Component
 	  Repository&rdquo; see <xref linkend="cdl-concepts">.</PARA>
-<PARA>The eCos<EMPHASIS> </EMPHASIS>Configuration Tool will look
+<PARA>The <productname>eCos</productname> <application>Configuration Tool</application> will look
 	  for a component repository using (in descending order of preference):</PARA>
 <ITEMIZEDLIST>
 <LISTITEM>
@@ -164,8 +189,9 @@ files that the tool finds in the eCos re
 current user</PARA>
 </LISTITEM>
 <LISTITEM>
-<PARA>An eCos distribution under /opt/ecos (under Linux) or a default location set by the installation procedure
-(under Windows)</PARA>
+<PARA>An <productname>eCos</productname> distribution under <filename>/opt/ecos</filename> (under
+Linux) or a default location set by the installation procedure (under
+Windows)</PARA>
 </LISTITEM>
 <LISTITEM>
 <PARA>User input</PARA>
@@ -179,7 +205,7 @@ being displayed that allows you to speci
 <TITLE>Repository relocation dialog box</TITLE>
 <GRAPHIC ENTITYREF="graphic2"></GRAPHIC>
 </FIGURE>
-<PARA>Note that in order to use the eCos Configuration Tool you are obliged to provide a
+<PARA>Note that in order to use the <productname>eCos</productname> <application>Configuration Tool</application> you are obliged to provide a
 	  valid repository location. </PARA>
 <PARA>In the rare event that you subsequently wish to change
 	  the component location, select
@@ -190,15 +216,19 @@ path, and the current hardware template 
 by selecting <EMPHASIS>Help</EMPHASIS>-&gt;<EMPHASIS>Repository Information...</EMPHASIS>.
 A summary will be displayed.</PARA>
 </SECT1>
+
+<!-- ====================================================================== -->
+   
+    
 <SECT1 ID="config-tool-documents">
-<TITLE>eCos Configuration Tool Documents</TITLE>
+<TITLE><productname>eCos</productname> <application>Configuration Tool</application> Documents</TITLE>
 <SECT2>
 <TITLE>Configuration Save File</TITLE>
-<PARA>eCos configuration settings and other information
+<PARA><productname>eCos</productname> configuration settings and other information
 	    (such as disabled conflicts) that are set using the
-	    eCos Configuration Tool are saved to
+	    <productname>eCos</productname> <application>Configuration Tool</application> are saved to
 	    a file between sessions. By default, when the
-	    eCos Configuration Tool is first
+	    <productname>eCos</productname> <application>Configuration Tool</application> is first
 	    invoked, it reads and displays information from the
 	    Component Registry and displays the information in an
 	    untitled blank document. You can perform the following
@@ -236,10 +266,10 @@ A summary will be displayed.</PARA>
 explorer (Windows only);</PARA>
 </LISTITEM>
 <LISTITEM>
-<PARA>invoking the eCos
-Configuration Tool
+<PARA>invoking the <productname>eCos</productname>
+<application>Configuration Tool</application>
 with the name of a Configuration File as command-line argument,
-or by creating a shortcut to the eCos Configuration Tool with such an argument
+or by creating a shortcut to the <productname>eCos</productname> <application>Configuration Tool</application> with such an argument
 (under Windows or a suitable Linux desktop environment).</PARA>
 </LISTITEM>
 </ITEMIZEDLIST>
@@ -260,7 +290,7 @@ or click the <EMPHASIS>New Document</EMP
 <SECT2>
 <TITLE>Build and Install Trees</TITLE>
 <PARA>The location of the build and install trees are
-	    derived from the eCos save file name as illustrated in the
+	    derived from the <productname>eCos</productname> save file name as illustrated in the
 	    following example:</PARA>
 <PARA>Save file name = &ldquo;c:&bsol;My
 	    eCos&bsol;config1.ecc&rdquo;</PARA>
@@ -275,12 +305,13 @@ or click the <EMPHASIS>New Document</EMP
 </SECT1>
 </CHAPTER>
 
-<!-- ================================================== -->
+<!-- }}} -->
+<!-- {{{ Getting Help                   -->
 
 <CHAPTER id="config-tool-getting-help">
 <TITLE>Getting Help</TITLE>
 
-<PARA>The eCos Configuration Tool contains
+<PARA>The <productname>eCos</productname> <application>Configuration Tool</application> contains
 several methods for accessing online help.</PARA>
 
 <!-- ================================================== -->
@@ -288,7 +319,7 @@ several methods for accessing online hel
 <SECT1 id="config-tool-context-help-dialogs">
 
 <TITLE>Context-sensitive Help for Dialogs</TITLE>
-<PARA>Most dialogs displayed by the eCos Configuration Tool are supplied
+<PARA>Most dialogs displayed by the <productname>eCos</productname> <application>Configuration Tool</application> are supplied
 with context-sensitive help. You can then get help relating
 to any control within the current dialog box by</PARA>
 
@@ -341,7 +372,7 @@ on a window and clicking on <EMPHASIS>Wh
 <PARA>In the configuration window, right-click on a configuration
 item (or use <EMPHASIS>Shift+F10</EMPHASIS>). A context
 menu will be displayed; select <EMPHASIS>Visit Documentation</EMPHASIS> 
-to display the page in the eCos documentation that most closely
+to display the page in the <productname>eCos</productname> documentation that most closely
 corresponds to the selected item.</PARA>
 </SECT1>
 
@@ -392,18 +423,22 @@ Help</EMPHASIS> system will be unavailab
 of displaying help.</PARA>
 </SECT1>
 </CHAPTER>
+
+<!-- }}} -->  
+<!-- {{{ Customization                  -->
+
 <CHAPTER id="config-tool-customization">
 <TITLE>Customization</TITLE>
-<PARA>The following visual aspects of the eCos Configuration Tool can be changed to suit
+<PARA>The following visual aspects of the <productname>eCos</productname> <application>Configuration Tool</application> can be changed to suit
 	individual preferences. These aspects are saved on a per-user
-	basis, so that when the eCos Configuration Tool is next invoked by the same
+	basis, so that when the <productname>eCos</productname> <application>Configuration Tool</application> is next invoked by the same
 	user, the appearance will be as set in the previous
 	session.</PARA>
 <SECT1 id="config-tool-window-placement">
 <TITLE>Window Placement</TITLE>
-<PARA>The relative sizes of all windows in the eCos Configuration Tool may be adjusted by dragging
+<PARA>The relative sizes of all windows in the <productname>eCos</productname> <application>Configuration Tool</application> may be adjusted by dragging
 	  the splitter bars that separate the windows. The chosen
-	  sizes will be used the next time the eCos Configuration Tool is invoked by the current
+	  sizes will be used the next time the <productname>eCos</productname> <application>Configuration Tool</application> is invoked by the current
 	  user. </PARA>
 <PARA>All windows except the <EMPHASIS>Configuration
 	    Window</EMPHASIS> may be shown or hidden by using the
@@ -418,8 +453,8 @@ conflicts window is hidden.
 -->
 </PARA>
 <PARA>Your chosen set of windows (and their relative sizes) will
-be preserved between invocations of the eCos<EMPHASIS> </EMPHASIS>Configuration
-Tool.</PARA>
+be preserved between invocations of the <productname>eCos</productname> <application>Configuration
+Tool</application>.</PARA>
 </SECT1>
 <!--
 <SECT1 id="config-tool-toolbars">
@@ -526,12 +561,15 @@ See <xref linkend="methods-of-displaying
 </SECT1>
 </CHAPTER>
 
-
+<!-- }}} -->  
+<!-- {{{ Screen Layout                  -->
 
 <CHAPTER id="config-tool-screen-layout">
 <TITLE>Screen Layout</TITLE>
-<PARA>The following windows are available within the eCos<EMPHASIS> </EMPHASIS>Configuration
-Tool:</PARA>
+<PARA>The following windows are available within the
+      <productname>eCos</productname> <application> Configuration
+        Tool</application>:
+    </PARA>
 <ITEMIZEDLIST>
 <LISTITEM>
 <PARA>		Configuration Window</PARA>
@@ -555,9 +593,9 @@ Tool:</PARA>
 
 <SECT1 id="config-tool-configuration-window">
 <TITLE>Configuration Window</TITLE>
-<PARA>This is the principal window used to configure eCos. It
+<PARA>This is the principal window used to configure <productname>eCos</productname>. It
 	  takes the form of a tree-based representation of the
-	  configuration items within the currently loaded eCos
+	  configuration items within the currently loaded <productname>eCos</productname>
 	  packages.</PARA>
 <PARA>In the case of items whose values may be changed,
 	  controls are available to set the item values. These either
@@ -775,6 +813,9 @@ context menu which allows you to:</PARA>
 </SECT1>
 </CHAPTER>
 
+<!-- }}} -->  
+<!-- {{{ Updating and Configuration     -->
+
 <CHAPTER id="config-tool-updating-configuration">
 <TITLE>Updating the Configuration</TITLE>
 <SECT1 id="config-tool-adding-removing-packages">
@@ -885,7 +926,7 @@ to gdb in order to define memory layout.
 	  provided in the corresponding edit boxes.</PARA>
 <SECT2 id="resolving-conflicts">
 <TITLE>Resolving conflicts</TITLE>
-<PARA>During the process of configuring eCos it is possible
+<PARA>During the process of configuring <productname>eCos</productname> it is possible
 	    that conflicts will be created. For more details of the
 	    meaning of conflicts, see <xref linkend="cdl-concepts">.</PARA>
 <PARA>The Conflicts Window displays all conflicts in the
@@ -987,6 +1028,10 @@ box without any resolutions being applie
 </SECT2>
 </SECT1>
 </CHAPTER>
+
+<!-- }}} -->  
+<!-- {{{ Searching                      -->
+
 <CHAPTER id="config-tool-searching">
 <TITLE>Searching</TITLE>
 <PARA>Select <EMPHASIS>Edit </EMPHASIS>--&gt; <EMPHASIS>Find</EMPHASIS>.
@@ -1015,24 +1060,28 @@ within configuration item short descript
 <PARA>Note that to invoke <EMPHASIS>Find</EMPHASIS> you can also
 click the <EMPHASIS>Find</EMPHASIS> icon on the toolbar. </PARA>
 </CHAPTER>
+
+<!-- }}} -->  
+<!-- {{{ Building                       -->
+
 <CHAPTER id="config-tool-building">
 <TITLE>Building</TITLE>
-<PARA>When you have configured eCos, you may build the configuration.</PARA>
+<PARA>When you have configured <productname>eCos</productname>, you may build the configuration.</PARA>
 <PARA><!--<conditionaltext>-->On the <EMPHASIS>Build</EMPHASIS> menu, click:</PARA>
 <ITEMIZEDLIST>
 <LISTITEM>
 <PARA>			
 <EMPHASIS>Library</EMPHASIS>
  (or click the Build Library icon on the toolbar) &ndash; this
-causes the eCos configuration to be built. The result of a successful
+causes the <productname>eCos</productname> configuration to be built. The result of a successful
 build will be (among other things) a library against which user
 code can be linked</PARA>
 </LISTITEM>
 <LISTITEM>
 <PARA>			
 <EMPHASIS>Tests</EMPHASIS>
- &ndash; this causes the eCos configuration to be built, and
-additionally builds the relevant test cases linked against the eCos library</PARA>
+ &ndash; this causes the <productname>eCos</productname> configuration to be built, and
+additionally builds the relevant test cases linked against the <productname>eCos</productname> library</PARA>
 </LISTITEM>
 <LISTITEM>
 <PARA>			
@@ -1067,7 +1116,7 @@ in the configuration view).</PARA>
 <SECT1 id="config-tool-selecting-build-tools">
 <TITLE>Selecting Build Tools</TITLE>
 <PARA>Normally the installation process will supply the information
-required for the eCos<APPLICATION>Configuration Tool</APPLICATION> to
+required for the <productname>eCos</productname><APPLICATION>Configuration Tool</APPLICATION> to
 locate the build tools (compiler, linker, etc.) necessary
 to perform a build. However if this information is not registered,
 or it is necessary to specify the location manually (for example,
@@ -1083,7 +1132,7 @@ the build tools. </PARA>
 <SECT1 id="config-tool-selecting-user-tools">
 <TITLE>Selecting User Tools</TITLE>
 <PARA>Normally the installation process will supply the information
-required for the eCos<APPLICATION>Configuration Tool</APPLICATION> to
+required for the <productname>eCos</productname><APPLICATION>Configuration Tool</APPLICATION> to
 locate the user tools (cat, ls, etc.) necessary to perform
 a build. However if this information is not registered, or it is
 necessary to specify the location manually (for example, when a
@@ -1095,12 +1144,16 @@ Tools</EMPHASIS>. The following dialog b
 </FIGURE>
 </SECT1>
 </CHAPTER>
+
+<!-- }}} -->  
+<!-- {{{ Execution                      -->
+
 <CHAPTER id="config-tool-test-execution"><!--<conditionaltext>-->
 <TITLE>Execution</TITLE>
 <PARA>Test executables that have been linked using the Build/Tests
 operation against the current configuration can be executed by selecting <!--<conditionaltext>--><EMPHASIS>Tools</EMPHASIS>-&gt;<EMPHASIS>Run
 Tests<!--<conditionaltext>--></EMPHASIS>.</PARA>
-<PARA>When tests are run, the <EMPHASIS>Configuration Tool</EMPHASIS> looks
+<PARA>When tests are run, the <application>Configuration Tool</application> looks
 for a platform name corresponding to the currently loaded hardware template.
 If no such platform is found, a dialog will be displayed for you
 to define one; this dialog is similar to that displayed by the <EMPHASIS>Add</EMPHASIS> function
@@ -1314,6 +1367,10 @@ popup menu displayed when you right-clic
 </SECT2>
 </SECT1>
 </CHAPTER>
+
+<!-- }}} -->  
+<!-- {{{ Creating a Shell               -->
+
 <CHAPTER id="config-tool-creating-a-shell">
 <TITLE>Creating a Shell</TITLE>
 <PARA>To call up a shell window, select <EMPHASIS>Tools</EMPHASIS>-&gt;<EMPHASIS>Shell</EMPHASIS>.
@@ -1323,7 +1380,7 @@ get a standard Linux shell window.</PARA
 <SECT1 id="config-tool-keyboard-accelerators">
 <TITLE>Keyboard Accelerators</TITLE>
 <PARA>The following table presents the list of keyboard accelerators
-that can be used with the <EMPHASIS>Configuration Tool</EMPHASIS>. </PARA>
+that can be used with the <application>Configuration Tool</application>. </PARA>
 
 <table id="keyboard-accelerators"><title>Keyboard accelerators</title>
 <tgroup cols="2">
@@ -1439,6 +1496,10 @@ window</entry></row>
 
 </SECT1>
 </CHAPTER>
+
+<!-- }}} -->  
+
+  
 </PART>
 <!-- Keep this comment at the end of the file
 Local variables:
--- a/doc/sgml/user-guide/configuration.sgml
+++ b/doc/sgml/user-guide/configuration.sgml
@@ -36,30 +36,31 @@
 	<COMMAND>ecosconfig</COMMAND> (the command line tool that
 	manipulates configurations and constructs build trees) and on
 	managing a source repository across multiple versions of
-	eCos. </PARA>
+	<productname>eCos</productname>. </PARA>
 </PARTINTRO>
 <CHAPTER id="manual-configuration">
 <TITLE>Manual Configuration</TITLE>
-<PARA>eCos developers using a Windows NT host will generally use
-	the graphical Configuration Tool for configuring an eCos
-	system and building the target library. At present there is no
-	equivalent to this tool available for developers using a UNIX
-	host, so command line tools have to be used instead. These
-	command line tools can also be used for batch operations on
-	all platforms, for example as part of a nightly rebuild
-	procedure.
+
+    <PARA><productname>eCos</productname> developers will generally use the graphical
+      Configuration Tool for configuring an <productname>eCos</productname> system and building
+      the target library. However, some user prefer to use command
+      line tools. These command line tools can also be used for batch
+      operations on all platforms, for example as part of a nightly
+      rebuild and testing procedure.
     </PARA>
+
 <PARA>In the current release of the system the command line tools
       do not provide exactly the same functionality as the graphical
       tool. Most importantly, there is no facility to resolve
       configuration conflicts interactively.</PARA>
-<PARA>The eCos configuration system, both graphical and command
+<PARA>The <productname>eCos</productname> configuration system, both graphical and command
       line tools, are under constant development and enhancement.
       Developers should note that the procedures described may change
       considerably in future releases. </PARA>
+
 <SECT1 id="directory-tree-structure">
 <TITLE>Directory Tree Structure</TITLE>
-<PARA>When building eCos there are three main directory trees to
+<PARA>When building <productname>eCos</productname> there are three main directory trees to
 	consider: the source tree, the build tree, and the install
 	tree.</PARA>
 <PARA>The source tree, also known as the component repository,
@@ -73,17 +74,18 @@
 	  result from compiling the system sources for this
 	  configuration. </PARA>
 <PARA>The install tree is usually located in the <filename>install</filename> subdirectory
-of the build tree. Once an eCos system has been built, the install
+of the build tree. Once an <productname>eCos</productname> system has been built, the install
 tree contains all the files needed for application development including
 the header files and the target library. By making copies of the
 install tree after a build it is possible to separate application
 development and system configuration, which may be desirable for
 some organizations. </PARA>
 </SECT1>
+
 <SECT1 id="creating-build-tree">
 <TITLE>Creating the Build Tree</TITLE>
 <PARA>Generating a build tree is a non-trivial operation and
-	  should not be attempted manually. Instead, eCos is shipped
+	  should not be attempted manually. Instead, <productname>eCos</productname> is shipped
 	  with a tool called <COMMAND>ecosconfig</COMMAND> that should
 	  be used to create a build tree.</PARA>
 <PARA>Usually <command>ecosconfig</command> will be
@@ -99,7 +101,7 @@ as the target platform and the packages 
 <PARA>The <command>ecosconfig</command> tool is also
 used subsequently to generate a build tree for a configuration.
 Once a build tree exists, it is possible to run <command>ecosconfig</command> again
-inside the same build tree. This will be neccessary if your wish
+inside the same build tree. This will be necessary if your wish
 to change some of the configuration options.</PARA>
 <PARA><COMMAND>ecosconfig</COMMAND> does not generate
 the top-level directory of the build tree; you must do this
@@ -125,11 +127,11 @@ the top-level directory of the build tre
 <VARLISTENTRY>
 <TERM><OPTION>--config=&lt;file&gt;</OPTION></TERM>
 <LISTITEM>
-<PARA>Specifies an eCos configuration save file for
+<PARA>Specifies an <productname>eCos</productname> configuration save file for
 		  use by the tool. By default, the file
 		  <filename>ecos.ecc</filename> in the
 		  current directory is used. Developers may prefer to
-		  use a common location for all their eCos
+		  use a common location for all their <productname>eCos</productname>
 		  configurations rather than keep the configuration
 		  information in the base of the build tree.</PARA>
 </LISTITEM>
@@ -163,8 +165,8 @@ the top-level directory of the build tre
 <LISTITEM>
 <PARA>Disables the implicit resolution of conflicts
 		  while manipulating the configuration data.
-		  developers may prefer to reslove conflicts by
-		  editing the eCos configuration save file
+		  developers may prefer to resolve conflicts by
+		  editing the <productname>eCos</productname> configuration save file
 		  manually.</PARA>
 </LISTITEM>
 </VARLISTENTRY>
@@ -206,9 +208,11 @@ Display less information.
 The <OPTION>--config</OPTION>, <OPTION>--prefix</OPTION> and
 <OPTION>--srcdir</OPTION> qualifiers can also be written with two arguments,
 for example:
+</para>
 <SCREEN>
 ecosconfig --srcdir <REPLACEABLE>&lt;dir&gt;</REPLACEABLE> ...
 </SCREEN>
+<para>
 This simplifies filename completion with some shells.
 </PARA>
 </SECT2>
@@ -222,7 +226,7 @@ This simplifies filename completion with
 <TERM><COMMAND>list</COMMAND></TERM>
 <LISTITEM>
 <PARA>Lists the available packages, targets and
-		  templates as installed in the eCos repository.
+		  templates as installed in the <productname>eCos</productname> repository.
 		  Aliases and package versions are also
 		  reported.</PARA>
 </LISTITEM>
@@ -230,7 +234,7 @@ This simplifies filename completion with
 <VARLISTENTRY>
 <TERM><COMMAND>new &lt;target&gt; [&lt;template&gt; [&lt;version&gt;]]</COMMAND></TERM>
 <LISTITEM>
-<PARA>Creates a new eCos configuration for
+<PARA>Creates a new <productname>eCos</productname> configuration for
 		  the specified target hardware and saves it. A
 		  software template may also be specified. By default,
 		  the template named &lsquo;default&rsquo; is used. If
@@ -242,7 +246,7 @@ This simplifies filename completion with
 <TERM><COMMAND>target &lt;target&gt;</COMMAND></TERM>
 <LISTITEM>
 <PARA>Changes the target hardware selection
-		  for the eCos configuration. This has the effect of
+		  for the <productname>eCos</productname> configuration. This has the effect of
 		  unloading packages supporting the target selected
 		  previously and loading the packages which support
 		  the new hardware. This command will be used
@@ -253,7 +257,7 @@ This simplifies filename completion with
 <VARLISTENTRY>
 <TERM><COMMAND>template &lt;template&gt; [&lt;version&gt;]</COMMAND></TERM>
 <LISTITEM>
-<PARA>Changes the template selection for the eCos
+<PARA>Changes the template selection for the <productname>eCos</productname>
 		  configuration. This has the effect of unloading
 		  packages specified by the template selected
 		  previously and loading the packages specified by the
@@ -264,7 +268,7 @@ This simplifies filename completion with
 <VARLISTENTRY>
 <TERM><COMMAND>remove &lt;packages&gt;</COMMAND></TERM>
 <LISTITEM>
-<PARA>Removes the specified packages from the eCos
+<PARA>Removes the specified packages from the <productname>eCos</productname>
 		  configuration. This command will be used typically
 		  when the template on which a configuration is based
 		  contains packages which are not required.</PARA>
@@ -273,7 +277,7 @@ This simplifies filename completion with
 <VARLISTENTRY>
 <TERM><COMMAND>add &lt;packages&gt;</COMMAND></TERM>
 <LISTITEM>
-<PARA>Adds the specified packages to the eCos configuration. This
+<PARA>Adds the specified packages to the <productname>eCos</productname> configuration. This
 command will be used typically when the template on which a
 configuration is based does not contain all the packages which are
 required.For example, add-on packages provided by third parties will
@@ -285,7 +289,7 @@ explicitly. </PARA>
 <TERM><COMMAND>version &lt;version&gt; &lt;packages&gt;</COMMAND></TERM>
 <LISTITEM>
 <PARA>Selects the specified version of a
-		  number of packages in the eCos configuration. By
+		  number of packages in the <productname>eCos</productname> configuration. By
 		  default, the most recent version of each package is
 		  used. This command will be used typically when an
 		  older version of a package is required.</PARA>
@@ -324,7 +328,7 @@ explicitly. </PARA>
 <TERM><COMMAND>resolve</COMMAND></TERM>
 <LISTITEM>
 <PARA>Resolves conflicts identified in the
-		  current eCos configuration by invoking an inference
+		  current <productname>eCos</productname> configuration by invoking an inference
 		  capability. Resolved conflicts are reported, but not
 		  all conflicts may be resolvable. This command will
 		  be used typically following manual editing of the
@@ -334,7 +338,7 @@ explicitly. </PARA>
 <VARLISTENTRY>
 <TERM><COMMAND>export &lt;file&gt;</COMMAND></TERM>
 <LISTITEM>
-<PARA>Exports a minimal eCos configurastion
+<PARA>Exports a minimal <productname>eCos</productname> configuration
 		  save file with the specified name. This file
 		  contains only those options which do not have their
 		  default value. Such files are used typically to
@@ -345,7 +349,7 @@ explicitly. </PARA>
 <VARLISTENTRY>
 <TERM><COMMAND>import &lt;file&gt;</COMMAND></TERM>
 <LISTITEM>
-<PARA>Imports a minimal eCos configuration
+<PARA>Imports a minimal <productname>eCos</productname> configuration
 		  save file with the specified name. The values of
 		  those options specified in the file are applied to
 		  the current configuration.</PARA>
@@ -354,9 +358,9 @@ explicitly. </PARA>
 <VARLISTENTRY>
 <TERM><COMMAND>tree</COMMAND></TERM>
 <LISTITEM>
-<PARA>Generates a build tree based on the current eCos
+<PARA>Generates a build tree based on the current <productname>eCos</productname>
 		  configuration. This command will be used typically
-		  just before building eCos.Normally a build tree can
+		  just before building <productname>eCos</productname>.Normally a build tree can
 only be generated if if the configuration has no unresolved
 conflicts, but <OPTION>--ignore-errors</OPTION> can be used to override
 this.</PARA>
@@ -374,9 +378,9 @@ library can no longer provide these func
 be several resolution options. For example, it would be possible to add the math library package back to the
 configuration, or to disable the <FUNCTION>strtod()</FUNCTION> and <FUNCTION>atof()</FUNCTION> functions.</PARA>
 <PARA>
-The eCos configuration tools will report any conflicts in the current configuration. If there are any such conflicts
-then the configuration is usually unsafe and it makes no sense to build and run eCos in such circumstances. In fact,
-any attempt at building eCos is likely to fail. In exceptional cases it is possible to override this by using e.g. the
+The <productname>eCos</productname> configuration tools will report any conflicts in the current configuration. If there are any such conflicts
+then the configuration is usually unsafe and it makes no sense to build and run <productname>eCos</productname> in such circumstances. In fact,
+any attempt at building <productname>eCos</productname> is likely to fail. In exceptional cases it is possible to override this by using e.g. the
 <OPTION>--ignore-errors</OPTION> qualifier with ecosconfig. 
 </PARA>
 <PARA>
@@ -474,16 +478,16 @@ It is still possible to generate a build
 C CYGFUN_LIBC_strtod, "requires" constraint not satisfied: CYGPKG_LIBM 
 $ make 
 </SCREEN>
-In this case eCos will fail to build. In other cases of unresolved conflicts eCos may build, but may not run. In
+In this case <productname>eCos</productname> will fail to build. In other cases of unresolved conflicts <productname>eCos</productname> may build, but may not run. In
 general all conflicts should be resolved by editing the <FILENAME>ecos.ecc</FILENAME> file, by letting the inference engine make appropriate
-changes, or by other means, before any attempt is made to build or run eCos. 
+changes, or by other means, before any attempt is made to build or run <productname>eCos</productname>. 
 </PARA>
 </SECT1>
 <SECT1 id="building-the-system">
 <TITLE>Building the System</TITLE>
 <PARA>Once a build tree has been generated with
 	  <COMMAND>ecosconfig</COMMAND>, <!-- <index></index>
-	  -->building eCos is straightforward:</PARA>
+	  -->building <productname>eCos</productname> is straightforward:</PARA>
 <SCREEN>$ make</SCREEN>
 <PARA>The build tree contains the subdirectories, makefiles,
 	  and everything else that is needed to generate the default
@@ -516,13 +520,13 @@ use: </PARA>
 bulk of what is left consists of configuration header files that
 you may have edited and hence should not be deleted automatically.
 However, it is possible to rebuild the system at any time without
-reinvoking <COMMAND>ecosconfig</COMMAND>, just by
+re-invoking <COMMAND>ecosconfig</COMMAND>, just by
 running <COMMAND>make</COMMAND> again. </PARA>
 <PARA>Under exceptional circumstances it may be necessary to run <COMMAND>make
 clean</COMMAND> for other reasons, such as when a new release
 of the toolchain is installed. The toolchain includes a number of
 header files which are closely tied to the compiler, for example <filename>limits.h</filename>,
-and these header files are not and should not be duplicated by eCos.
+and these header files are not and should not be duplicated by <productname>eCos</productname>.
 The makefiles perform header file dependency analysis, so that when
 a header file is changed all affected sources will be rebuilt during
 the next <COMMAND>make</COMMAND>. This is very useful
@@ -536,7 +540,7 @@ it is necessary to do a <COMMAND>make cl
 </SECT1>
 <SECT1 id="ecos-packages">
 <TITLE>Packages</TITLE>
-<PARA>eCos is a component architecture. The system comes as a
+<PARA><productname>eCos</productname> is a component architecture. The system comes as a
 	  number of <!-- <index></index> -->packages which can be
 	  enabled or disabled as required, and new packages can be
 	  added as they become available. Unfortunately, the packages
@@ -557,14 +561,14 @@ it is necessary to do a <COMMAND>make cl
 <PARA>By default, <!-- <index></index> --><command>ecosconfig</command> will
 include all packages that are appropriate for the specified hardware
 in the configuration. The common <!-- <index></index> -->HAL package and
-the eCos infrastructure must be present in every configuration. In
+the <productname>eCos</productname> infrastructure must be present in every configuration. In
 addition, it is always necessary to have one architectural HAL package
 and one platform HAL package. Other packages are optional, and can
 be added or removed from a configuration as required.</PARA>
 <PARA>The application may not require all of the packages; for example,
 it might not need the &micro;ITRON compatibility
 package, or the floating point support provided by the math library.
-There is a slight overhead when eCos is built because the packages
+There is a slight overhead when <productname>eCos</productname> is built because the packages
 will get compiled, and there is also a small disk space penalty.
 However, any unused facilities will get stripped out at link-time,
 so having redundant packages will not affect the final executable. </PARA>
@@ -572,7 +576,7 @@ so having redundant packages will not af
 <SECT1 id="coarse-grained-configuration">
 <TITLE>Coarse-grained Configuration</TITLE>
 <PARA>Coarse-grained <!-- <index></index> -->configuration of
-	  an eCos system means making configuration changes using the
+	  an <productname>eCos</productname> system means making configuration changes using the
 	  <COMMAND>ecosconfig</COMMAND> tool. These changes
 	  include: </PARA>
 <ORDEREDLIST>
@@ -590,7 +594,7 @@ so having redundant packages will not af
 </LISTITEM>
 </ORDEREDLIST>
 <PARA>Whenever <COMMAND>ecosconfig</COMMAND> generates or
-	  updates an eCos configuration, it generates a configuration
+	  updates an <productname>eCos</productname> configuration, it generates a configuration
 	  save file.</PARA>
 <PARA>Suppose that the configuration was first created using
 	  the following command line: </PARA>
@@ -611,15 +615,15 @@ the <COMMAND>remove</COMMAND> command: <
 for example: </PARA>
 <SCREEN>$ ecosconfig remove uitron libm</SCREEN>
 <PARA>If this turns out to have been a mistake then you can
-	  reenable one or more packages with the
+	  re-enable one or more packages with the
 	  <COMMAND>add</COMMAND> command: </PARA>
 <SCREEN>$ ecosconfig add libm</SCREEN>
 <PARA>Changing the desired version for a package is also
 	  straightforward:</PARA>
-<SCREEN>$ ecosconfig version v1_3_1 kernel</SCREEN>
+<SCREEN>$ ecosconfig version v2_1 kernel</SCREEN>
 <PARA>It is necessary to regenerate the build tree and header
 	  files following any changes to the configuration before
-	  rebuilding eCos:</PARA>
+	  rebuilding <productname>eCos</productname>:</PARA>
 <SCREEN>$ ecosconfig tree</SCREEN>
 </SECT1>
 <SECT1 id="fine-grained-configuration">
@@ -650,38 +654,38 @@ or by invoking the inference engine usin
 list all conflicts which can be resolved and save the resulting changes
 to the configuration.</PARA>
 <PARA>It is necessary to regenerate the build tree and header files
-following any changes to the configuration before rebuilding eCos:</PARA>
+following any changes to the configuration before rebuilding <productname>eCos</productname>:</PARA>
 <SCREEN>$ ecosconfig tree</SCREEN>
 <PARA>All the configuration options and their descriptions are listed
-in the <EMPHASIS>eCos Reference Manual</EMPHASIS>. </PARA>
+in the <citetitle><productname>eCos</productname> Reference Manual</citetitle>. </PARA>
 </SECT1>
 <SECT1 id="editing-an-ecos-savefile">
-<TITLE>Editing an eCos Savefile</TITLE>
-<PARA>The eCos configuration information is held in a single
+<TITLE>Editing an <productname>eCos</productname> Savefile</TITLE>
+<PARA>The <productname>eCos</productname> configuration information is held in a single
 	  savefile, typically <FILENAME>ecos.ecc</FILENAME>, which can
 	  be generated by either the GUI configuration tool or by the
-	  command line <EMPHASIS>ecosconfig</EMPHASIS> tool. The file
+	  command line <command>ecosconfig</command> tool. The file
 	  normally exists at the top level of the build tree. It is a
 	  text file, allowing the various configurations options to be
 	  edited inside a suitable text editor or by other programs or
 	  scripts, as well as in the GUI config tool.</PARA>
-<PARA>An eCos savefile is actually a script in the <EMPHASIS>Tcl</EMPHASIS> programming
+<PARA>An <productname>eCos</productname> savefile is actually a script in the <EMPHASIS>Tcl</EMPHASIS> programming
 language, so any modifications to the file need to preserve Tcl
 syntax. For most configuration options, any modifications will be
 trivial and there is no need to worry about Tcl syntax. For example,
 changing a 1 to a 0 to disable an option.  For more complicated
-options, for example<EMPHASIS> CYGDAT_UITRON_TASK_EXTERNS
-, </EMPHASIS>which involves some lines of C code, more care has
+options, for example<literal> CYGDAT_UITRON_TASK_EXTERNS</literal>,
+which involves some lines of C code, more care has
 to be taken. If an edited savefile is no longer a valid Tcl script
 then the configuration tools will be unable to read back the data
 for further processing, for example to generate a build tree. An
 outline of Tcl syntax is given below. One point worth noting here
 is that a line that begins with a &ldquo;#&rdquo; is
-usually a comment, and the bulk of an eCos savefile actually consists
+usually a comment, and the bulk of an <productname>eCos</productname> savefile actually consists
 of such comments, to make it easier to edit.</PARA>
 <SECT2>
 <TITLE>Header</TITLE>
-<PARA>An eCos savefile begins with a header, which typically
+<PARA>An <productname>eCos</productname> savefile begins with a header, which typically
 	    looks something like this:</PARA>
 <SCREEN># eCos saved configuration
 # ---- commands -------------------------------------------------------- 
@@ -745,7 +749,7 @@ to remove an existing one then the appro
 for this, for example:</PARA>
 <PROGRAMLISTING>$ ecosconfig remove CYGPKG_LIBM</PROGRAMLISTING>
 <PARA>There are two fields which can be edited. Configurations have
-a name; in this case eCos. They can also have a description, which
+a name; in this case <productname>eCos</productname>. They can also have a description, which
 is some arbitrary text. The configuration tools do not make use
 of these fields, they exist so that users can store additional information
 about a configuration.</PARA>
@@ -770,7 +774,7 @@ about a configuration.</PARA>
 <PARA>When editing a configuration you may end up with something
 that is invalid. Any problems in the configuration will be reported
 in the conflicts section. In this case there are two conflicts.
-The option <EMPHASIS>CYGNUM_LIBC_TIME_DST_DEFAULT_OFFSET</EMPHASIS> has
+The option <literal>CYGNUM_LIBC_TIME_DST_DEFAULT_OFFSET</literal> has
 been given an illegal value: typically this would be fixed by searching
 for the definition of that option later on in the savefile and modifying
 the value. The second conflict is more interesting, an unsatisfied <EMPHASIS>requires</EMPHASIS> constraint.
@@ -779,20 +783,20 @@ in, say, the kernel, can have an impact 
 the C library. The various dependencies between the options are
 specified by the component developers and checked by the configuration
 system. In this case there are two obvious ways in which the conflict could
-be resolved: re-enabling <EMPHASIS>CYGFUN_KERNEL_THREADS_TIMER</EMPHASIS>,
-or disabling <EMPHASIS>CYGSEM_LIBC_TIME_CLOCK_WORKING</EMPHASIS>.
+be resolved: re-enabling <literal>CYGFUN_KERNEL_THREADS_TIMER</literal>,
+or disabling <literal>CYGSEM_LIBC_TIME_CLOCK_WORKING</literal>.
 Both of these options will be listed later on in the file.</PARA>
 <PARA>Some care has to be taken when modifying configuration options,
 to avoid introducing new conflict. For instance it is possible that
 there might be other options in the system which have a dependency
-on <EMPHASIS>CYGSEM_LIBC_TIME_CLOCK_WORKING</EMPHASIS>,
+on <literal>CYGSEM_LIBC_TIME_CLOCK_WORKING</literal>,
 so disabling that option may not be the best way to resolve the
 conflict. Details of all such dependencies are provided in the appropriate
 places in the savefile.</PARA>
 <PARA>It is not absolutely required that a configuration be conflict-free
-before generating a build tree and building eCos. It is up to the
+before generating a build tree and building <productname>eCos</productname>. It is up to the
 developers of each component to decide what would happen if an attempt
-is made to build eCos while there are still conflicts. In serious
+is made to build <productname>eCos</productname> while there are still conflicts. In serious
 cases there is likely to be a compile-time failure, or possibly
 a link-time failure. In less serious cases the system may build
 happily and the application can be linked with the resulting library,
@@ -845,7 +849,7 @@ cdl_option CYGSEM_KERNEL_SCHED_BITMAP ..
 	    programs or scripts to analyze the savefile and readily
 	    determine the hierarchy. It could also be used by a
 	    sufficiently powerful editor to support structured editing
-	    of eCos savefiles. The information is not used by the
+	    of <productname>eCos</productname> savefiles. The information is not used by the
 	    configuration tools themselves since they obtain the
 	    hierarchy from the original CDL scripts.</PARA>
 <PARA>Each configurable entity is preceded by a comment, of
@@ -893,7 +897,7 @@ cdl_option CYGIMP_IDLE_THREAD_YIELD {
 }; 
 
 </SCREEN>
-<PARA>For <EMPHASIS>CYGIMP_IDLE_THREAD_YIELD</EMPHASIS> the
+<PARA>For <literal>CYGIMP_IDLE_THREAD_YIELD</literal> the
 savefile lists the expression that must be satisfied if the option
 is to be active, followed by the current value of all entities that
 are referenced in the expression, and finally the result of evaluating
@@ -1290,7 +1294,7 @@ future releases of the configuration sys
 <PARA>Following the value-related fields for a given option, any <EMPHASIS>requires</EMPHASIS> constraints belonging
 to this option will be listed. These constraints are only effective
 if the option is active and, for bool and booldata flavors, enabled.
-If some aspect of eCos functionality is inactive or disabled then
+If some aspect of <productname>eCos</productname> functionality is inactive or disabled then
 it cannot impose any constraints on the rest of the system. As usual,
 the full expression will be listed followed by the current values
 of all options that are referenced and the result of evaluating
@@ -1324,7 +1328,7 @@ way on this one. The savefile provides t
 </SECT2>
 <SECT2>
 <TITLE>Tcl Syntax</TITLE>
-<PARA>eCos savefiles are implemented as Tcl scripts, and are read
+<PARA><productname>eCos</productname> savefiles are implemented as Tcl scripts, and are read
 in by running the data through a standard Tcl interpreter that has
 been extended with a small number of additional commands such as <LITERAL>cdl_option</LITERAL> and <LITERAL>cdl_configuration</LITERAL>.
 In many cases this is an implementation detail that can be safely
@@ -1414,7 +1418,7 @@ it treats all subsequent data up to but 
 quote as part of the current argument. The quote marks are removed
 by the interpreter, so the second argument passed to the <LITERAL>set</LITERAL> command
 is just <LITERAL>Hello world</LITERAL> without the
-quote characters. This can be significant in the context of eCos savefiles.
+quote characters. This can be significant in the context of <productname>eCos</productname> savefiles.
 For instance, consider the following configuration option:</PARA>
 <SCREEN>
 
@@ -1448,10 +1452,10 @@ so the following <LITERAL>#define</LITER
 be generated in the configuration header file:</PARA>
 <PROGRAMLISTING>#define CYGDAT_LIBC_STDIO_DEFAULT_CONSOLE /dev/ttydiag </PROGRAMLISTING>
 <PARA>This is likely to cause a compile-time failure when building
-eCos.</PARA>
+<productname>eCos</productname>.</PARA>
 <PARA>A quoted argument continues until the closing quote character
 is encountered, which means that it can span multiple lines. This
-can also be encountered in eCos savefiles, for instance, in the <EMPHASIS>CYGDAT_UITRON_MEMPOOLVAR_EXTERNS</EMPHASIS> example
+can also be encountered in <productname>eCos</productname> savefiles, for instance, in the <literal>CYGDAT_UITRON_MEMPOOLVAR_EXTERNS</literal> example
 mentioned earlier. Newline or semicolon characters do not terminate
 the current command in such cases.</PARA>
 <PARA>The Tcl interpreter supports much the same forms of backslash
@@ -1484,7 +1488,7 @@ result of performing command substitutio
 characters such as square brackets then these will not be treated
 specially.</PARA>
 <PARA>Command line substitution is very unlikely to prove useful
-in the context of an eCos savefile, but it is part of the Tcl language
+in the context of an <productname>eCos</productname> savefile, but it is part of the Tcl language
 and hence cannot be easily suppressed while reading in a savefile.
 As a result care has to be taken when savefile data involves square
 brackets. Consider the following:</PARA>
@@ -1520,7 +1524,7 @@ is used in Tcl scripts to perform variab
 <PROGRAMLISTING>set x [expr 6 * 9] 
 puts &ldquo;The answer is $x&rdquo; </PROGRAMLISTING>
 <PARA>Variable substitution, like command substitution, is very
-unlikely to prove useful in the context of an eCos savefile. Should
+unlikely to prove useful in the context of an <productname>eCos</productname> savefile. Should
 it be necessary to have a <literal>$</literal> character
 in configuration data then again a backslash escape needs to be
 used.</PARA>
@@ -1533,7 +1537,7 @@ used.</PARA>
 single argument, just like quotes. The difference is that variable,
 command and backslash substitution do not occur inside braces (with
 the sole exception of backslash substitution at the end of a line).
-So, for example, the <EMPHASIS>CYGDAT_UITRON_MEMPOOL_EXTERNFIXED_EXTERNS</EMPHASIS> value
+So, for example, the <literal>CYGDAT_UITRON_MEMPOOL_EXTERNFIXED_EXTERNS</literal> value
 could be written as:</PARA>
 <PROGRAMLISTING>cdl_option CYGDAT_UITRON_MEMPOOLFIXED_EXTERNS {
      ...
@@ -1602,7 +1606,7 @@ a closing brace by itself, which is also
 sequence of events is very unlikely to occur when editing generated
 savefiles.</PARA>
 <PARA>This should be sufficient information about Tcl to allow for
-safe editing of eCos savefiles. Further information is available
+safe editing of <productname>eCos</productname> savefiles. Further information is available
 from a wide variety of sources, for example the book <EMPHASIS>Tcl
 and the Tk Toolkit </EMPHASIS>by John K Ousterhout.</PARA>
 </SECT2>
@@ -1612,45 +1616,45 @@ and the Tk Toolkit </EMPHASIS>by John K 
 <PARA>For many users, controlling the packages and
 	  manipulating the available configuration options will be
 	  sufficient to create an embedded operating system that meets
-	  the application's requirements. However, since eCos is
+	  the application's requirements. However, since <productname>eCos</productname> is
 	  shipped entirely in source form, it is possible to go
-	  further when necessary: you can edit the eCos <!--
+	  further when necessary: you can edit the <productname>eCos</productname> <!--
 	  <index></index> -->sources themselves. This requires some
-	  understanding of the way the eCos build system works.
+	  understanding of the way the <productname>eCos</productname> build system works.
 	</PARA>
 <PARA>The most obvious place to edit the source code is directly
 in the <!-- <index></index> -->component repository. For example, you could
-edit the file <filename>kernel/v1_3_x/src/sync/mutex.cxx</filename>
+edit the file <filename>kernel/<replaceable>&Version;</replaceable>/src/sync/mutex.cxx</filename>
 to change the way kernel mutexes work, or possibly just to add some
 extra diagnostics or assertions. Once the file has been edited,
 it is possible to invoke <command>make</command> at
 the top level of the build tree and the target library will be rebuilt
 as required. A small optimization is possible: the build tree is
 largely a mirror of the component repository, so it too will contain
-a subdirectory <filename>kernel/v1_3_x</filename>;
+a subdirectory <filename>kernel/<replaceable>&Version;</replaceable></filename>;
 if make is invoked in this directory
 then it will only check for changes to the kernel sources, which
 is a bit more efficient than checking for changes throughout the component
 repository. </PARA>
 <PARA>Editing a file in the component repository is fine if this
-tree is used for only one eCos configuration. If the repository
+tree is used for only one <productname>eCos</productname> configuration. If the repository
 is used for several different configurations, however, and especially
 if it is shared by multiple users, then making what may be experimental
 changes to the master sources would be a bad idea. The build system provides
 an alternative. It is possible to make a copy of the file in the
 build tree, in other words copy <filename>mutex.cxx</filename> from
-the <filename>kernel/v1_3_x/src/sync</filename> directory
-in the component repository to <filename>kernel/v1_3_x/src/sync</filename> in
+the <filename>kernel/<replaceable>&Version;</replaceable>/src/sync</filename> directory
+in the component repository to <filename>kernel/<replaceable>&Version;</replaceable>/src/sync</filename> in
 the build tree, and edit the file in the build tree. When <command>make</command> is
 invoked it will pick up local copies of any of the sources in preference
 to the master versions in the component repository. Once you have
-finished modifying the eCos sources you can install the final version
+finished modifying the <productname>eCos</productname> sources you can install the final version
 back in the component repository. If the changes were temporary
 in nature and only served to aid the debugging process, then you
 can discard the modified version of the sources. </PARA>
 <PARA>The situation is slightly more complicated for the header
 files that a package may export, such as the C library&rsquo;s <filename>stdio.h</filename> header
-file, which can be found in the directory <filename>language/c/libc/v1_3_x/include</filename>.
+file, which can be found in the directory <filename>language/c/libc/<replaceable>&Version;</replaceable>/include</filename>.
 If such a header file is changed, either directly in the component
 repository or after copying it to the build tree, then <command>make</command> must
 be invoked at the top level of the build tree. In cases like this
@@ -1659,14 +1663,14 @@ may depend on the contents of <filename>
 </SECT1>
 <SECT1 id="modifying-the-memory-layout">
 <TITLE>Modifying the Memory Layout</TITLE>
-<PARA>Each eCos platform package is supplied with linker script
+<PARA>Each <productname>eCos</productname> platform package is supplied with linker script
 fragments which describe the location of memory regions on the evaluation
 board and the location of memory sections within these regions.
 The correct linker script fragment is selected and included in the
-eCos linker script <!-- <index></index> --><filename>target.ld</filename> when
-eCos is built.</PARA>
+<productname>eCos</productname> linker script <!-- <index></index> --><filename>target.ld</filename> when
+<productname>eCos</productname> is built.</PARA>
 <PARA>It is not necessary to <!-- <index></index> -->modify the default memory
-layouts in order to start development with eCos. However, it will
+layouts in order to start development with <productname>eCos</productname>. However, it will
 be necessary to edit a linker script fragment when the memory map
 of the evaluation board is changed. For example, if additional memory
 is added, the linker must be notified that the new memory is available
@@ -1675,7 +1679,7 @@ the corresponding memory region. Where t
 it may be necessary to declare a new memory region and reassign
 certain linker output sections to the new region.</PARA>
 <PARA>Linker script fragments and memory layout header files should
-be <!-- <index></index> -->edited within the eCos install tree. They are
+be <!-- <index></index> -->edited within the <productname>eCos</productname> install tree. They are
 located at <filename>include/pkgconf/mlt_*.*</filename>.
 Where multiple start-up types are in use, it will be necessary to
 edit multiple linker script fragments and header files. The information
@@ -1683,7 +1687,7 @@ provided in the header file and the corr
 fragment must always match. A typical linker script fragment is
 shown below:</PARA>
 <EXAMPLE><!-- <index></index> -->
-<TITLE>eCos linker script fragment</TITLE>
+<TITLE><productname>eCos</productname> linker script fragment</TITLE>
 <PROGRAMLISTING>MEMORY
 {
  rom : ORIGIN = 0x40000000, LENGTH = 0x80000
@@ -1771,25 +1775,25 @@ ordered as follows: </PARA>
 </ORDEREDLIST>
 <PARA>In order to maintain compatibility with linker script
 	  fragments and header files exported by the
-	  eCos <APPLICATION>Configuration Tool</APPLICATION>, the use
+	  <productname>eCos</productname> <APPLICATION>Configuration Tool</APPLICATION>, the use
 	  of other expressions within these files is not
 	  recommended.</PARA>
 <PARA>Note that the names of the linker output sections will vary
 between target architectures. A description of these sections can
-be found in the specific <EMPHASIS>GNUPro Toolkit Reference manual</EMPHASIS> for
+be found in the specific <productname>GCC</productname> documentation for
 your architecture.</PARA>
 </SECT1>
 </CHAPTER>
 <CHAPTER id="managing-package-repository">
 <TITLE>Managing the <!-- <index></index> -->Package Repository</TITLE>
-<PARA>A source distribution of eCos consists of a number of
+<PARA>A source distribution of <productname>eCos</productname> consists of a number of
 	packages, such as the kernel, the C library, and the
 	&micro;ITRON subsystems. These are
 	individually versioned in the tree structure of the source
 	code, to support distribution on a per-package basis and to
 	support third party packages whose versioning systems might be
-	different. The <EMPHASIS>eCos</EMPHASIS> <EMPHASIS>Package
-	  Administration Tool</EMPHASIS> is used to manage the
+	different. The <productname>eCos</productname> <application>Package
+	  Administration Tool</application> is used to manage the
 	installation and removal of packages from a variety of sources
 	with potentially multiple versions.</PARA>
 <PARA>The presence of the version information in the source tree
@@ -1798,8 +1802,8 @@ your architecture.</PARA>
 	<EMPHASIS>SourceSafe</EMPHASIS>. To work
 	in this way, you can rename all the version components to some
 	common name (such as &ldquo;current&rdquo;) thus unifying the
-	structure of source trees from distinct eCos releases.</PARA>
-<PARA>The eCos build system will treat any such name as just another
+	structure of source trees from distinct <productname>eCos</productname> releases.</PARA>
+<PARA>The <productname>eCos</productname> build system will treat any such name as just another
 version of the package(s), and support building in exactly the same
 way. However, performing this rename invalidates any existing build
 trees that referred to the versioned source tree, so do the rename
@@ -1807,33 +1811,39 @@ first, before any other work, and do a c
 <SECT1 id="package-installation">
 <TITLE>Package Installation</TITLE>
 <PARA>Package installation and removal is performed using the
-	  <EMPHASIS>eCos Package Adminstration Tool</EMPHASIS>. This
+	  <productname>eCos</productname> <application>Package Administration Tool</application>. This
 	  tool is a Tcl script named
 	<command>ecosadmin.tcl</command> which allows
-	  the user to add new eCos packages and new versions of
-	  existing packages to an eCos repository. Such packages must
-	  be distributed as a single file in the eCos package
+	  the user to add new <productname>eCos</productname> packages and new versions of
+	  existing packages to an <productname>eCos</productname> repository. Such packages must
+	  be distributed as a single file in the <productname>eCos</productname> package
 	  distribution format. Unwanted packages may also be removed
 	  from the repository using this tool. A graphical version of
 	  the tool is provided as part of the
-	  <EMPHASIS>eCos</EMPHASIS> <EMPHASIS>Developer&rsquo;s
-	    Kit</EMPHASIS>.</PARA>
+	  <productname>eCos</productname> <application>Configuration Tool</application>.</PARA>
 <SECT2>
-<TITLE>Using the Administration Tool</TITLE>
-<PARA>The graphical version of the <EMPHASIS>eCos Package Administration
-Tool</EMPHASIS>, provided as part of the <EMPHASIS>eCos Developer's
-Kit</EMPHASIS>, provides functions equivalent to the command-line
+<TITLE>Using the Administration Tool</TITLE> <PARA>The graphical
+version of the <productname>eCos</productname> <application>Package
+Administration Tool</application>, provided as part of the
+<productname>eCos</productname> <application>Configuration
+Tool</application>, provides functions equivalent to the command-line
 version for those who prefer a Windows-based interface.</PARA>
 <PARA>It may be invoked in one of two ways:</PARA>
 <ITEMIZEDLIST>
 <LISTITEM>
 <PARA>from the <GUIMENU>start menu</GUIMENU> (by default
-		<GUIMENUITEM>Start-&gt;Programs-&gt;Red Hat
+		<GUIMENUITEM>Start-&gt;Programs-&gt;
 		  eCos-&gt;Package Administration
 		  Tool</GUIMENUITEM>)</PARA>
+<!--
+<para>
+XXXXX What is the Windows menu structure now? XXXXX
+</para>
+-->
+            
 </LISTITEM>
 <LISTITEM>
-<PARA>from the eCos <APPLICATION>Configuration
+<PARA>from the <productname>eCos</productname> <APPLICATION>Configuration
 		  Tool</APPLICATION> via the
 		<GUIMENUITEM>Tools-&gt;Administration</GUIMENUITEM>
 		menu item</PARA>
@@ -1843,8 +1853,8 @@ version for those who prefer a Windows-b
 <PARA>The main window of the tool displays the packages which are
 currently installed in the form of a tree. The installed versions
 of each package may be examined by expanding the tree.</PARA>
-<PARA>Packages may be added to the eCos repository by clicking on
-the <EMPHASIS>Add</EMPHASIS> button. The eCos package distribution
+<PARA>Packages may be added to the <productname>eCos</productname> repository by clicking on
+the <EMPHASIS>Add</EMPHASIS> button. The <productname>eCos</productname> package distribution
 file to be added is then selected via a <EMPHASIS>File Open</EMPHASIS> dialog
 box.</PARA>
 <PARA>Packages may be removed by selecting a package in the tree
@@ -1856,7 +1866,7 @@ selected version of the package will be 
 <SECT2>
 <TITLE>Using the command line</TITLE>
 <PARA>The <command>ecosadmin.tcl</command>
-	    script is located in the base of the eCos repository. Use
+	    script is located in the base of the <productname>eCos</productname> repository. Use
 	    a command of the following form under versions of
 	    UNIX:</PARA>
 <SCREEN>$ tclsh ecosadmin.tcl &lt;command&gt;</SCREEN>
@@ -1869,14 +1879,14 @@ at the Cygwin command line prompt:</PARA
 <TERM><COMMAND>add &lt;file&gt;</COMMAND></TERM>
 <LISTITEM><!-- <index></index> -->
 <PARA>Adds the packages contained with the specified package distribution
-file to the eCos repository and updates the package database accordingly.
-By convention, eCos package distribution files are given the <filename>.epk</filename> suffix.</PARA>
+file to the <productname>eCos</productname> repository and updates the package database accordingly.
+By convention, <productname>eCos</productname> package distribution files are given the <filename>.epk</filename> suffix.</PARA>
 </LISTITEM>
 </VARLISTENTRY>
 <VARLISTENTRY>
 <TERM><COMMAND>remove &lt;package&gt; [ --version=&lt;version&gt; ]</COMMAND></TERM><!-- <index></index> -->
 <LISTITEM>
-<PARA>Removes the specified package from the eCos
+<PARA>Removes the specified package from the <productname>eCos</productname>
 		  repository and updates the package database
 		  accordingly. Where the optional version qualifier is
 		  used, only the specified version of the package is
@@ -1895,46 +1905,41 @@ By convention, eCos package distribution
 </VARIABLELIST>
 <PARA>Note that is is possible to remove critical packages
 	    such as the common HAL package using this tool. Users
-	    should take care to avoid such errors since core eCos
+	    should take care to avoid such errors since core <productname>eCos</productname>
 	    packages may only be re-installed in the context of a
-	    complete re-installation of eCos.</PARA>
+	    complete re-installation of <productname>eCos</productname>.</PARA>
 </SECT2>
 </SECT1>
 <SECT1 id="package-structure">
 <TITLE>Package Structure</TITLE>
-<PARA>The files in an installed eCos source tree are organized in
+<PARA>The files in an installed <productname>eCos</productname> source tree are organized in
 a natural tree structure, grouping together files which work together
 into <EMPHASIS>Packages</EMPHASIS>. For example, the kernel files
 are all together in: </PARA>
 <SIMPLELIST>
-<MEMBER><FILENAME><REPLACEABLE>BASE_DIR</REPLACEABLE>/kernel/v1_3_x/include/</FILENAME></MEMBER>
-<MEMBER>	    <FILENAME><REPLACEABLE>BASE_DIR</REPLACEABLE>/kernel/v1_3_x/src/</FILENAME></MEMBER>
-<MEMBER>	<FILENAME><REPLACEABLE>BASE_DIR</REPLACEABLE>/kernel/v1_3_x/tests/</FILENAME></MEMBER>
+<MEMBER><FILENAME><REPLACEABLE>BASE_DIR</REPLACEABLE>/kernel/<replaceable>&Version;</replaceable>/include/</FILENAME></MEMBER>
+<MEMBER>	    <FILENAME><REPLACEABLE>BASE_DIR</REPLACEABLE>/kernel/<replaceable>&Version;</replaceable>/src/</FILENAME></MEMBER>
+<MEMBER>	<FILENAME><REPLACEABLE>BASE_DIR</REPLACEABLE>/kernel/<replaceable>&Version;</replaceable>/tests/</FILENAME></MEMBER>
 </SIMPLELIST>
 <PARA>and &micro;ITRON compatibility layer files are in:
 	</PARA>
 <SIMPLELIST>
-<MEMBER>	    <FILENAME><REPLACEABLE>BASE_DIR</REPLACEABLE>/compat/uitron/v1_3_x/include/</FILENAME></MEMBER>
-<MEMBER>	<FILENAME><REPLACEABLE>BASE_DIR</REPLACEABLE>/compat/uitron/v1_3_x/src/</FILENAME></MEMBER>
-<MEMBER>	<FILENAME><REPLACEABLE>BASE_DIR</REPLACEABLE>/compat/uitron/v1_3_x/tests/</FILENAME></MEMBER>
+<MEMBER>	    <FILENAME><REPLACEABLE>BASE_DIR</REPLACEABLE>/compat/uitron/<replaceable>&Version;</replaceable>/include/</FILENAME></MEMBER>
+<MEMBER>	<FILENAME><REPLACEABLE>BASE_DIR</REPLACEABLE>/compat/uitron/<replaceable>&Version;</replaceable>/src/</FILENAME></MEMBER>
+<MEMBER>	<FILENAME><REPLACEABLE>BASE_DIR</REPLACEABLE>/compat/uitron/<replaceable>&Version;</replaceable>/tests/</FILENAME></MEMBER>
 </SIMPLELIST>
 <PARA>The feature of these names which is of interest here is
-	  the v1_3_x near the end. If you start using
-	  eCos after the Version 1.2 release, you might see a
-	  different name here, e.g. v1_4 for version 1.4; if
-	  you received pre-release Beta versions you might have seen
-	  v0_2 or v0_3 for versions 0.2 and 0.3. </PARA>
-<PARA>It may seem odd to place a version number deep in the
+	  the <replaceable>&Version;</replaceable> near the end. It may seem odd to place a version number deep in the
 	  path, rather than having something like
-	  <FILENAME><REPLACEABLE>BASE_DIR</REPLACEABLE>/v1_3_x/...everything...</FILENAME></PARA>
-<PARA>or leaving it up to you to choose a different
+	  <FILENAME><REPLACEABLE>BASE_DIR</REPLACEABLE>/<replaceable>&Version;</replaceable>/...everything...</FILENAME>
+          or leaving it up to you to choose a different
 	  install-place when a new release of the system arrives.
 	</PARA>
 <PARA>There is a rationale for this organization: as
 	  indicated, the kernel and the
 	  &micro;ITRON compatibility subsystem
 	  are examples of software packages. For the first few
-	  releases of eCos, all the Red Hat packages will move along
+	  releases of <productname>eCos</productname>, all the packages will move along
 	  in step, i.e. Release 1.3.x will feature Version
 	  1.3.x of every package, and so forth. But in future,
 	  especially when third party packages become available, it is
@@ -1943,21 +1948,21 @@ are all together in: </PARA>
 	  a selection of packages with different version numbers, and
 	  even differing versioning <EMPHASIS>schemes</EMPHASIS>. A
 	  Tcl script <command>ecosadmin.tcl</command> is
-	  provided in the eCos repository to manage the installation
+	  provided in the <productname>eCos</productname> repository to manage the installation
 	  and removal of packages in this way.</PARA>
 <PARA>Many users will have their own source code control system,
 version control system or equivalent, and will want to use it with
-eCos sources. In that case, since a new release of eCos comes with
+<productname>eCos</productname> sources. In that case, since a new release of <productname>eCos</productname> comes with
 different pathnames for all the source files, a bit of work is necessary
 to import a new release into your source repository. </PARA>
 <PARA>One way of handling the import is to rename all the version
 parts to some common name, for example &ldquo;current&rdquo;,
 and continue to work. &ldquo;current&rdquo; is suggested because <command>ecosconfig</command> recognizes
-it and places it first in any list of versions. In the future, Red
-Hat may provide a tool to help with this, or an option in the install
+it and places it first in any list of versions. In the future, we
+may provide a tool to help with this, or an option in the install
 wizard. Alternatively, in a POSIX shell environment (Linux or Cygwin
 on Windows) use the following command: </PARA>
-<SCREEN>find . -name v1_3_x -type d -printf 'mv &percnt;p &percnt;h/current\n' | sh</SCREEN>
+<SCREEN>find . -name <replaceable>&Version;</replaceable> -type d -printf 'mv &percnt;p &percnt;h/current\n' | sh</SCREEN>
 <PARA>Having carried out such a renaming operation, your
 	  source tree will now look like this: </PARA>
 <SCREEN><REPLACEABLE>BASE_DIR</REPLACEABLE>/kernel/current/include/
@@ -1970,12 +1975,12 @@ on Windows) use the following command: <
 	</SCREEN>
 <PARA>which is a suitable format for import into your own
 	  source code control system. When you get a subsequent
-	  release of eCos, do the same thing and use your own source
+	  release of <productname>eCos</productname>, do the same thing and use your own source
 	  code control system to manage the new source base, by
 	  importing the new version from </PARA>
 <SCREEN><REPLACEABLE>NEW_BASE_DIR</REPLACEABLE>/kernel/current/include/</SCREEN>
 <PARA>and so on. </PARA>
-<PARA>The eCos build tool will now offer only the
+<PARA>The <productname>eCos</productname> build tool will now offer only the
 	  &ldquo;current&rdquo; version of each package; select this
 	  for the packages you wish to use. </PARA>
 <PARA>Making such a change has implications for any build
new file mode 100644
--- /dev/null
+++ b/doc/sgml/user-guide/ecos-license.sgml
@@ -0,0 +1,382 @@
+<!-- {{{ Banner                         -->
+
+<!-- =============================================================== -->
+<!--                                                                 -->
+<!--     config-tool.sgml                                            -->
+<!--                                                                 -->
+<!--     eCos User Guide                                             -->
+<!--                                                                 -->
+<!-- =============================================================== -->
+<!-- ####COPYRIGHTBEGIN####                                          -->
+<!--                                                                 -->
+<!-- =============================================================== -->
+<!-- Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.  -->
+<!-- This material may be distributed only subject to the terms      -->
+<!-- and conditions set forth in the Open Publication License, v1.0  -->
+<!-- or later (the latest version is presently available at          -->
+<!-- http://www.opencontent.org/openpub/)                            -->
+<!-- Distribution of the work or derivative of the work in any       -->
+<!-- standard (paper) book form is prohibited unless prior           -->
+<!-- permission obtained from the copyright holder                   -->
+<!-- =============================================================== -->
+<!--                                                                 -->      
+<!-- ####COPYRIGHTEND####                                            -->
+<!-- =============================================================== -->
+<!-- #####DESCRIPTIONBEGIN####                                       -->
+<!--                                                                 -->
+<!-- ####DESCRIPTIONEND####                                          -->
+<!-- =============================================================== -->
+
+<!-- }}} -->
+
+<APPENDIX ID="GNU-GENERAL-PUBLIC-LICENSE">
+      <docinfo>
+        <edition>Version 2, June 1991</edition>
+        <copyright>
+          <year>1989</year>
+          <year>1991</year>
+          <holder>Free Software Foundation, Inc.</holder>
+        </copyright>
+        <address>59 Temple Place, Suite 330, Boston, MA  02111-1307  USA</address>
+      </docinfo>
+<TITLE>GNU General Public License</TITLE>
+<LITERALLAYOUT>
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    &lt;one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) &lt;year>  &lt;name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  &lt;signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
+</LITERALLAYOUT>
+</APPENDIX>
new file mode 100644
--- /dev/null
+++ b/doc/sgml/user-guide/installation.sgml
@@ -0,0 +1,248 @@
+<!-- {{{ Banner                         -->
+
+<!-- =============================================================== -->
+<!--                                                                 -->
+<!--     installation.sgml                                           -->
+<!--                                                                 -->
+<!--     eCos User Guide                                             -->
+<!--                                                                 -->
+<!-- =============================================================== -->
+<!-- ####COPYRIGHTBEGIN####                                          -->
+<!--                                                                 -->
+<!-- =============================================================== -->
+<!-- Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.  -->
+<!-- Copyright (C) 2003 Nick Garnett                                 -->
+<!-- This material may be distributed only subject to the terms      -->
+<!-- and conditions set forth in the Open Publication License, v1.0  -->
+<!-- or later (the latest version is presently available at          -->
+<!-- http://www.opencontent.org/openpub/)                            -->
+<!-- Distribution of the work or derivative of the work in any       -->
+<!-- standard (paper) book form is prohibited unless prior           -->
+<!-- permission obtained from the copyright holder                   -->
+<!-- =============================================================== -->
+<!--                                                                 -->      
+<!-- ####COPYRIGHTEND####                                            -->
+<!-- =============================================================== -->
+<!-- #####DESCRIPTIONBEGIN####                                       -->
+<!--                                                                 -->
+<!-- ####DESCRIPTIONEND####                                          -->
+<!-- =============================================================== -->
+
+<!-- }}} -->
+
+<part ID="user-guide-installation">
+<TITLE>Installing <productname>eCos</productname></TITLE>
+
+<!-- {{{ System Requirements            -->
+
+<chapter id="user-guide-installation-requirements">
+<title>System Requirements</title>
+
+<ITEMIZEDLIST>
+
+<LISTITEM>
+<PARA><!-- <conditionaltext> -->Standard Intel architecture PC running
+ Linux (tested on Red Hat Linux distributions 7.2-8.0), and Microsoft
+ Windows NT (no earlier than 4.0 SP6a) and Windows 2000. Other
+ versions of Red Hat distributions, or Linux distributions from other
+ vendors may also work, but are currently untested. </PARA>
+</LISTITEM>
+
+<LISTITEM>
+<PARA>Enough <!-- <index></index> --> disk space for the installed
+distribution. The <productname>eCos</productname> installation process
+will detail the various components of <productname>eCos</productname>
+and the compiler toolkit that can be installed, and their disk space
+requirements.</PARA>
+</LISTITEM>
+
+<LISTITEM>
+<PARA>64MB of RAM and a 350MHz or faster Pentium processor.</PARA><!-- <conditionaltext> -->
+</LISTITEM>
+
+</ITEMIZEDLIST>
+
+<PARA>If you are downloading the <productname>eCos</productname>
+Release distribution from <ULINK
+URL="http://sources.redhat.com/ecos">sources.redhat.com/ecos</ULINK>,
+you will also need space to store that image and to compile the
+toolchain and <productname>eCos</productname> from source.</PARA>
+
+
+</chapter>
+
+<!-- }}} -->
+<!-- {{{ Installation on Linux          -->
+
+<chapter id="user-guide-installation-linux">
+<title>Installation on Linux</title>
+
+<!-- XXXXX Need text on how to do this here. XXXXX -->
+
+<para>
+Still awaiting text. See the instructions on the website for now.
+</para>
+
+</chapter>
+
+<!-- }}} -->
+<!-- {{{ Installation on Windows        -->
+
+<chapter id="user-guide-installation-windows">
+<title>Installation on Windows</title>
+
+<!-- XXXXX Need text on how to do this here. XXXXX -->
+
+<para>
+Still awaiting text. See the instructions on the website for now.
+</para>
+    
+</chapter>
+
+<!-- }}} -->
+<!-- {{{ Target Setup                   -->
+
+<chapter id="user-guide-installation-target">
+<title>Target Setup</title>
+
+<PARA>While <productname>eCos</productname> supports a variety of
+targets, communication with all the targets happens in one of four
+ways. These are described in general below. Any details or variations
+from these descriptions will be found in the
+<productname>eCos</productname> documentation for a specific target,
+in the appendix.</PARA>
+
+<SECT1 id="connecting-target-serial">
+<TITLE><!-- <index></index> -->Connecting Via Serial Line</TITLE>
+
+<PARA>Most targets will have RedBoot or GDB Stubs installed.
+These normally waits for GDB to connect at 38400 baud, using 8 data
+bit, no parity bit and 1 stop-bit and no hardware flow control. Check
+the documentation for your target to ensure it uses this speed. If not,
+adjust the following instructions accordingly.</PARA>
+
+<PARA>The following instructions depend on your having selected
+the appropriate serial port on the host. That is, the serial port
+which connects to the target's (primary) serial port. On
+Linux this could be <FILENAME>/dev/ttyS0</FILENAME>,
+while the same port on Windows would be named COM1.
+Substitute the proper serial port name in the below.</PARA>
+
+<PARA>Connect to the target by issuing the following commands in
+GDB console mode:</PARA>
+
+<PROGRAMLISTING>
+(gdb) set remotebaud 38400    <!-- <conditionaltext> -->
+(gdb) target remote /dev/ttyS0
+</PROGRAMLISTING>
+
+<PARA>In Insight, connect by opening the <EMPHASIS>File-&#62;Target
+Settings</EMPHASIS> window and enter:</PARA>
+
+<PROGRAMLISTING>
+Target: Remote/Serial     
+Baud Rate: 38400     
+Port: /dev/ttyS0
+</PROGRAMLISTING>
+
+<PARA>Set other options according to preference, close the window
+and select 
+<EMPHASIS>Run-&#62;Connect to target</EMPHASIS>.
+</PARA>
+
+</SECT1>
+
+<!-- ==================================================== -->
+
+<SECT1 id="connecting-target-ethernet">
+<TITLE><!-- <index></index> -->Connecting Via Ethernet</TITLE>
+
+<PARA>Some targets allow GDB to connect via Ethernet - if so, it will
+be mentioned in the document describing the target. Substitute the
+target's assigned IP address or hostname for &lt;hostname&#62; in the
+following. Depending on how RedBoot has been configured, it will
+either have this address allocated statically, or will acquire it via
+BOOTP. In both cases RedBoot will report the IP address it is
+listening on in its startup message printed on the serial port. The
+&lt;port&#62; is the TCP port which RedBoot is listening on, usually
+9000. It is also listed in the target document.</PARA>
+
+<PARA>Connect to the target by issuing the following command in
+GDB console mode:</PARA>
+
+<PROGRAMLISTING>
+(gdb) target remote &lt;hostname&#62;:&lt;port&#62;
+</PROGRAMLISTING>
+
+<PARA>In Insight, connect by opening the <EMPHASIS>File-&#62;Target
+Settings</EMPHASIS> window and enter:</PARA>
+
+<PROGRAMLISTING>
+Target: Remote/TCP     
+Hostname: &lt;hostname&#62;     
+Port: &lt;port&#62;
+</PROGRAMLISTING>
+
+<PARA><!-- <conditionaltext> -->Set other options according to
+preference, close the window and select <EMPHASIS>Run-&#62;Connect to
+target</EMPHASIS>.</PARA>
+
+</SECT1>
+
+<!-- ==================================================== -->
+
+<SECT1 id="connecting-target-sim">
+<TITLE><!-- <index></index> -->Using A Simulator Target</TITLE>
+
+<PARA>GDB connects to all simulator targets using the same basic
+command, although each simulator may require additional options.
+These are listed in the document describing the target, and should
+be used when connecting.</PARA>
+
+<PARA>Connect to the target by issuing the following command in
+GDB console mode:</PARA>
+
+<PROGRAMLISTING>
+(gdb) target sim [target specific options]
+</PROGRAMLISTING>
+
+<PARA>In Insight, connect by opening the <EMPHASIS>File-&#62;Target
+Settings</EMPHASIS> window and enter:</PARA>
+
+<PROGRAMLISTING>
+Target: Simulator     
+Options: [target specific options]
+</PROGRAMLISTING>
+
+<PARA>Set other options according to preference, close the window and
+select <EMPHASIS>Run-&#62;Connect to target</EMPHASIS>.</PARA>
+
+</SECT1>
+
+<!-- ==================================================== -->
+
+<SECT1 id="connecting-target-synth">
+<TITLE>Using A Synthetic Target</TITLE>
+
+<PARA>Synthetic targets are special in that the built tests and
+applications actually run as native applications on the host. This
+means that there is no target to connect to. The test or application
+can be run directly from the GDB console using:</PARA>
+
+<PROGRAMLISTING>
+(gdb) run
+</PROGRAMLISTING>
+
+<PARA>or from Insight by pressing the <EMPHASIS>Run</EMPHASIS> icon.
+There is therefore no need to connect to the target or download the
+application, so you should ignore GDB &ldquo;target&rdquo; and
+&ldquo;load&rdquo; commands in any instructions found in other places
+in the documentation.</PARA>
+</SECT1>
+
+</chapter>
+
+<!-- }}} -->
+
+</part>
+
new file mode 100644
--- /dev/null
+++ b/doc/sgml/user-guide/introduction.sgml
@@ -0,0 +1,785 @@
+<!-- {{{ Banner                         -->
+
+<!-- =============================================================== -->
+<!--                                                                 -->
+<!--     introduction.sgml                                           -->
+<!--                                                                 -->
+<!--     eCos User Guide                                             -->
+<!--                                                                 -->
+<!-- =============================================================== -->
+<!-- ####COPYRIGHTBEGIN####                                          -->
+<!--                                                                 -->
+<!-- =============================================================== -->
+<!-- Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.  -->
+<!-- Copyright (C) 2003 Nick Garnett                                 -->
+<!-- This material may be distributed only subject to the terms      -->
+<!-- and conditions set forth in the Open Publication License, v1.0  -->
+<!-- or later (the latest version is presently available at          -->
+<!-- http://www.opencontent.org/openpub/)                            -->
+<!-- Distribution of the work or derivative of the work in any       -->
+<!-- standard (paper) book form is prohibited unless prior           -->
+<!-- permission obtained from the copyright holder                   -->
+<!-- =============================================================== -->
+<!--                                                                 -->      
+<!-- ####COPYRIGHTEND####                                            -->
+<!-- =============================================================== -->
+<!-- #####DESCRIPTIONBEGIN####                                       -->
+<!--                                                                 -->
+<!-- ####DESCRIPTIONEND####                                          -->
+<!-- =============================================================== -->
+
+<!-- }}} -->
+
+<part ID="user-guide-introduction">
+<TITLE>Introduction</TITLE>
+
+<!--
+<chapter ID="FOREWORD-WHATS-NEW">
+<TITLE>What's New?</TITLE>
+
+<para>
+XXXXX So what is new??? XXXXX
+</para>
+
+</chapter>
+-->
+
+<!-- ==================================================== -->
+
+<chapter ID="ecos-key-features">
+<TITLE>Key Features</TITLE>
+
+<itemizedlist>
+
+<listitem>
+<para><productname>eCos</productname> is distributed under the GPL
+license with an exception which permits proprietary application code
+to be linked with <productname>eCos</productname> without itself being
+forced to be released under the GPL. It is also royalty and buyout
+free.
+</para>
+</listitem>
+
+<listitem>
+<para>As an Open Source project, <productname>eCos</productname> is
+under constant improvement, with an active developer community, based
+around the <productname>eCos</productname> web site at <ULINK
+URL="http://sources.redhat.com/ecos/">http://sources.redhat.com/ecos/</ULINK>.
+</para>
+</listitem>
+
+<listitem>
+<para>Powerful GUI-based configuration system allowing both large and
+fine grained configuration of <productname>eCos</productname>. This
+allows the functionality of <productname>eCos</productname> to be
+customized to the exact requirements of the application.
+</para>
+</listitem>
+
+<listitem>
+<para>Full-featured, flexible, configurable, real time embedded
+kernel. The kernel provides thread scheduling, synchronization,
+timer, and communication primitives. It handles hardware resources
+such as interrupts, exceptions, memory and caches.
+</para>
+</listitem>
+
+<listitem>
+<para>The Hardware Abstraction Layer (HAL) hides the specific features
+of each supported CPU and platform, so that the kernel and other
+run-time components can be implemented in a portable fashion.
+</para>
+</listitem>
+
+<listitem>
+<para>Support for &micro;ITRON and POSIX Application Programmer
+Interfaces (APIs). It also includes a fully featured, thread-safe ISO
+standard C library and math library.
+</para>
+</listitem>
+
+<listitem>
+<para>Support for a wide variety of devices including many serial
+devices, ethernet controllers and FLASH memories. There is also
+support for PCMCIA, USB and PCI interconnects.
+</para>
+</listitem>
+
+<listitem>
+<para>A fully featured TCP/IP stack implementing IP, IPv6, ICMP, UDP
+and TCP over ethernet. Support for SNMP, HTTP, TFTP and FTP are also
+present.
+</para>
+</listitem>
+
+<listitem>
+<para>The RedBoot ROM monitor is an application that uses the
+<productname>eCos</productname> HAL for portability. It provides
+serial and ethernet based booting and debug services during
+development.
+</para>
+</listitem>
+
+<listitem>
+<para>Many components include test programs that validate the
+components behaviour. These can be used both to check that hardware is
+functioning correctly, and as examples of
+<productname>eCos</productname> usage.
+</para>
+</listitem>
+
+<listitem>
+<para><productname>eCos</productname> documentation included this User
+Guide, the Reference Manual and the Components Writer's Guide. These
+are being continually updated as the system develops.
+</para>
+</listitem>
+
+</itemizedlist>
+
+</chapter>
+
+<!-- ==================================================== -->
+
+<chapter ID="ecos-overview">
+<TITLE><productname>eCos</productname> Overview</TITLE>
+
+<PARA><productname>eCos</productname> is an open source, configurable,
+	portable, and royalty-free embedded real-time operating
+	system. The following text expands on these core aspects that
+	define <productname>eCos</productname>.</PARA>
+
+<PARA><productname>eCos</productname> is provided as an open source
+	runtime system supported by the GNU open source development
+	tools. Developers have full and unfettered access to all
+	aspects of the runtime system. No parts of it are proprietary
+	or hidden, and you are at liberty to examine, add to, and
+	modify the code as you deem necessary. These rights are
+	granted to you and protected by the GNU Public License (GPL).
+	An exception clause has been added to the eCos license which
+	limits the circumstances in which the license applies to other
+	code when used in conjunction with eCos. This exception grants
+	you the right to freely develop and distribute applications
+	based on <productname>eCos</productname>. You are not expected
+	or required to make your embedded applications or any
+	additional components that you develop freely available so
+	long as they are not derived from
+	<productname>eCos</productname> code. We of course welcome all
+	contributions back to <productname>eCos</productname> such as
+	board ports, device drivers and other components, as this
+	helps the growth and development of
+	<productname>eCos</productname>, and is of benefit to the
+	entire <productname>eCos</productname> community. See <XREF
+	LINKEND="ecos-licensing"> for more details.</PARA>
+
+<PARA>One of the key technological innovations in
+	<productname>eCos</productname> is the configuration
+	system. The configuration system allows the application writer
+	to impose their requirements on the run-time components, both
+	in terms of their functionality and implementation, whereas
+	traditionally the operating system has constrained the
+	application's own implementation. Essentially, this enables
+	<productname>eCos</productname> developers to create their own
+	application-specific operating system and makes
+	<productname>eCos</productname> suitable for a wide range of
+	embedded uses. Configuration also ensures that the resource
+	footprint of <productname>eCos</productname> is minimized as
+	all unnecessary functionality and features are removed. The
+	configuration system also presents
+	<productname>eCos</productname> as a component
+	architecture. This provides a standardized mechanism for
+	component suppliers to extend the functionality of
+	<productname>eCos</productname> and allows applications to be
+	built from a wide set of optional configurable run-time
+	components. Components can be provided from a variety of
+	sources including: the standard
+	<productname>eCos</productname> release; commercial third
+	party developers or open source contributors.</PARA>
+
+<PARA>The royalty-free nature of <productname>eCos</productname> means that you can develop and
+deploy your application using the standard <productname>eCos</productname> release without
+incurring any royalty charges. In addition, there are no up-front
+license charges for the <productname>eCos</productname> runtime source code and associated
+tools. We provide, without charge, everything necessary for basic
+embedded applications development.</PARA>
+
+<PARA><productname>eCos</productname> is designed to be portable to a
+wide range of target architectures and target platforms including 16,
+32, and 64 bit architectures, MPUs, MCUs and DSPs. The
+<productname>eCos</productname> kernel, libraries and runtime
+components are layered on the Hardware Abstraction Layer (HAL), and
+thus will run on any target once the HAL and relevant device drivers
+have been ported to the target's processor architecture and
+board. Currently <productname>eCos</productname> supports a large
+range of different target architectures:
+ </para>
+
+<itemizedlist>
+
+<listitem><para>ARM, Intel StrongARM and XScale</para></listitem>
+
+<listitem><para>Fujitsu FR-V</para></listitem>
+
+<listitem><para>Hitachi SH2/3/4</para></listitem>
+
+<listitem><para>Hitachi H8/300H </para></listitem>
+
+<listitem><para>Intel x86</para></listitem>
+
+<listitem><para>MIPS</para></listitem>
+
+<listitem><para>Matsushita AM3x</para></listitem>
+
+<listitem><para>Motorola PowerPC</para></listitem>
+
+<listitem><para>Motorola 68k/Coldfire</para></listitem>
+
+<listitem><para>NEC V850</para></listitem>
+
+<listitem><para>Sun SPARC</para></listitem>
+
+</itemizedlist>
+
+<para>
+including many of the popular variants of these architectures
+and evaluation boards.</PARA>
+
+<PARA><productname>eCos</productname> has been designed to support
+applications with real-time requirements, providing features such as
+full preemptability, minimal interrupt latencies, and all the
+necessary synchronization primitives, scheduling policies, and
+interrupt handling mechanisms needed for these type of
+applications. <productname>eCos</productname> also provides all the
+functionality required for general embedded application support
+including device drivers, memory management, exception handling, C,
+math libraries, etc. In addition to runtime support, the
+<productname>eCos</productname> system includes all the tools
+necessary to develop embedded applications, including
+<productname>eCos</productname> software configuration and build
+tools, and GNU based compilers, assemblers, linkers, debuggers, and
+simulators.</PARA>
+
+<PARA>To get the most out of <productname>eCos</productname> you
+should visit the <productname>eCos</productname> open source
+developers site: <ULINK
+URL="http://sources.redhat.com/ecos/">http://sources.redhat.com/ecos/</ULINK>.
+</para>
+
+<PARA>The site is dedicated to the <productname>eCos</productname>
+      developer community and contains a rich set of resources
+      including news, FAQ, online documentation, installation guide,
+      discussion and announcement mailing lists, and runtime and
+      development tools downloads. The site also supports anonymous
+      CVS and WEBCVS access to provide direct access to the latest
+      <productname>eCos</productname> source base. </PARA>
+
+<PARA><productname>eCos</productname> is released as open source
+      software because we believe that this is the most effective
+      software development model, and that it provides the greatest
+      benefit to the embedded developer community as a whole. As part
+      of this endeavor, we seek the input and participation of
+      <productname>eCos</productname> developers in its continuing
+      evolution. Participation can take many forms including:</PARA>
+<ITEMIZEDLIST>
+<LISTITEM>
+<PARA>providing us with feedback on how <productname>eCos</productname> might be made more
+useful to you - by taking part in the ongoing mailing list discussions
+and by submitting problem reports covering bugs, documentation issues,
+and missing features</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>contributing bug fixes and enhancement patches</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>contributing new code including device drivers, board
+ports, libraries, and other runtime components</PARA>
+</LISTITEM>
+</ITEMIZEDLIST>
+
+<PARA>Our long term aim is to make <productname>eCos</productname> a
+rich and ubiquitous standard infrastructure for the development of
+deeply embedded applications.  This will be achieved with the
+assistance of the <productname>eCos</productname> developer community
+cooperating to improve <productname>eCos</productname> for all. We
+would like to take this opportunity to extend our thanks to the many
+<productname>eCos</productname> developers who have already
+contributed feedback, ideas, patches, and code that have augmented and
+improved this release.</PARA>
+
+
+<para>
+<emphasis>The <productname>eCos</productname> Maintainers</emphasis>
+</para>
+
+</chapter>
+
+<!-- ==================================================== -->
+
+<chapter ID="ecos-licensing">
+<TITLE><productname>eCos</productname> Licence Overview</TITLE>
+
+<para>As of May 2002, <productname>eCos</productname> is released
+under a modified version of the well known <ulink
+url="http://www.gnu.org/copyleft/gpl.html">GNU General Public License
+(GPL)</ulink>, now making it an <ulink
+url="http://www.gnu.org/philosophy/license-list.html">official
+GPL-compatible Free Software License</ulink>. An exception clause has
+been added to the <productname>eCos</productname> license which limits
+the circumstances in which the license applies to other code when used
+in conjunction with <productname>eCos</productname>. The exception
+clause is as follows:</para>
+
+<programlisting width=72>
+ As a special exception, if other files instantiate templates or use macros
+ or inline functions from this file, or you compile this file and link it
+ with other works to produce a work based on this file, this file does not
+ by itself cause the resulting work to be covered by the GNU General Public
+ License. However the source code for this file must still be made
+ available in accordance with section (3) of the GNU General Public
+ License.
+
+ This exception does not invalidate any other reasons why a work based on
+ this file might be covered by the GNU General Public License.
+</programlisting>
+
+<para>The goal of the license is to serve the
+<productname>eCos</productname> user community as a whole. It allows
+all <productname>eCos</productname> users to develop products without
+paying anybody anything, no matter how many developers are working on
+the product or how many units will be shipped. The license also
+guarantees that the <productname>eCos</productname> source code will
+always be freely available. This applies not only to the core
+<productname>eCos</productname> code itself but also to any changes
+that anybody makes to the core. In particular, it should prevent any
+company or individual contributing code to the system and then later
+claiming that all <productname>eCos</productname> users are now guilty
+of copyright or patent infringements and have to pay royalties. It
+should also prevent any company from making some small improvements,
+calling the result a completely new system, and releasing this under a
+new and less generous license.</para>
+
+<para>The license does <emphasis>not</emphasis> require users to
+release the source code of any <emphasis>applications</emphasis> that
+are developed with <productname>eCos</productname>. However, if
+anybody makes any changes to code covered by the
+<productname>eCos</productname> license, or writes new files derived
+in any way from <productname>eCos</productname> code, then we believe
+that the entire user community should have the opportunity to benefit
+from this. The license stipulates that these changes must be made
+available in source code form to all recipients of binaries based on
+the modified code, either by including the sources along with the
+binaries you deliver (or with any device containing such binaries) or
+with a written offer to supply the source code to the general public
+for three years. It is perhaps most practical for
+<productname>eCos</productname> developers to make the source code
+available online and inform those who are receiving binaries
+containing <productname>eCos</productname> code, and probably also the
+<productname>eCos</productname> maintainers, about the location of the
+code. See the <ulink url="http://www.gnu.org/copyleft/gpl.html">full
+text of the GPL</ulink> for the most authoritative definition of the
+obligations.</para>
+
+<para>Although it is not strictly necessary to contribute the modified
+code back to the <productname>eCos</productname> open source project,
+we are always pleased to receive code contributions and hope that
+developers will also be keen to give back in return for what they
+received from the <productname>eCos</productname> project completely
+free of charge.  The <productname>eCos</productname> maintainers are
+responsible for deciding whether such contributions should be applied
+to the public repository. In addition, a <ulink
+url="http://sources.redhat.com/ecos/assign.html">copyright
+assignment</ulink> is required for any significant changes to the core
+<productname>eCos</productname> packages.</para>
+
+<para>The result is a royalty-free system with minimal obligations on
+the part of application developers. This has resulted in the rapid
+uptake of <productname>eCos</productname>. At the same time,
+<productname>eCos</productname> is fully open source with all the
+benefits that implies in terms of quality and innovation. We believe
+that this is a winning combination.</para>
+
+<sect1 id="ecos-licensing-qna">
+<title>Questions and answers</title>
+
+<para>The following queries provide some clarification as to the
+implications of the <productname>eCos</productname> license. They do
+not consititute part of the legal meaning of the license.</para>
+
+<para><emphasis>Q.</emphasis> What is the effect of the
+<productname>eCos</productname> license?</para>
+
+<para><emphasis>A.</emphasis> In the simplest terms, when you
+distribute anything containing <productname>eCos</productname> code,
+you must make the source code to <productname>eCos</productname>
+available under the terms of the GPL.</para>
+
+<para><emphasis>Q.</emphasis> What if I make changes to
+<productname>eCos</productname>, or write new code based on
+<productname>eCos</productname> code?</para>
+
+<para><emphasis>A.</emphasis> Then you must make those changes
+available as well.</para>
+
+<para><emphasis>Q.</emphasis> Do I have to distribute the source
+code to my application? Isn't the GPL "viral"?</para>
+
+<para><emphasis>A.</emphasis> You do not have to distribute any
+code under the terms of the GPL other than
+<productname>eCos</productname> code or code derived from
+<productname>eCos</productname>. For example, if you write a HAL port
+based on copying an existing <productname>eCos</productname> HAL in
+any way, you must make the source code available with the
+binary. However you would not need to make available any other code,
+such as the code of a wholly separate application linked with
+<productname>eCos</productname>.</para>
+
+<para><emphasis>Q.</emphasis> I would rather stick with the
+RHEPL code, but I updated my anonymous CVS checkout.</para>
+
+<para><emphasis>A.</emphasis> You can check out the final
+version of anonymous CVS before the license change using the CVS tag
+<literal>last-rhepl</literal>. See <ulink
+url="http://sources.redhat.com/ecos/anoncvs.html">the anonymous CVS
+access page</ulink>
+for details.</para>
+
+</sect1>
+
+<sect1 id="ecos-licensing-previous">
+<title>Previous License</title>
+
+<para>
+
+Prior to May 2002, <productname>eCos</productname> was released under
+the <ulink url="http://sources.redhat.com/ecos/old-license.html">Red
+Hat eCos Public License (RHEPL)</ulink>. The RHEPL required any
+modifications to <productname>eCos</productname> code to be made
+available under preferential terms to Red Hat and was therefore
+incompatible with code licensed under the GPL.  The use of
+<productname>eCos</productname> source code which was licensed under
+the RHEPL is not affected by the switch to the modified GPL for later
+revisions.
+</para>
+
+</sect1>
+
+</chapter>
+
+<!-- ==================================================== -->
+
+<chapter>
+<title>Notation and Conventions</title>
+
+<para>
+Since there are many supported target architectures, notation
+conventions are used in this manual to avoid repeating instructions
+that are very similar.
+</para>
+
+<SECT1 ID="GDB-AND-GCC-COMMAND-NOTATION"><!-- <index></index> --><!-- <xref> -->
+<TITLE>GDB and <!-- <index></index> -->GCC Command Notation</TITLE>
+
+<para>
+Cross-development commands like <COMMAND>gcc</COMMAND> and
+<COMMAND>gdb</COMMAND> will be shown with a
+<replaceable>TARGET-</replaceable> prefix. You need to replace
+<replaceable>TARGET-</replaceable> with the correct prefix before
+using the command. Just using <command>gcc</command> or
+<command>gdb</command> will use the tools for the host, which is not
+(usually) what you want.
+</para>
+
+<para>
+For example use <command>arm-elf-gcc</command> and
+<command>arm-elf-gdb</command> for ARM, Thumb, and StrongARM targets.
+Use <command>xscale-elf-gcc</command> and
+<command>xscale-elf-gdb</command> for Intel Xscale targets.
+Use <command>i386-elf-gcc</command> and
+<command>i386-elf-gdb</command> for IA32 targets. And so on, the exact
+prefix to use is shown in the documentation for each target.
+</para>
+
+<PARA>Note that some versions of the GCC cross compiler generate
+executable files with the <FILENAME>.exe</FILENAME> suffix on Windows,
+but not on Linux. The suffix <FILENAME>.exe</FILENAME> will be omitted
+from executable file names, so you will see <FILENAME>hello</FILENAME>
+instead of <FILENAME>hello.exe</FILENAME>.</PARA>
+
+</sect1>
+
+<SECT1 ID="DIRECTORY-AND-FILE-SYSTEM-CONVENTIONS"><!-- <index></index> -->
+<TITLE>Directory and File System Conventions</TITLE>
+
+<PARA>The default directory for installing
+<productname>eCos</productname> on Windows (usually
+<FILENAME>C:/Program Files/eCos</FILENAME>) is different from that on
+Linux (usually <FILENAME>/opt/ecos</FILENAME>).  Since many command
+line examples in the tutorials use these paths, this default (base)
+directory will be cited as <replaceable>BASE_DIR</replaceable>.</PARA>
+
+<PARA>Windows and Linux have a similar file system syntax, but the
+MS-DOS command interpreter on Windows uses the backslash character
+(\) as a path separator, while Linux and POSIX shells (including
+the Cygwin bash shell for windows) use the forward slash (/).</PARA>
+
+<PARA>This document will use the POSIX shell convention of forward
+slashes throughout.</PARA>
+
+</SECT1>
+
+<!-- ==================================================== -->
+
+<SECT1 ID="VERSION-CONVENTIONS">
+<TITLE>Version Conventions</TITLE>
+
+<para>
+This manual does not refer explicitly to any particular version of
+<productname>eCos</productname>. However, version numbers form part of
+many file path names. In all of these places the version number will
+be shown like this: <replaceable>&Version;</replaceable>.
+</para>
+
+<para>
+If you have used anonymous CVS to check
+<productname>eCos</productname> out of the CVS repository, the version
+number will always be <literal>current</literal>, since that is the
+name of the directory in the repository. When a stable release is made
+this directory name is changed, in the release, to the number of the
+release, for example <literal>v2_0</literal> or
+<literal>v2_1</literal>.
+</para>
+
+</SECT1>
+
+
+</chapter>
+
+
+
+<chapter id="documentation-roadmap">
+<title>Documentation Roadmap</title>
+
+<para>
+The <productname>eCos</productname> documentation is divided into a
+three main parts:
+</para>
+
+<VARIABLELIST>
+<VARLISTENTRY>
+<TERM><EMPHASIS>User Guide</EMPHASIS></TERM>
+<LISTITEM>
+<PARA>This document. It includes the following sections:</PARA>
+
+  <VARIABLELIST>
+  <VARLISTENTRY>
+  <TERM>Installing <productname>eCos</productname></TERM>
+  <LISTITEM>
+  <para>
+  This section describes how to install the
+  <productname>eCos</productname> software, how to set up your
+  hardware and how to test that it is all working.
+  </para>
+  </listitem>
+  </varlistentry>
+
+  <VARLISTENTRY>
+  <TERM>Programming Under <productname>eCos</productname></TERM>
+  <LISTITEM>
+  <para>
+  This section describes how to write programs that run under
+  <productname>eCos</productname> by running through some examples.
+  </para>
+  </listitem>
+  </varlistentry>
+
+  <VARLISTENTRY>
+  <TERM>The <productname>eCos</productname> <application>Configuration Tool</application></TERM>
+  <LISTITEM>
+  <para>
+  This section describes the <productname>eCos</productname> graphical
+  configuration tool and how to use it to change how
+  <productname>eCos</productname> behaves.</para>
+  </listitem>
+  </varlistentry>
+
+  <VARLISTENTRY>
+  <TERM><productname>eCos</productname> Programming Concepts and Techniques</TERM>
+  <LISTITEM>
+  <PARA>An explanation of the <productname>eCos</productname> programming
+	    cycle, and a description of some debugging facilities that
+	    <productname>eCos</productname> offers.
+  </PARA>
+  </listitem>
+  </varlistentry>
+
+  <VARLISTENTRY>
+  <TERM>Configuration and the Package
+              Repository</TERM>
+  <LISTITEM>
+  <PARA>Information on how to configure <productname>eCos</productname>
+              manually, including a reference on the
+              <command>ecosconfig</command> command, memory layouts,
+              and information on how to manage a package repository
+              using the <productname>eCos</productname> Package Administration
+              Tool.
+            </PARA>
+  </LISTITEM>
+  </VARLISTENTRY>
+
+
+  </variablelist>
+
+</LISTITEM>
+</VARLISTENTRY>
+
+<VARLISTENTRY>
+<TERM><EMPHASIS>Reference Guide</EMPHASIS></TERM>
+<LISTITEM>
+
+<PARA>The Reference Guide provides detailed documentation on various
+aspects of <productname>eCos</productname>. This document is being
+constantly updated, so the following list just mentions the more
+important sections, take a look at the guide itself for the full
+story.</PARA>
+
+  <variablelist>
+
+  <VARLISTENTRY>
+  <TERM>The <productname>eCos</productname> Kernel</TERM>
+  <LISTITEM>
+  <PARA>In-depth description of <productname>eCos</productname>&quot;s
+              native C kernel API Important considerations are given
+              for programming the <productname>eCos</productname>
+              kernel. The semantics for each kernel function are
+              described, including how they are affected by
+              configuration. </PARA>
+  </LISTITEM>
+  </VARLISTENTRY>
+
+  <VARLISTENTRY>
+  <TERM>POSIX and &micro;ITRON APIs</TERM>
+  <LISTITEM>
+  <PARA>A description of the POSIX and &micro;ITRON APIs and how they
+  are supported under <productname>eCos</productname>.
+  </para>
+  </LISTITEM>
+  </VARLISTENTRY>
+
+  <VARLISTENTRY>
+  <TERM>The <productname>eCos</productname> Hardware Abstraction Layer (HAL)</TERM>
+  <LISTITEM>
+  <PARA>A description of the structure and functionality of the
+  <productname>eCos</productname> HAL. This section also includes a
+  porting guide to help moving <productname>eCos</productname> to
+  different platforms.
+  </para>
+  </LISTITEM>
+  </VARLISTENTRY>
+
+  <VARLISTENTRY>
+  <TERM>Device Drivers</TERM>
+  <LISTITEM>
+  <PARA>A description of the philosophy behind
+              <productname>eCos</productname> device drivers, as well as a
+              presentation of the C language APIs for using the current
+              device drivers. </PARA>
+  <para>
+    Device driver support includes serial, ethernet and FLASH devices,
+    and support for PCI, PCMCIA and USB interconnects.
+  </para>
+  </LISTITEM>
+  </VARLISTENTRY>
+
+  <VARLISTENTRY>
+  <TERM>RedBoot User's Guide</TERM>
+  <LISTITEM>
+  <PARA>This describes RedBoot, which provides a complete bootstrap
+        environment for a range of embedded operating systems, such as
+        embedded Linux and <productname>eCos</productname>, and
+        includes facilities such as network downloading and
+        debugging. It also provides a simple flash file system for
+        boot images.
+  </para>
+  </LISTITEM>
+  </VARLISTENTRY>
+
+  <VARLISTENTRY>
+  <TERM>TCP/IP Stack Support</TERM>
+  <LISTITEM>
+  <PARA>This describes the Common Networking for
+        <productname>eCos</productname> package, which provides
+        support for a complete TCP/IP networking stack. The design
+        allows for the actual stack to be modular and at the current
+        time two different implementations, one based on OpenBSD from
+        2000 and a new version based on FreeBSD, are available.
+  </para>
+  <para>Other components related to networking, including support for
+        SNMP, DNS, HTTP and FTP, are also described.
+  </para>
+  </LISTITEM>
+  </VARLISTENTRY>
+
+  </variablelist>
+
+</LISTITEM>
+</VARLISTENTRY>
+
+<VARLISTENTRY>
+<TERM><EMPHASIS>Component Writer's Guide</EMPHASIS></TERM>
+<LISTITEM>
+<PARA>The Component Writer's Guide is intended for developers who need
+to add or modify parts of <productname>eCos</productname> itself. It
+describes the following things:
+</PARA>
+
+  <VARIABLELIST>
+  <VARLISTENTRY>
+  <TERM>Overview</TERM>
+  <LISTITEM>
+  <PARA>An explanation of the configuration technology used in
+  <productname>eCos</productname>, why it is done this way, how it
+  works and the terminology used.
+  </para>
+  </LISTITEM>
+  </VARLISTENTRY>
+
+  <VARLISTENTRY>
+  <TERM>Package Organization</TERM>
+  <LISTITEM>
+  <PARA>A description of the <productname>eCos</productname> package
+  repository, how it is organized and how packages themselves are
+  organized.
+  </para>
+  </LISTITEM>
+  </VARLISTENTRY>
+
+  <VARLISTENTRY>
+  <TERM>The CDL Language</TERM>
+  <LISTITEM>
+  <PARA>A description of the CDL language and how it is used to
+  control the configuration of <productname>eCos</productname>
+  components. The document also contains a complete specification of
+  the language.
+  </para>
+  </LISTITEM>
+  </VARLISTENTRY>
+
+  <VARLISTENTRY>
+  <TERM>The Build Process</TERM>
+  <LISTITEM>
+  <PARA>A description of what happens once a configuration has been
+  created and must be built into a set of executables.
+  </para>
+  </LISTITEM>
+  </VARLISTENTRY>
+
+  </variablelist>
+
+</LISTITEM>
+</VARLISTENTRY>
+</variablelist>
+
+</chapter>
+
+
+</part>
\ No newline at end of file
new file mode 100644
index 0000000000000000000000000000000000000000..3b7f13b2c9b45e967d79903d17d8b34e6579791d
GIT binary patch
literal 6398
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
new file mode 100644
index 0000000000000000000000000000000000000000..75f9b30b064c84e01de9b8940a9510171fc789d5
GIT binary patch
literal 1630
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
new file mode 100644
index 0000000000000000000000000000000000000000..a7b7b4fb9d93e52b9f45c57bf5639a2020f571d3
GIT binary patch
literal 6383
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
new file mode 100644
index 0000000000000000000000000000000000000000..d10a2f77f143d6b40c10c041a88eb9bef6f4af4c
GIT binary patch
literal 1882
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
U_1YGIwg3PC07*qoM6N<$g6z~+g#Z8m
new file mode 100644
index 0000000000000000000000000000000000000000..e5b75362de844444adea771dfe17c702a0e8f968
GIT binary patch
literal 3058
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
F{wGp$p!)y-
new file mode 100644
index 0000000000000000000000000000000000000000..a888aa3532dd512392b3cfc10f89fd06a2fa3950
GIT binary patch
literal 10998
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
R^?&<URTRMTHL@0A{{!;@Dxd%W
new file mode 100644
index 0000000000000000000000000000000000000000..455933926b5538630b24a93df6b08204dc65681f
GIT binary patch
literal 7295
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
TYQ>QKL!yD6v2M}DTfzSa3b$`^
--- a/doc/sgml/user-guide/programming-concepts-techniques.sgml
+++ b/doc/sgml/user-guide/programming-concepts-techniques.sgml
@@ -30,10 +30,10 @@
 <!-- }}} -->
 
 <PART id="ecos-programming-concepts-and-techniques">
-<TITLE>eCos Programming Concepts and Techniques</TITLE>
+<TITLE><productname>eCos</productname> Programming Concepts and Techniques</TITLE>
 <PARTINTRO id="programming-partintro">
-<PARA>Programming with eCos is somewhat different from programming
-      in more traditional environments. eCos is a configurable open
+<PARA>Programming with <productname>eCos</productname> is somewhat different from programming
+      in more traditional environments. <productname>eCos</productname> is a configurable open
       source system, and you are able to configure and build a system
       specifically to meet the needs of your application. </PARA>
 <PARA>Various different directory hierarchies are involved in
@@ -48,34 +48,34 @@
 <SECT1 id="cdl-concepts-about">
 <TITLE>About this chapter</TITLE>
 <PARA>This chapter serves as a brief introduction to the
-	concepts involved in eCos (Embedded Configurable Operating
+	concepts involved in <productname>eCos</productname> (Embedded Configurable Operating
 	System).  It describes the configuration architecture and the
 	underlying technology to a level required for the embedded
-	systems developer to configure eCos.  It does not describe in
+	systems developer to configure <productname>eCos</productname>.  It does not describe in
 	detail aspects such as how to write reusable components for
-	eCos: this information is given in the <EMPHASIS>CDL
-	  Writer&rsquo;s Guide</EMPHASIS>.</PARA>
+	<productname>eCos</productname>: this information is given in the <citetitle>Component
+	  Writer&rsquo;s Guide</citetitle>.</PARA>
 <SECT2>
 <TITLE>Background</TITLE>
 <PARA>Software solutions for the embedded space place
 	  particularly stringent demands on the developer, typically
 	  represented as requirements for small memory footprint, high
 	  performance and robustness.  These demands are addressed in
-	  eCos by providing the ability to perform compile-time
+	  <productname>eCos</productname> by providing the ability to perform compile-time
 	  specialization: the developer can tailor the operating
 	  system to suit the needs of the application.  In order to
-	  make this process manageable, eCos is built in the context
+	  make this process manageable, <productname>eCos</productname> is built in the context
 	  of a Configuration Infrastructure: a set of tools including
-	  a <EMPHASIS>Configuration Tool</EMPHASIS> and a formal
+	  a <application>Configuration Tool</application> and a formal
 	  description of the process of configuration by means of a
 	  <EMPHASIS>Component Definition Language</EMPHASIS>.</PARA>
 </SECT2>
 <SECT2>
 <TITLE>Configurations</TITLE>
-<PARA>eCos is tailored at source level (that is, before
-	    compilation or assembly) in order to create an eCos
+<PARA><productname>eCos</productname> is tailored at source level (that is, before
+	    compilation or assembly) in order to create an <productname>eCos</productname>
 	    <EMPHASIS>configuration</EMPHASIS>. In concrete terms, an
-	    eCos configuration takes the form of a configuration save
+	    <productname>eCos</productname> configuration takes the form of a configuration save
 	    file (with extension .ecc) and set of files used to build
 	    user applications (including, when built, a library file
 	    against which the application is linked). </PARA>
@@ -83,7 +83,7 @@
 </SECT1>
 <SECT1 id="cdl-component-repository">
 <TITLE>Component Repository</TITLE>
-<PARA>eCos is shipped in source in the form of a
+<PARA><productname>eCos</productname> is shipped in source in the form of a
 	  <EMPHASIS>component repository</EMPHASIS> - a directory
 	  hierarchy that contains the sources and other files which
 	  are used to build a configuration. The component repository
@@ -97,15 +97,15 @@
 	  this purpose is the <EMPHASIS>Component Definition
 	    Language</EMPHASIS> (CDL).  CDL defines the relationships
 	  between components and other information used by tools such
-	  as the eCos<APPLICATION>Configuration Tool</APPLICATION>.
+	  as the <productname>eCos</productname><APPLICATION>Configuration Tool</APPLICATION>.
 	  CDL is generally formulated by the writers of components: it
 	  is not necessary to write or understand CDL in order for the
-	  embedded systems developer to construct an eCos
+	  embedded systems developer to construct an <productname>eCos</productname>
 	  configuration. </PARA>
 </SECT1>
 <SECT1 id="cdl-packages">
 <TITLE>Packages</TITLE>
-<PARA>The building blocks of an eCos configuration are called
+<PARA>The building blocks of an <productname>eCos</productname> configuration are called
 	  <EMPHASIS>packages</EMPHASIS>. Packages are the units of
 	  software distribution.  A set of core packages (such as
 	  kernel, C library and math library) is provided by Red Hat:
@@ -117,8 +117,8 @@
 repository at any given time.</PARA>
 <PARA>Packages are organized in a tree hierarchy.  Each package
 is either at the top-level or is the child of another package.</PARA>
-<PARA>The eCos Administration Tool can be used to add or remove
-packages from the component repository.  The eCos <APPLICATION>Configuration Tool</APPLICATION> can be used to include or exclude packages from the configuration
+<PARA>The <productname>eCos</productname> <application> Package Administration Tool</application> can be used to add or remove
+packages from the component repository.  The <productname>eCos</productname> <APPLICATION>Configuration Tool</APPLICATION> can be used to include or exclude packages from the configuration
 being built.</PARA>
 </SECT1>
 <SECT1 id="cdl-configuration-items">
@@ -127,15 +127,15 @@ being built.</PARA>
 	  individual entities that form a configuration.  Each item
 	  corresponds to the setting of a C pre-processor macro (for
 	  example,
-	  CYGHWR_HAL_ARM_PID_GDB_BAUD). 
-	  The code of eCos itself is written to test such preprocessor
+	  <literal>CYGHWR_HAL_ARM_PID_GDB_BAUD</literal>). 
+	  The code of <productname>eCos</productname> itself is written to test such pre-processor
 	  macros so as to tailor the code.  User code can do
 	  likewise.</PARA>
 <PARA>Configuration items come in the following flavors:</PARA>
 <ITEMIZEDLIST>
 <LISTITEM>
 <PARA><EMPHASIS>None</EMPHASIS>: such entities serve only as
-placeholders in the hierarchy, allowing other entities to be grouped
+place holders in the hierarchy, allowing other entities to be grouped
 more easily.</PARA>
 </LISTITEM>
 <LISTITEM>
@@ -248,8 +248,8 @@ that a particular package is related to 
 	  </tgroup>
 	</table>
 
-<PARA>A complete description of properties is contained in the <EMPHASIS>CDL
-Writer&rsquo;s Guide</EMPHASIS>.</PARA>
+<PARA>A complete description of properties is contained in the <citetitle>Component
+Writer&rsquo;s Guide</citetitle>.</PARA>
 </SECT2>
 <SECT2>
 <TITLE>Inactive Items</TITLE>
@@ -273,7 +273,7 @@ on an expression involving other items. 
 	  <EMPHASIS>conflict</EMPHASIS>, which must be resolved in
 	  order to ensure a consistent configuration. Conflict
 	  resolution can be performed manually or with the assistance
-	  of the eCos tools.  Conflicts come in the following
+	  of the <productname>eCos</productname> tools.  Conflicts come in the following
 	  flavors:</PARA>
 <ITEMIZEDLIST>
 <LISTITEM>
@@ -307,32 +307,37 @@ be resolved by reference to the CDL writ
 <TITLE>Templates</TITLE>
 <PARA>A <EMPHASIS>template</EMPHASIS> is a saved configuration
 	  - that is, a set of packages and configuration item
-	  settings.  Templates are provided with eCos to allow you to
+	  settings.  Templates are provided with <productname>eCos</productname> to allow you to
 	  get started quickly by instantiating (copying) a saved
 	  configuration corresponding to one of a number of common
-	  scenarios; for example, a basic eCos configuration template
+	  scenarios; for example, a basic <productname>eCos</productname> configuration template
 	  is supplied that contains the infrastructure, kernel, C and
 	  math libraries, plus their support packages.</PARA>
 </SECT1>
 </CHAPTER>
 <CHAPTER id="component-repo-and-working-dirs">
 <TITLE>The Component Repository and Working Directories</TITLE>
-<PARA>Each of the file trees involved in eCos development has a
+<PARA>Each of the file trees involved in <productname>eCos</productname> development has a
 	different role. </PARA>
 <SECT1 id="component-repo">
 <TITLE>Component Repository</TITLE>
-<PARA>The eCos <FIRSTTERM>component repository</FIRSTTERM>
+<PARA>The <productname>eCos</productname> <FIRSTTERM>component repository</FIRSTTERM>
 	  contains directories for all the packages that are shipped
-	  with eCos or provided by third parties.</PARA>
+	  with <productname>eCos</productname> or provided by third parties.</PARA>
 <PARA>The component repository should not be modified as part of
 application development. </PARA>
+<!--
+<para>
+XXXXX We may want to change this picture XXXXX
+</para>
+-->
 <FIGURE>
 <TITLE>Component repository</TITLE>
 <GRAPHIC ENTITYREF="graphic30"></GRAPHIC>
 </FIGURE>
 <SECT2>
 <TITLE>Purpose</TITLE>
-<PARA>The component respository is the master copy of source code
+<PARA>The component repository is the master copy of source code
 for all system and third party components. It also contains some
 files needed to administer and build the system, such as <command>ecosadmin.tcl</command>.</PARA>
 </SECT2>
@@ -340,7 +345,7 @@ files needed to administer and build the
 <TITLE>How is it modified?</TITLE>
 <PARA>You modify it by importing new versions of packages from a
 distribution or removing existing packages. These activities are
-undertaken using the <EMPHASIS>eCos Package Administration Tool</EMPHASIS>.</PARA>
+undertaken using the <productname>eCos</productname> <application>Package Administration Tool</application>.</PARA>
 </SECT2>
 <SECT2>
 <TITLE>When is it edited manually?</TITLE>
@@ -348,7 +353,7 @@ undertaken using the <EMPHASIS>eCos Pack
 as determined by the component maintainer.</PARA>
 </SECT2>
 <SECT2>
-<TITLE>User applications</TITLE>
+<TITLE>User Applications</TITLE>
 <PARA>User application source code should <EMPHASIS>not</EMPHASIS> go
 into the component repository.</PARA>
 </SECT2>
@@ -359,20 +364,20 @@ into the component repository.</PARA>
 <TERM><FILENAME><REPLACEABLE>BASE_DIR</REPLACEABLE>/doc/ref/ecos-ref.html</FILENAME></TERM>
 <LISTITEM>
 <PARA>The top level HTML file for the
-		  <PRODUCTNAME>eCos</PRODUCTNAME><EMPHASIS>Reference
-		    Manual</EMPHASIS>. </PARA>
+		  <citetitle><PRODUCTNAME>eCos</PRODUCTNAME> Reference
+		    Manual</citetitle>. </PARA>
 </LISTITEM>
 </VARLISTENTRY>
 <VARLISTENTRY>
-<TERM><FILENAME><REPLACEABLE>BASE_DIR</REPLACEABLE>/prebuilt/pid/tests/kernel/v1_3_x/tests/thread_gdb.exe</FILENAME></TERM>
+<TERM><FILENAME><REPLACEABLE>BASE_DIR</REPLACEABLE>/prebuilt/pid/tests/kernel/<replaceable>&Version;</replaceable>/tests/thread_gdb.exe</FILENAME></TERM>
 <LISTITEM>
 <PARA></PARA>
 </LISTITEM>
 </VARLISTENTRY>
 <VARLISTENTRY>
-<TERM><FILENAME><REPLACEABLE>BASE_DIR</REPLACEABLE>/prebuilt/linux/tests/kernel/v1_3_x/tests/thread_gdb.exe</FILENAME></TERM>
+<TERM><FILENAME><REPLACEABLE>BASE_DIR</REPLACEABLE>/prebuilt/linux/tests/kernel/<replaceable>&Version;</replaceable>/tests/thread_gdb.exe</FILENAME></TERM>
 <LISTITEM>
-<PARA>Prebuilt tests for the supported platforms, and
+<PARA>Pre-built tests for the supported platforms, and
 		  the synthetic Linux target.</PARA>
 </LISTITEM>
 </VARLISTENTRY>
@@ -390,7 +395,7 @@ from a distribution or remove existing p
 </LISTITEM>
 </VARLISTENTRY>
 <VARLISTENTRY>
-<TERM><FILENAME><REPLACEABLE>BASE_DIR</REPLACEABLE>/packages/language/c/libm/<REPLACEABLE>&Version;</REPLACEABLE>/src/double/portable-api/s_tanh.c</FILENAME></TERM>
+<TERM><FILENAME><REPLACEABLE>BASE_DIR</REPLACEABLE>/packages/language/c/libm/<replaceable>&Version;</replaceable>/src/double/portable-api/s_tanh.c</FILENAME></TERM>
 <LISTITEM>
 <para>Implementation of the hyperbolic tangent function in the standard
 math library.</para>
@@ -432,7 +437,7 @@ by the <FILENAME>makefile</FILENAME>.</p
 <TITLE>Examples of files in this hierarchy</TITLE>
 <VARIABLELIST>
 <VARLISTENTRY>
-<TERM><FILENAME><REPLACEABLE>ecos-work/language/c/libc/</REPLACEABLE>v1_3_x/src</FILENAME></TERM>
+<TERM><FILENAME>ecos-work/language/c/libc/<replaceable>&Version;</replaceable>/src</FILENAME></TERM>
 <LISTITEM>
 <PARA>The directory in which object files for
 		  the C library are built.</PARA>
@@ -446,7 +451,7 @@ by the <FILENAME>makefile</FILENAME>.</p
 <PARA>The <FIRSTTERM>install tree</FIRSTTERM> is the location
 	  for all files needed for application development. The
 	  <filename>libtarget.a</filename> library, which contains the
-	    custom-built eCos kernel and other components, is placed
+	    custom-built <productname>eCos</productname> kernel and other components, is placed
 	    in the install tree, along with all packages&rsquo; public
 	    header files. If you build the tests, the test executable
 	    programs will also be placed in the install
@@ -461,7 +466,7 @@ by the <FILENAME>makefile</FILENAME>.</p
 <TITLE>Purpose</TITLE>
 <PARA>The install tree is where the custom-built
 	    <FILENAME>libtarget.a</FILENAME> library, which contains
-	    the eCos kernel and other components, is located. The
+	    the <productname>eCos</productname> kernel and other components, is located. The
 	    install tree is also the location for all the header files
 	    that are part of a published interface for their
 	    component. </PARA>
@@ -475,7 +480,7 @@ by the <FILENAME>makefile</FILENAME>.</p
 <SECT2>
 <TITLE>When is it edited manually?</TITLE>
 <PARA>Where a memory layout requires modification without
-	    use of the eCos Configuration Tool, the memory layout
+	    use of the <productname>eCos</productname> <application>Configuration Tool</application>, the memory layout
 	    files must be edited directly in the install tree. These
 	    files are located at
 	    <FILENAME>install/include/pkgconf/mlt_*.*</FILENAME>. 
@@ -523,8 +528,8 @@ by the <FILENAME>makefile</FILENAME>.</p
 </SECT1>
 <SECT1 id="repository-app-build-tree">
 <TITLE>Application Build Tree</TITLE>
-<PARA>This tree is not part of eCos itself: it is the
-	  directory in which eCos end users write their own
+<PARA>This tree is not part of <productname>eCos</productname> itself: it is the
+	  directory in which <productname>eCos</productname> end users write their own
 	  applications.</PARA>
 <PARA>Example applications and their
 	  <FILENAME>Makefile</FILENAME> are located in the component
@@ -534,86 +539,85 @@ by the <FILENAME>makefile</FILENAME>.</p
 	</PARA>
 <PARA>There is no imposed format on this directory, but there
 	  are certain compiler and linker flags that must be used to
-	  compile an eCos application. The basic set of flags is shown
+	  compile an <productname>eCos</productname> application. The basic set of flags is shown
 	  in the example <FILENAME>Makefile</FILENAME>, and additional
 	  details can be found in <xref linkend="compiler-and-linker-options">. </PARA>
 </SECT1>
 </CHAPTER>
 <CHAPTER id="compiler-and-linker-options">
 <TITLE>Compiler and Linker Options</TITLE>
-<PARA>eCos is built using the GNU C and C++ compilers.
-	The versions of the tools <EMPHASIS>Red Hat</EMPHASIS> has
-	prepared for this release have some enhancements, such as
-	constructor priority ordering and selective linking, which
-	will eventually become part of the standard distribution.
-      </PARA>
-<PARA>Some <EMPHASIS>GCC</EMPHASIS> options are required for eCos,
+
+    <PARA><productname>eCos</productname> is built using
+      the GNU C and C++ compilers. <productname>eCos</productname> relies on certain features of these
+      tools such as constructor priority ordering and selective linking
+      which are not part of other toolchains.
+    </PARA>
+    
+<PARA>Some <application>GCC</application> options are required for <productname>eCos</productname>,
 and others can be useful. This chapter gives a brief description
-of the required options as well as some recommended eCos-specific options.
-All other <EMPHASIS>GCC</EMPHASIS> options (described in the <EMPHASIS>GNUPro</EMPHASIS> manuals)
+of the required options as well as some recommended <productname>eCos</productname>-specific options.
+All other <application>GCC</application> options (described in the <application>GCC</application> manuals)
 are available. </PARA>
 <SECT1 id="compiling-c-app">
 <TITLE>Compiling a C Application</TITLE>
 <PARA>The following command lines demonstrate the
 	  <EMPHASIS>minimum</EMPHASIS> set of options required to
-	  compile and link an eCos program written in C. </PARA>
+	  compile and link an <productname>eCos</productname> program written in C. </PARA>
 <NOTE>
 <PARA>Remember that when this manual shows
-	    <COMMAND>gcc</COMMAND> you should type the full name of
-	    the cross compile,e.g. <COMMAND>mn10300-elf-gcc</COMMAND>,
-	    <COMMAND>mips-tx39-elf-gcc</COMMAND>,
-	    <COMMAND>powerpc-eabi-gcc</COMMAND>,
-	    <COMMAND>sparclite-elf-gcc</COMMAND>,
-	    <COMMAND>arm-elf-gcc</COMMAND>,
-	    <COMMAND>mips64vr4300-elf-gcc</COMMAND>,
+	    <COMMAND><replaceable>TARGET-</replaceable>gcc</COMMAND>
+	    you should use the full name of the cross compiler,
+	    e.g. <COMMAND>i386-elf-gcc</COMMAND>,
+	    <COMMAND>arm-elf-gcc</COMMAND>, or
 	    <COMMAND>sh-elf-gcc</COMMAND>. When compiling for the
-	    synthetic Linux target, use the native gcc which must have
-	    the features required by eCos.</PARA>
+	    synthetic Linux target, use the native
+	    <command>gcc</command> which must have the features
+	    required by <productname>eCos</productname>.</PARA>
 </NOTE>
-<SCREEN>$ gcc -c  -I<EMPHASIS>INSTALL_DIR</EMPHASIS>/include file.c
-$ gcc -o program file.o -L<EMPHASIS>INSTALL_DIR</EMPHASIS>/lib -Ttarget.ld -nostdlib</SCREEN>
+<SCREEN>
+$ <replaceable>TARGET-</replaceable>gcc -c  -I<EMPHASIS>INSTALL_DIR</EMPHASIS>/include file.c
+$ <replaceable>TARGET-</replaceable>gcc -o program file.o -L<EMPHASIS>INSTALL_DIR</EMPHASIS>/lib -Ttarget.ld -nostdlib
+</SCREEN>
 <NOTE>
 <PARA>Certain targets may require extra options, for example
 	    the SPARClite architectures require the option
 	    <OPTION>-mcpu=sparclite</OPTION>. Examine the
-	    <FILENAME><REPLACEABLE>BASE_DIR</REPLACEABLE>/packages/targets</FILENAME> 
-	    file or
 	    <FILENAME><REPLACEABLE>BASE_DIR</REPLACEABLE>/examples/Makefile</FILENAME> 
 	    or the &ldquo;Global compiler flags&rdquo; option
 	    (CYGBLD_GLOBAL_CFLAGS) in your generated
-	    eCos configuration) to see if any extra options are
+	    <productname>eCos</productname> configuration) to see if any extra options are
 	    required, and if so, what they are. </PARA>
 <PARA>The following command lines use some other options
 	    which are recommended because they use the
 	<!-- <index></index> -->selective linking feature:</PARA>
-<SCREEN>$ gcc -c  -I<REPLACEABLE>INSTALL_DIR</REPLACEABLE>/include -I. -ffunction-sections -fdata-sections -g -O2 file.c
-$ gcc -o program file.o -ffunction-sections -fdata-sections -Wl,--gc-sections -g -O2 -L<REPLACEABLE>INSTALL_DIR</REPLACEABLE>/lib -Ttarget.ld -nostdlib</SCREEN>
+<SCREEN>$ <replaceable>TARGET-</replaceable>gcc -c  -I<REPLACEABLE>INSTALL_DIR</REPLACEABLE>/include -I. -ffunction-sections -fdata-sections -g -O2 file.c
+$ <replaceable>TARGET-</replaceable>gcc -o program file.o -ffunction-sections -fdata-sections -Wl,--gc-sections -g -O2 \
+          -L<REPLACEABLE>INSTALL_DIR</REPLACEABLE>/lib -Ttarget.ld -nostdlib
+</SCREEN>
+        
 </NOTE>
 </SECT1>
 <SECT1 id="compiling-cpp-app">
 <TITLE>Compiling a C++ Application</TITLE>
 <PARA>The following command lines demonstrate the
 	  <EMPHASIS>minimum</EMPHASIS> set of options required to
-	  compile and link an eCos program written in C++.
+	  compile and link an <productname>eCos</productname> program written in C++.
 	</PARA>
 <NOTE>
 <PARA>Remember that when this manual shows
-	    <COMMAND>g++</COMMAND> you should type the full
-	    name of the cross compiler:
-	    <COMMAND>mn10300-elf-g++</COMMAND>,
-	    <COMMAND>mips-tx39-elf-g++</COMMAND>,
-	    <COMMAND>powerpc-eabi-g++</COMMAND>,
-	    <COMMAND>sparclite-elf-g++</COMMAND>,
-	    <COMMAND>arm-elf-g++</COMMAND>,
-	    <COMMAND>mips64vr4300-elf-g++</COMMAND>, or
-	    <COMMAND>sh-elf-g++</COMMAND>. When compiling
-	    for the synthetic Linux target, use the native
-	    <command>g++</command> which must
-	    have the features required by eCos. </PARA>
-<SCREEN>$ g++ -c  -I<REPLACEABLE>INSTALL_DIR</REPLACEABLE>/include -fno-rtti -fno-exceptions file.cxx
-$ g++ -o program file.o -L<REPLACEABLE>INSTALL_DIR</REPLACEABLE>/lib -Ttarget.ld -nostdlib
-	</SCREEN>
+	    <COMMAND><replaceable>TARGET-</replaceable>g++</COMMAND>
+	    you should use the full name of the cross compiler,
+	    e.g. <COMMAND>i386-elf-g++</COMMAND>,
+	    <COMMAND>arm-elf-g++</COMMAND>, or
+	    <COMMAND>sh-elf-g++</COMMAND>. When compiling for the
+	    synthetic Linux target, use the native
+	    <command>g++</command> which must have the features
+	    required by <productname>eCos</productname>.</PARA>
 </NOTE>
+<SCREEN>$ <replaceable>TARGET-</replaceable>g++ -c  -I<REPLACEABLE>INSTALL_DIR</REPLACEABLE>/include -fno-rtti -fno-exceptions file.cxx
+$ <replaceable>TARGET-</replaceable>g++ -o program file.o -L<REPLACEABLE>INSTALL_DIR</REPLACEABLE>/lib -Ttarget.ld -nostdlib
+</SCREEN>
+
 <NOTE>
 <PARA>Certain targets may require extra options,
 	    for example the SPARClite architectures require the option 
@@ -622,34 +626,37 @@ are available. </PARA>
 	    file or <FILENAME><REPLACEABLE>BASE_DIR</REPLACEABLE>/examples/Makefile</FILENAME>
 	    or the &ldquo;Global compiler flags&rdquo; option
 	    (CYGBLD_GLOBAL_CFLAGS) in your generated
-	    eCos configuration) to see if any extra options are
+	    <productname>eCos</productname> configuration) to see if any extra options are
 	    required, and if so, what they are.</PARA>
 <PARA>The following command lines use some other options
 	    which are recommended because they use the
 	    <FIRSTTERM>selective linking</FIRSTTERM> feature:</PARA>
-<SCREEN>$ g++ -c  -I<REPLACEABLE>INSTALL_DIR</REPLACEABLE>/include -I. -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority -g -O2 file.cxx
-$ g++ -o program file.o -W1,--gc-sections -g -O2 -L<REPLACEABLE>INSTALL_DIR</REPLACEABLE>/lib -Ttarget.ld  -nostdlib</SCREEN>
+<SCREEN>
+$ <replaceable>TARGET-</replaceable>g++ -c -I<REPLACEABLE>INSTALL_DIR</REPLACEABLE>/include -I. -ffunction-sections -fdata-sections -fno-rtti \
+          -fno-exceptions -finit-priority -g -O2 file.cxx
+$ <replaceable>TARGET-</replaceable>g++ -o program file.o -W1,--gc-sections -g -O2 -L<REPLACEABLE>INSTALL_DIR</REPLACEABLE>/lib -Ttarget.ld  -nostdlib</SCREEN>
 </NOTE>
 </SECT1>
 </CHAPTER>
+  
 <CHAPTER id="debugging-techniques">
 <TITLE>Debugging Techniques</TITLE>
-<PARA>eCos applications and components can be debugged in
+<PARA><productname>eCos</productname> applications and components can be debugged in
 	traditional ways, with printing statements and debugger
 	single-stepping, but there are situations in which these
 	techniques cannot be used. One example of this is when a
 	program is getting data at a high rate from a real-time
 	source, and cannot be slowed down or interrupted.</PARA>
-<PARA>eCos&rsquo;s infrastructure module provides a
+<PARA><productname>eCos</productname>&rsquo;s infrastructure module provides a
 	<EMPHASIS>tracing</EMPHASIS> formalism, allowing the
 	kernel&rsquo;s tracing macros to be configured in many useful
-	ways. eCos&rsquo;s kernel provides <FIRSTTERM>instrumentation
+	ways. <productname>eCos</productname>&rsquo;s kernel provides <FIRSTTERM>instrumentation
 	  buffers</FIRSTTERM> which also collect specific
 	(configurable) data about the system&rsquo;s history and
 	performance.</PARA>
 <SECT1 id="tracing">
 <TITLE>Tracing</TITLE>
-<PARA>To use eCos&rsquo;s tracing facilities you must first
+<PARA>To use <productname>eCos</productname>&rsquo;s tracing facilities you must first
 	  configure your system to use <FIRSTTERM>tracing</FIRSTTERM>.
 	  You should enable the Asserts and Tracing component
 	  (<OPTION>CYGPKG_INFRA_DEBUG</OPTION>) and the
@@ -660,12 +667,11 @@ are available. </PARA>
 	  <FILENAME><REPLACEABLE>BUILD_DIR</REPLACEABLE>/pkgconf/infra.h 
 	  </FILENAME> manually.</PARA>
 <PARA>You should then examine all the tracing-related options in
-the <EMPHASIS>Package: Infrastructure</EMPHASIS> chapter of the <PRODUCTNAME>eCos</PRODUCTNAME><EMPHASIS> Reference
-Manual</EMPHASIS>. One useful set of configuration options are: <EMPHASIS>CYGDBG_INFRA_DEBUG_FUNCTION_REPORTS</EMPHASIS> and <EMPHASIS>CYGDBG_INFRA_DEBUG_TRACE_MESSAGE</EMPHASIS>,
+the <citetitle>Package: Infrastructure</citetitle> chapter of the <citetitle><PRODUCTNAME>eCos</PRODUCTNAME> Reference
+Manual</citetitle>. One useful set of configuration options are: <literal>CYGDBG_INFRA_DEBUG_FUNCTION_REPORTS</literal> and <literal>CYGDBG_INFRA_DEBUG_TRACE_MESSAGE</literal>,
 which are both enabled by default when tracing is enabled.</PARA>
 <PARA>The following &ldquo;Hello world with tracing&rdquo; shows
-the output from running the hello world program (from the programming
-tutorial in <EMPHASIS>Getting Started with eCos</EMPHASIS>) that was
+the output from running the hello world program (from <xref linkend="ecos-hello-world">) that was
 built with tracing enabled: </PARA>
 <EXAMPLE>
 <TITLE>Hello world with tracing</TITLE>
@@ -774,21 +780,22 @@ Idle Thread          pri =  31 state = R
 </ITEMIZEDLIST>
 <PARA>Information about the events is stored in an
 	  <FIRSTTERM>event record</FIRSTTERM>. The structure that
-	  defines this record has type struct
-	  Instrument_Record: </PARA>
+	  defines this record has type <type>struct
+	  Instrument_Record</type>:
+</PARA>
 <PARA>The list of records is stored in an array called <TYPE>instrument_buffer</TYPE>
 which you can let the kernel provide or you can provide yourself
-by setting the configuration option <EMPHASIS>CYGVAR_KERNEL_INSTRUMENT_EXTERNAL_BUFFER</EMPHASIS>. </PARA>
+by setting the configuration option <literal>CYGVAR_KERNEL_INSTRUMENT_EXTERNAL_BUFFER</literal>. </PARA>
 <PARA>To write a program that examines the instrumentation
 	  buffers: </PARA>
 <ORDEREDLIST>
 <LISTITEM>
-<PARA>Enable instrumentation buffers in the eCos kernel configuration.
-The component macro is <REPLACEABLE>CYGPKG_KERNEL_INSTRUMENT</REPLACEABLE>.</PARA>
+<PARA>Enable instrumentation buffers in the <productname>eCos</productname> kernel configuration.
+The component macro is <literal>CYGPKG_KERNEL_INSTRUMENT</literal>.</PARA>
 </LISTITEM>
 <LISTITEM>
 <PARA>To allocate the buffers yourself, enable the configuration
-option <EMPHASIS>CYGVAR_KERNEL_INSTRUMENT_EXTERNAL_BUFFER</EMPHASIS>. </PARA>
+option <literal>CYGVAR_KERNEL_INSTRUMENT_EXTERNAL_BUFFER</literal>. </PARA>
 </LISTITEM>
 <LISTITEM>
 <PARA>Include the header file 
@@ -829,7 +836,7 @@ functions
 <LISTITEM>
 <PARA>Examine the buffer. For now you need to look at the data
 in there (the example program below shows how to do that), and future
-versions of eCos will include a host-side tool to help you understand
+versions of <productname>eCos</productname> will include a host-side tool to help you understand
 the data. </PARA>
 </LISTITEM>
 </ORDEREDLIST>
@@ -839,7 +846,7 @@ the data. </PARA>
 	    <FILENAME>examples</FILENAME> directory.
 	  </PARA>
 <PROGRAMLISTING>
-/* this is a program which uses eCos instrumentation buffers; it needs
+/* this is a program which uses <productname>eCos</productname> instrumentation buffers; it needs
  to be linked with a kernel which was compiled with support for
  instrumentation */
 
@@ -891,11 +898,15 @@ int main(void)
 }</PROGRAMLISTING>
 </EXAMPLE>
 <PARA>Here is how you could compile and run this program in the <filename>examples</filename> directory,
-using (for example) the MN10300 compiler: </PARA>
-<SCREEN>$ make XCC=mn10300-elf-gcc PKG_INSTALL_DIR=/tmp/ecos-work-mn10300/install instrument-test
-mn10300-elf-gcc -c -o instrument-test.o -g -Wall -I/tmp/ecos-work-mn10300/install/include -ffunction-sections -fdata-sections instrument-test.c
-mn10300-elf-gcc -nostartfiles -L/tmp/ecos-work-mn10300/install/lib -W1,--gc-sections -o instrument-test instrument-test.o -Ttarget.ld -nostdlib
-$ mn10300-elf-run --board=stdeval1 instrument-test</SCREEN>
+using (for example) the MN10300 simulator target: </PARA>
+<SCREEN>
+$ make XCC=mn10300-elf-gcc PKG_INSTALL_DIR=/tmp/ecos-work-mn10300/install instrument-test
+mn10300-elf-gcc -c -o instrument-test.o -g -Wall -I/tmp/ecos-work-mn10300/install/include \
+        -ffunction-sections -fdata-sections instrument-test.c
+mn10300-elf-gcc -nostartfiles -L/tmp/ecos-work-mn10300/install/lib -W1,--gc-sections -o \
+        instrument-test instrument-test.o -Ttarget.ld -nostdlib
+$ mn10300-elf-run --board=stdeval1 instrument-test
+</SCREEN>
 <EXAMPLE>
 <TITLE>Instrument buffer output</TITLE>
 <PARA>Here is the output of the
new file mode 100644
--- /dev/null
+++ b/doc/sgml/user-guide/programming.sgml
@@ -0,0 +1,1333 @@
+<!-- {{{ Banner                         -->
+
+<!-- =============================================================== -->
+<!--                                                                 -->
+<!--     programming.sgml                                            -->
+<!--                                                                 -->
+<!--     eCos User Guide                                             -->
+<!--                                                                 -->
+<!-- =============================================================== -->
+<!-- ####COPYRIGHTBEGIN####                                          -->
+<!--                                                                 -->
+<!-- =============================================================== -->
+<!-- Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.  -->
+<!-- Copyright (C) 2003 Nick Garnett                                 -->
+<!-- This material may be distributed only subject to the terms      -->
+<!-- and conditions set forth in the Open Publication License, v1.0  -->
+<!-- or later (the latest version is presently available at          -->
+<!-- http://www.opencontent.org/openpub/)                            -->
+<!-- Distribution of the work or derivative of the work in any       -->
+<!-- standard (paper) book form is prohibited unless prior           -->
+<!-- permission obtained from the copyright holder                   -->
+<!-- =============================================================== -->
+<!--                                                                 -->      
+<!-- ####COPYRIGHTEND####                                            -->
+<!-- =============================================================== -->
+<!-- #####DESCRIPTIONBEGIN####                                       -->
+<!--                                                                 -->
+<!-- ####DESCRIPTIONEND####                                          -->
+<!-- =============================================================== -->
+
+<!-- }}} -->
+
+<part ID="user-guide-programming">
+<TITLE>Programming With <productname>eCos</productname></TITLE>
+
+<CHAPTER ID="PROGRAMMING-WITH-ECOS">
+<TITLE>Programming With <productname>eCos</productname></TITLE>
+
+<PARA>The following chapters of this manual comprise a simple tutorial
+for configuring and building <productname>eCos</productname>, building and running <productname>eCos</productname> tests,
+and finally building three stand-alone example programs which use
+the  <productname>eCos</productname> API to perform some simple tasks.</PARA>
+
+<PARA>You will need a properly installed <productname>eCos</productname> system, with the correct
+versions of the GNU toolchain.<!-- <conditionaltext> --> On Windows
+you will be using the bash command line interpreter that comes with
+Cygwin, with the environment variables set as described in the
+toolchain documentation.</PARA>
+
+<SECT1 id="development-process">
+<TITLE>The Development Process</TITLE>
+
+<PARA>Most development projects using <productname>eCos</productname> would contain some (or
+most) of  the following:</PARA>
+
+<SECT2>
+<TITLE><productname>eCos</productname> Configuration</TITLE>
+
+<PARA><productname>eCos</productname> is configured to provide the desired API (the inclusion
+of libc, uitron, and the disabling of certain undesired funtions,
+etc.), and semantics (selecting scheduler, mutex behavior, etc.).
+See <XREF LINKEND="CONFIGURING-AND-BUILDING-ECOS-FROM-SOURCE">.</PARA>
+
+<PARA>It would normally make sense to enable <productname>eCos</productname> assertion checking
+at this time as well, to catch as many programming errors during
+the development phase as possible.</PARA>
+
+<PARA>Note that it should not be necessary to spend much time on
+<productname>eCos</productname> configuration initially. It may be important to perform fine
+tuning to reduce the memory footprint and to improve performance
+later when the product reaches a testable state.</PARA>
+</SECT2>
+
+<SECT2>
+<TITLE>    Integrity check of the <productname>eCos</productname> configuration</TITLE>
+
+<PARA>While we strive to thoroughly test <productname>eCos</productname>, the vast number
+of configuration permutations mean that the particular configuration
+parameters used for your project may not have been tested. Therefore,
+we advise running the <productname>eCos</productname> tests after the project's
+<productname>eCos</productname> configuration has been determined. See <XREF LINKEND="RUNNING-AN-ECOS-TEST-CASE">.</PARA>
+
+<PARA>Obviously, this should be repeated if the configuration changes
+later on in the development process.</PARA>
+</SECT2>
+
+<SECT2>
+<TITLE>    Application Development - Target Neutral Part</TITLE>
+
+<PARA>While your project is probably targeting a specific architecture
+and platform, possibly custom hardware, it may be possible to perform
+part of the application development using simulated or synthetic
+targets.</PARA>
+
+<PARA>There are three good reasons for doing this:</PARA>
+
+<ITEMIZEDLIST>
+
+<LISTITEM>
+<PARA>It may be possible by this means to perform application
+development in parallel with the design/implementation
+of the target hardware, thus providing more time for developing
+and testing functionality, and reducing time-to-market.</PARA>
+</LISTITEM>
+
+<LISTITEM>
+<PARA>The build-run-debug-cycle may be faster when the application
+does not have to be downloaded to a target via a serial interface.
+Debugging is also likely to be more responsive when you do not have to
+to communicate with the remote GDB stubs in RedBoot via serial. It
+also removes the need for manually or automatically resetting the
+target hardware.</PARA>
+</LISTITEM>
+
+<listitem>
+<para>
+New hardware can often be buggy. Comparing the behaviour of the
+program on the hardware and in the simulator or synthetic target may
+allow you to identify where the problems lie.
+</para>
+</listitem>
+
+</ITEMIZEDLIST>
+
+<PARA>This approach is possible because all targets (including
+simulators and synthetic ones) provide the same basic API: that
+is, kernel, libc, libm, uitron, infra, and to some extent, HAL and
+IO.</PARA>
+
+<PARA>Synthetic targets are especially suitable as they allow you
+to construct simulations of elaborate devices by interaction with
+the host system, where an IO device API can hide the details from
+the application. When switching to hardware later in the development
+cycle, the IO driver is properly implemented.
+</para>
+
+<para>
+Simulators can also do this, but it all depends on the
+design and capabilities of the simulator you use. Some, like
+<ULINK URL="http://sources.redhat.com/sid">SID</ULINK> or
+<ULINK URL="http://bochs.sourceforge.net/">Bochs</ULINK> provide
+complete hardware emulation, while others just support enough of the
+instruction set to run compiled code.
+</PARA>
+
+<PARA>Therefore, select a simulator or synthetic target and use
+it for as long as possible for application development. That is,
+configure for the selected target, build <productname>eCos</productname>, build the application
+and link with <productname>eCos</productname>, run and debug. Repeat the latter two steps until
+you are happy with it.</PARA>
+
+<PARA>Obviously, at some time you will have to switch to the intended
+target hardware, for example when adding target specific feature
+support, for memory footprint/performance characterization,
+and for final tuning of <productname>eCos</productname> and the application.</PARA>
+
+</SECT2>
+
+<SECT2>
+<TITLE>    Application Development - Target Specific Part</TITLE>
+
+<PARA>Repeat the build-run-debug-cycle while performing final tuning
+and debugging of application. Remember to disable <productname>eCos</productname> assertion
+checking if you are testing any performance-related aspects, it can
+make a big difference.</PARA>
+
+<PARA>It may be useful to switch between this and the previous step
+repeatedly through the development process; use the simulator/synthetic
+target for actual development, and use the target hardware to continually
+check memory footprint and performance. There should be little cost
+in switching between the two targets when using two separate build
+trees. </PARA>
+</SECT2>
+
+</SECT1>
+
+</CHAPTER>
+
+<!-- ==================================================== -->
+
+<CHAPTER ID="CONFIGURING-AND-BUILDING-ECOS-FROM-SOURCE"><!-- <conditionaltext> -->
+<TITLE><!-- <xref> --><!-- <index></index> -->Configuring and Building <productname>eCos</productname> from Source</TITLE>
+
+<PARA>This chapter documents the configuration of <productname>eCos</productname>. The process is
+the same for any of the supported targets: you may select a
+hardware target (if you have a board available), any one of the
+simulators, or a synthetic target (if your host platform has synthetic
+target support).</PARA>
+
+<!-- ==================================================== -->
+
+<SECT1 id="ecos-startup-configs">
+<TITLE><!-- <xref> --><productname>eCos</productname> Start-up Configurations</TITLE>
+
+<PARA>There are various ways to download an executable image to a
+target board, and these involve different ways of preparing the
+executable image. In the <productname>eCos</productname> Hardware Abstraction Layer (HAL package)
+there are configuration options to support the different download
+methods. <XREF LINKEND="user-guide-download-methods"> summarizes the
+ways in which an <productname>eCos</productname> image can be prepared for different types of
+download. This is not an exhaustive list, some targets define
+additional start-up types of their own. Where a ROM Monitor is
+mentioned, this will usually be RedBoot, although on some older, or
+low resource, targets you may need to use CygMon or the GDB stubs ROM,
+see the target documentation for details.</PARA>
+
+
+<TABLE id="user-guide-download-methods">
+<TITLE>Configuration for various download methods</TITLE>
+<TGROUP COLS="2">
+<THEAD>
+<ROW>
+<ENTRY>Download method</ENTRY>
+<ENTRY>HAL configuration</ENTRY>
+</ROW>
+</THEAD>
+<TBODY>
+<ROW>
+<ENTRY>Burn hardware ROM</ENTRY>
+<ENTRY>&nbsp;ROM or ROMRAM start-up</ENTRY>
+</ROW>
+<ROW>
+<ENTRY>Download to ROM emulator</ENTRY>
+<ENTRY>&nbsp;ROM or ROMRAM start-up</ENTRY>
+</ROW>
+<ROW>
+<ENTRY>Download to board with ROM Monitor</ENTRY>
+<ENTRY>&nbsp;RAM start-up</ENTRY>
+</ROW>
+<ROW>
+<ENTRY>Download to simulator without ROM Monitor</ENTRY>
+<ENTRY>&nbsp;ROM start-up</ENTRY>
+</ROW>
+<ROW>
+<ENTRY>Download to simulator with ROM Monitor</ENTRY>
+<ENTRY>&nbsp;RAM start-up</ENTRY>
+</ROW>
+<ROW>
+<ENTRY>Download to simulator ignoring devices</ENTRY>
+<ENTRY>&nbsp;SIM configuration</ENTRY>
+</ROW>
+<ROW>
+<ENTRY>Run synthetic target</ENTRY>
+<ENTRY>&nbsp;RAM start-up</ENTRY>
+</ROW>
+</TBODY>
+</TGROUP>
+</TABLE>
+
+<CAUTION>
+
+<PARA>You cannot run an application configured for RAM start-up
+on the simulator directly: it will fail during start-up. You can
+only download it to the simulator if
+you are already running RedBoot in the simulator,
+as described in the toolchain documentation
+or you load through the 
+<EMPHASIS>SID </EMPHASIS>
+GDB debugging component.  This is not the same as the simulated
+stub, since it does not require a target program to be running to
+get GDB to talk to it.  It can be done before letting the simulator
+run
+or you use the ELF loader component to get a program into memory.</PARA>
+
+</CAUTION><!-- <label> --><!-- <conditionaltext> --><!-- NOTE</label> -->
+
+<NOTE>
+<PARA>Configuring <productname>eCos</productname>' HAL package for simulation should
+rarely be needed for real development; binaries built with such
+a kernel will not run on target boards at all,<!-- <conditionaltext> -->
+and the MN10300 and
+TX39 simulators can run binaries built for stdeval1 and jmr3904
+target boards.
+The main use for a ``simulation'' configuration
+is if you are trying to work around problems with the device drivers
+or with the simulator.  Also note that when using a TX39 system configured
+for simulator start-up you should then invoke the simulator with 
+the <OPTION>--board=jmr3904pal</OPTION>
+option instead of 
+<OPTION>--board=jmr3904</OPTION><!-- <conditionaltext> --></PARA>
+</NOTE>
+
+<NOTE>
+<PARA>If your chosen architecture does not have simulator support,
+then the combinations above that refer to the simulator do not apply.
+Similarly, if your chosen platform does not have RedBoot
+ROM support, the combinations listed above that use 
+RedBoot do not apply.</PARA>
+</NOTE>
+
+<PARA>The debugging environment for most developers will be either
+a hardware board or the simulator, in which case they will be able
+to select a single HAL configuration.</PARA>
+
+</SECT1>
+
+<!-- ==================================================== -->
+
+<SECT1 id="using-configtool-windows-linux">
+<TITLE><!-- <index></index> -->
+Configuration Tool on Windows and Linux Quick Start</TITLE>
+
+<PARA><!-- <conditionaltext> --> 
+
+Note that the use of the <application>Configuration Tool</application>
+is described in detail in <XREF
+LINKEND="THE-ECOS-CONFIGURATION-TOOL">.</PARA>
+
+<PARA>The <application>Configuration Tool</application> (see <XREF LINKEND="PROGRAMMING-FIGURE-CONFIGURATION-TOOL">)
+has five main elements: the <EMPHASIS>configuration window</EMPHASIS>,
+the <emphasis>conflicts window</emphasis>,
+the <EMPHASIS>properties window</EMPHASIS>, the <!-- <xref> --><EMPHASIS>short
+description window</EMPHASIS>,
+and the <EMPHASIS>output window</EMPHASIS>.</PARA>
+
+<FIGURE ID="PROGRAMMING-FIGURE-CONFIGURATION-TOOL">
+<TITLE>Configuration Tool</TITLE><!-- <xref> -->
+<GRAPHIC ENTITYREF="programming-graphic1"></GRAPHIC>
+</FIGURE>
+
+<PARA>Start by opening the templates window via <GUIMENUITEM>Build-&#62;Templates</GUIMENUITEM>.
+Select the desired target (see <XREF LINKEND="FIGURE-TEMPLATE-SELECTION">).</PARA>
+
+<FIGURE ID="FIGURE-TEMPLATE-SELECTION">
+<TITLE>Template selection</TITLE><!-- <xref> -->
+<GRAPHIC ENTITYREF="programming-graphic2"></GRAPHIC>
+</FIGURE>
+
+<PARA>Make sure that the configuration is correct for the target
+in terms of endianness, CPU model, Startup type, etc. (see <XREF LINKEND="CONFIGURING-FOR-THE-TARGET">).</PARA>
+
+<FIGURE ID="CONFIGURING-FOR-THE-TARGET">
+<TITLE><!-- <conditionaltext> --><!-- <xref> -->Configuring
+for the target</TITLE>
+<GRAPHIC ENTITYREF="programming-graphic3"></GRAPHIC>
+</FIGURE>
+
+<PARA>Next, select the <EMPHASIS>Build-&#62;Library</EMPHASIS> menu
+item to start building <productname>eCos</productname> (see <XREF
+LINKEND="FIGURE-SELECTING-THE-BUILD-LIBRARY-MENU-ITEM">).  The
+application will configure the sources, prepare a build tree, and
+build the <FILENAME>libtarget.a</FILENAME> library, which contains the
+<productname>eCos</productname> kernel and other packages.</PARA>
+
+<FIGURE ID="FIGURE-SELECTING-THE-BUILD-LIBRARY-MENU-ITEM"><!-- <xref> -->
+<TITLE>Selecting the Build Library menu item</TITLE>
+<GRAPHIC ENTITYREF="programming-graphic4"></GRAPHIC>
+</FIGURE>
+
+
+<PARA>The <EMPHASIS>Save As</EMPHASIS> dialog box will appear, asking
+you to specify a directory in which to place your save file. You
+can use the default, but it is a good idea to make a subdirectory,
+called <filename>ecos-work</filename> for example. </PARA>
+
+<FIGURE>
+<TITLE>Save file dialog</TITLE>
+<GRAPHIC ENTITYREF="programming-graphic5"></GRAPHIC>
+</FIGURE>
+
+<PARA>The first time you build an <productname>eCos</productname> library for a specific
+architecture, the <application>Configuration Tool</application> may prompt
+you for the location of the appropriate build tools (including
+<command>make</command> and
+<command><replaceable>TARGET-</replaceable>gcc</command>) using a
+<EMPHASIS>Build Tools</EMPHASIS> dialog box (as shown in <XREF
+LINKEND="FIGURE-BUILD-TOOLS-DIALOG">). You can select a location from
+the drop down list, browse to the directory using the
+<EMPHASIS>Browse</EMPHASIS> button, or type in the location of the
+build tools manually.</PARA>
+
+<FIGURE ID="FIGURE-BUILD-TOOLS-DIALOG"><!-- <xref> -->
+<TITLE>Build tools dialog</TITLE>
+<GRAPHIC ENTITYREF="programming-graphic6"></GRAPHIC>
+</FIGURE>
+
+<PARA>The <application>Configuration Tool</application> may also prompt you
+for the location of the user tools (such as <command>cat</command> and
+<command>ls</command>) using a <emphasis>User Tools</emphasis> dialog
+box (as shown in <XREF LINKEND="FIGURE-USER-TOOLS-DIALOG">). As with
+the <EMPHASIS>Build Tools</EMPHASIS> dialog, you can select a location
+from the drop down list, browse to the directory using the
+<EMPHASIS>Browse</EMPHASIS> button, or type in the location of the
+user tools manually. Note that on Linux, this will often be
+unnecessary as the tools will already be on your PATH.</PARA>
+
+<FIGURE ID="FIGURE-USER-TOOLS-DIALOG"><!-- <xref> -->
+<TITLE>User tools dialog</TITLE>
+<GRAPHIC ENTITYREF="programming-graphic7"></GRAPHIC>
+</FIGURE>
+
+<PARA>When the tool locations have been entered, the <application>Configuration
+Tool</application> will configure the sources, prepare a build tree,
+and build the <filename>libtarget.a</filename> library, which contains
+the <productname>eCos</productname> kernel and other packages.</PARA>
+
+<PARA>The output from the configuration process and the building
+of <filename>libtarget.a</filename> will be shown in the output
+window.</PARA>
+
+<PARA>Once the build process has finished you will have a kernel
+with other packages in <FILENAME>libtarget.a</FILENAME>. You should
+now build the <productname>eCos</productname> tests for your particular configuration. </PARA>
+
+<PARA>You can do this by selecting <EMPHASIS>Build</EMPHASIS> -&#62; <EMPHASIS>Tests</EMPHASIS>.
+Notice that you could have selected <EMPHASIS>Tests</EMPHASIS> instead
+of <EMPHASIS>Library</EMPHASIS> in the earlier step and it would
+have built <EMPHASIS>both</EMPHASIS> the library and the tests,
+but this would increase the build time substantially, and if you
+do not need to build the tests it is unnecessary.</PARA>
+
+<FIGURE>
+<TITLE>Selecting the Build Tests menu item</TITLE>
+<GRAPHIC ENTITYREF="programming-graphic8"></GRAPHIC>
+</FIGURE>
+
+<PARA><XREF LINKEND="RUNNING-AN-ECOS-TEST-CASE"> will guide you through running one
+	    of the test cases you just built on the selected target,
+	    using GDB. </PARA>
+</SECT1>
+
+<!-- ==================================================== -->
+
+<SECT1 ID="USING-ECOSCONFIG-ON-LINUX">
+<TITLE><!-- <index></index> -->
+Ecosconfig on Windows and Linux Quick Start</TITLE>
+
+<PARA>As an alternative to using the graphical
+<application>Configuration Tool</application>, it is still possible to
+configure and build a kernel by editing a configuration file manually
+and using the <command>ecosconfig</command> command. </PARA>
+
+<para>
+Manual configuration and the <command>ecosconfig</command> command are
+described in detail in <XREF LINKEND="manual-configuration">.
+</para>
+
+<para>
+To use the <command>ecosconfig</command> command you need to start a
+shell. In Windows you need to start a
+<productname>CygWin</productname> <command>bash</command> shell, not a
+DOS command line.
+</para>
+
+<!--
+<para>
+XXXXX Need to know whether there will be a packaged shell entry in the
+start menu, and where XXXXX
+</para>
+-->
+
+<PARA>The following instructions assume that the
+<literal>PATH</literal> and <literal>ECOS_REPOSITORY</literal>
+environment variables have been setup correctly as described in <XREF
+LINKEND="user-guide-installation-linux">.  They also assume Linux
+usage but equally well apply to Windows running Cygwin.</PARA>
+
+<PARA>Before invoking <command>ecosconfig</command> you need to
+choose a directory in which to work. For the purposes of this tutorial,
+the default path will be <FILENAME><replaceable>BASE_DIR</replaceable>/ecos-work</FILENAME>.
+Create this directory and change to it by typing: </PARA>
+
+<PROGRAMLISTING>
+$ mkdir <replaceable>BASE_DIR</replaceable>/ecos-work
+$ cd <replaceable>BASE_DIR</replaceable>/ecos-work
+</PROGRAMLISTING>
+
+<PARA>To see what options can be used with <command>ecosconfig</command>,
+type: </PARA>
+
+<PROGRAMLISTING>$ ecosconfig --help</PROGRAMLISTING>
+
+<PARA>The available packages, targets and templates may be listed
+as follows:</PARA>
+
+<PROGRAMLISTING>
+$ ecosconfig list
+</PROGRAMLISTING>
+
+<PARA>Here is sample output from <command>ecosconfig</command> showing
+the usage message.</PARA>
+
+<EXAMPLE>
+<TITLE>Getting <!-- <index></index> --> help from ecosconfig</TITLE>
+
+<PROGRAMLISTING>
+$ ecosconfig --help
+Usage: ecosconfig [ qualifier ... ] [ command ]
+  commands are:
+    list                                       : list repository contents
+    new TARGET [ TEMPLATE [ VERSION ] ]        : create a configuration
+    target TARGET                              : change the target hardware
+    template TEMPLATE [ VERSION ]              : change the template
+    add PACKAGE [ PACKAGE ... ]                : add package(s)
+    remove PACKAGE [ PACKAGE ... ]             : remove package(s)
+    version VERSION PACKAGE [ PACKAGE ... ]    : change version of package(s)
+    export FILE                                : export minimal config info
+    import FILE                                : import additional config info
+    check                                      : check the configuration
+    resolve                                    : resolve conflicts
+    tree                                       : create a build tree
+  qualifiers are:
+    --config=FILE                              : the configuration file
+    --prefix=DIRECTORY                         : the install prefix
+    --srcdir=DIRECTORY                         : the source repository
+    --no-resolve                               : disable conflict
+resolution
+    --version                                  : show version and copyright
+$
+</PROGRAMLISTING>
+</EXAMPLE>
+
+<EXAMPLE>
+
+<TITLE>ecosconfig output &mdash; <!-- <index></index> -->
+list of available packages, targets and templates</TITLE>
+
+<PROGRAMLISTING>
+$ ecosconfig list
+Package CYGPKG_CYGMON (CygMon support via eCos): 
+aliases: cygmon 
+versions: &Version; 
+Package CYGPKG_DEVICES_WALLCLOCK_DALLAS_DS1742 (Wallclock driver for Dallas 1742): 
+aliases: devices_wallclock_ds1742 device_wallclock_ds1742 
+versions: &Version; 
+Package CYGPKG_DEVICES_WALLCLOCK_SH3 (Wallclock driver for SH3 RTC module): 
+aliases: devices_wallclock_sh3 device_wallclock_sh3 
+versions: &Version; 
+Package CYGPKG_DEVICES_WATCHDOG_ARM_AEB (Watchdog driver for ARM/AEB board): 
+aliases: devices_watchdog_aeb device_watchdog_aeb 
+versions: &Version; 
+Package CYGPKG_DEVICES_WATCHDOG_ARM_EBSA285 (Watchdog driver for ARM/EBSA285 board): 
+aliases: devices_watchdog_ebsa285 device_watchdog_ebsa285 
+versions: &Version; 
+&hellip;
+</PROGRAMLISTING>
+</EXAMPLE>
+
+
+<SECT2>
+<TITLE>Selecting a <!-- <index></index> --> Target</TITLE>
+
+<PARA>To configure for a listed target, type: </PARA>
+
+<PROGRAMLISTING>
+$ ecosconfig new &lt;target&#62;
+</PROGRAMLISTING>
+
+<PARA>For example, to configure for the ARM PID development board,
+type: </PARA>
+
+<PROGRAMLISTING>
+$ ecosconfig new pid
+</PROGRAMLISTING>
+
+<PARA>You can then edit the generated file,
+<FILENAME>ecos.ecc</FILENAME>, setting the options as required for the
+target (endianess, CPU model, Startup type, etc.).  For detailed
+information about how to edit the <filename>ecos.ecc</filename> file,
+see the <citetitle>CDL Writer's Guide</citetitle> and <XREF
+LINKEND="editing-an-ecos-savefile">.
+</PARA>
+
+<PARA>Create a build tree for the configured target by typing:</PARA>
+
+<PROGRAMLISTING>
+$ ecosconfig tree
+</PROGRAMLISTING>
+
+<para>
+If there are any problem with the configuration,
+<command>ecosconfig</command> will tell you. The most likely cause of
+this is mistakes when editing the <filename>ecos.ecc</filename> file.
+You can check whether the configuration you have made is correct,
+without building the tree with the following command:
+</para>
+
+<PROGRAMLISTING>
+$ ecosconfig check
+</PROGRAMLISTING>
+
+<para>
+If this reports any conflicts you can get
+<command>ecosconfig</command> to try and resolve them itself by typing:
+</para>
+
+<PROGRAMLISTING>
+$ ecosconfig resolve
+</PROGRAMLISTING>
+
+<para>
+See <XREF LINKEND="conflicts-and-constraints"> for more details.
+</para>
+
+<PARA>You can now run the command <command>make</command> or <command>make
+tests</command>, after which you will be at the same point you
+would be after running the <application>Configuration Tool</application>
+&mdash; you can start developing your own applications,
+following the steps in <XREF LINKEND="BUILDING-AND-RUNNING-SAMPLE-APPLIATIONS">. </PARA>
+
+<PARA>The procedure shown above allows you to do very coarse-grained
+configuration of the <productname>eCos</productname> kernel: you can select which packages
+to include in your kernel, and give target and start-up options.
+But you cannot select components within a package, or set the very
+fine-grained options. </PARA>
+
+<PARA>To select fine-grained configuration options you will need to
+edit the configuration file <filename>ecos.ecc</filename> in the
+current directory and regenerate the build tree.</PARA>
+
+<CAUTION>
+<PARA>You should follow the manual configuration process described
+above very carefully, and you should read the comments in each file
+to see when one option depends on other options or packages being
+enabled or disabled. If you do not, you might end up with an inconsistently
+configured kernel which could fail to build or might execute
+incorrectly.</PARA>
+</CAUTION>
+
+</SECT2>
+</SECT1>
+
+</CHAPTER>
+
+<!-- ==================================================== -->
+
+<CHAPTER ID="RUNNING-AN-ECOS-TEST-CASE">
+<TITLE>Running an <productname>eCos</productname> Test Case</TITLE>
+
+<PARA>In <XREF LINKEND="using-configtool-windows-linux"> or <XREF
+LINKEND="using-ecosconfig-on-linux"> you created the <productname>eCos</productname> test cases
+as part of the build process. Now it is time to try and run one.
+</para>
+
+<!-- ==================================================== -->
+
+<SECT1 id="using-configtool-testcase">
+<TITLE>Using the <application>Configuration Tool</application></TITLE>
+
+<PARA>Test executables that have been linked using the
+<emphasis>Build-&gt;Tests</emphasis> operation against the current
+configuration can be executed by selecting <EMPHASIS>Tools-&#62;Run
+Tests</EMPHASIS>.</PARA>
+
+<PARA>When a test run is invoked, a property sheet is displayed, see
+<xref linkend="programming-run-tests">. Press the <emphasis>Uncheck
+All</emphasis> button and then find and check just one test,
+<filename>bin_sem0</filename> for example.
+</para>
+
+<FIGURE id="programming-run-tests">
+<TITLE>Run tests</TITLE>
+<GRAPHIC ENTITYREF="graphic27"></GRAPHIC>
+</FIGURE>
+
+<para>
+Now press the <emphasis>Properties</emphasis> button to set up
+communications with the target. This will bring up a properties dialog
+shown in <xref linkend="programming-run-properties">. If you have
+connected the target board via a serial cable, check the
+<emphasis>Serial</emphasis> radio button, and select the serial port
+and baud rate for the board. If the target is connected via the
+network select the <emphasis>TCP/IP</emphasis> button and enter the IP
+address that the board has been given, and the port number (usually
+9000).
+</para>
+
+<FIGURE id="programming-run-properties">
+<TITLE>Properties dialog box</TITLE>
+<GRAPHIC ENTITYREF="graphic25"></GRAPHIC>
+</FIGURE>
+
+<para>
+Click OK on this dialog and go back to the <emphasis>Run
+Tests</emphasis> dialog. Press the <emphasis>Run</emphasis> button and
+the selected test will be downloaded and run. The
+<emphasis>Output</emphasis> tab will show you how this is
+progressing. If it seems to stop for a long time, check that the
+target board is correctly connected, and that <productname>eCos</productname> has been correctly
+configured -- especially the start-up type.
+</para>
+
+<para>
+When the program runs you should see a couple of line similar to this appear:
+</para>
+
+<PROGRAMLISTING>
+PASS:&lt;Binary Semaphore 0 OK&gt;
+EXIT:&lt;done&gt;
+</PROGRAMLISTING>
+
+<para>
+This indicates that the test has run successfully.
+</para>
+
+<PARA>See <xref linkend="config-tool-test-execution"> for
+further details.</PARA>
+
+</SECT1>
+
+<!-- ==================================================== -->
+
+<SECT1 id="using-commandline-testcase">
+<TITLE>Using the command line</TITLE>
+
+<PARA>Start a command shell (such as a Cygwin shell window in Windows)
+with the environment variables set as described in the toolchain
+documentation.  Change to the directory in which you set up your build
+tree, and invoke <!-- <index></index> --> GDB on the test
+program.</PARA>
+
+<PARA>To run the <!-- <index></index> -->bin_sem0 test (which will
+test the kernel for the correct creation and destruction of binary
+semaphores) type: </PARA>
+
+<PROGRAMLISTING>
+$ <replaceable>TARGET-</replaceable>gdb -nw install/tests/kernel/<replaceable>&Version;</replaceable>/tests/bin_sem0
+</PROGRAMLISTING>
+
+<PARA>You should see output similar to the following in the command
+window:</PARA>
+
+<PROGRAMLISTING>
+GNU gdb THIS-GDB-VERSION
+Copyright 2001 Free Software Foundation, Inc.
+GDB is free software, covered by the GNU General Public License, and you are
+welcome to change it and/or distribute copies of it under certain conditions.
+Type "show copying" to see the conditions.
+There is absolutely no warranty for GDB.  Type "show warranty" for details.
+This GDB was configured as "--host=THIS-HOST --target=THIS-TARGET".
+(gdb)
+</PROGRAMLISTING>
+
+<PARA>If you are trying to run a synthetic target test on <!--
+<index></index> -->Linux, skip the following connection and download
+steps. Otherwise, connect to the target by typing: </PARA>
+
+<PROGRAMLISTING>
+(gdb) set remotebaud 38400
+(gdb) target remote /dev/ttyS0
+</PROGRAMLISTING>
+<PARA>on Linux or</PARA>
+<PROGRAMLISTING>
+(gdb) set remotebaud 38400
+(gdb) target remote com1
+</PROGRAMLISTING>
+<PARA>on Windows or</PARA>
+<PROGRAMLISTING>
+(gdb) target sim
+</PROGRAMLISTING>
+<para>to use a simulator in either host O/S.</para>
+
+<para>
+Check the documentation for the target board for the actual baud rate
+to use when connecting to real targets.
+</para>
+
+<PARA>
+You will see output similar to the following: </PARA>
+
+<programlisting width=72>
+Remote debugging using /dev/ttyS1
+0x0000d50c in ?? ()
+    at <replaceable>BASE_DIR</replaceable>/kernel/<replaceable>&Version;</replaceable>/src/common/kapi.cxx:345
+
+Current language:  auto; currently c++
+(gdb) 
+</programlisting>
+
+<para>
+Or if you are using the simulator:
+</para>
+
+<PROGRAMLISTING>
+Connected to the simulator.
+(gdb)
+</PROGRAMLISTING>
+
+<PARA>Now download the program to the target with</PARA>
+
+<PROGRAMLISTING>
+(gdb) load
+</PROGRAMLISTING>
+
+<PARA>You should see output similar to the following on your screen: </PARA>
+
+<PROGRAMLISTING>
+Loading section .text, size 0x4b04 lma 0x108000
+Loading section .rodata, size 0x738 lma 0x10cb08
+Loading section .data, size 0x1c0 lma 0x10d240
+Start address 0x108000, load size 21500
+Transfer rate: 24571 bits/sec, 311 bytes/write.
+(gdb)
+</PROGRAMLISTING>
+
+<PARA>You are now ready to run your program. If you type: </PARA>
+
+<PROGRAMLISTING>
+(gdb) continue
+</PROGRAMLISTING>
+
+<PARA>you will see output similar to the following: </PARA>
+
+<PROGRAMLISTING>
+Continuing.
+PASS:&lt;Binary Semaphore 0 OK&gt;
+EXIT:&lt;done&gt;
+</PROGRAMLISTING>
+
+<NOTE>
+<PARA> If you are using a simulator or the synthetic target rather
+	    than real hardware, you must use the GDB command
+	    &ldquo;run&rdquo; rather than &ldquo;continue&rdquo; to
+	    start your program.</PARA>
+</NOTE>
+
+<PARA>You can terminate your GDB session with
+<EMPHASIS>Control+C</EMPHASIS>, otherwise it will sit in the
+&ldquo;idle&rdquo; thread and use up CPU time. This is not a problem
+with real targets, but may have undesirable effects in simulated or
+synthetic targets. Type <command>quit</command> and you are
+done. </PARA>
+
+</SECT1>
+
+<!-- ==================================================== -->
+
+<SECT1 id="testing-filters">
+<TITLE>Testing Filters</TITLE>
+
+<PARA>While most test cases today run solely in the target environment,
+some packages may require external testing infrastructure and/or
+feedback from the external environment to do complete testing.</PARA>
+
+<PARA>The serial package is an example of this. The network package
+also contains some tests that require programs to be run on a
+host. See the network <citetitle>Tests and Demonstrations</citetitle>
+section in the network documentation in the <citetitle><productname>eCos</productname> Reference
+Guide</citetitle>. Here we will concentrate on the serial tests since
+these are applicable to more targets.
+</para>
+
+<PARA>Since the serial line is also used for communication with
+GDB, a  filter is inserted in the communication pathway between
+GDB and the serial device which is connected to the hardware target.
+The filter forwards all communication between the two, but also
+listens for special commands embedded in the data stream from the
+target.</PARA>
+
+<PARA>When such a command is seen, the filter stops forwarding data
+to GDB from the target and enters a special mode. In this mode
+the test case running on the target is able to control the filter,
+commanding it to run various tests. While these tests run, GDB is
+isolated from the target.</PARA>
+
+<PARA>As the test completes (or if the filter detects a target crash)
+the communication path between GDB and the hardware target is re-established,
+allowing GDB to resume control.</PARA>
+
+<PARA>In theory, it is possible to extend the filter to provide
+a generic framework for other target-external testing components,
+thus decoupling the testing infrastructure from the (possibly limited)
+communication means provided by the target (serial, JTAG, Ethernet,
+etc). </PARA>
+
+<PARA>Another advantage is that the host tools do not need to
+know about the various testing environments required by the <productname>eCos</productname>
+packages, since all contact with the target continues to happen
+via GDB.</PARA>
+
+</sect1>
+
+</CHAPTER>
+
+
+<!-- ==================================================== -->
+
+<CHAPTER ID="BUILDING-AND-RUNNING-SAMPLE-APPLIATIONS"><!-- <conditionaltext> -->
+<TITLE><!-- <xref> -->Building and <!-- <index></index> -->Running Sample Applications</TITLE>
+
+<PARA>The example programs in this tutorial are included, along
+with a <filename>Makefile</filename>, in the <filename>examples</filename> directory
+of the <productname>eCos</productname> distribution. The first program you will run is a <EMPHASIS>hello
+world</EMPHASIS>-style application, then you will run a more complex
+application that demonstrates the creation of threads and the use
+of cyg_thread_delay(), and finally you will run
+one that uses clocks and alarm handlers.</PARA>
+
+<PARA>The <filename>Makefile</filename> depends on an externally
+defined variable to find the <productname>eCos</productname> library and header files. This
+variable is <literal>INSTALL_DIR</literal> and must be set to the
+pathname of the install directory created in <xref
+linkend="using-configtool-windows-linux">.
+</PARA>
+
+<para>
+<literal>INSTALL_DIR</literal> may be either be set in the shell
+environment or may be supplied on the command line. To set it in the
+shell do the following in a <command>bash</command> shell:
+</para>
+
+<programlisting width=72>
+$ export INSTALL_DIR=BASE_DIR/ecos-work/arm_install
+</programlisting>
+
+<para>
+You can then run <command>make</command> without any extra parameters
+to build the examples.
+</para>
+
+<para>
+Alternatively, if you can do the following:
+</para>
+
+<programlisting width=72>
+$ make INSTALL_DIR=BASE_DIR/ecos-work/arm_install
+</programlisting>
+
+<!-- ==================================================== -->
+
+<SECT1 id="ecos-hello-world">
+<TITLE><productname>eCos</productname> Hello World</TITLE>
+
+<PARA>The following code is found in the file <FILENAME><!-- <index></index> -->hello.c</FILENAME>
+in the <FILENAME>examples</FILENAME> directory: </PARA>
+
+<SECT2>
+<TITLE><productname>eCos</productname><!-- <index></index> --> hello world program listing</TITLE>
+
+<PROGRAMLISTING>
+/* this is a simple hello world program */
+#include &lt;stdio.h&#62;
+int main(void)
+{
+ printf("Hello, eCos world!\n");
+ return 0;
+}
+</PROGRAMLISTING>
+
+<PARA>To compile this or any other program that is not part of the
+<productname>eCos</productname> distribution, you can follow the procedures described below. Type
+this explicit compilation command (assuming your current working
+directory is also where you built the <productname>eCos</productname> kernel):</PARA>
+
+<PROGRAMLISTING>
+$ <replaceable>TARGET-</replaceable>gcc -g -I<replaceable>BASE_DIR</replaceable>/ecos-work/install/include hello.c -L<replaceable>BASE_DIR</replaceable>/ecos-work/install/lib -Ttarget.ld -nostdlib
+</PROGRAMLISTING>
+
+<PARA>The compilation command above contains some standard GCC
+options (for example, <OPTION>-g</OPTION> enables debugging), as well
+as some mention of paths
+(<OPTION>-I<replaceable>BASE_DIR</replaceable>/ecos-work/install/include</OPTION> allows files
+like <FILENAME>cyg/kernel/kapi.h</FILENAME> to be found, and
+<OPTION>-L<replaceable>BASE_DIR</replaceable>/ecos-work/install/lib</OPTION> allows the linker to
+find <OPTION>-Ttarget.ld</OPTION>). </PARA>
+
+<PARA>The executable program will be called <FILENAME>a.out</FILENAME>. </PARA>
+
+<NOTE>
+<PARA>Some target systems require special options to be passed to
+gcc to compile correctly for that system. Please examine the Makefile
+in the examples directory to see if this applies to your target.</PARA>
+</NOTE>
+
+<PARA>You can now run the resulting program using GDB in exactly the
+same the way you ran the test case before. The procedure will be the
+same, but this time run
+<command><replaceable>TARGET-</replaceable>gdb</command> specifying
+<option>-nw a.out</option> on the command line:</PARA>
+
+<PROGRAMLISTING>
+$ <replaceable>TARGET-</replaceable>gdb -nw a.out
+</PROGRAMLISTING>
+
+<PARA>For targets other than the synthetic linux target, you should
+now run the usual GDB commands described earlier. Once this is done,
+typing the command "continue" at the (gdb) prompt ("run" for
+simulators) will allow the program to execute and print the string
+"Hello, eCos world!" on your screen.</PARA>
+
+<PARA>On the synthetic linux target, you may use the "run" command
+immediately - you do not need to connect to the target, nor use the
+"load" command.<!-- <conditionaltext> --></PARA>
+
+</SECT2>
+</SECT1>
+
+<!-- ==================================================== -->
+
+<SECT1 id="sample-twothreads">
+<TITLE>A Sample Program with Two Threads</TITLE>
+
+<PARA>Below is a program that uses some of <productname>eCos</productname>' system calls. It
+creates two threads, each of which goes into an infinite loop in which
+it sleeps for a while (using cyg_thread_delay()).  This code is found
+in the file <filename><!-- <index></index> -->twothreads.c</filename>
+in the examples directory.</PARA>
+
+<SECT2>
+<TITLE><productname>eCos</productname> <!-- <index></index> -->two-threaded program listing</TITLE>
+
+<PROGRAMLISTING>
+#include &lt;cyg/kernel/kapi.h&#62;
+#include &lt;stdio.h&#62;
+#include &lt;math.h&#62;
+#include &lt;stdlib.h&#62;
+
+/* now declare (and allocate space for) some kernel objects,
+  like the two threads we will use */
+cyg_thread thread_s[2];	/* space for two thread objects */
+
+char stack[2][4096];	/* space for two 4K stacks */
+
+/* now the handles for the threads */
+cyg_handle_t simple_threadA, simple_threadB;
+
+/* and now variables for the procedure which is the thread */
+cyg_thread_entry_t simple_program;
+
+/* and now a mutex to protect calls to the C library */
+cyg_mutex_t cliblock;
+
+/* we install our own startup routine which sets up threads */
+void cyg_user_start(void)
+{
+ printf("Entering twothreads' cyg_user_start() function\n");
+
+ cyg_mutex_init(&amp;cliblock);
+
+ cyg_thread_create(4, simple_program, (cyg_addrword_t) 0,
+	"Thread A", (void *) stack[0], 4096,
+	&amp;simple_threadA, &amp;thread_s[0]);
+ cyg_thread_create(4, simple_program, (cyg_addrword_t) 1,
+	"Thread B", (void *) stack[1], 4096,
+	&amp;simple_threadB, &amp;thread_s[1]);
+
+ cyg_thread_resume(simple_threadA);
+ cyg_thread_resume(simple_threadB);
+}
+
+/* this is a simple program which runs in a thread */
+void simple_program(cyg_addrword_t data)
+{
+ int message = (int) data;
+ int delay;
+
+ printf("Beginning execution; thread data is %d\n", message);
+
+ cyg_thread_delay(200);
+
+ for (;;) {
+ delay = 200 + (rand() % 50);
+
+ /* note: printf() must be protected by a
+ call to cyg_mutex_lock() */
+ cyg_mutex_lock(&amp;cliblock); {
+ printf("Thread %d: and now a delay of %d clock ticks\n",
+	message, delay);
+ }
+ cyg_mutex_unlock(&amp;cliblock);
+ cyg_thread_delay(delay);
+ }
+}
+</PROGRAMLISTING>
+
+<PARA>
+When you run the program (by typing <command>continue</command> at
+the (<EMPHASIS>gdb</EMPHASIS>) prompt) the output should look like
+this:</PARA>
+
+<PROGRAMLISTING>
+Starting program: <replaceable>BASE_DIR</replaceable>/examples/twothreads.exe
+Entering twothreads' cyg_user_start()
+function
+Beginning execution; thread data is 0
+Beginning execution; thread data is 1
+Thread 0: and now a delay of 240 clock ticks
+Thread 1: and now a delay of 225 clock ticks
+Thread 1: and now a delay of 234 clock ticks
+Thread 0: and now a delay of 231 clock ticks
+Thread 1: and now a delay of 224 clock ticks
+Thread 0: and now a delay of 249 clock ticks
+Thread 1: and now a delay of 202 clock ticks
+Thread 0: and now a delay of 235 clock ticks
+</PROGRAMLISTING>
+
+<NOTE>
+<PARA>When running in a simulator the <!-- <index></index> -->
+delays might be quite long. On a hardware board (where the clock
+speed is 100 ticks/second) the delays should average to
+about 2.25 seconds. In simulation, the delay will depend on the
+speed of the host processor and will almost always be much slower than
+the actual board. You might want to reduce the delay parameter when running
+in simulation.
+</PARA>
+</NOTE>
+
+<PARA>
+<XREF LINKEND="FIGURE-TWOTHREADS-WITH-SIMPLE-PRINTS"> shows how this
+multitasking program executes.  Note that apart from the thread
+creation system calls, this program also creates and uses a
+<EMPHASIS><!-- <index></index> -->mutex</EMPHASIS> for synchronization
+between the <function>printf()</function> calls in the two
+threads. This is because the C library standard I/O (by default) is
+configured not to be thread-safe, which means that if more than one
+thread is using standard I/O they might corrupt each other. This is
+fixed by a mutual exclusion (or <EMPHASIS>mutex</EMPHASIS>) lockout
+mechanism: the threads do not call <function>printf()</function> until
+<function>cyg_mutex_lock()</function> has returned, which only happens
+when the other thread calls
+<function>cyg_mutex_unlock()</function>.</PARA>
+
+<PARA>You could avoid using the mutex by configuring the C library to
+be thread-safe (by selecting the component
+<LITERAL>CYGSEM_LIBC_STDIO_THREAD_SAFE_STREAMS</LITERAL>).</PARA>
+
+<FIGURE
+ID="FIGURE-TWOTHREADS-WITH-SIMPLE-PRINTS"><!-- <xref> --> <TITLE>Two
+threads with simple print statements after random delays</TITLE>
+<GRAPHIC ENTITYREF="programming-graphic9"></GRAPHIC>
+</FIGURE>
+
+</SECT2>
+
+</SECT1>
+
+</CHAPTER>
+
+<!-- ==================================================== -->
+
+<CHAPTER ID="CLOCKS-AND-ALARM-HANDLERS">
+<TITLE>More Features &mdash; <!-- <index></index> -->Clocks and Alarm
+Handlers</TITLE>
+
+<PARA>If a program wanted to execute a task at a given time, or
+periodically, it could do it in an inefficient way by sitting in a
+loop and checking the real-time clock to see if the proper amount of
+time has elapsed. But operating systems usually provide system calls
+which allow the program to be informed at the desired time.</PARA>
+
+<PARA><productname>eCos</productname> provides a rich timekeeping formalism, involving
+<EMPHASIS>counters</EMPHASIS>, <EMPHASIS>clocks</EMPHASIS>,
+<EMPHASIS>alarms</EMPHASIS>, and <EMPHASIS>timers</EMPHASIS>.  The
+precise definition, relationship, and motivation of these features is
+beyond the scope of this tutorial, but these examples illustrate how
+to set up basic periodic tasks.</PARA>
+
+<PARA><!-- <index></index> -->Alarms are events that happen at
+a given time, either once or periodically. A thread associates an
+alarm handling function with the alarm, so that the function will
+be invoked every time the alarm &ldquo;goes off&rdquo;.</PARA>
+
+<!-- ==================================================== -->
+
+<SECT1 id="sample-alarms">
+<TITLE>A Sample Program with Alarms</TITLE>
+
+<PARA><!-- <index></index> --><FILENAME>simple-alarm.c</FILENAME> (in
+the examples directory) is a short program that creates a thread that
+creates an alarm. The alarm is handled by the function
+<FUNCTION>test_alarm_func()</FUNCTION>, which sets a global
+variable. When the main thread of execution sees that the variable has
+changed, it prints a message.</PARA>
+
+<EXAMPLE>
+<TITLE>A sample <!-- <index></index> -->program that creates an alarm</TITLE>
+
+<PROGRAMLISTING>
+/* this is a very simple program meant to demonstrate
+ a basic use of time, alarms and alarm-handling functions  in eCos */
+
+#include &lt;cyg/kernel/kapi.h&#62;
+
+#include &lt;stdio.h&#62;
+
+#define NTHREADS 1
+#define STACKSIZE 4096
+
+static cyg_handle_t thread[NTHREADS];
+
+static cyg_thread thread_obj[NTHREADS];
+static char stack[NTHREADS][STACKSIZE];
+
+static void alarm_prog( cyg_addrword_t data );
+
+/* we install our own startup routine which sets up
+  threads and starts the scheduler */
+void cyg_user_start(void)
+{
+ cyg_thread_create(4, alarm_prog, (cyg_addrword_t) 0,
+	"alarm_thread", (void *) stack[0],
+	STACKSIZE, &amp;thread[0], &amp;thread_obj[0]);
+ cyg_thread_resume(thread[0]);
+}
+
+/* we need to declare the alarm handling function (which is
+ defined below), so that we can pass it to  cyg_alarm_initialize() */
+cyg_alarm_t test_alarm_func;
+
+/* alarm_prog() is a thread which sets up an alarm which is then
+ handled by test_alarm_func() */
+static void alarm_prog(cyg_addrword_t data)
+{
+ cyg_handle_t test_counterH, system_clockH, test_alarmH;
+ cyg_tick_count_t ticks;
+ cyg_alarm test_alarm;
+ unsigned how_many_alarms = 0, prev_alarms = 0, tmp_how_many;
+
+ system_clockH = cyg_real_time_clock();
+ cyg_clock_to_counter(system_clockH, &amp;test_counterH);
+ cyg_alarm_create(test_counterH, test_alarm_func,
+	(cyg_addrword_t) &amp;how_many_alarms,
+	&amp;test_alarmH, &amp;test_alarm);
+ cyg_alarm_initialize(test_alarmH, cyg_current_time()+200, 200);
+
+ /* get in a loop in which we read the current time and
+    print it out, just to have something scrolling by */
+ for (;;) {
+   ticks = cyg_current_time();
+   printf("Time is %llu\n", ticks);
+   /* note that we must lock access to how_many_alarms, since the
+   alarm handler might change it. this involves using the
+   annoying temporary variable tmp_how_many so that I can keep the
+   critical region short */
+   cyg_scheduler_lock();
+   tmp_how_many = how_many_alarms;
+   cyg_scheduler_unlock();
+   if (prev_alarms != tmp_how_many) {
+     printf(" --- alarm calls so far: %u\n", tmp_how_many);
+     prev_alarms = tmp_how_many;
+   }
+   cyg_thread_delay(30);
+ }
+}
+
+/* test_alarm_func() is invoked as an alarm handler, so
+   it should be quick and simple. in this case it increments
+   the data that is passed to it. */
+void test_alarm_func(cyg_handle_t alarmH, cyg_addrword_t data)
+{
+ ++*((unsigned *) data);
+}
+</PROGRAMLISTING>
+</EXAMPLE>
+
+<PARA>When you run this program (by typing <COMMAND>continue</COMMAND> at
+the (<EMPHASIS>gdb</EMPHASIS>) prompt) the output should look like
+this:</PARA>
+<SCREEN>
+Starting program: <replaceable>BASE_DIR</replaceable>/examples/simple-alarm.exe
+Time is 0
+Time is 30
+Time is 60
+Time is 90
+Time is 120
+Time is 150
+Time is 180
+Time is 210
+  --- alarm calls so far: 1
+Time is 240
+Time is 270
+Time is 300
+Time is 330
+Time is 360
+Time is 390
+Time is 420
+  --- alarm calls so far: 2
+Time is 450
+Time is 480
+</SCREEN>
+
+<NOTE>
+<PARA>When running in a simulator the <!-- <index></index> --> delays
+might be quite long. On a hardware board (where the clock speed is 100
+ticks/second) the delays should average to about 0.3 seconds (and 2
+seconds between alarms). In simulation, the delay will depend on the
+speed of the host processor and will almost always be much slower than
+the actual board. You might want to reduce the delay parameter when
+running in simulation.</PARA>
+</NOTE>
+
+<PARA>Here are a few things you might notice about this program:</PARA>
+
+<ITEMIZEDLIST>
+<LISTITEM>
+<PARA>It used the <function>cyg_real_time_clock()</function> function;
+this always returns a handle to the default system real-time <!--
+<index></index> --> clock. </PARA>
+</LISTITEM>
+
+<LISTITEM>
+<PARA><!-- <index></index> -->Clocks are based on <!-- <index></index>
+--> counters, so the function <function>cyg_alarm_create()</function>
+uses a counter handle. The program used the function
+<function>cyg_clock_to_counter()</function> to strip the clock handle
+to the underlying counter handle. </PARA>
+</LISTITEM>
+
+<LISTITEM>
+<PARA>Once the alarm is created it is <!-- <index></index> -->
+initialized with <function>cyg_alarm_initialize()</function>, which
+sets the time at which the alarm should go off, as well as the period
+for repeating alarms. It is set to go off at the current time and
+then to repeat every 200 ticks. </PARA>
+</LISTITEM>
+
+<LISTITEM>
+<PARA>The alarm handler function
+<function>test_alarm_func()</function> conforms to the guidelines for
+writing alarm handlers and other <!-- <index></index> --><!--
+<index></index> --> delayed service routines: it does not invoke any
+functions which might lock the scheduler.  This is discussed in detail
+in the <CITETITLE><productname>eCos</productname> Reference Manual</CITETITLE>, in the chapter
+<citetitle>The <productname>eCos</productname> Kernel</citetitle>.</PARA>
+</LISTITEM>
+
+<LISTITEM>
+<PARA>There is a <EMPHASIS>critical region</EMPHASIS> in this program:
+the variable <LITERAL>how_many_alarms</LITERAL> is accessed in the
+main thread of control and is also modified in the alarm handler. To
+prevent a possible (though unlikely) race condition on this variable,
+access to <LITERAL>how_many_alarms</LITERAL> in the principal thread
+is protected by calls to <FUNCTION>cyg_scheduler_lock()</FUNCTION> and
+<FUNCTION>cyg_scheduler_unlock()</FUNCTION>. When the scheduler is
+locked, the alarm handler will not be invoked, so the problem is
+averted. </PARA>
+</LISTITEM>
+</ITEMIZEDLIST>
+</SECT1>
+</CHAPTER>
+
+</part>
+
new file mode 100644
--- /dev/null
+++ b/doc/sgml/user-guide/real-time-characterization.sgml
@@ -0,0 +1,3177 @@
+<!-- {{{ Banner                         -->
+
+<!-- =============================================================== -->
+<!--                                                                 -->
+<!--     config-tool.sgml                                            -->
+<!--                                                                 -->
+<!--     eCos User Guide                                             -->
+<!--                                                                 -->
+<!-- =============================================================== -->
+<!-- ####COPYRIGHTBEGIN####                                          -->
+<!--                                                                 -->
+<!-- =============================================================== -->
+<!-- Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.  -->
+<!-- This material may be distributed only subject to the terms      -->
+<!-- and conditions set forth in the Open Publication License, v1.0  -->
+<!-- or later (the latest version is presently available at          -->
+<!-- http://www.opencontent.org/openpub/)                            -->
+<!-- Distribution of the work or derivative of the work in any       -->
+<!-- standard (paper) book form is prohibited unless prior           -->
+<!-- permission obtained from the copyright holder                   -->
+<!-- =============================================================== -->
+<!--                                                                 -->      
+<!-- ####COPYRIGHTEND####                                            -->
+<!-- =============================================================== -->
+<!-- #####DESCRIPTIONBEGIN####                                       -->
+<!--                                                                 -->
+<!-- ####DESCRIPTIONEND####                                          -->
+<!-- =============================================================== -->
+
+<!-- }}} -->
+
+<APPENDIX ID="REAL-TIME-CHARACTERIZATION">
+<TITLE>Real-time characterization</TITLE>
+
+<PARA>For a discussion of real-time performance measurement for eCos, see the eCos 
+Users' Guide.
+</PARA>
+
+<caution>
+<para>
+As with the target setup descriptions in the previous appendix, this
+information will eventually be merged into per-target documents.
+</para>
+</caution>
+
+<PARA>	Sample numbers:
+      </PARA>
+
+<!-- ==================================================== -->
+
+<SECT1 id="rt-arm-aeb1">
+<TITLE>Board: ARM AEB-1 Revision B Evaluation Board</TITLE>
+<LITERALLAYOUT CLASS="MONOSPACED">
+
+Board: ARM AEB-1 Revision B Evaluation Board
+
+CPU : Sharp LH77790A 24MHz
+
+
+
+Startup, main stack             : stack used   404 size  2400
+Startup              :  Interrupt stack used   128 size  2048
+Startup              : Idlethread stack used    80 size  2048
+
+eCos Kernel Timings
+Notes: all times are in microseconds (.000001) unless otherwise stated
+
+Reading the hardware clock takes 13 'ticks' overhead
+... this value will be factored out of all other measurements
+Clock interrupt took  193.49 microseconds (290 raw clock ticks)
+
+Testing parameters:
+   Clock samples:            32
+   Threads:                   7
+   Thread switches:         128
+   Mutexes:                  32
+   Mailboxes:                32
+   Semaphores:               32
+   Scheduler operations:    128
+   Counters:                 32
+   Alarms:                   32
+
+
+                                 Confidence
+     Ave     Min     Max     Var  Ave  Min  Function
+  ======  ======  ======  ====== ========== ========
+  110.19  104.67  116.00    3.26   42%  28% Create thread
+   34.00   34.00   34.00    0.00  100% 100% Yield thread [all suspended]
+   24.67   24.67   24.67    0.00  100% 100% Suspend [suspended] thread
+   25.05   24.67   25.33    0.33   57%  42% Resume thread
+   37.14   36.67   37.33    0.27   71%  28% Set priority
+    3.81    3.33    4.00    0.27   71%  28% Get priority
+   80.00   80.00   80.00    0.00  100% 100% Kill [suspended] thread
+   33.90   33.33   34.00    0.16   85%  14% Yield [no other] thread
+   45.90   44.00   46.67    0.54   57%  14% Resume [suspended low prio] thread
+   24.57   24.00   24.67    0.16   85%  14% Resume [runnable low prio] thread
+   42.29   36.67   43.33    1.61   85%  14% Suspend [runnable] thread
+   33.90   33.33   34.00    0.16   85%  14% Yield [only low prio] thread
+   24.67   24.67   24.67    0.00  100% 100% Suspend [runnable-&#62;not runnable]
+   80.00   80.00   80.00    0.00  100% 100% Kill [runnable] thread
+   43.33   43.33   43.33    0.00  100% 100% Destroy [dead] thread
+  106.29  101.33  107.33    1.41   85%  14% Destroy [runnable] thread
+  144.95  141.33  166.00    6.01   85%  85% Resume [high priority] thread
+   78.31   76.67  254.67    2.75   99%  99% Thread switch
+
+    4.00    4.00    4.00    0.00  100% 100% Scheduler lock
+   16.37   16.00   16.67    0.33   56%  43% Scheduler unlock [0 threads]
+   16.37   16.00   16.67    0.33   56%  43% Scheduler unlock [1 suspended]
+   16.37   16.00   16.67    0.33   56%  43% Scheduler unlock [many suspended]
+   16.37   16.00   16.67    0.33   56%  43% Scheduler unlock [many low prio]
+
+   10.67   10.67   10.67    0.00  100% 100% Init mutex
+   28.67   28.67   28.67    0.00  100% 100% Lock [unlocked] mutex
+   30.44   30.00   31.33    0.33   59%  37% Unlock [locked] mutex
+   25.42   25.33   26.00    0.15   87%  87% Trylock [unlocked] mutex
+   22.50   22.00   22.67    0.25   75%  25% Trylock [locked] mutex
+    5.75    5.33    6.00    0.31   62%  37% Destroy mutex
+  185.33  185.33  185.33    0.00  100% 100% Unlock/Lock mutex
+
+   20.17   20.00   20.67    0.25   75%  75% Create mbox
+    2.92    2.67    3.33    0.31   62%  62% Peek [empty] mbox
+   32.42   32.00   32.67    0.31   62%  37% Put [first] mbox
+    3.00    2.67    3.33    0.33  100%  50% Peek [1 msg] mbox
+   32.50   32.00   32.67    0.25   75%  25% Put [second] mbox
+    2.92    2.67    3.33    0.31   62%  62% Peek [2 msgs] mbox
+   32.83   32.67   33.33    0.25   75%  75% Get [first] mbox
+   32.67   32.67   32.67    0.00  100% 100% Get [second] mbox
+   31.33   31.33   31.33    0.00  100% 100% Tryput [first] mbox
+   27.58   27.33   28.00    0.31   62%  62% Peek item [non-empty] mbox
+   32.83   32.67   33.33    0.25   75%  75% Tryget [non-empty] mbox
+   26.50   26.00   26.67    0.25   75%  25% Peek item [empty] mbox
+   28.00   28.00   28.00    0.00  100% 100% Tryget [empty] mbox
+    3.25    2.67    3.33    0.15   87%  12% Waiting to get mbox
+    3.25    2.67    3.33    0.15   87%  12% Waiting to put mbox
+   30.83   30.67   31.33    0.25   75%  75% Delete mbox
+  101.08  100.67  101.33    0.31   62%  37% Put/Get mbox
+
+   11.17   10.67   11.33    0.25   75%  25% Init semaphore
+   24.17   24.00   24.67    0.25   75%  75% Post [0] semaphore
+   27.08   26.67   27.33    0.31   62%  37% Wait [1] semaphore
+   22.75   22.67   23.33    0.15   87%  87% Trywait [0] semaphore
+   22.21   22.00   22.67    0.29   68%  68% Trywait [1] semaphore
+    7.33    7.33    7.33    0.00  100% 100% Peek semaphore
+    5.92    5.33    6.00    0.15   87%  12% Destroy semaphore
+  110.04  110.00  110.67    0.08   93%  93% Post/Wait semaphore
+
+    9.54    9.33   10.00    0.29   68%  68% Create counter
+    3.92    3.33    4.00    0.15   87%  12% Get counter value
+    4.00    4.00    4.00    0.00  100% 100% Set counter value
+   30.92   30.67   31.33    0.31   62%  62% Tick counter
+    5.75    5.33    6.00    0.31   62%  37% Delete counter
+
+   13.83   13.33   14.00    0.25   75%  25% Create alarm
+   46.67   46.67   46.67    0.00  100% 100% Initialize alarm
+    3.67    3.33    4.00    0.33  100%  50% Disable alarm
+   45.67   45.33   46.00    0.33  100%  50% Enable alarm
+    8.33    8.00    8.67    0.33  100%  50% Delete alarm
+   36.33   36.00   36.67    0.33  100%  50% Tick counter [1 alarm]
+  214.67  214.67  214.67    0.00  100% 100% Tick counter [many alarms]
+   62.67   62.67   62.67    0.00  100% 100% Tick &#38; fire counter [1 alarm]
+ 1087.04 1075.33 1278.67   21.91   93%  93% Tick &#38; fire counters [&#62;1 together]
+  246.35  240.67  412.00   10.35   96%  96% Tick &#38; fire counters [&#62;1 separately]
+  168.01  167.33  237.33    1.08   99%  99% Alarm latency [0 threads]
+  187.36  168.00  234.67    3.60   86%   1% Alarm latency [2 threads]
+  187.37  167.33  235.33    3.59   85%   1% Alarm latency [many threads]
+  303.12  280.00  508.67    3.21   98%   0% Alarm -&#62; thread resume latency
+
+   36.65   36.00   38.67    0.00            Clock/interrupt latency
+
+   65.79   52.00  152.67    0.00            Clock DSR latency
+
+  316     316     316  (main stack:   752)  Thread stack used (1120 total)
+All done, main stack            : stack used   752 size  2400
+All done             :  Interrupt stack used   280 size  2048
+All done             : Idlethread stack used   268 size  2048
+
+Timing complete - 30390 ms total
+
+PASS:&lt;Basic timing OK&#62;
+EXIT:&lt;done&#62;
+
+	</LITERALLAYOUT>
+</SECT1>
+
+<!-- ==================================================== -->
+
+<SECT1 id="rt-at91-eb40">
+<TITLE>Board: Atmel AT91/EB40</TITLE>
+<LITERALLAYOUT CLASS="MONOSPACED">
+Board: Atmel AT91/EB40
+CPU : AT91R40807 (ARM7TDMI core), 32MHz
+512KB RAM, 64K Flash
+
+Startup, main stack             : stack used   420 size  2400
+Startup              :  Interrupt stack used   144 size  4096
+Startup              : Idlethread stack used    84 size  2048
+
+eCos Kernel Timings
+Notes: all times are in microseconds (.000001) unless otherwise stated
+
+Reading the hardware clock takes 3 'ticks' overhead
+... this value will be factored out of all other measurements
+Clock interrupt took  127.53 microseconds (130 raw clock ticks)
+
+Testing parameters:
+   Clock samples:            32
+   Threads:                  25
+   Thread switches:         128
+   Mutexes:                  32
+   Mailboxes:                32
+   Semaphores:               32
+   Scheduler operations:    128
+   Counters:                 32
+   Alarms:                   32
+
+
+                                 Confidence
+     Ave     Min     Max     Var  Ave  Min  Function
+  ======  ======  ======  ====== ========== ========
+   86.48   71.29  101.56    7.99   48%  28% Create thread
+   20.70   20.51   21.48    0.31   80%  80% Yield thread [all suspended]
+   17.15   16.60   17.58    0.48   56%  44% Suspend [suspended] thread
+   17.07   16.60   17.58    0.49   52%  52% Resume thread
+   25.51   25.39   26.37    0.21   88%  88% Set priority
+    3.16    2.93    3.91    0.36   76%  76% Get priority
+   52.34   51.76   52.73    0.47   60%  40% Kill [suspended] thread
+   20.70   20.51   21.48    0.31   80%  80% Yield [no other] thread
+   28.98   28.32   30.27    0.48   60%  36% Resume [suspended low prio] thread
+   17.11   16.60   17.58    0.49   52%  48% Resume [runnable low prio] thread
+   27.85   26.37   28.32    0.52   96%   4% Suspend [runnable] thread
+   20.70   20.51   21.48    0.31   80%  80% Yield [only low prio] thread
+   17.23   16.60   17.58    0.45   64%  36% Suspend [runnable-&#62;not runnable]
+   52.34   51.76   52.73    0.47   60%  40% Kill [runnable] thread
+   33.01   32.23   33.20    0.31   80%  20% Destroy [dead] thread
+   72.03   70.31   72.27    0.38   80%   4% Destroy [runnable] thread
+   96.99   95.70  112.30    1.22   64%  96% Resume [high priority] thread
+   51.48   49.80  164.06    1.76   99%  99% Thread switch
+
+    2.78    1.95    2.93    0.26   84%  15% Scheduler lock
+   11.81   11.72   12.70    0.17   90%  90% Scheduler unlock [0 threads]
+   11.81   11.72   12.70    0.17   90%  90% Scheduler unlock [1 suspended]
+   11.81   11.72   12.70    0.17   90%  90% Scheduler unlock [many suspended]
+   11.81   11.72   12.70    0.17   90%  90% Scheduler unlock [many low prio]
+
+    5.49    4.88    5.86    0.46   62%  37% Init mutex
+   20.20   19.53   20.51    0.42   68%  31% Lock [unlocked] mutex
+   24.44   24.41   25.39    0.06   96%  96% Unlock [locked] mutex
+   18.25   17.58   18.55    0.42   68%  31% Trylock [unlocked] mutex
+   16.11   15.63   16.60    0.49  100%  50% Trylock [locked] mutex
+    6.10    5.86    6.84    0.37   75%  75% Destroy mutex
+  124.21  124.02  125.00    0.30   81%  81% Unlock/Lock mutex
+
+    9.28    8.79    9.77    0.49  100%  50% Create mbox
+    2.93    2.93    2.93    0.00  100% 100% Peek [empty] mbox
+   22.58   22.46   23.44    0.21   87%  87% Put [first] mbox
+    2.44    1.95    2.93    0.49  100%  50% Peek [1 msg] mbox
+   22.58   22.46   23.44    0.21   87%  87% Put [second] mbox
+    2.44    1.95    2.93    0.49  100%  50% Peek [2 msgs] mbox
+   22.71   22.46   23.44    0.37   75%  75% Get [first] mbox
+   22.71   22.46   23.44    0.37   75%  75% Get [second] mbox
+   21.18   20.51   21.48    0.42   68%  31% Tryput [first] mbox
+   18.98   18.55   19.53    0.48   56%  56% Peek item [non-empty] mbox
+   22.46   22.46   22.46    0.00  100% 100% Tryget [non-empty] mbox
+   18.31   17.58   18.55    0.37   75%  25% Peek item [empty] mbox
+   19.53   19.53   19.53    0.00  100% 100% Tryget [empty] mbox
+    2.69    1.95    2.93    0.37   75%  25% Waiting to get mbox
+    2.93    2.93    2.93    0.00  100% 100% Waiting to put mbox
+   23.86   23.44   24.41    0.48   56%  56% Delete mbox
+   67.60   67.38   68.36    0.33   78%  78% Put/Get mbox
+
+    5.37    4.88    5.86    0.49  100%  50% Init semaphore
+   16.97   16.60   17.58    0.46   62%  62% Post [0] semaphore
+   18.98   18.55   19.53    0.48   56%  56% Wait [1] semaphore
+   15.81   15.63   16.60    0.30   81%  81% Trywait [0] semaphore
+   15.29   14.65   15.63    0.44   65%  34% Trywait [1] semaphore
+    5.62    4.88    5.86    0.37   75%  25% Peek semaphore
+    6.35    5.86    6.84    0.49  100%  50% Destroy semaphore
+   72.36   72.27   73.24    0.17   90%  90% Post/Wait semaphore
+
+    7.08    6.84    7.81    0.37   75%  75% Create counter
+    3.17    2.93    3.91    0.37   75%  75% Get counter value
+    3.05    2.93    3.91    0.21   87%  87% Set counter value
+   24.11   23.44   24.41    0.42   68%  31% Tick counter
+    5.49    4.88    5.86    0.46   62%  37% Delete counter
+
+   10.92   10.74   11.72    0.30   81%  81% Create alarm
+   31.46   31.25   32.23    0.33   78%  78% Initialize alarm
+    3.05    2.93    3.91    0.21   87%  87% Disable alarm
+   31.49   31.25   32.23    0.37   75%  75% Enable alarm
+    7.02    6.84    7.81    0.30   81%  81% Delete alarm
+   31.16   30.27   31.25    0.17   90%   9% Tick counter [1 alarm]
+  309.26  304.69  425.78    7.28   96%  96% Tick counter [many alarms]
+   44.83   43.95   44.92    0.17   90%   9% Tick &#38; fire counter [1 alarm]
+  781.68  774.41  893.55   13.62   93%  93% Tick &#38; fire counters [&#62;1 together]
+  324.16  320.31  433.59    6.84   96%  96% Tick &#38; fire counters [&#62;1 separately]
+  114.26  113.28  167.97    0.84   57%  42% Alarm latency [0 threads]
+  126.91  113.28  159.18    8.20   50%  31% Alarm latency [2 threads]
+  127.11  113.28  158.20    8.09   51%  28% Alarm latency [many threads]
+  196.49  189.45  331.05    2.10   98%   0% Alarm -&#62; thread resume latency
+
+   23.50   23.44   25.39    0.00            Clock/interrupt latency
+
+   40.31   33.20  514.65    0.00            Clock DSR latency
+
+  300     271     312  (main stack:   832)  Thread stack used (1120 total)
+All done, main stack            : stack used   832 size  2400
+All done             :  Interrupt stack used   288 size  4096
+All done             : Idlethread stack used   272 size  2048
+
+Timing complete - 30350 ms total
+
+PASS:&lt;Basic timing OK&#62;
+EXIT:&lt;done&#62;
+	</LITERALLAYOUT>
+</SECT1>
+
+<!-- ==================================================== -->
+
+<SECT1 id="rt-arm-ebsa285">
+<TITLE>Board: Intel StrongARM EBSA-285 Evaluation Board</TITLE>
+<LITERALLAYOUT CLASS="MONOSPACED">Board: Intel StrongARM EBSA-285 Evaluation Board
+
+CPU   : Intel StrongARM SA-110 228MHz
+
+
+Startup, main stack             : stack used   404 size  2400
+Startup              :  Interrupt stack used   136 size  4096
+Startup              : Idlethread stack used    80 size  2048
+
+eCos Kernel Timings
+Notes: all times are in microseconds (.000001) unless otherwise stated
+
+Reading the hardware clock takes 1 'ticks' overhead
+... this value will be factored out of all other measurements
+Clock interrupt took    4.61 microseconds (16 raw clock ticks)
+
+Testing parameters:
+   Clock samples:            32
+   Threads:                  64
+   Thread switches:         128
+   Mutexes:                  32
+   Mailboxes:                32
+   Semaphores:               32
+   Scheduler operations:    128
+   Counters:                 32
+   Alarms:                   32
+
+
+                                 Confidence
+     Ave     Min     Max     Var  Ave  Min  Function
+  ======  ======  ======  ====== ========== ========
+    4.97    3.26    7.34    0.60   50%   4% Create thread
+    0.73    0.54    2.17    0.14   60%  37% Yield thread [all suspended]
+    0.98    0.82    2.99    0.23   81%  68% Suspend [suspended] thread
+    0.54    0.27    1.63    0.03   92%   6% Resume thread
+    0.83    0.54    1.90    0.10   73%  14% Set priority
+    0.21    0.00    0.54    0.21   25%  48% Get priority
+    2.25    1.90   10.05    0.37   96%  67% Kill [suspended] thread
+    0.70    0.54    1.09    0.14   53%  45% Yield [no other] thread
+    0.96    0.82    1.36    0.14   50%  48% Resume [suspended low prio] thread
+    0.53    0.27    0.82    0.03   92%   6% Resume [runnable low prio] thread
+    0.90    0.82    1.63    0.13   70%  70% Suspend [runnable] thread
+    0.70    0.54    0.82    0.13   57%  42% Yield [only low prio] thread
+    0.55    0.54    0.82    0.01   98%  98% Suspend [runnable-&#62;not runnable]
+    1.64    1.63    2.17    0.02   98%  98% Kill [runnable] thread
+    0.97    0.82    4.62    0.20   98%  64% Destroy [dead] thread
+    2.17    1.90    2.17    0.01   98%   1% Destroy [runnable] thread
+    6.06    5.16   10.60    0.53   59%  31% Resume [high priority] thread
+    1.69    1.63    5.98    0.11   90%  90% Thread switch
+
+    0.14    0.00    1.36    0.14   99%  50% Scheduler lock
+    0.37    0.27    0.54    0.13   62%  62% Scheduler unlock [0 threads]
+    0.38    0.27    0.54    0.13   60%  60% Scheduler unlock [1 suspended]
+    0.37    0.27    0.54    0.13   63%  63% Scheduler unlock [many suspended]
+    0.37    0.27    0.54    0.13   63%  63% Scheduler unlock [many low prio]
+
+    0.34    0.00    1.90    0.15   78%   6% Init mutex
+    0.88    0.54    4.62    0.37   93%  71% Lock [unlocked] mutex
+    0.79    0.54    4.35    0.26   93%  53% Unlock [locked] mutex
+    0.59    0.27    2.17    0.10   93%   3% Trylock [unlocked] mutex
+    0.50    0.27    0.82    0.09   78%  18% Trylock [locked] mutex
+    0.18    0.00    0.54    0.13   59%  37% Destroy mutex
+    3.85    3.80    5.16    0.08   96%  96% Unlock/Lock mutex
+
+    0.64    0.27    3.53    0.24   81%  15% Create mbox
+    0.61    0.27    2.17    0.21   68%  18% Peek [empty] mbox
+    0.87    0.54    5.16    0.31   59%  87% Put [first] mbox
+    0.08    0.00    0.54    0.12   71%  71% Peek [1 msg] mbox
+    0.71    0.54    1.09    0.14   56%  40% Put [second] mbox
+    0.08    0.00    0.27    0.12   68%  68% Peek [2 msgs] mbox
+    0.89    0.54    4.89    0.31   62%  81% Get [first] mbox
+    0.76    0.54    1.09    0.17   43%  37% Get [second] mbox
+    0.76    0.54    3.26    0.21   96%  50% Tryput [first] mbox
+    0.65    0.54    2.45    0.17   81%  81% Peek item [non-empty] mbox
+    0.76    0.54    2.72    0.19   53%  43% Tryget [non-empty] mbox
+    0.58    0.54    0.82    0.06   87%  87% Peek item [empty] mbox
+    0.61    0.54    0.82    0.10   75%  75% Tryget [empty] mbox
+    0.10    0.00    0.54    0.13   65%  65% Waiting to get mbox
+    0.10    0.00    0.54    0.13   65%  65% Waiting to put mbox
+    0.77    0.54    3.26    0.20   53%  43% Delete mbox
+    2.10    1.90    6.25    0.30   93%  93% Put/Get mbox
+
+    0.34    0.27    1.09    0.11   81%  81% Init semaphore
+    0.60    0.27    1.09    0.12   68%   6% Post [0] semaphore
+    0.59    0.54    0.82    0.08   81%  81% Wait [1] semaphore
+    0.59    0.54    2.17    0.10   96%  96% Trywait [0] semaphore
+    0.48    0.27    0.82    0.11   71%  25% Trywait [1] semaphore
+    0.24    0.00    0.82    0.09   78%  18% Peek semaphore
+    0.19    0.00    0.54    0.13   62%  34% Destroy semaphore
+    2.28    2.17    4.08    0.18   93%  90% Post/Wait semaphore
+
+    0.43    0.00    2.72    0.23   90%   6% Create counter
+    0.40    0.00    1.63    0.25   68%  28% Get counter value
+    0.13    0.00    0.82    0.15   96%  59% Set counter value
+    0.71    0.54    1.63    0.16   50%  46% Tick counter
+    0.16    0.00    0.54    0.14   53%  43% Delete counter
+
+    0.47    0.27    1.36    0.15   59%  37% Create alarm
+    1.58    1.09    7.07    0.44   71%  68% Initialize alarm
+    0.12    0.00    1.09    0.16   96%  65% Disable alarm
+    1.01    0.82    2.45    0.17   53%  43% Enable alarm
+    0.21    0.00    0.27    0.09   78%  21% Delete alarm
+    0.78    0.54    1.90    0.12   71%  25% Tick counter [1 alarm]
+    3.90    3.80    4.35    0.13   68%  68% Tick counter [many alarms]
+    1.25    1.09    1.63    0.14   53%  43% Tick &#38; fire counter [1 alarm]
+   19.88   19.84   20.11    0.07   84%  84% Tick &#38; fire counters [&#62;1 together]
+    4.37    4.35    4.62    0.05   90%  90% Tick &#38; fire counters [&#62;1 separately]
+    3.83    3.80    7.61    0.06   99%  99% Alarm latency [0 threads]
+    4.46    3.80    7.88    0.27   71%  24% Alarm latency [2 threads]
+   16.06   13.59   26.36    1.05   54%  10% Alarm latency [many threads]
+    6.67    6.52   22.83    0.29   98%  98% Alarm -&#62; thread resume latency
+
+    1.89    0.82    9.78    0.00            Clock/interrupt latency
+
+    2.17    1.09    7.34    0.00            Clock DSR latency
+
+   11       0     316  (main stack:   744)  Thread stack used (1120 total)
+All done, main stack            : stack used   744 size  2400
+All done             :  Interrupt stack used   288 size  4096
+All done             : Idlethread stack used   268 size  2048
+
+Timing complete - 30210 ms total
+
+PASS:&lt;Basic timing OK&#62;
+EXIT:&lt;done&#62;
+	</LITERALLAYOUT>
+</SECT1>
+
+<!-- ==================================================== -->
+
+<SECT1 id="rt-arm-ep7211">
+<TITLE>Board: Cirrus Logic EDB7111-2 Development Board</TITLE>
+<SECT2>
+<TITLE>CPU  : Cirrus Logic EP7211 73MHz</TITLE>
+<LITERALLAYOUT CLASS="MONOSPACED">Board: Cirrus Logic EDB7111-2 Development Board
+
+CPU  : Cirrus Logic EP7211 73MHz
+
+
+
+Startup, main stack             : stack used   404 size  2400
+Startup              :  Interrupt stack used   136 size  4096
+Startup              : Idlethread stack used    88 size  2048
+
+eCos Kernel Timings
+Notes: all times are in microseconds (.000001) unless otherwise stated
+
+Reading the hardware clock takes 0 'ticks' overhead
+... this value will be factored out of all other measurements
+Clock interrupt took  356.69 microseconds (182 raw clock ticks)
+
+Testing parameters:
+   Clock samples:            32
+   Threads:                  64
+   Thread switches:         128
+   Mutexes:                  32
+   Mailboxes:                32
+   Semaphores:               32
+   Scheduler operations:    128
+   Counters:                 32
+   Alarms:                   32
+
+
+                                 Confidence
+     Ave     Min     Max     Var  Ave  Min  Function
+  ======  ======  ======  ====== ========== ========
+   22.71   17.58   37.11    3.07   46%  34% Create thread
+    4.36    3.91    5.86    0.70   76%  76% Yield thread [all suspended]
+    4.24    3.91    7.81    0.56   84%  84% Suspend [suspended] thread
+    4.09    1.95    7.81    0.45   85%   3% Resume thread
+    5.31    3.91   11.72    0.92   65%  32% Set priority
+    2.11    1.95    3.91    0.28   92%  92% Get priority
+   11.54    9.77   25.39    0.99   62%  28% Kill [suspended] thread
+    4.46    3.91    9.77    0.82   75%  75% Yield [no other] thread
+    7.57    5.86   13.67    0.69   75%  20% Resume [suspended low prio] thread
+    3.94    1.95    5.86    0.18   92%   3% Resume [runnable low prio] thread
+    7.02    5.86   13.67    1.05   53%  45% Suspend [runnable] thread
+    4.42    3.91    9.77    0.79   76%  76% Yield [only low prio] thread
+    4.24    1.95    5.86    0.61   79%   1% Suspend [runnable-&#62;not runnable]
+   11.29    9.77   27.34    1.14   57%  37% Kill [runnable] thread
+    6.29    3.91   11.72    0.84   71%   4% Destroy [dead] thread
+   13.52   11.72   31.25    0.90   70%  25% Destroy [runnable] thread
+   24.50   21.48   42.97    1.69   79%  12% Resume [high priority] thread
+    8.79    7.81   19.53    1.05   99%  53% Thread switch
+
+    1.66    0.00    3.91    0.52   83%  15% Scheduler lock
+    2.59    1.95    3.91    0.86   67%  67% Scheduler unlock [0 threads]
+    2.62    1.95    3.91    0.88   65%  65% Scheduler unlock [1 suspended]
+    2.61    1.95    3.91    0.87   66%  66% Scheduler unlock [many suspended]
+    2.58    1.95    3.91    0.85   67%  67% Scheduler unlock [many low prio]
+
+    2.69    1.95    5.86    0.96   65%  65% Init mutex
+    4.88    3.91    9.77    1.10   96%  56% Lock [unlocked] mutex
+    4.64    3.91   11.72    1.05   71%  71% Unlock [locked] mutex
+    3.97    1.95    7.81    0.47   81%   9% Trylock [unlocked] mutex
+    3.48    1.95    3.91    0.67   78%  21% Trylock [locked] mutex
+    1.77    0.00    3.91    0.44   84%  12% Destroy mutex
+   31.92   29.30   42.97    1.65   71%  18% Unlock/Lock mutex
+
+    4.09    3.91    9.77    0.35   96%  96% Create mbox
+    1.83    0.00    3.91    0.34   87%   9% Peek [empty] mbox
+    5.31    3.91    9.77    0.96   62%  34% Put [first] mbox
+    1.59    0.00    1.95    0.60   81%  18% Peek [1 msg] mbox
+    5.19    3.91    9.77    1.04   56%  40% Put [second] mbox
+    1.65    0.00    3.91    0.62   78%  18% Peek [2 msgs] mbox
+    5.43    3.91    9.77    0.86   68%  28% Get [first] mbox
+    5.31    3.91    7.81    0.96   59%  34% Get [second] mbox
+    4.76    3.91    9.77    1.07   62%  62% Tryput [first] mbox
+    4.82    1.95    9.77    1.15   93%   3% Peek item [non-empty] mbox
+    5.55    3.91   11.72    0.82   71%  25% Tryget [non-empty] mbox
+    3.97    1.95    7.81    0.59   75%  12% Peek item [empty] mbox
+    4.33    3.91    7.81    0.69   81%  81% Tryget [empty] mbox
+    1.59    0.00    3.91    0.79   68%  25% Waiting to get mbox
+    1.71    0.00    3.91    0.53   81%  15% Waiting to put mbox
+    5.25    3.91    9.77    1.01   59%  37% Delete mbox
+   17.82   15.63   29.30    1.14   65%  18% Put/Get mbox
+
+    2.69    1.95    5.86    0.96   65%  65% Init semaphore
+    3.78    1.95    7.81    0.46   84%  12% Post [0] semaphore
+    4.27    3.91    7.81    0.62   84%  84% Wait [1] semaphore
+    3.72    1.95    7.81    0.66   75%  18% Trywait [0] semaphore
+    3.29    1.95    5.86    0.92   62%  34% Trywait [1] semaphore
+    2.32    1.95    3.91    0.59   81%  81% Peek semaphore
+    1.89    0.00    3.91    0.24   90%   6% Destroy semaphore
+   15.75   13.67   29.30    1.07   68%  21% Post/Wait semaphore
+
+    2.69    1.95    5.86    0.96   65%  65% Create counter
+    1.83    0.00    1.95    0.23   93%   6% Get counter value
+    1.53    0.00    3.91    0.76   71%  25% Set counter value
+    4.82    3.91    5.86    0.97   53%  53% Tick counter
+    1.89    0.00    1.95    0.12   96%   3% Delete counter
+
+    3.78    1.95    7.81    0.46   84%  12% Create alarm
+    7.99    5.86   15.63    0.70   81%   9% Initialize alarm
+    1.71    0.00    1.95    0.43   87%  12% Disable alarm
+    7.14    5.86   11.72    1.04   56%  40% Enable alarm
+    2.50    1.95    3.91    0.79   71%  71% Delete alarm
+    4.94    3.91    7.81    1.04   96%  50% Tick counter [1 alarm]
+   19.47   17.58   23.44    0.36   87%   9% Tick counter [many alarms]
+    7.63    5.86   11.72    0.55   81%  15% Tick &#38; fire counter [1 alarm]
+   99.06   97.66  105.47    1.05   59%  37% Tick &#38; fire counters [&#62;1 together]
+   22.15   21.48   27.34    0.96   71%  71% Tick &#38; fire counters [&#62;1 separately]
+  359.16  357.42  378.91    0.87   71%  25% Alarm latency [0 threads]
+  364.03  357.42  402.34    3.03   58%  15% Alarm latency [2 threads]
+  408.25  402.34  416.02    2.89   53%  24% Alarm latency [many threads]
+  381.16  376.95  492.19    2.48   95%  46% Alarm -&#62; thread resume latency
+
+    9.79    5.86   19.53    0.00            Clock/interrupt latency
+
+   12.13    5.86   31.25    0.00            Clock DSR latency
+
+   12       0     316  (main stack:   752)  Thread stack used (1120 total)
+All done, main stack            : stack used   752 size  2400
+All done             :  Interrupt stack used   288 size  4096
+All done             : Idlethread stack used   276 size  2048
+
+Timing complete - 30450 ms total
+
+PASS:&lt;Basic timing OK&#62;
+EXIT:&lt;done&#62;
+
+	  </LITERALLAYOUT>
+</SECT2>
+<SECT2>
+<TITLE>CPU  : Cirrus Logic EP7212 73MHz</TITLE>
+<LITERALLAYOUT CLASS="MONOSPACED">Board: Cirrus Logic EDB7111-2 Development Board
+
+CPU  : Cirrus Logic EP7212 73MHz
+
+
+
+Startup, main stack             : stack used   404 size  2400
+Startup              :  Interrupt stack used   136 size  4096
+Startup              : Idlethread stack used    88 size  2048
+
+eCos Kernel Timings
+Notes: all times are in microseconds (.000001) unless otherwise stated
+
+Reading the hardware clock takes 0 'ticks' overhead
+... this value will be factored out of all other measurements
+Clock interrupt took  356.32 microseconds (182 raw clock ticks)
+
+Testing parameters:
+   Clock samples:            32
+   Threads:                  64
+   Thread switches:         128
+   Mutexes:                  32
+   Mailboxes:                32
+   Semaphores:               32
+   Scheduler operations:    128
+   Counters:                 32
+   Alarms:                   32
+
+
+                                 Confidence
+     Ave     Min     Max     Var  Ave  Min  Function
+  ======  ======  ======  ====== ========== ========
+   22.43   15.63   33.20    3.02   68%  18% Create thread
+    4.48    3.91    5.86    0.81   70%  70% Yield thread [all suspended]
+    4.42    3.91    7.81    0.78   75%  75% Suspend [suspended] thread
+    4.12    1.95    5.86    0.49   82%   3% Resume thread
+    5.62    3.91   11.72    0.64   78%  18% Set priority
+    2.17    1.95    3.91    0.38   89%  89% Get priority
+   11.54    9.77   27.34    0.88   70%  25% Kill [suspended] thread
+    4.64    3.91    9.77    0.96   65%  65% Yield [no other] thread
+    7.51    5.86   15.63    0.72   76%  21% Resume [suspended low prio] thread
+    3.88    1.95    9.77    0.42   82%  10% Resume [runnable low prio] thread
+    7.14    5.86   13.67    1.00   59%  39% Suspend [runnable] thread
+    4.52    3.91    7.81    0.86   70%  70% Yield [only low prio] thread
+    4.15    1.95    7.81    0.49   85%   1% Suspend [runnable-&#62;not runnable]
+   11.26    9.77   27.34    1.17   56%  39% Kill [runnable] thread
+    6.22    3.91   13.67    0.88   70%   7% Destroy [dead] thread
+   13.64   11.72   33.20    1.02   64%  26% Destroy [runnable] thread
+   24.17   21.48   41.02    1.49   82%  12% Resume [high priority] thread
+    8.80    7.81   21.48    1.08   98%  54% Thread switch
+
+    1.60    0.00    1.95    0.58   82%  17% Scheduler lock
+    2.61    1.95    3.91    0.87   66%  66% Scheduler unlock [0 threads]
+    2.59    1.95    3.91    0.86   67%  67% Scheduler unlock [1 suspended]
+    2.61    1.95    3.91    0.87   66%  66% Scheduler unlock [many suspended]
+    2.59    1.95    3.91    0.86   67%  67% Scheduler unlock [many low prio]
+
+    2.62    1.95    3.91    0.88   65%  65% Init mutex
+    4.82    3.91    9.77    1.09   96%  59% Lock [unlocked] mutex
+    4.39    3.91    9.77    0.79   81%  81% Unlock [locked] mutex
+    3.84    1.95    7.81    0.36   87%   9% Trylock [unlocked] mutex
+    3.54    1.95    5.86    0.69   75%  21% Trylock [locked] mutex
+    1.83    0.00    3.91    0.34   87%   9% Destroy mutex
+   34.61   31.25   46.88    1.68   78%   9% Unlock/Lock mutex
+
+    3.97    1.95    7.81    0.24   93%   3% Create mbox
+    1.83    0.00    3.91    0.34   87%   9% Peek [empty] mbox
+    4.76    3.91    9.77    1.07   62%  62% Put [first] mbox
+    1.71    0.00    3.91    0.64   75%  18% Peek [1 msg] mbox
+    5.00    3.91    9.77    1.10   96%  50% Put [second] mbox
+    1.65    0.00    1.95    0.52   84%  15% Peek [2 msgs] mbox
+    5.31    3.91   11.72    1.05   59%  37% Get [first] mbox
+    5.13    3.91    7.81    0.99   56%  40% Get [second] mbox
+    4.76    3.91   11.72    1.12   96%  65% Tryput [first] mbox
+    4.46    3.91    7.81    0.82   75%  75% Peek item [non-empty] mbox
+    5.55    3.91    9.77    0.82   68%  25% Tryget [non-empty] mbox
+    4.03    1.95    7.81    0.58   78%   9% Peek item [empty] mbox
+    4.27    3.91    5.86    0.59   81%  81% Tryget [empty] mbox
+    1.77    0.00    3.91    0.44   84%  12% Waiting to get mbox
+    1.59    0.00    1.95    0.60   81%  18% Waiting to put mbox
+    5.37    3.91    9.77    0.91   65%  31% Delete mbox
+   16.66   13.67   27.34    1.42   90%   3% Put/Get mbox
+
+    2.62    1.95    5.86    0.92   68%  68% Init semaphore
+    3.84    1.95    7.81    0.47   81%  12% Post [0] semaphore
+    4.21    3.91    7.81    0.53   87%  87% Wait [1] semaphore
+    3.48    1.95    5.86    0.76   71%  25% Trywait [0] semaphore
+    3.60    1.95    5.86    0.62   78%  18% Trywait [1] semaphore
+    2.26    1.95    5.86    0.53   87%  87% Peek semaphore
+    1.89    0.00    1.95    0.12   96%   3% Destroy semaphore
+   16.05   13.67   29.30    1.40   59%  18% Post/Wait semaphore
+
+    2.38    1.95    3.91    0.67   78%  78% Create counter
+    2.01    0.00    3.91    0.35   84%   6% Get counter value
+    1.89    0.00    3.91    0.24   90%   6% Set counter value
+    4.58    3.91    5.86    0.88   65%  65% Tick counter
+    1.71    0.00    1.95    0.43   87%  12% Delete counter
+
+    3.84    1.95    7.81    0.36   87%   9% Create alarm
+    7.99    5.86   15.63    0.47   93%   3% Initialize alarm
+    2.01    0.00    3.91    0.35   84%   6% Disable alarm
+    6.53    5.86   13.67    1.01   75%  75% Enable alarm
+    2.32    1.95    3.91    0.59   81%  81% Delete alarm
+    4.76    3.91    7.81    1.01   59%  59% Tick counter [1 alarm]
+   19.53   17.58   23.44    0.24   90%   6% Tick counter [many alarms]
+    7.57    5.86   13.67    0.75   75%  21% Tick &#38; fire counter [1 alarm]
+   98.57   97.66  105.47    1.14   96%  62% Tick &#38; fire counters [&#62;1 together]
+   22.15   21.48   27.34    0.96   71%  71% Tick &#38; fire counters [&#62;1 separately]
+  359.18  357.42  384.77    1.10   65%  31% Alarm latency [0 threads]
+  362.63  357.42  396.48    2.55   43%  27% Alarm latency [2 threads]
+  408.22  402.34  416.02    2.73   55%  21% Alarm latency [many threads]
+  378.63  375.00  494.14    2.56   93%  71% Alarm -&#62; thread resume latency
+
+    9.78    5.86   19.53    0.00            Clock/interrupt latency
+
+   12.21    5.86   31.25    0.00            Clock DSR latency
+
+   12       0     316  (main stack:   752)  Thread stack used (1120 total)
+All done, main stack            : stack used   752 size  2400
+All done             :  Interrupt stack used   288 size  4096
+All done             : Idlethread stack used   276 size  2048
+
+Timing complete - 30550 ms total
+
+PASS:&lt;Basic timing OK&#62;
+EXIT:&lt;done&#62;
+
+	  </LITERALLAYOUT>
+</SECT2>
+</SECT1>
+
+<!-- ==================================================== -->
+
+<SECT1 id="rt-arm-pid">
+<TITLE>Board: ARM PID Evaluation Board</TITLE>
+<SECT2>
+<TITLE>CPU :  ARM 7TDMI 20 MHz</TITLE>
+<LITERALLAYOUT CLASS="MONOSPACED">Board: ARM PID Evaluation Board
+
+CPU :  ARM 7TDMI 20 MHz
+
+
+
+Startup, main stack             : stack used   404 size  2400
+Startup              :  Interrupt stack used   136 size  4096
+Startup              : Idlethread stack used    84 size  2048
+
+eCos Kernel Timings
+Notes: all times are in microseconds (.000001) unless otherwise stated
+
+Reading the hardware clock takes 6 'ticks' overhead
+... this value will be factored out of all other measurements
+Clock interrupt took  120.74 microseconds (150 raw clock ticks)
+
+Testing parameters:
+   Clock samples:            32
+   Threads:                  50
+   Thread switches:         128
+   Mutexes:                  32
+   Mailboxes:                32
+   Semaphores:               32
+   Scheduler operations:    128
+   Counters:                 32
+   Alarms:                   32
+
+
+                                 Confidence
+     Ave     Min     Max     Var  Ave  Min  Function
+  ======  ======  ======  ====== ========== ========
+   99.01   68.00  129.60   15.62   50%  26% Create thread
+   21.60   21.60   21.60    0.00  100% 100% Yield thread [all suspended]
+   15.65   15.20   16.00    0.39   56%  44% Suspend [suspended] thread
+   15.79   15.20   16.00    0.31   74%  26% Resume thread
+   23.65   23.20   24.00    0.39   56%  44% Set priority
+    2.26    1.60    2.40    0.24   82%  18% Get priority
+   51.39   51.20   52.00    0.29   76%  76% Kill [suspended] thread
+   21.60   21.60   21.60    0.00  100% 100% Yield [no other] thread
+   29.47   28.00   29.60    0.22   86%   2% Resume [suspended low prio] thread
+   15.60   15.20   16.00    0.40  100%  50% Resume [runnable low prio] thread
+   27.73   24.00   28.00    0.40   74%   2% Suspend [runnable] thread
+   21.60   21.60   21.60    0.00  100% 100% Yield [only low prio] thread
+   15.65   15.20   16.00    0.39   56%  44% Suspend [runnable-&#62;not runnable]
+   51.39   51.20   52.00    0.29   76%  76% Kill [runnable] thread
+   27.66   27.20   28.80    0.41   54%  44% Destroy [dead] thread
+   68.93   64.80   69.60    0.35   72%   2% Destroy [runnable] thread
+   91.26   90.40  107.20    0.64   66%  32% Resume [high priority] thread
+   49.14   48.80   49.60    0.39   57%  57% Thread switch
+
+    2.20    1.60    2.40    0.30   75%  25% Scheduler lock
+   10.20    9.60   10.40    0.30   75%  25% Scheduler unlock [0 threads]
+   10.20    9.60   10.40    0.30   75%  25% Scheduler unlock [1 suspended]
+   10.20    9.60   10.40    0.30   75%  25% Scheduler unlock [many suspended]
+   10.20    9.60   10.40    0.30   75%  25% Scheduler unlock [many low prio]
+
+    6.85    6.40    7.20    0.39   56%  43% Init mutex
+   18.40   18.40   18.40    0.00  100% 100% Lock [unlocked] mutex
+   19.57   19.20   20.00    0.40   53%  53% Unlock [locked] mutex
+   16.55   16.00   16.80    0.34   68%  31% Trylock [unlocked] mutex
+   14.55   14.40   15.20    0.24   81%  81% Trylock [locked] mutex
+    3.55    3.20    4.00    0.39   56%  56% Destroy mutex
+  119.85  119.20  120.00    0.24   81%  18% Unlock/Lock mutex
+
+   12.85   12.80   13.60    0.09   93%  93% Create mbox
+    1.65    1.60    2.40    0.09   93%  93% Peek [empty] mbox
+   20.70   20.00   20.80    0.17   87%  12% Put [first] mbox
+    1.65    1.60    2.40    0.09   93%  93% Peek [1 msg] mbox
+   20.70   20.00   20.80    0.17   87%  12% Put [second] mbox
+    1.65    1.60    2.40    0.09   93%  93% Peek [2 msgs] mbox
+   20.85   20.80   21.60    0.09   93%  93% Get [first] mbox
+   20.85   20.80   21.60    0.09   93%  93% Get [second] mbox
+   19.90   19.20   20.00    0.17   87%  12% Tryput [first] mbox
+   17.60   17.60   17.60    0.00  100% 100% Peek item [non-empty] mbox
+   20.90   20.80   21.60    0.17   87%  87% Tryget [non-empty] mbox
+   16.80   16.80   16.80    0.00  100% 100% Peek item [empty] mbox
+   17.65   17.60   18.40    0.09   93%  93% Tryget [empty] mbox
+    1.85    1.60    2.40    0.34   68%  68% Waiting to get mbox
+    1.85    1.60    2.40    0.34   68%  68% Waiting to put mbox
+   19.40   19.20   20.00    0.30   75%  75% Delete mbox
+   65.05   64.80   65.60    0.34   68%  68% Put/Get mbox
+
+    7.05    6.40    7.20    0.24   81%  18% Init semaphore
+   15.55   15.20   16.00    0.39   56%  56% Post [0] semaphore
+   17.35   16.80   17.60    0.34   68%  31% Wait [1] semaphore
+   14.60   14.40   15.20    0.30   75%  75% Trywait [0] semaphore
+   14.20   13.60   14.40    0.30   75%  25% Trywait [1] semaphore
+    4.55    4.00    4.80    0.34   68%  31% Peek semaphore
+    3.75    3.20    4.00    0.34   68%  31% Destroy semaphore
+   70.85   70.40   71.20    0.39   56%  43% Post/Wait semaphore
+
+    6.05    5.60    6.40    0.39   56%  43% Create counter
+    2.25    1.60    2.40    0.24   81%  18% Get counter value
+    2.25    1.60    2.40    0.24   81%  18% Set counter value
+   19.70   19.20   20.00    0.37   62%  37% Tick counter
+    3.45    3.20    4.00    0.34   68%  68% Delete counter
+
+    9.05    8.80    9.60    0.34   68%  68% Create alarm
+   29.60   29.60   29.60    0.00  100% 100% Initialize alarm
+    2.15    1.60    2.40    0.34   68%  31% Disable alarm
+   29.35   28.80   29.60    0.34   68%  31% Enable alarm
+    5.10    4.80    5.60    0.37   62%  62% Delete alarm
+   23.20   23.20   23.20    0.00  100% 100% Tick counter [1 alarm]
+  138.00  137.60  138.40    0.40  100%  50% Tick counter [many alarms]
+   40.40   40.00   40.80    0.40  100%  50% Tick &#38; fire counter [1 alarm]
+  704.25  697.60  804.00   12.47   93%  93% Tick &#38; fire counters [&#62;1 together]
+  155.20  155.20  155.20    0.00  100% 100% Tick &#38; fire counters [&#62;1 separately]
+  105.20  104.80  151.20    0.76   99%  94% Alarm latency [0 threads]
+  117.57  104.80  149.60    7.13   57%  25% Alarm latency [2 threads]
+  117.49  104.80  148.80    7.10   58%  26% Alarm latency [many threads]
+  192.59  177.60  316.00    1.93   98%   0% Alarm -&#62; thread resume latency
+
+   22.10   21.60   24.00    0.00            Clock/interrupt latency
+
+   38.69   32.80   61.60    0.00            Clock DSR latency
+
+  297     276     316  (main stack:   752)  Thread stack used (1120 total)
+All done, main stack            : stack used   752 size  2400
+All done             :  Interrupt stack used   288 size  4096
+All done             : Idlethread stack used   272 size  2048
+
+Timing complete - 30350 ms total
+
+PASS:&lt;Basic timing OK&#62;
+EXIT:&lt;done&#62;
+
+	  </LITERALLAYOUT>
+</SECT2>
+<SECT2>
+<TITLE>CPU :  ARM 920T 20 MHz</TITLE>
+<LITERALLAYOUT CLASS="MONOSPACED">
+
+Board: ARM PID Evaluation Board
+
+CPU :  ARM 920T 20 MHz
+
+
+Startup, main stack             : stack used   404 size  2400
+Startup              :  Interrupt stack used   136 size  4096
+Startup              : Idlethread stack used    84 size  2048
+
+eCos Kernel Timings
+Notes: all times are in microseconds (.000001) unless otherwise stated
+
+Reading the hardware clock takes 15 'ticks' overhead
+... this value will be factored out of all other measurements
+Clock interrupt took  291.41 microseconds (364 raw clock ticks)
+
+Testing parameters:
+   Clock samples:            32
+   Threads:                  50
+   Thread switches:         128
+   Mutexes:                  32
+   Mailboxes:                32
+   Semaphores:               32
+   Scheduler operations:    128
+   Counters:                 32
+   Alarms:                   32
+
+
+                                 Confidence
+     Ave     Min     Max     Var  Ave  Min  Function
+  ======  ======  ======  ====== ========== ========
+  257.78  168.00  568.00   48.70   56%  28% Create thread
+   50.21   49.60   50.40    0.29   76%  24% Yield thread [all suspended]
+   36.26   36.00   36.80    0.35   68%  68% Suspend [suspended] thread
+   37.20   36.80   37.60    0.40  100%  50% Resume thread
+   56.24   56.00   56.80    0.34   70%  70% Set priority
+    5.20    4.80    5.60    0.40  100%  50% Get priority
+  122.75  122.40  123.20    0.39   56%  56% Kill [suspended] thread
+   50.19   49.60   50.40    0.31   74%  26% Yield [no other] thread
+   69.49   66.40   69.60    0.21   92%   2% Resume [suspended low prio] thread
+   37.01   36.80   37.60    0.31   74%  74% Resume [runnable low prio] thread
+   64.75   55.20   65.60    0.38   80%   2% Suspend [runnable] thread
+   50.19   49.60   50.40    0.31   74%  26% Yield [only low prio] thread
+   36.24   36.00   36.80    0.34   70%  70% Suspend [runnable-&#62;not runnable]
+  122.75  122.40  123.20    0.39   56%  56% Kill [runnable] thread
+   67.76   67.20   68.00    0.34   70%  30% Destroy [dead] thread
+  167.07  158.40  168.00    0.35   92%   2% Destroy [runnable] thread
+  213.49  212.00  249.60    1.46   84%  90% Resume [high priority] thread
+  122.81  120.00  389.60    4.17   99%  99% Thread switch
+
+    4.70    4.00    4.80    0.17   87%  12% Scheduler lock
+   23.70   23.20   24.00    0.37   62%  37% Scheduler unlock [0 threads]
+   23.60   23.20   24.00    0.40  100%  50% Scheduler unlock [1 suspended]
+   23.70   23.20   24.00    0.37   62%  37% Scheduler unlock [many suspended]
+   23.60   23.20   24.00    0.40  100%  50% Scheduler unlock [many low prio]
+
+   15.65   15.20   16.00    0.39   56%  43% Init mutex
+   42.40   42.40   42.40    0.00  100% 100% Lock [unlocked] mutex
+   45.37   44.80   46.40    0.36   65%  31% Unlock [locked] mutex
+   39.20   39.20   39.20    0.00  100% 100% Trylock [unlocked] mutex
+   34.45   34.40   35.20    0.09   93%  93% Trylock [locked] mutex
+    8.00    8.00    8.00    0.00  100% 100% Destroy mutex
+  284.42  284.00  284.80    0.40   53%  46% Unlock/Lock mutex
+
+   29.40   28.80   29.60    0.30   75%  25% Create mbox
+    3.35    3.20    4.00    0.24   81%  81% Peek [empty] mbox
+   49.35   48.80   49.60    0.34   68%  31% Put [first] mbox
+    3.35    3.20    4.00    0.24   81%  81% Peek [1 msg] mbox
+   49.35   48.80   49.60    0.34   68%  31% Put [second] mbox
+    3.35    3.20    4.00    0.24   81%  81% Peek [2 msgs] mbox
+   49.15   48.80   49.60    0.39   56%  56% Get [first] mbox
+   49.15   48.80   49.60    0.39   56%  56% Get [second] mbox
+   47.80   47.20   48.00    0.30   75%  25% Tryput [first] mbox
+   41.40   40.80   41.60    0.30   75%  25% Peek item [non-empty] mbox
+   49.40   48.80   49.60    0.30   75%  25% Tryget [non-empty] mbox
+   40.15   40.00   40.80    0.24   81%  81% Peek item [empty] mbox
+   40.95   40.80   41.60    0.24   81%  81% Tryget [empty] mbox
+    4.05    4.00    4.80    0.09   93%  93% Waiting to get mbox
+    4.05    4.00    4.80    0.09   93%  93% Waiting to put mbox
+   45.60   45.60   45.60    0.00  100% 100% Delete mbox
+  153.27  152.80  153.60    0.39   59%  40% Put/Get mbox
+
+   16.80   16.80   16.80    0.00  100% 100% Init semaphore
+   36.60   36.00   36.80    0.30   75%  25% Post [0] semaphore
+   39.60   39.20   40.00    0.40  100%  50% Wait [1] semaphore
+   34.80   34.40   35.20    0.40  100%  50% Trywait [0] semaphore
+   33.35   32.80   33.60    0.34   68%  31% Trywait [1] semaphore
+   10.30    9.60   10.40    0.17   87%  12% Peek semaphore
+    8.80    8.80    8.80    0.00  100% 100% Destroy semaphore
+  166.92  166.40  167.20    0.36   65%  34% Post/Wait semaphore
+
+   13.60   13.60   13.60    0.00  100% 100% Create counter
+    4.85    4.80    5.60    0.09   93%  93% Get counter value
+    4.80    4.80    4.80    0.00  100% 100% Set counter value
+   45.25   44.80   45.60    0.39   56%  43% Tick counter
+    7.75    7.20    8.00    0.34   68%  31% Delete counter
+
+   20.80   20.80   20.80    0.00  100% 100% Create alarm
+   69.30   68.80   69.60    0.37   62%  37% Initialize alarm
+    4.80    4.80    4.80    0.00  100% 100% Disable alarm
+   67.35   67.20   68.00    0.24   81%  81% Enable alarm
+   11.80   11.20   12.00    0.30   75%  25% Delete alarm
+   54.80   54.40   55.20    0.40  100%  50% Tick counter [1 alarm]
+  372.35  363.20  652.80   17.53   96%  96% Tick counter [many alarms]
+   95.50   95.20   96.00    0.37   62%  62% Tick &#38; fire counter [1 alarm]
+ 1757.92 1707.20 1996.80   81.43   81%  81% Tick &#38; fire counters [&#62;1 together]
+  404.37  404.00  404.80    0.40   53%  53% Tick &#38; fire counters [&#62;1 separately]
+  256.57  254.40  395.20    2.17   98%  97% Alarm latency [0 threads]
+  296.60  255.20  359.20   23.53   53%  31% Alarm latency [2 threads]
+  307.49  265.60  357.60   27.52   53%  53% Alarm latency [many threads]
+  467.04  432.00  788.80    5.03   97%   1% Alarm -&#62; thread resume latency
+
+   55.63   54.40   60.80    0.00            Clock/interrupt latency
+
+  101.23   80.80 1433.60    0.00            Clock DSR latency
+
+  316     316     316  (main stack:   752)  Thread stack used (1120 total)
+All done, main stack            : stack used   752 size  2400
+All done             :  Interrupt stack used   288 size  4096
+All done             : Idlethread stack used   272 size  2048
+
+Timing complete - 30780 ms total
+
+PASS:&lt;Basic timing OK&#62;
+EXIT:&lt;done&#62;
+	  </LITERALLAYOUT>
+</SECT2>
+</SECT1>
+
+<!-- ==================================================== -->
+
+<SECT1 id="rt-arm-iq80310">
+<TITLE>Board: Intel IQ80310 XScale Development Kit</TITLE>
+<LITERALLAYOUT CLASS="MONOSPACED">Board: Intel IQ80310 XScale Development Kit
+
+CPU: Intel XScale 600MHz
+
+
+Startup, main stack             : stack used   388 size  2400
+Startup              :  Interrupt stack used   148 size  4096
+Startup              : Idlethread stack used    76 size  1120
+
+eCos Kernel Timings
+Notes: all times are in microseconds (.000001) unless otherwise stated
+
+Reading the hardware clock takes 73 'ticks' overhead
+... this value will be factored out of all other measurements
+Clock interrupt took   12.11 microseconds (399 raw clock ticks)
+
+Testing parameters:
+   Clock samples:            32
+   Threads:                  64
+   Thread switches:         128
+   Mutexes:                  32
+   Mailboxes:                32
+   Semaphores:               32
+   Scheduler operations:    128
+   Counters:                 32
+   Alarms:                   32
+
+
+                                 Confidence
+     Ave     Min     Max     Var  Ave  Min  Function
+  ======  ======  ======  ====== ========== ========
+    6.53    5.48    8.55    0.50   53%  23% Create thread
+    0.37    0.03    3.24    0.18   87%   1% Yield thread [all suspended]
+    0.24    0.00    2.06    0.12   87%   1% Suspend [suspended] thread
+    0.25    0.00    0.73    0.06   71%   1% Resume thread
+    0.36    0.09    0.82    0.10   89%   1% Set priority
+    0.03    0.00    0.42    0.05   90%  90% Get priority
+    1.07    0.52    6.39    0.18   92%   1% Kill [suspended] thread
+    0.33    0.06    0.91    0.08   78%   3% Yield [no other] thread
+    0.55    0.03    1.06    0.09   85%   1% Resume [suspended low prio] thread
+    0.28    0.00    1.79    0.11   84%   4% Resume [runnable low prio] thread
+    0.43    0.00    1.00    0.12   76%   1% Suspend [runnable] thread
+    0.31    0.00    1.24    0.09   82%   4% Yield [only low prio] thread
+    0.21    0.00    0.42    0.04   73%   1% Suspend [runnable-&#62;not runnable]
+    1.00    0.88    1.45    0.04   78%   4% Kill [runnable] thread
+    0.59    0.42    3.97    0.13   81%  87% Destroy [dead] thread
+    1.43    1.27    1.94    0.07   78%   7% Destroy [runnable] thread
+    3.12    2.58    5.09    0.33   56%  34% Resume [high priority] thread
+    0.87    0.36    1.39    0.07   86%   0% Thread switch
+
+    0.15    0.00    1.39    0.21   81%  81% Scheduler lock
+    0.16    0.00    0.64    0.08   85%   7% Scheduler unlock [0 threads]
+    0.16    0.00    0.64    0.08   75%   8% Scheduler unlock [1 suspended]
+    0.16    0.00    0.70    0.08   78%   6% Scheduler unlock [many suspended]
+    0.16    0.00    0.64    0.07   81%   4% Scheduler unlock [many low prio]
+
+    0.45    0.00    1.39    0.34   56%  46% Init mutex
+    0.43    0.18    3.27    0.23   87%  87% Lock [unlocked] mutex
+    0.48    0.09    3.88    0.26   84%  71% Unlock [locked] mutex
+    0.35    0.21    2.24    0.21   87%  84% Trylock [unlocked] mutex
+    0.26    0.00    0.67    0.13   78%   9% Trylock [locked] mutex
+    0.21    0.00    1.27    0.24   78%  75% Destroy mutex
+    2.58    2.09    3.09    0.13   75%   9% Unlock/Lock mutex
+
+    0.99    0.21    2.48    0.41   65%  28% Create mbox
+    0.04    0.00    0.39    0.07   90%  87% Peek [empty] mbox
+    0.47    0.27    3.48    0.29   90%  78% Put [first] mbox
+    0.02    0.00    0.39    0.03   90%  90% Peek [1 msg] mbox
+    0.29    0.15    0.58    0.04   68%   3% Put [second] mbox
+    0.02    0.00    0.45    0.04   93%  93% Peek [2 msgs] mbox
+    0.48    0.21    3.67    0.26   84%  87% Get [first] mbox
+    0.35    0.09    0.82    0.11   75%   3% Get [second] mbox
+    0.50    0.21    3.18    0.33   90%  68% Tryput [first] mbox
+    0.39    0.15    1.39    0.19   78%  68% Peek item [non-empty] mbox
+    0.43    0.18    3.33    0.23   87%  90% Tryget [non-empty] mbox
+    0.28    0.03    0.79    0.06   68%   3% Peek item [empty] mbox
+    0.28    0.21    0.58    0.05   71%  65% Tryget [empty] mbox
+    0.01    0.00    0.36    0.02   96%  90% Waiting to get mbox
+    0.05    0.00    0.45    0.09   87%  84% Waiting to put mbox
+    0.42    0.09    2.88    0.20   84%  12% Delete mbox
+    1.39    1.27    2.39    0.14   87%  87% Put/Get mbox
+
+    0.35    0.00    1.36    0.45   75%  68% Init semaphore
+    0.19    0.00    0.45    0.04   81%   3% Post [0] semaphore
+    0.25    0.21    0.88    0.06   84%  81% Wait [1] semaphore
+    0.32    0.06    1.79    0.21   78%  68% Trywait [0] semaphore
+    0.20    0.00    0.52    0.06   62%   3% Trywait [1] semaphore
+    0.07    0.00    0.45    0.10   84%  81% Peek semaphore
+    0.06    0.00    0.52    0.06   71%  78% Destroy semaphore
+    1.45    1.42    1.79    0.04   87%  87% Post/Wait semaphore
+
+    0.70    0.00    2.88    0.47   43%  34% Create counter
+    0.05    0.00    0.42    0.09   87%  84% Get counter value
+    0.02    0.00    0.45    0.04   93%  93% Set counter value
+    0.38    0.12    0.58    0.06   59%   3% Tick counter
+    0.03    0.00    0.48    0.05   93%  78% Delete counter
+
+    1.10    0.39    4.30    0.47   62%  53% Create alarm
+    0.58    0.03    3.12    0.18   87%   3% Initialize alarm
+    0.04    0.00    0.42    0.07   90%  90% Disable alarm
+    0.54    0.36    1.36    0.12   84%  43% Enable alarm
+    0.03    0.00    0.70    0.06   84%  84% Delete alarm
+    0.50    0.24    0.97    0.08   84%   6% Tick counter [1 alarm]
+    5.30    5.12    5.97    0.14   84%  75% Tick counter [many alarms]
+    0.82    0.64    1.36    0.11   78%  43% Tick &#38; fire counter [1 alarm]
+   14.13   13.85   14.55    0.09   78%   3% Tick &#38; fire counters [&#62;1 together]
+    5.56    5.45    6.00    0.09   78%  71% Tick &#38; fire counters [&#62;1 separately]
+    9.69    9.45   12.52    0.22   64%  71% Alarm latency [0 threads]
+    9.98    9.48   12.76    0.23   69%  14% Alarm latency [2 threads]
+   10.38    9.48   24.67    0.59   74%  45% Alarm latency [many threads]
+   11.72   11.30   21.33    0.32   81%  58% Alarm -&#62; thread resume latency
+
+    1.87    1.82   10.42    0.00            Clock/interrupt latency
+
+    3.02    2.58    7.67    0.00            Clock DSR latency
+
+    9       0     260  (main stack:   776)  Thread stack used (1120 total)
+All done, main stack            : stack used   776 size  2400
+All done             :  Interrupt stack used   268 size  4096
+All done             : Idlethread stack used   244 size  1120
+
+Timing complete - 30300 ms total
+
+PASS:&lt;Basic timing OK&#62;
+EXIT:&lt;done&#62;
+
+	</LITERALLAYOUT>
+</SECT1>
+
+<!-- ==================================================== -->
+
+<SECT1 id="rt-tx39-jmr3904">
+<TITLE>Board: Toshiba JMR3904 Evaluation Board</TITLE>
+<LITERALLAYOUT CLASS="MONOSPACED">
+
+Board: Toshiba JMR3904 Evaluation Board
+
+CPU  : TMPR3904F 50MHz
+
+
+eCOS Kernel Timings
+Note: all times are in microseconds (.000001) unless otherwise stated
+
+Reading the hardware clock takes 0 'ticks' overhead
+... this value will be factored out of all other measurements
+Clock interrupt took   29.68 microseconds (45 raw clock ticks)
+
+Testing parameters:
+   Clock samples:          32
+   Threads:                24
+   Thread switches:       128
+   Mutexes:                32
+   Mailboxes:              32
+   Semaphores:             32
+   Scheduler operations:  128
+   Counters:               32
+   Alarms:                 32
+
+
+                                 Confidence
+     Ave     Min     Max     Var  Ave  Min  Function
+  ======  ======  ======  ====== ========== ========
+   13.62   11.72   27.99    1.51   79%  54% Create thread
+    2.77    2.60    3.91    0.26   79%  79% Yield thread [all suspended]
+    3.31    2.60    6.51    0.27   83%  12% Suspend [suspended] thread
+    2.58    1.95    7.81    0.47   58%  37% Resume thread
+    4.94    4.56   11.07    0.60   95%  79% Set priority
+    0.71    0.65    1.95    0.10   95%  95% Get priority
+   14.97   14.32   25.39    0.87   95%  95% Kill [suspended] thread
+    2.25    1.95    9.11    0.57   95%  95% Yield [no other] thread
+    7.27    6.51   12.37    0.42   79%  16% Resume [suspended low prio] thread
+    2.28    1.95    7.16    0.51   95%  79% Resume [runnable low prio] thread
+    4.31    3.26   12.37    0.75   87%  79% Suspend [runnable] thread
+    2.17    1.95    7.16    0.42   95%  95% Yield [only low prio] thread
+    2.39    1.95    6.51    0.51   95%  58% Suspend [runnable-&#62;not runnable]
+   13.43   12.37   22.79    0.80   91%  91% Kill [runnable] thread
+   22.30   20.83   37.76    1.76   91%  91% Resume [high priority] thread
+    4.62    4.56   11.07    0.13   98%  98% Thread switch
+
+    1.51    1.30    2.60    0.29   68%  68% Scheduler lock
+    2.36    1.95    3.26    0.31   61%  37% Scheduler unlock [0 threads]
+    2.39    1.95    5.21    0.32   62%  36% Scheduler unlock [1 suspended]
+    2.38    1.95    4.56    0.32   61%  37% Scheduler unlock [many suspended]
+    2.38    1.95    5.21    0.32   61%  37% Scheduler unlock [many low prio]
+
+    0.90    0.65    3.26    0.35   71%  71% Init mutex
+    2.48    1.95    8.46    0.50   50%  46% Lock [unlocked] mutex
+    2.83    2.60    9.11    0.42   93%  93% Unlock [locked] mutex
+    2.30    1.95    6.51    0.45   96%  65% Trylock [unlocked] mutex
+    1.99    1.30    5.86    0.24   84%  12% Trylock [locked] mutex
+    0.04    0.00    1.30    0.08   96%  96% Destroy mutex
+   42.40   42.32   44.92    0.16   96%  96% Unlock/Lock mutex
+
+    1.44    1.30    5.86    0.28   96%  96% Create mbox
+    0.51    0.00    1.30    0.25   71%  25% Peek [empty] mbox
+    2.93    2.60    9.11    0.51   96%  78% Put [first] mbox
+    0.51    0.00    1.30    0.25   71%  25% Peek [1 msg] mbox
+    4.19    3.91    5.21    0.34   59%  59% Put [second] mbox
+    0.45    0.00    0.65    0.28   68%  31% Peek [2 msgs] mbox
+    3.28    2.60   10.42    0.45   65%  31% Get [first] mbox
+    3.34    2.60    9.77    0.40   78%  18% Get [second] mbox
+    2.69    1.95    9.11    0.40   78%  18% Tryput [first] mbox
+    2.75    1.95    7.81    0.32   93%   3% Peek item [non-empty] mbox
+    3.15    2.60    9.11    0.48   53%  43% Tryget [non-empty] mbox
+    2.22    1.95    6.51    0.41   96%  78% Peek item [empty] mbox
+    2.40    1.95    5.86    0.42   50%  46% Tryget [empty] mbox
+    0.47    0.00    0.65    0.26   71%  28% Waiting to get mbox
+    0.59    0.00    1.30    0.15   84%  12% Waiting to put mbox
+    4.01    3.26   10.42    0.40   81%  15% Delete mbox
+   26.18   26.04   30.60    0.28   96%  96% Put/Get mbox
+
+    0.92    0.65    3.91    0.38   71%  71% Init semaphore
+    2.24    1.95    6.51    0.43   96%  75% Post [0] semaphore
+    2.32    1.95    7.16    0.48   96%  65% Wait [1] semaphore
+    2.03    1.30    5.86    0.24   90%   6% Trywait [0] semaphore
+    1.91    1.30    4.56    0.23   78%  18% Trywait [1] semaphore
+    0.77    0.00    1.95    0.30   65%   9% Peek semaphore
+    0.61    0.00    1.95    0.15   84%  12% Destroy semaphore
+   22.62   22.14   30.60    0.61   96%  62% Post/Wait semaphore
+
+    0.92    0.65    3.91    0.38   71%  71% Create counter
+    0.69    0.65    1.95    0.08   96%  96% Get counter value
+    0.41    0.00    1.30    0.33   56%  40% Set counter value
+    3.21    2.60    5.86    0.27   71%  21% Tick counter
+    0.65    0.00    3.26    0.16   84%  12% Delete counter
+
+    1.57    1.30    4.56    0.38   71%  71% Create alarm
+    4.52    3.91   13.02    0.57   50%  46% Initialize alarm
+    0.61    0.00    1.95    0.15   84%  12% Disable alarm
+    4.43    3.91    9.11    0.43   56%  40% Enable alarm
+    0.87    0.65    2.60    0.32   71%  71% Delete alarm
+    2.93    2.60    6.51    0.43   96%  65% Tick counter [1 alarm]
+   14.83   14.32   22.79    0.60   96%  59% Tick counter [many alarms]
+    4.88    4.56   11.07    0.51   96%  78% Tick &#38; fire counter [1 alarm]
+   83.25   82.03  102.86    1.23   96%  93% Tick &#38; fire counters [&#62;1 together]
+   17.58   16.93   27.34    0.61   50%  46% Tick &#38; fire counters [&#62;1 separately]
+   26.18   24.74   40.36    0.30   97%   0% Alarm latency [0 threads]
+   33.88   29.30   56.64    1.70   85%   6% Alarm latency [2 threads]
+   36.37   29.30   61.20    3.25   53%  24% Alarm latency [many threads]
+
+    7.85    6.51   14.97    0.00            Clock/interrupt latency
+
+Timing complete - 23540 ms total
+
+PASS:&lt;Basic timing OK&#62;
+EXIT:&lt;done&#62;
+
+	</LITERALLAYOUT>
+</SECT1>
+
+<!-- ==================================================== -->
+
+<SECT1 id="rt-tx49-ref4955">
+<TITLE>Board: Toshiba REF 4955</TITLE>
+<LITERALLAYOUT CLASS="MONOSPACED">
+
+Board: Toshiba REF 4955
+
+CPU  : Toshiba TX4955 66MHz
+
+Startup, main stack             : stack used   960 size  2936
+Startup              :  Interrupt stack used   168 size  4096
+Startup              : Idlethread stack used   372 size  2048
+
+eCos Kernel Timings
+Notes: all times are in microseconds (.000001) unless otherwise stated
+
+Reading the hardware clock takes 3 `ticks' overhead
+... this value will be factored out of all other measurements
+Clock interrupt took    4.00 microseconds (264 raw clock ticks)
+
+Testing parameters:
+   Clock samples:            32
+   Threads:                  64
+   Thread switches:         128
+   Mutexes:                  32
+   Mailboxes:                32
+   Semaphores:               32
+   Scheduler operations:    128
+   Counters:                 32
+   Alarms:                   32
+
+
+                                 Confidence
+     Ave     Min     Max     Var  Ave  Min  Function
+  ======  ======  ======  ====== ========== ========
+   11.21    9.58   14.11    0.95   48%  34% Create thread
+    0.66    0.65    1.29    0.02   98%  98% Yield thread [all suspended]
+    0.63    0.53    3.06    0.17   82%  82% Suspend [suspended] thread
+    0.54    0.53    1.06    0.02   98%  98% Resume thread
+    0.78    0.74    1.39    0.05   93%  93% Set priority
+    0.05    0.05    0.36    0.01   98%  98% Get priority
+    2.06    1.89    6.65    0.25   95%  79% Kill [suspended] thread
+    0.65    0.65    0.68    0.00   98%  98% Yield [no other] thread
+    1.15    1.02    3.03    0.20   81%  81% Resume [suspended low prio] thread
+    0.54    0.52    1.18    0.03   96%  96% Resume [runnable low prio] thread
+    0.94    0.88    1.27    0.01   95%   1% Suspend [runnable] thread
+    0.65    0.65    0.68    0.00   98%  98% Yield [only low prio] thread
+    0.54    0.53    0.86    0.01   98%  96% Suspend [runnable-&#62;not runnable]
+    1.97    1.89    2.98    0.12   84%  84% Kill [runnable] thread
+    1.03    0.92    4.94    0.17   89%  89% Destroy [dead] thread
+    2.55    2.33    4.38    0.24   89%  70% Destroy [runnable] thread
+    5.62    4.11   13.23    0.99   65%  40% Resume [high priority] thread
+    1.84    1.83    2.79    0.02   98%  98% Thread switch
+
+    0.12    0.02    0.65    0.15   74%  74% Scheduler lock
+    0.35    0.35    0.35    0.00  100% 100% Scheduler unlock [0 threads]
+    0.35    0.35    0.35    0.00  100% 100% Scheduler unlock [1 suspended]
+    0.43    0.35    1.17    0.13   78%  78% Scheduler unlock [many suspended]
+    0.45    0.35    1.17    0.15   75%  75% Scheduler unlock [many low prio]
+
+    0.46    0.15    3.38    0.30   62%  50% Init mutex
+    0.73    0.64    3.27    0.16   96%  96% Lock [unlocked] mutex
+    0.77    0.65    4.50    0.23   96%  96% Unlock [locked] mutex
+    0.58    0.55    1.42    0.05   96%  96% Trylock [unlocked] mutex
+    0.51    0.50    0.83    0.02   96%  96% Trylock [locked] mutex
+    0.12    0.11    0.41    0.02   96%  96% Destroy mutex
+    4.72    4.70    5.58    0.05   96%  96% Unlock/Lock mutex
+
+    1.01    0.67    3.48    0.40   71%  71% Create mbox
+    0.02    0.00    0.53    0.03   96%  96% Peek [empty] mbox
+    0.89    0.68    4.20    0.29   96%  71% Put [first] mbox
+    0.02    0.00    0.33    0.02   96%  96% Peek [1 msg] mbox
+    0.69    0.68    0.76    0.01   50%  46% Put [second] mbox
+    0.02    0.00    0.30    0.02   96%  96% Peek [2 msgs] mbox
+    0.81    0.71    3.83    0.19   96%  96% Get [first] mbox
+    0.72    0.71    1.02    0.02   96%  96% Get [second] mbox
+    0.81    0.65    2.74    0.22   96%  71% Tryput [first] mbox
+    0.67    0.62    2.27    0.10   96%  96% Peek item [non-empty] mbox
+    0.77    0.71    2.41    0.10   96%  96% Tryget [non-empty] mbox
+    0.59    0.58    0.88    0.02   96%  96% Peek item [empty] mbox
+    0.62    0.62    0.67    0.00   96%  96% Tryget [empty] mbox
+    0.03    0.02    0.32    0.02   96%  96% Waiting to get mbox
+    0.02    0.02    0.06    0.01   50%  46% Waiting to put mbox
+    0.75    0.65    3.59    0.18   96%  96% Delete mbox
+    2.80    2.77    3.59    0.05   96%  96% Put/Get mbox
+
+    0.37    0.18    0.88    0.28   71%  71% Init semaphore
+    0.48    0.47    0.80    0.02   96%  96% Post [0] semaphore
+    0.60    0.59    0.67    0.01   50%  46% Wait [1] semaphore
+    0.53    0.50    1.41    0.06   96%  96% Trywait [0] semaphore
+    0.51    0.50    0.71    0.01   96%  50% Trywait [1] semaphore
+    0.09    0.09    0.15    0.00   96%  96% Peek semaphore
+    0.12    0.11    0.41    0.02   96%  96% Destroy semaphore
+    3.05    3.05    3.05    0.00  100% 100% Post/Wait semaphore
+
+    0.57    0.17    2.76    0.24   59%  25% Create counter
+    0.06    0.05    0.58    0.03   96%  96% Get counter value
+    0.06    0.03    0.64    0.04   96%  96% Set counter value
+    0.73    0.71    1.02    0.02   96%  96% Tick counter
+    0.12    0.11    0.15    0.01   50%  46% Delete counter
+
+    0.89    0.64    3.15    0.34   84%  71% Create alarm
+    1.00    0.95    2.41    0.09   96%  96% Initialize alarm
+    0.09    0.06    0.68    0.04   96%  96% Disable alarm
+    1.05    1.00    2.48    0.09   96%  96% Enable alarm
+    0.18    0.17    0.50    0.02   96%  96% Delete alarm
+    0.90    0.89    1.11    0.01   96%  96% Tick counter [1 alarm]
+    5.60    5.59    5.88    0.02   96%  96% Tick counter [many alarms]
+    1.53    1.52    2.11    0.04   96%  96% Tick &#38; fire counter [1 alarm]
+   25.48   25.47   25.76    0.02   96%  96% Tick &#38; fire counters [&#62;1 together]
+    6.22    6.21    6.44    0.01   96%  96% Tick &#38; fire counters [&#62;1 separately]
+    2.59    2.56    6.17    0.07   98%  98% Alarm latency [0 threads]
+    4.06    3.95    6.24    0.08   78%  57% Alarm latency [2 threads]
+    5.03    2.56    9.03    0.89   59%  10% Alarm latency [many threads]
+    5.68    5.59   15.45    0.15   99%  99% Alarm -&#62; thread resume latency
+
+    2.52    1.41    8.12    0.00            Clock/interrupt latency
+
+    2.05    1.17    6.00    0.00            Clock DSR latency
+
+   34       0    1072  (main stack:  1320)  Thread stack used (1912 total)
+All done, main stack            : stack used  1320 size  2936
+All done             :  Interrupt stack used   136 size  4096
+All done             : Idlethread stack used   996 size  2048
+
+Timing complete - 30360 ms total
+
+PASS:&lt;Basic timing OK&#62;
+EXIT:&lt;done&#62;
+
+	</LITERALLAYOUT>
+</SECT1>
+
+<!-- ==================================================== -->
+
+<SECT1 id="rt-mn10300-stdeval1">
+<TITLE>Board: Matsushita STDEVAL1 Board</TITLE>
+<LITERALLAYOUT CLASS="MONOSPACED">
+
+Board: Matsushita STDEVAL1 Board
+
+CPU  : MN103002A  60MHz
+
+eCOS Kernel Timings
+Note: all times are in microseconds (.000001) unless otherwise stated
+
+Reading the hardware clock takes 18 'ticks' overhead
+... this value will be factored out of all other measurements
+Clock interrupt took   13.73 microseconds (205 raw clock ticks)
+
+Testing parameters:
+   Clock samples:          32
+   Threads:                24
+   Thread switches:       128
+   Mutexes:                32
+   Mailboxes:              32
+   Semaphores:             32
+   Scheduler operations:  128
+   Counters:               32
+   Alarms:                 32
+
+
+                                 Confidence
+     Ave     Min     Max     Var  Ave  Min  Function
+  ======  ======  ======  ====== ========== ========
+   14.36   11.53   23.53    1.81   54%  33% Create thread
+    2.64    2.53    5.07    0.20   95%  95% Yield thread [all suspended]
+    2.25    1.93    4.80    0.31   45%  83% Suspend [suspended] thread
+    2.19    2.00    4.93    0.28   91%  91% Resume thread
+    3.42    3.00    8.40    0.47   95%  87% Set priority
+    0.31    0.13    1.20    0.19   79%  58% Get priority
+    8.26    7.40   18.80    0.93   95%  87% Kill [suspended] thread
+    2.58    2.47    5.13    0.21   95%  95% Yield [no other] thread
+    5.07    4.53    8.67    0.44   62%  50% Resume [suspended low prio] thread
+    2.27    2.07    4.53    0.23   87%  87% Resume [runnable low prio] thread
+    4.76    4.07    9.40    0.65   66%  75% Suspend [runnable] thread
+    2.63    2.53    4.73    0.18   95%  95% Yield [only low prio] thread
+    2.09    1.87    4.27    0.27   91%  79% Suspend [runnable-&#62;not runnable]
+   10.79   10.00   18.20    0.81   95%  79% Kill [runnable] thread
+   20.30   18.40   28.80    1.42   79%  54% Resume [high priority] thread
+    5.53    5.47   12.13    0.11   98%  97% Thread switch
+
+    0.28    0.27    2.20    0.03   97%  97% Scheduler lock
+    1.14    1.13    2.00    0.01   99%  99% Scheduler unlock [0 threads]
+    1.14    1.13    2.40    0.02   99%  99% Scheduler unlock [1 suspended]
+    1.16    1.13    3.33    0.06   95%  95% Scheduler unlock [many suspended]
+    1.23    1.20    3.13    0.05   95%  95% Scheduler unlock [many low prio]
+
+    1.29    1.00    4.20    0.25   65%  50% Init mutex
+    2.65    2.47    5.27    0.23   93%  87% Lock [unlocked] mutex
+    3.26    3.07    6.80    0.28   93%  87% Unlock [locked] mutex
+    2.48    2.33    5.07    0.21   90%  87% Trylock [unlocked] mutex
+    2.20    2.07    4.67    0.21   93%  87% Trylock [locked] mutex
+    0.23    0.20    1.00    0.05   96%  93% Destroy mutex
+   25.11   24.73   27.53    0.21   65%  31% Unlock/Lock mutex
+
+    2.49    2.00    5.73    0.32   81%  37% Create mbox
+    0.11    0.00    1.60    0.15   84%  81% Peek [empty] mbox
+    3.01    2.60    9.47    0.52   96%  78% Put [first] mbox
+    0.10    0.00    1.67    0.15   87%  81% Peek [1 msg] mbox
+    3.09    2.60    8.33    0.50   93%  75% Put [second] mbox
+    0.06    0.00    1.13    0.08   96%  87% Peek [2 msgs] mbox
+    3.10    2.80    7.93    0.40   93%  84% Get [first] mbox
+    3.13    2.80    7.53    0.43   90%  78% Get [second] mbox
+    2.99    2.60    8.53    0.52   93%  75% Tryput [first] mbox
+    2.65    2.33    6.80    0.42   90%  78% Peek item [non-empty] mbox
+    3.05    2.73    7.60    0.42   93%  78% Tryget [non-empty] mbox
+    3.16    2.93    6.27    0.31   84%  84% Peek item [empty] mbox
+    2.48    2.27    5.73    0.30   84%  84% Tryget [empty] mbox
+    0.23    0.13    2.07    0.14   96%  87% Waiting to get mbox
+    0.22    0.13    1.93    0.13   96%  75% Waiting to put mbox
+    3.08    2.80    7.93    0.42   84%  84% Delete mbox
+   16.01   15.53   19.00    0.52   78%  59% Put/Get mbox
+
+    0.85    0.67    3.27    0.19   96%  50% Init semaphore
+    2.00    1.93    3.87    0.12   96%  90% Post [0] semaphore
+    2.05    2.00    3.47    0.09   96%  96% Wait [1] semaphore
+    1.85    1.80    3.47    0.10   96%  96% Trywait [0] semaphore
+    1.82    1.80    2.53    0.04   96%  96% Trywait [1] semaphore
+    0.36    0.33    1.33    0.06   96%  96% Peek semaphore
+    0.38    0.33    1.87    0.09   96%  96% Destroy semaphore
+   12.38   12.20   16.27    0.30   93%  87% Post/Wait semaphore
+
+    1.18    0.73    4.07    0.24   78%  18% Create counter
+    0.20    0.13    1.40    0.11   87%  87% Get counter value
+    0.24    0.20    1.40    0.08   93%  93% Set counter value
+    3.17    3.13    4.20    0.07   93%  93% Tick counter
+    0.44    0.40    1.73    0.08   96%  96% Delete counter
+
+    2.24    1.67    5.13    0.47   68%  65% Create alarm
+    3.86    3.40    9.67    0.51   90%  78% Initialize alarm
+    0.15    0.07    1.60    0.12   96%  68% Disable alarm
+    3.76    3.47    7.67    0.35   93%  75% Enable alarm
+    0.57    0.47    2.73    0.16   96%  84% Delete alarm
+    3.64    3.60    4.73    0.07   96%  96% Tick counter [1 alarm]
+   21.72   21.67   23.27    0.10   96%  96% Tick counter [many alarms]
+    6.13    6.07    8.07    0.12   96%  96% Tick &#38; fire counter [1 alarm]
+  101.40   99.53  132.73    2.75   93%  93% Tick &#38; fire counters [&#62;1 together]
+   24.21   24.13   26.40    0.14   96%  96% Tick &#38; fire counters [&#62;1 separately]
+   11.74   11.60   22.67    0.26   98%  98% Alarm latency [0 threads]
+   14.58   11.73   24.93    1.59   54%  28% Alarm latency [2 threads]
+   18.18   15.20   41.07    1.96   60%  43% Alarm latency [many threads]
+
+    3.06    2.13   10.33    0.00            Clock/interrupt latency
+
+Timing complete - 23480 ms total
+
+PASS:&lt;Basic timing OK&#62;
+EXIT:&lt;done&#62;
+
+	</LITERALLAYOUT>
+</SECT1>
+
+<!-- ==================================================== -->
+
+<SECT1 id="rt-sparclite-sleb">
+<TITLE>Board: Fujitsu SPARClite Evaluation Board</TITLE>
+<LITERALLAYOUT CLASS="MONOSPACED">
+
+Board: Fujitsu SPARClite Evaluation Board
+
+CPU  : Fujitsu SPARClite MB8683X 100MHz
+
+
+eCOS Kernel Timings
+Note: all times are in microseconds (.000001) unless otherwise stated
+
+Reading the hardware clock takes 0 'ticks' overhead
+... this value will be factored out of all other measurements
+Clock interrupt took   17.19 microseconds (17 raw clock ticks)
+
+Testing parameters:
+   Clock samples:          32
+   Threads:                24
+   Thread switches:       128
+   Mutexes:                32
+   Mailboxes:              32
+   Semaphores:             32
+   Scheduler operations:  128
+   Counters:               32
+   Alarms:                 32
+
+
+                                 Confidence
+     Ave     Min     Max     Var  Ave  Min  Function
+  ======  ======  ======  ====== ========== ========
+   48.59   47.00   63.01    1.41   66%  70% Create thread
+    2.13    2.00    5.00    0.24   95%  95% Yield thread [all suspended]
+    2.92    2.00   10.00    0.69   58%  37% Suspend [suspended] thread
+    2.13    1.00   10.00    0.66   75%  20% Resume thread
+    2.79    2.00   11.00    0.86   95%  54% Set priority
+    1.00    0.00    5.00    0.33   79%  16% Get priority
+    7.17    5.00   34.00    2.24   95%  95% Kill [suspended] thread
+    2.42    2.00   12.00    0.80   95%  95% Yield [no other] thread
+    3.46    2.00   14.00    1.10   75%  83% Resume [suspended low prio] thread
+    2.00    1.00    9.00    0.58   66%  29% Resume [runnable low prio] thread
+    4.21    3.00   20.00    1.38   95%  91% Suspend [runnable] thread
+    2.33    2.00   10.00    0.64   95%  95% Yield [only low prio] thread
+    2.00    1.00    9.00    0.67   58%  33% Suspend [runnable-&#62;not runnable]
+    5.79    4.00   30.00    2.07   95%  95% Kill [runnable] thread
+   39.34   37.00   75.01    3.36   91%  91% Resume [high priority] thread
+   15.20   15.00   31.00    0.40   97%  97% Thread switch
+
+    1.04    1.00    4.00    0.08   97%  97% Scheduler lock
+    1.42    1.00    5.00    0.51   60%  60% Scheduler unlock [0 threads]
+    1.41    1.00    5.00    0.50   61%  61% Scheduler unlock [1 suspended]
+    1.41    1.00    5.00    0.50   60%  60% Scheduler unlock [many suspended]
+    1.40    1.00    5.00    0.50   62%  62% Scheduler unlock [many low prio]
+
+    1.19    1.00    6.00    0.35   93%  93% Init mutex
+    2.34    2.00   12.00    0.64   93%  93% Lock [unlocked] mutex
+    3.41    3.00   13.00    0.71   96%  87% Unlock [locked] mutex
+    2.16    1.00   10.00    0.49   87%   9% Trylock [unlocked] mutex
+    1.78    1.00    7.00    0.59   59%  37% Trylock [locked] mutex
+    0.72    0.00    2.00    0.45   65%  31% Destroy mutex
+   25.25   24.00   41.00    0.98   71%  25% Unlock/Lock mutex
+
+    1.44    1.00    9.00    0.68   96%  78% Create mbox
+    0.94    0.00    3.00    0.23   84%  12% Peek [empty] mbox
+    3.06    2.00   13.00    0.62   71%  25% Put [first] mbox
+    0.69    0.00    3.00    0.52   59%  37% Peek [1 msg] mbox
+    2.44    2.00   10.00    0.68   96%  78% Put [second] mbox
+    0.78    0.00    3.00    0.44   68%  28% Peek [2 msgs] mbox
+    3.78    3.00   14.00    0.83   96%  53% Get [first] mbox
+    2.97    2.00    9.00    0.61   56%  31% Get [second] mbox
+    2.53    2.00   12.00    0.80   96%  75% Tryput [first] mbox
+    2.72    2.00   12.00    0.81   96%  56% Peek item [non-empty] mbox
+    2.63    2.00   13.00    0.94   90%  75% Tryget [non-empty] mbox
+    1.97    1.00    6.00    0.42   68%  21% Peek item [empty] mbox
+    2.09    1.00    9.00    0.49   78%  15% Tryget [empty] mbox
+    0.84    0.00    4.00    0.42   71%  25% Waiting to get mbox
+    0.81    0.00    4.00    0.46   68%  28% Waiting to put mbox
+    2.38    2.00   11.00    0.66   96%  87% Delete mbox
+   23.41   22.00   47.00    1.47   96%  96% Put/Get mbox
+
+    1.03    0.00    6.00    0.31   84%  12% Init semaphore
+    2.66    2.00    8.00    0.66   96%  50% Post [0] semaphore
+    1.97    1.00   10.00    0.55   68%  28% Wait [1] semaphore
+    1.78    1.00    8.00    0.63   56%  40% Trywait [0] semaphore
+    1.84    1.00    8.00    0.58   62%  34% Trywait [1] semaphore
+    1.00    0.00    5.00    0.25   84%  12% Peek semaphore
+    0.81    0.00    4.00    0.46   68%  28% Destroy semaphore
+   19.03   18.00   41.00    1.37   96%  96% Post/Wait semaphore
+
+    1.38    1.00    6.00    0.56   75%  75% Create counter
+    1.09    1.00    3.00    0.18   93%  93% Get counter value
+    1.00    0.00    5.00    0.31   78%  15% Set counter value
+    3.09    2.00    6.00    0.35   78%   9% Tick counter
+    0.91    0.00    5.00    0.40   75%  21% Delete counter
+
+    2.53    2.00    9.00    0.70   96%  65% Create alarm
+    6.03    5.00   22.00    1.00   50%  46% Initialize alarm
+    0.78    0.00    4.00    0.49   65%  31% Disable alarm
+    2.91    2.00   13.00    0.91   87%  50% Enable alarm
+    0.97    0.00    5.00    0.30   81%  15% Delete alarm
+    2.69    2.00    9.00    0.69   96%  50% Tick counter [1 alarm]
+   12.00   11.00   23.00    0.69   62%  34% Tick counter [many alarms]
+    4.16    3.00   13.00    0.55   84%  12% Tick &#38; fire counter [1 alarm]
+   72.69   72.01   87.01    1.03   96%  96% Tick &#38; fire counters [&#62;1 together]
+   13.66   13.00   23.00    0.82   96%  62% Tick &#38; fire counters [&#62;1 separately]
+   13.26   13.00   42.00    0.51   98%  98% Alarm latency [0 threads]
+   16.75   11.00   53.01    2.78   64%  16% Alarm latency [2 threads]
+   24.06   18.00   58.01    3.55   67%  25% Alarm latency [many threads]
+
+    3.61    2.00   13.00    0.00            Clock/interrupt latency
+
+Timing complete - 23590 ms total
+
+PASS:&lt;Basic timing OK&#62;
+EXIT:&lt;done&#62;
+
+	</LITERALLAYOUT>
+</SECT1>
+
+<!-- ==================================================== -->
+
+<SECT1 id="rt-ppc-cogent">
+<TITLE>Board: Cogent CMA MPC860 (PowerPC) Evaluation </TITLE>
+<LITERALLAYOUT CLASS="MONOSPACED">Board: Cogent CMA MPC860 (PowerPC) Evaluation 
+CPU  : MPC860, revision A3 33MHz
+
+
+eCOS Kernel Timings
+Note: all times are in microseconds (.000001) unless otherwise stated
+
+Reading the hardware clock takes 0 'ticks' overhead
+... this value will be factored out of all other measurements
+Clock interrupt took   14.46 microseconds (30 raw clock ticks)
+
+Testing parameters:
+   Clock samples:          32
+   Threads:                24
+   Thread switches:       128
+   Mutexes:                32
+   Mailboxes:              32
+   Semaphores:             32
+   Scheduler operations:  128
+   Counters:               32
+   Alarms:                 32
+
+
+
+
+
+                                 Confidence
+     Ave     Min     Max     Var  Ave  Min  Function
+  ======  ======  ======  ====== ========== ========
+   26.78   23.52   41.76    1.97   66%  37% Create thread
+    4.00    3.84    4.80    0.23   70%  70% Yield thread [all suspended]
+    3.78    3.36    7.68    0.38   50%  45% Suspend [suspended] thread
+    3.56    3.36    7.68    0.37   95%  91% Resume thread
+    5.28    4.32   12.96    0.76   83%  66% Set priority
+    0.84    0.48    3.84    0.39   91%  54% Get priority
+   11.76   10.08   32.16    1.70   95%  95% Kill [suspended] thread
+    4.14    3.84    8.64    0.45   95%  75% Yield [no other] thread
+    7.14    5.76   17.76    1.07   79%  70% Resume [suspended low prio] thread
+    3.60    3.36    8.16    0.42   95%  87% Resume [runnable low prio] thread
+    6.10    5.28   14.88    0.80   62%  70% Suspend [runnable] thread
+    4.00    3.84    5.76    0.25   79%  79% Yield [only low prio] thread
+    3.66    3.36    8.64    0.47   95%  79% Suspend [runnable-&#62;not runnable]
+   11.66   10.08   30.24    1.58   79%  91% Kill [runnable] thread
+   31.12   27.84   53.28    2.35   87%  50% Resume [high priority] thread
+    7.52    7.20   15.84    0.30   50%  48% Thread switch
+
+    1.00    0.48    2.88    0.21   63%  14% Scheduler lock
+    2.57    2.40    3.84    0.23   65%  65% Scheduler unlock [0 threads]
+    2.58    2.40    4.32    0.23   64%  64% Scheduler unlock [1 suspended]
+    2.59    2.40    4.32    0.24   62%  62% Scheduler unlock [many suspended]
+    2.59    2.40    4.32    0.24   61%  61% Scheduler unlock [many low prio]
+
+    1.69    1.44    5.76    0.37   96%  71% Init mutex
+    4.15    3.84   10.56    0.47   96%  75% Lock [unlocked] mutex
+    5.82    5.28   10.56    0.38   62%  28% Unlock [locked] mutex
+    3.70    3.36    8.64    0.41   96%  59% Trylock [unlocked] mutex
+    3.42    2.88    6.72    0.26   75%  15% Trylock [locked] mutex
+    0.36    0.00    1.92    0.25   62%  34% Destroy mutex
+   43.41   42.72   45.12    0.34   81%   3% Unlock/Lock mutex
+
+    3.27    2.88    8.16    0.39   96%  50% Create mbox
+    0.57    0.00    2.40    0.34   50%  21% Peek [empty] mbox
+    6.16    5.76   11.04    0.48   87%  87% Put [first] mbox
+    0.48    0.00    1.92    0.27   50%  28% Peek [1 msg] mbox
+    5.92    5.28   10.56    0.35   90%   6% Put [second] mbox
+    0.60    0.00    2.40    0.30   62%  12% Peek [2 msgs] mbox
+    4.69    4.32   12.00    0.54   93%  93% Get [first] mbox
+    4.68    4.32   11.52    0.52   93%  93% Get [second] mbox
+    5.86    5.28   11.04    0.47   62%  31% Tryput [first] mbox
+    4.00    3.36    9.12    0.38   87%   9% Peek item [non-empty] mbox
+    4.59    3.84   12.48    0.61   71%  75% Tryget [non-empty] mbox
+    3.75    3.36    7.68    0.34   53%  43% Peek item [empty] mbox
+    3.93    3.36    9.60    0.45   65%  31% Tryget [empty] mbox
+    0.63    0.00    2.40    0.28   68%   6% Waiting to get mbox
+    0.54    0.00    1.92    0.19   75%   9% Waiting to put mbox
+    4.84    4.32   12.00    0.47   56%  40% Delete mbox
+   24.18   23.52   29.76    0.66   81%  75% Put/Get mbox
+
+    1.72    0.96    3.84    0.33   90%   6% Init semaphore
+    3.15    2.88    6.24    0.34   96%  62% Post [0] semaphore
+    3.85    3.36    8.64    0.30   68%  28% Wait [1] semaphore
+    3.24    2.88    6.24    0.34   46%  46% Trywait [0] semaphore
+    3.22    2.88    6.24    0.32   50%  46% Trywait [1] semaphore
+    0.96    0.48    2.88    0.12   84%  12% Peek semaphore
+    0.99    0.96    1.92    0.06   96%  96% Destroy semaphore
+   24.71   24.00   28.80    0.40   87%   6% Post/Wait semaphore
+
+    2.31    1.44    6.24    0.77   46%  56% Create counter
+    0.45    0.00    0.96    0.08   87%   9% Get counter value
+    0.42    0.00    0.96    0.16   75%  18% Set counter value
+    4.14    3.84    4.80    0.26   50%  43% Tick counter
+    0.91    0.48    2.40    0.19   71%  21% Delete counter
+
+    5.23    4.32    7.68    0.61   65%  53% Create alarm
+    5.58    4.80   12.96    0.72   68%  84% Initialize alarm
+    0.75    0.48    1.92    0.30   90%  56% Disable alarm
+    8.02    7.20   14.40    0.53   84%  68% Enable alarm
+    1.32    0.96    3.84    0.29   56%  40% Delete alarm
+    4.63    4.32    6.24    0.28   53%  43% Tick counter [1 alarm]
+   23.67   23.52   25.44    0.23   78%  78% Tick counter [many alarms]
+    7.24    6.72   10.56    0.21   84%  12% Tick &#38; fire counter [1 alarm]
+  106.83  106.56  110.40    0.35   96%  65% Tick &#38; fire counters [&#62;1 together]
+   26.18   25.44   29.76    0.46   81%   9% Tick &#38; fire counters [&#62;1 separately]
+   10.79   10.08   29.28    0.66   53%  55% Alarm latency [0 threads]
+   17.20   13.92   35.52    1.48   67%  21% Alarm latency [2 threads]
+   29.69   22.56   47.04    3.58   57%  17% Alarm latency [many threads]
+
+    7.66    3.84   19.20    0.00            Clock/interrupt latency
+
+Timing complete - 23530 ms total
+
+PASS:&lt;Basic timing OK&#62;
+EXIT:&lt;done&#62;
+
+	</LITERALLAYOUT>
+</SECT1>
+
+<!-- ==================================================== -->
+
+<SECT1 id="rt-vr4300-vrc4373">
+<TITLE>Board: NEC VR4373</TITLE>
+<LITERALLAYOUT CLASS="MONOSPACED">
+
+Board: NEC VR4373
+
+CPU  : NEC VR4300 133MHz
+
+
+Startup, main stack             : stack used  1304 size  3576
+Startup              :  Interrupt stack used   980 size  4096
+Startup              : Idlethread stack used   494 size  2552
+
+eCos Kernel Timings
+Notes: all times are in microseconds (.000001) unless otherwise stated
+
+Reading the hardware clock takes 3 `ticks' overhead
+... this value will be factored out of all other measurements
+Clock interrupt took    6.49 microseconds (431 raw clock ticks)
+
+Testing parameters:
+   Clock samples:          32
+   Threads:                16
+   Thread switches:       128
+   Mutexes:                32
+   Mailboxes:              32
+   Semaphores:             32
+   Scheduler operations:  128
+   Counters:               32
+   Alarms:                 32
+
+
+                                 Confidence
+     Ave     Min     Max     Var  Ave  Min  Function
+  ======  ======  ======  ====== ========== ========
+   17.21   16.18   22.14    0.88   75%  68% Create thread
+    0.84    0.78    1.29    0.10   81%  81% Yield thread [all suspended]
+    0.90    0.62    3.20    0.35   87%  87% Suspend [suspended] thread
+    0.74    0.65    1.16    0.12   81%  68% Resume thread
+    1.11    0.90    1.70    0.25   75%  68% Set priority
+    0.11    0.05    0.35    0.09   75%  75% Get priority
+    2.93    2.24    8.27    0.78   93%  75% Kill [suspended] thread
+    0.88    0.78    1.92    0.16   93%  81% Yield [no other] thread
+    1.82    1.20    4.71    0.62   87%  62% Resume [suspended low prio] thread
+    0.70    0.63    0.86    0.09   68%  68% Resume [runnable low prio] thread
+    1.21    1.07    1.61    0.13   81%  68% Suspend [runnable] thread
+    0.86    0.78    1.58    0.13   81%  81% Yield [only low prio] thread
+    0.69    0.62    0.84    0.09   68%  68% Suspend [runnable-&#62;not runnable]
+    2.64    2.24    4.35    0.43   81%  62% Kill [runnable] thread
+    1.50    1.07    5.82    0.56   93%  87% Destroy [dead] thread
+    3.66    2.75    7.74    0.82   50%  56% Destroy [runnable] thread
+   13.65    8.33   27.88    3.70   50%  43% Resume [high priority] thread
+    2.04    1.89    3.32    0.15   46%  49% Thread switch
+
+    0.19    0.05    0.83    0.13   48%  44% Scheduler lock
+    0.50    0.41    1.59    0.13   89%  73% Scheduler unlock [0 threads]
+    0.52    0.41    1.29    0.14   89%  64% Scheduler unlock [1 suspended]
+    0.56    0.41    1.49    0.15   42%  47% Scheduler unlock [many suspended]
+    0.56    0.41    1.41    0.15   43%  47% Scheduler unlock [many low prio]
+
+    0.57    0.20    2.33    0.27   65%  50% Init mutex
+    0.89    0.75    3.35    0.20   96%  75% Lock [unlocked] mutex
+    0.90    0.74    4.38    0.25   96%  93% Unlock [locked] mutex
+    0.77    0.65    2.63    0.17   96%  75% Trylock [unlocked] mutex
+    0.66    0.59    1.16    0.10   75%  75% Trylock [locked] mutex
+    0.07    0.00    0.45    0.09   75%  75% Destroy mutex
+    7.95    7.71    9.49    0.19   50%  46% Unlock/Lock mutex
+
+    1.04    0.81    3.44    0.27   93%  68% Create mbox
+    0.10    0.02    0.57    0.11   71%  68% Peek [empty] mbox
+    1.15    0.83    4.71    0.31   53%  71% Put [first] mbox
+    0.10    0.02    0.57    0.12   68%  68% Peek [1 msg] mbox
+    1.01    0.83    3.83    0.22   93%  75% Put [second] mbox
+    0.09    0.02    0.57    0.10   71%  71% Peek [2 msgs] mbox
+    1.03    0.81    5.02    0.27   96%  87% Get [first] mbox
+    0.93    0.81    1.61    0.14   84%  62% Get [second] mbox
+    1.07    0.77    4.18    0.23   68%  50% Tryput [first] mbox
+    0.89    0.72    3.49    0.21   93%  71% Peek item [non-empty] mbox
+    1.04    0.83    4.09    0.26   90%  81% Tryget [non-empty] mbox
+    0.79    0.68    1.97    0.15   87%  68% Peek item [empty] mbox
+    0.84    0.72    2.36    0.17   93%  68% Tryget [empty] mbox
+    0.13    0.02    0.59    0.13   87%  62% Waiting to get mbox
+    0.13    0.02    0.90    0.13   90%  62% Waiting to put mbox
+    0.93    0.77    3.23    0.21   90%  71% Delete mbox
+    4.74    4.51    8.80    0.32   93%  78% Put/Get mbox
+
+    0.50    0.21    1.95    0.29   90%  50% Init semaphore
+    0.86    0.57    2.87    0.29   93%  56% Post [0] semaphore
+    1.01    0.74    3.62    0.28   93%  56% Wait [1] semaphore
+    0.87    0.60    3.17    0.28   90%  59% Trywait [0] semaphore
+    0.74    0.62    1.70    0.14   93%  56% Trywait [1] semaphore
+    0.36    0.11    1.11    0.26   65%  56% Peek semaphore
+    0.25    0.12    1.19    0.14   93%  56% Destroy semaphore
+    7.85    7.52    8.93    0.21   62%  43% Post/Wait semaphore
+
+    0.90    0.44    3.08    0.29   65%  28% Create counter
+    0.07    0.05    0.89    0.05   96%  96% Get counter value
+    0.06    0.05    0.33    0.02   96%  96% Set counter value
+    0.88    0.86    1.62    0.05   96%  96% Tick counter
+    0.13    0.12    0.41    0.02   96%  96% Delete counter
+
+    1.37    0.81    2.95    0.27   62%  25% Create alarm
+    1.35    1.17    6.03    0.31   96%  93% Initialize alarm
+    0.11    0.08    0.65    0.05   90%  90% Disable alarm
+    1.23    1.14    3.05    0.15   93%  87% Enable alarm
+    0.21    0.18    0.47    0.04   90%  90% Delete alarm
+    1.03    0.99    2.11    0.07   96%  96% Tick counter [1 alarm]
+    4.96    4.96    4.96    0.00  100% 100% Tick counter [many alarms]
+    1.70    1.67    2.51    0.05   96%  96% Tick &#38; fire counter [1 alarm]
+   26.39   26.38   26.71    0.02   96%  96% Tick &#38; fire counters [&#62;1 together]
+    5.65    5.64    5.91    0.02   96%  96% Tick &#38; fire counters [&#62;1 separately]
+    2.55    2.38    9.86    0.19   96%  54% Alarm latency [0 threads]
+    5.37    3.80    9.73    0.95   50%  34% Alarm latency [2 threads]
+    8.79    5.83   16.12    1.29   57%  14% Alarm latency [many threads]
+
+    5.85    2.26   16.24    0.00            Clock/interrupt latency
+
+ 1540    1536    1544  (main stack:  1664)  Thread stack used (2552 total)
+All done, main stack            : stack used  1664 size  3576
+All done             :  Interrupt stack used   312 size  4096
+All done             : Idlethread stack used  1440 size  2552
+
+Timing complete - 23810 ms total
+
+PASS:&lt;Basic timing OK&#62;
+EXIT:&lt;done&#62;
+	</LITERALLAYOUT>
+</SECT1>
+
+<!-- ==================================================== -->
+
+<SECT1 id="rt-arm-assabet">
+<TITLE>Board: Intel SA1110 (Assabet)</TITLE>
+<LITERALLAYOUT CLASS="MONOSPACED">Board: Intel SA1110 (Assabet)
+
+CPU :  StrongARM 221.2 MHz
+
+
+
+Microseconds for one run through Dhrystone:     3.3 
+Dhrystones per Second:                        306748.5 
+VAX MIPS rating =    174.586 
+
+Startup, main stack             : stack used   420 size  2400
+Startup              :  Interrupt stack used   136 size  4096
+Startup              : Idlethread stack used    84 size  2048
+
+eCos Kernel Timings
+Notes: all times are in microseconds (.000001) unless otherwise stated
+
+Reading the hardware clock takes 0 `ticks' overhead
+... this value will be factored out of all other measurements
+Clock interrupt took    3.20 microseconds (11 raw clock ticks)
+
+Testing parameters:
+   Clock samples:            32
+   Threads:                  64
+   Thread switches:         128
+   Mutexes:                  32
+   Mailboxes:                32
+   Semaphores:               32
+   Scheduler operations:    128
+   Counters:                 32
+   Alarms:                   32
+
+
+                                 Confidence
+     Ave     Min     Max     Var  Ave  Min  Function
+  ======  ======  ======  ====== ========== ========
+    5.98    4.88   14.38    0.70   57%  35% Create thread
+    0.86    0.81    1.90    0.08   87%  87% Yield thread [all suspended]
+    1.05    0.81    3.53    0.19   46%  39% Suspend [suspended] thread
+    1.07    0.81    3.80    0.18   48%  35% Resume thread
+    1.36    1.09    5.97    0.22   45%  39% Set priority
+    0.73    0.54    1.90    0.19   85%  50% Get priority
+    2.93    2.44   13.56    0.39   79%  70% Kill [suspended] thread
+    0.89    0.81    4.34    0.14   89%  89% Yield [no other] thread
+    1.63    1.36    4.61    0.17   57%  29% Resume [suspended low prio] thread
+    1.03    0.81    3.53    0.19   46%  42% Resume [runnable low prio] thread
+    1.74    1.36    6.51    0.22   87%   6% Suspend [runnable] thread
+    0.93    0.81    4.61    0.18   98%  78% Yield [only low prio] thread
+    1.06    0.81    3.26    0.19   42%  39% Suspend [runnable-&#62;not runnable]
+    2.56    1.90   13.02    0.41   87%  34% Kill [runnable] thread
+    2.02    1.63    7.05    0.22   92%   3% Destroy [dead] thread
+    3.09    2.44   15.19    0.51   78%  46% Destroy [runnable] thread
+    6.77    5.43   13.02    0.59   75%  17% Resume [high priority] thread
+    1.81    1.63    7.87    0.18   49%  49% Thread switch
+
+    0.25    0.00    1.36    0.05   89%  10% Scheduler lock
+    0.51    0.27    1.36    0.06   85%  13% Scheduler unlock [0 threads]
+    0.51    0.27    1.09    0.06   85%  13% Scheduler unlock [1 suspended]
+    0.51    0.27    1.09    0.07   85%  14% Scheduler unlock [many suspended]
+    0.51    0.27    1.09    0.06   85%  13% Scheduler unlock [many low prio]
+
+    0.52    0.27    2.17    0.15   62%  31% Init mutex
+    0.97    0.54    4.34    0.28   84%  65% Lock [unlocked] mutex
+    1.05    0.81    5.15    0.28   96%  96% Unlock [locked] mutex
+    0.86    0.54    3.26    0.24   65%  31% Trylock [unlocked] mutex
+    0.79    0.54    3.53    0.23   43%  46% Trylock [locked] mutex
+    0.33    0.27    1.63    0.11   90%  90% Destroy mutex
+    4.16    3.80    8.95    0.30   75%  96% Unlock/Lock mutex
+
+    0.70    0.54    2.98    0.21   96%  65% Create mbox
+    0.59    0.27    1.63    0.14   75%   9% Peek [empty] mbox
+    1.33    1.09    5.70    0.31   96%  93% Put [first] mbox
+    0.61    0.27    1.63    0.13   81%   3% Peek [1 msg] mbox
+    1.35    1.09    5.43    0.31   96%  87% Put [second] mbox
+    0.58    0.27    1.36    0.11   78%   6% Peek [2 msgs] mbox
+    1.38    1.09    4.88    0.25   59%  37% Get [first] mbox
+    1.40    1.09    5.15    0.26   62%  34% Get [second] mbox
+    1.27    0.81    4.88    0.28   90%  65% Tryput [first] mbox
+    1.34    0.81    4.61    0.22   59%   6% Peek item [non-empty] mbox
+    1.47    1.09    5.15    0.27   84%  12% Tryget [non-empty] mbox
+    1.12    0.81    4.34    0.23   59%  31% Peek item [empty] mbox
+    1.14    0.81    4.07    0.24   71%  25% Tryget [empty] mbox
+    0.59    0.27    1.36    0.12   78%   6% Waiting to get mbox
+    0.59    0.27    1.36    0.12   78%   6% Waiting to put mbox
+    1.28    0.81    5.43    0.32   87%  78% Delete mbox
+    2.64    2.17   10.31    0.48   96%  96% Put/Get mbox
+
+    0.47    0.27    2.17    0.19   46%  46% Init semaphore
+    0.77    0.54    3.80    0.26   90%  56% Post [0] semaphore
+    0.90    0.54    4.07    0.26   75%  21% Wait [1] semaphore
+    0.85    0.54    3.26    0.21   56%  28% Trywait [0] semaphore
+    0.69    0.54    2.17    0.18   96%  62% Trywait [1] semaphore
+    0.44    0.27    2.17    0.19   96%  56% Peek semaphore
+    0.38    0.27    1.90    0.17   96%  75% Destroy semaphore
+    2.74    2.44    9.49    0.42   96%  96% Post/Wait semaphore
+
+    0.43    0.27    1.90    0.18   96%  56% Create counter
+    0.49    0.00    2.17    0.18   56%   3% Get counter value
+    0.33    0.00    1.63    0.13   78%   6% Set counter value
+    1.03    0.81    2.44    0.22   84%  50% Tick counter
+    0.42    0.27    1.90    0.20   90%  65% Delete counter
+
+    0.70    0.54    2.44    0.20   93%  62% Create alarm
+    1.65    1.36    6.78    0.40   96%  81% Initialize alarm
+    0.75    0.54    1.63    0.18   43%  43% Disable alarm
+    1.75    1.36    7.05    0.38   65%  81% Enable alarm
+    0.81    0.54    2.44    0.15   62%  28% Delete alarm
+    1.01    0.81    2.17    0.16   56%  40% Tick counter [1 alarm]
+    4.19    4.07    5.43    0.16   96%  68% Tick counter [many alarms]
+    1.48    1.36    3.80    0.20   96%  78% Tick &#38; fire counter [1 alarm]
+   20.23   20.07   22.52    0.21   96%  65% Tick &#38; fire counters [&#62;1 together]
+    4.70    4.61    6.78    0.16   87%  87% Tick &#38; fire counters [&#62;1 separately]
+    2.81    2.71   14.38    0.20   98%  98% Alarm latency [0 threads]
+    3.19    2.71   13.56    0.38   73%  59% Alarm latency [2 threads]
+    9.71    7.87   18.17    1.25   59%  53% Alarm latency [many threads]
+    5.77    5.43   45.57    0.68   97%  97% Alarm -&#62; thread resume latency
+
+    2.38    0.81    9.49    0.00            Clock/interrupt latency
+
+    2.02    1.09    7.32    0.00            Clock DSR latency
+
+   11       0     316  (main stack:   764)  Thread stack used (1120 total)
+All done, main stack            : stack used   764 size  2400
+All done             :  Interrupt stack used   287 size  4096
+All done             : Idlethread stack used   272 size  2048
+
+Timing complete - 30220 ms total
+	</LITERALLAYOUT>
+</SECT1>
+
+<!-- ==================================================== -->
+
+<SECT1 id="rt-arm-brutus">
+<TITLE>Board: Intel SA1100 (Brutus)</TITLE>
+<LITERALLAYOUT CLASS="MONOSPACED">Board: Intel SA1100 (Brutus)
+
+CPU :  StrongARM 221.2 MHz
+
+Microseconds for one run through Dhrystone:     3.3 
+Dhrystones per Second:                        306748.5 
+VAX MIPS rating =    174.586 
+
+Startup, main stack             : stack used   404 size  2400
+Startup              :  Interrupt stack used   136 size  4096
+Startup              : Idlethread stack used    87 size  2048
+
+eCos Kernel Timings
+Notes: all times are in microseconds (.000001) unless otherwise stated
+
+Reading the hardware clock takes 0 `ticks' overhead
+... this value will be factored out of all other measurements
+Clock interrupt took    3.09 microseconds (11 raw clock ticks)
+
+Testing parameters:
+   Clock samples:            32
+   Threads:                  64
+   Thread switches:         128
+   Mutexes:                  32
+   Mailboxes:                32
+   Semaphores:               32
+   Scheduler operations:    128
+   Counters:                 32
+   Alarms:                   32
+
+
+                                 Confidence
+     Ave     Min     Max     Var  Ave  Min  Function
+  ======  ======  ======  ====== ========== ========
+    6.63    5.43   18.99    0.77   70%  37% Create thread
+    0.83    0.81    2.17    0.04   98%  98% Yield thread [all suspended]
+    1.27    0.81    5.15    0.30   68%  73% Suspend [suspended] thread
+    1.25    0.81    5.15    0.25   82%   1% Resume thread
+    1.52    1.09    7.87    0.30   78%  75% Set priority
+    0.97    0.54    2.71    0.28   64%  51% Get priority
+    3.45    2.71   19.53    0.66   84%  76% Kill [suspended] thread
+    0.90    0.81    6.24    0.17   98%  98% Yield [no other] thread
+    1.86    1.36    6.24    0.33   68%  50% Resume [suspended low prio] thread
+    1.25    0.81    5.15    0.25   82%   1% Resume [runnable low prio] thread
+    2.01    1.63   10.04    0.32   70%  84% Suspend [runnable] thread
+    0.90    0.81    6.24    0.17   98%  98% Yield [only low prio] thread
+    1.25    0.81    5.15    0.24   84%   1% Suspend [runnable-&#62;not runnable]
+    2.92    1.90   18.72    0.57   85%  43% Kill [runnable] thread
+    2.45    1.90   10.31    0.33   95%  54% Destroy [dead] thread
+    3.95    2.71   23.60    0.89   68%  54% Destroy [runnable] thread
+    8.55    6.24   19.53    1.15   60%  23% Resume [high priority] thread
+    1.85    1.63   11.94    0.21   49%  49% Thread switch
+
+    0.25    0.00    1.63    0.05   89%  10% Scheduler lock
+    0.52    0.27    1.90    0.07   85%  13% Scheduler unlock [0 threads]
+    0.51    0.27    1.36    0.06   85%  13% Scheduler unlock [1 suspended]
+    0.51    0.27    1.36    0.06   85%  13% Scheduler unlock [many suspended]
+    0.51    0.27    1.63    0.06   85%  13% Scheduler unlock [many low prio]
+
+    0.58    0.27    3.53    0.20   71%  21% Init mutex
+    1.07    0.54    5.70    0.35   87%  59% Lock [unlocked] mutex
+    1.14    0.81    6.51    0.40   96%  81% Unlock [locked] mutex
+    0.96    0.54    5.15    0.34   68%  65% Trylock [unlocked] mutex
+    0.94    0.54    4.88    0.34   65%  65% Trylock [locked] mutex
+    0.33    0.27    2.17    0.11   96%  96% Destroy mutex
+    4.21    3.80   10.85    0.41   71%  96% Unlock/Lock mutex
+    0.76    0.54    4.07    0.25   96%  56% Create mbox
+    0.75    0.54    1.90    0.20   84%  50% Peek [empty] mbox
+    1.56    1.09    6.78    0.39   68%  59% Put [first] mbox
+    0.75    0.54    1.90    0.20   84%  50% Peek [1 msg] mbox
+    1.55    1.09    6.78    0.40   68%  62% Put [second] mbox
+    0.77    0.54    1.63    0.17   46%  37% Peek [2 msgs] mbox
+    1.67    1.09    6.24    0.31   87%  34% Get [first] mbox
+    1.63    1.09    6.24    0.31   75%  34% Get [second] mbox
+    1.50    1.09    6.51    0.40   56%  62% Tryput [first] mbox
+    1.58    1.09    5.43    0.37   68%  53% Peek item [non-empty] mbox
+    1.79    1.09    7.05    0.43   71%  25% Tryget [non-empty] mbox
+    1.29    1.09    5.15    0.32   87%  87% Peek item [empty] mbox
+    1.33    1.09    5.97    0.37   96%  84% Tryget [empty] mbox
+    0.73    0.54    1.90    0.21   84%  56% Waiting to get mbox
+    0.76    0.54    1.90    0.19   40%  43% Waiting to put mbox
+    1.47    1.09    6.78    0.39   59%  84% Delete mbox
+    2.70    2.17   12.75    0.63   96%  96% Put/Get mbox
+
+    0.47    0.27    2.71    0.20   96%  50% Init semaphore
+    0.89    0.54    4.88    0.33   56%  75% Post [0] semaphore
+    0.96    0.54    5.15    0.33   71%  75% Wait [1] semaphore
+    0.86    0.54    4.88    0.32   96%  81% Trywait [0] semaphore
+    0.69    0.54    3.26    0.22   96%  75% Trywait [1] semaphore
+    0.49    0.27    3.26    0.28   84%  84% Peek semaphore
+    0.39    0.27    2.44    0.19   96%  78% Destroy semaphore
+    2.83    2.44   11.66    0.55   96%  96% Post/Wait semaphore
+
+    0.52    0.27    3.26    0.20   56%  40% Create counter
+    0.59    0.00    2.71    0.34   81%  46% Get counter value
+    0.36    0.00    2.44    0.21   81%   9% Set counter value
+    1.13    0.81    2.98    0.26   59%  37% Tick counter
+    0.39    0.27    1.90    0.19   90%  78% Delete counter
+
+    0.86    0.54    4.07    0.24   65%  31% Create alarm
+    1.86    1.36    9.77    0.54   96%  90% Initialize alarm
+    0.77    0.54    2.71    0.23   84%  50% Disable alarm
+    1.86    1.36    9.22    0.51   96%  75% Enable alarm
+    0.89    0.54    3.26    0.25   65%  21% Delete alarm
+    0.99    0.81    3.26    0.21   96%  59% Tick counter [1 alarm]
+    4.22    4.07    6.78    0.22   96%  71% Tick counter [many alarms]
+    1.51    1.36    4.61    0.24   96%  78% Tick &#38; fire counter [1 alarm]
+   20.29   20.07   23.33    0.23   96%  53% Tick &#38; fire counters [&#62;1 together]
+    4.71    4.61    7.87    0.20   96%  96% Tick &#38; fire counters [&#62;1 separately]
+    2.88    2.71   23.87    0.33   99%  99% Alarm latency [0 threads]
+    3.24    2.71   17.36    0.40   79%  58% Alarm latency [2 threads]
+   15.71   12.48   27.40    1.47   53%  17% Alarm latency [many threads]
+    5.95    5.43   64.56    1.02   97%  97% Alarm -&#62; thread resume latency
+
+    3.25    0.81   14.11    0.00            Clock/interrupt latency
+
+    2.68    1.09   12.75    0.00            Clock DSR latency
+
+   29       0     316  (main stack:   764)  Thread stack used (1120 total)
+All done, main stack            : stack used   764 size  2400
+All done             :  Interrupt stack used   288 size  4096
+All done             : Idlethread stack used   260 size  2048
+
+
+Timing complete - 30280 ms total
+
+	</LITERALLAYOUT>
+</SECT1>
+
+<!-- ==================================================== -->
+
+<SECT1 id="rt-ppc-mbx860">
+<TITLE>Board: Motorola MBX</TITLE>
+<LITERALLAYOUT CLASS="MONOSPACED">
+
+Board: Motorola MBX
+
+CPU  : Motorola MPC860 66MHZ
+
+
+Startup, main stack             : stack used   643 size  5664
+Startup              :  Interrupt stack used   427 size  4096
+Startup              : Idlethread stack used   236 size  2048
+
+eCos Kernel Timings
+Notes: all times are in microseconds (.000001) unless otherwise stated
+
+Reading the hardware clock takes 0 `ticks' overhead
+... this value will be factored out of all other measurements
+Clock interrupt took   25.36 microseconds (79 raw clock ticks)
+
+Testing parameters:
+   Clock samples:          32
+   Threads:                16
+   Thread switches:       128
+   Mutexes:                32
+   Mailboxes:              32
+   Semaphores:             32
+   Scheduler operations:  128
+   Counters:               32
+   Alarms:                 32
+
+
+                                 Confidence
+     Ave     Min     Max     Var  Ave  Min  Function
+  ======  ======  ======  ====== ========== ========
+   27.58   25.60   44.16    2.07   93%  93% Create thread
+    5.94    5.76    7.04    0.22   93%  62% Yield thread [all suspended]
+    6.06    5.44   10.56    0.57   75%  75% Suspend [suspended] thread
+    5.42    4.80    9.60    0.53   87%  81% Resume thread
+    7.10    6.40   14.08    0.90   93%  87% Set priority
+    0.86    0.64    1.92    0.22   93%  50% Get priority
+   16.74   15.04   36.48    2.47   93%  93% Kill [suspended] thread
+    6.14    5.76   10.56    0.55   93%  93% Yield [no other] thread
+    9.74    8.96   18.56    1.10   93%  93% Resume [suspended low prio] thread
+    5.28    4.80    9.28    0.54   93%  81% Resume [runnable low prio] thread
+    9.40    8.32   18.56    1.14   93%  93% Suspend [runnable] thread
+    6.04    5.76    8.96    0.38   93%  93% Yield [only low prio] thread
+    5.68    5.12    9.60    0.52   68%  75% Suspend [runnable-&#62;not runnable]
+   16.10   14.40   35.20    2.39   93%  93% Kill [runnable] thread
+    8.54    7.68   16.00    0.94   93%  87% Destroy [dead] thread
+   20.20   18.56   40.64    2.55   93%  93% Destroy [runnable] thread
+   39.02   36.48   57.28    3.28   87%  87% Resume [high priority] thread
+   13.13   12.80   22.08    0.15   78%  20% Thread switch
+
+    0.59    0.32    1.60    0.09   82%  16% Scheduler lock
+    3.67    3.52    5.12    0.17   99%  54% Scheduler unlock [0 threads]
+    3.67    3.52    4.80    0.17   99%  53% Scheduler unlock [1 suspended]
+    3.67    3.52    4.80    0.17   54%  54% Scheduler unlock [many suspended]
+    3.69    3.52    5.12    0.17   99%  50% Scheduler unlock [many low prio]
+
+    2.41    2.24    5.44    0.25   96%  75% Init mutex
+    6.83    6.40   11.84    0.34   75%  90% Lock [unlocked] mutex
+    6.74    6.40   13.12    0.40   96%  96% Unlock [locked] mutex
+    5.53    5.12    9.60    0.25   84%  12% Trylock [unlocked] mutex
+    4.84    4.48    7.36    0.17   78%  15% Trylock [locked] mutex
+    0.34    0.00    0.96    0.06   90%   3% Destroy mutex
+   56.10   55.68   59.52    0.21   93%   3% Unlock/Lock mutex
+
+    4.72    4.48   10.24    0.37   96%  96% Create mbox
+    0.75    0.64    1.92    0.16   75%  75% Peek [empty] mbox
+    6.79    6.40   12.80    0.41   96%  90% Put [first] mbox
+    0.46    0.32    1.60    0.19   93%  68% Peek [1 msg] mbox
+    6.68    6.40   12.16    0.37   96%  96% Put [second] mbox
+    0.50    0.32    1.60    0.20   93%  56% Peek [2 msgs] mbox
+    7.13    6.40   14.08    0.49   90%  46% Get [first] mbox
+    6.97    6.40   13.44    0.47   84%  78% Get [second] mbox
+    6.24    5.76   11.52    0.38   78%  81% Tryput [first] mbox
+    5.98    5.44   11.20    0.39   78%  62% Peek item [non-empty] mbox
+    6.52    6.08   13.12    0.49   93%  81% Tryget [non-empty] mbox
+    5.50    5.12   10.24    0.30   68%  28% Peek item [empty] mbox
+    5.76    5.44   10.88    0.32   96%  96% Tryget [empty] mbox
+    0.50    0.32    1.60    0.19   96%  53% Waiting to get mbox
+    0.50    0.32    1.60    0.19   96%  53% Waiting to put mbox
+    7.45    7.04   15.04    0.49   96%  93% Delete mbox
+   37.47   36.80   48.64    0.70   96%  96% Put/Get mbox
+
+    2.49    2.24    6.08    0.28   96%  56% Init semaphore
+    5.09    4.80    8.64    0.27   46%  46% Post [0] semaphore
+    6.25    5.76   10.88    0.32   93%   3% Wait [1] semaphore
+    4.84    4.48    8.32    0.23   68%  25% Trywait [0] semaphore
+    4.98    4.80    8.00    0.26   96%  71% Trywait [1] semaphore
+    1.66    1.28    3.84    0.20   68%  15% Peek semaphore
+    1.24    0.96    3.20    0.17   65%  31% Destroy semaphore
+   40.74   40.32   49.28    0.53   96%  96% Post/Wait semaphore
+
+    2.65    2.24    6.08    0.23   84%   9% Create counter
+    0.85    0.64    2.24    0.22   90%  53% Get counter value
+    0.68    0.64    1.92    0.08   96%  96% Set counter value
+    7.13    6.72    8.64    0.24   78%  18% Tick counter
+    1.30    0.96    3.20    0.12   84%  12% Delete counter
+
+    3.69    3.52    7.68    0.29   96%  84% Create alarm
+    8.98    8.32   17.60    0.61   68%  62% Initialize alarm
+    0.96    0.64    2.88    0.14   71%  21% Disable alarm
+    8.76    8.32   17.60    0.59   96%  87% Enable alarm
+    1.99    1.60    5.12    0.21   81%  12% Delete alarm
+    7.44    7.36    9.92    0.15   96%  96% Tick counter [1 alarm]
+   21.68   21.44   24.64    0.25   96%  53% Tick counter [many alarms]
+   10.95   10.56   15.04    0.26   78%  18% Tick &#38; fire counter [1 alarm]
+  132.79  132.48  136.32    0.23   59%  37% Tick &#38; fire counters [&#62;1 together]
+   25.18   24.96   28.80    0.29   96%  65% Tick &#38; fire counters [&#62;1 separately]
+   23.06   22.72   47.36    0.40   98%  98% Alarm latency [0 threads]
+   31.53   27.20   56.00    0.63   96%   0% Alarm latency [2 threads]
+   36.86   30.40   58.88    4.15   50%  28% Alarm latency [many threads]
+
+   11.41    8.96   16.32    0.00            Clock/interrupt latency
+
+  609     603     651  (main stack:  1059)  Thread stack used (1704 total)
+All done, main stack            : stack used  1059 size  5664
+All done             :  Interrupt stack used   251 size  4096
+All done             : Idlethread stack used   587 size  2048
+
+Timing complete - 23690 ms total
+
+PASS:&lt;Basic timing OK&#62;
+EXIT:&lt;done&#62;
+
+	</LITERALLAYOUT>
+</SECT1>
+
+<!-- ==================================================== -->
+
+<SECT1 id="rt-sh-edk7708">
+<TITLE>Board: Hitachi EDK7708</TITLE>
+<LITERALLAYOUT CLASS="MONOSPACED">
+
+
+Board: Hitachi EDK7708
+
+CPU: Hitachi SH3/7708 60MHz
+
+
+
+Startup, main stack             : stack used   444 size  4112
+Startup              :  Interrupt stack used    76 size  4096
+Startup              : Idlethread stack used    96 size  2048
+
+eCos Kernel Timings
+Notes: all times are in microseconds (.000001) unless otherwise stated
+
+Reading the hardware clock takes 2 `ticks' overhead
+... this value will be factored out of all other measurements
+Clock interrupt took   14.75 microseconds (55 raw clock ticks)
+
+Testing parameters:
+   Clock samples:          32
+   Threads:                16
+   Thread switches:       128
+   Mutexes:                32
+   Mailboxes:              32
+   Semaphores:             32
+   Scheduler operations:  128
+   Counters:               32
+   Alarms:                 32
+
+
+                                 Confidence
+     Ave     Min     Max     Var  Ave  Min  Function
+  ======  ======  ======  ====== ========== ========
+   15.43   13.60   24.00    1.29   62%  50% Create thread
+    3.33    3.20    4.27    0.18   93%  68% Yield thread [all suspended]
+    2.90    2.40    5.33    0.36   81%  62% Suspend [suspended] thread
+    2.93    2.67    4.80    0.27   93%  87% Resume thread
+    4.30    3.73   10.13    0.73   93%  93% Set priority
+    0.65    0.27    2.13    0.28   68%  62% Get priority
+    9.72    8.53   21.33    1.45   93%  93% Kill [suspended] thread
+    3.33    3.20    4.53    0.20   93%  75% Yield [no other] thread
+    5.30    4.80   10.13    0.65   93%  87% Resume [suspended low prio] thread
+    2.80    2.40    4.53    0.27   81%  75% Resume [runnable low prio] thread
+    4.82    4.00    8.27    0.49   68%  25% Suspend [runnable] thread
+    3.32    3.20    4.00    0.16   93%  68% Yield [only low prio] thread
+    2.82    2.40    4.27    0.25   81%  12% Suspend [runnable-&#62;not runnable]
+    9.45    8.53   19.47    1.25   93%  93% Kill [runnable] thread
+    5.30    4.53   11.20    0.74   87%  93% Destroy [dead] thread
+   11.83   10.67   25.07    1.65   93%  93% Destroy [runnable] thread
+   19.53   17.33   31.20    1.88   75%  75% Resume [high priority] thread
+    6.70    6.67   11.47    0.07   99%  99% Thread switch
+
+    0.33    0.27    0.80    0.10   75%  75% Scheduler lock
+    1.74    1.60    2.67    0.14   99%  50% Scheduler unlock [0 threads]
+    1.72    1.60    3.20    0.14   99%  57% Scheduler unlock [1 suspended]
+    1.81    1.60    3.20    0.10   75%  23% Scheduler unlock [many suspended]
+    1.86    1.60    3.20    0.02   94%   4% Scheduler unlock [many low prio]
+
+    1.22    1.07    3.20    0.20   96%  65% Init mutex
+    3.21    2.93    5.87    0.17   68%  28% Lock [unlocked] mutex
+    3.36    2.93    7.47    0.30   84%  75% Unlock [locked] mutex
+    2.83    2.67    5.33    0.22   96%  65% Trylock [unlocked] mutex
+    2.53    2.40    2.93    0.14   96%  53% Trylock [locked] mutex
+    0.28    0.27    0.80    0.03   96%  96% Destroy mutex
+   20.09   19.73   23.20    0.23   84%  12% Unlock/Lock mutex
+
+    2.38    2.13    4.53    0.17   59%  34% Create mbox
+    0.45    0.27    1.33    0.15   56%  40% Peek [empty] mbox
+    3.70    3.20    7.20    0.29   84%  59% Put [first] mbox
+    0.45    0.27    0.80    0.13   62%  34% Peek [1 msg] mbox
+    3.67    3.20    5.60    0.23   81%   6% Put [second] mbox
+    0.42    0.27    0.53    0.13   59%  40% Peek [2 msgs] mbox
+    3.98    3.47    7.47    0.24   59%   9% Get [first] mbox
+    3.97    3.47    4.80    0.24   59%  12% Get [second] mbox
+    3.51    3.20    6.67    0.28   56%  78% Tryput [first] mbox
+    3.29    2.93    5.60    0.29   59%  65% Peek item [non-empty] mbox
+    4.06    3.47    7.20    0.26   68%   3% Tryget [non-empty] mbox
+    3.03    2.67    5.33    0.19   93%   3% Peek item [empty] mbox
+    3.36    3.20    4.80    0.18   96%  56% Tryget [empty] mbox
+    0.57    0.27    1.33    0.09   84%   3% Waiting to get mbox
+    0.52    0.27    1.07    0.11   62%  21% Waiting to put mbox
+    3.88    3.47    7.47    0.30   78%  65% Delete mbox
+   12.04   11.73   17.33    0.33   96%  96% Put/Get mbox
+
+    1.17    1.07    2.40    0.16   71%  71% Init semaphore
+    2.67    2.40    4.27    0.15   62%  25% Post [0] semaphore
+    3.00    2.67    4.53    0.17   65%  12% Wait [1] semaphore
+    2.54    2.40    4.80    0.20   96%  71% Trywait [0] semaphore
+    2.42    2.40    2.93    0.03   96%  96% Trywait [1] semaphore
+    0.79    0.53    2.13    0.15   59%  28% Peek semaphore
+    0.77    0.53    1.87    0.12   71%  25% Destroy semaphore
+   12.64   12.27   17.07    0.28   84%  96% Post/Wait semaphore
+
+    1.27    1.07    2.93    0.17   53%  43% Create counter
+    0.54    0.27    1.33    0.13   59%  21% Get counter value
+    0.47    0.27    1.60    0.17   46%  43% Set counter value
+    3.47    3.20    4.80    0.16   53%  28% Tick counter
+    0.80    0.53    2.13    0.13   62%  25% Delete counter
+
+    1.86    1.60    4.00    0.21   43%  40% Create alarm
+    5.12    4.80    9.07    0.36   93%  75% Initialize alarm
+    0.44    0.27    1.33    0.19   87%  53% Disable alarm
+    4.77    4.27    9.60    0.35   87%  62% Enable alarm
+    1.02    0.80    2.67    0.18   53%  40% Delete alarm
+    3.56    3.47    5.33    0.15   84%  84% Tick counter [1 alarm]
+   15.04   14.93   16.27    0.16   71%  71% Tick counter [many alarms]
+    5.75    5.60    8.00    0.21   96%  68% Tick &#38; fire counter [1 alarm]
+   79.60   79.47   81.07    0.17   96%  65% Tick &#38; fire counters [&#62;1 together]
+   17.04   16.80   18.93    0.15   65%  31% Tick &#38; fire counters [&#62;1 separately]
+   12.44   12.27   29.60    0.31   96%  96% Alarm latency [0 threads]
+   14.06   12.27   27.20    0.53   82%   4% Alarm latency [2 threads]
+   19.62   17.07   38.40    1.44   57%  34% Alarm latency [many threads]
+
+    2.79    2.40    6.13    0.00            Clock/interrupt latency
+
+  376     376     376  (main stack:   764)  Thread stack used (992 total)
+All done, main stack            : stack used   764 size  4112
+All done             :  Interrupt stack used   176 size  4096
+All done             : Idlethread stack used   352 size  2048
+
+Timing complete - 23860 ms total
+
+PASS:&lt;Basic timing OK&#62;
+EXIT:&lt;done&#62;
+
+	</LITERALLAYOUT>
+</SECT1>
+
+<!-- ==================================================== -->
+
+<SECT1 id="rt-sh-cq7708">
+<TITLE>Board: CQ CqREEK SH3 Evaluation Board (cq7708)</TITLE>
+<LITERALLAYOUT CLASS="MONOSPACED">
+
+Board: CQ CqREEK SH3 Evaluation Board (cq7708)
+
+CPU: Hitachi SH3/7708 60MHz
+
+Startup, main stack             : stack used   448 size  4112
+Startup              :  Interrupt stack used    80 size  4096
+Startup              : Idlethread stack used    96 size  2048
+
+eCos Kernel Timings
+Notes: all times are in microseconds (.000001) unless otherwise stated
+
+Reading the hardware clock takes 2 `ticks' overhead
+... this value will be factored out of all other measurements
+Clock interrupt took   19.17 microseconds (71 raw clock ticks)
+
+Testing parameters:
+   Clock samples:            32
+   Threads:                  64
+   Thread switches:         128
+   Mutexes:                  32
+   Mailboxes:                32
+   Semaphores:               32
+   Scheduler operations:    128
+   Counters:                 32
+   Alarms:                   32
+
+
+                                 Confidence
+     Ave     Min     Max     Var  Ave  Min  Function
+  ======  ======  ======  ====== ========== ========
+   20.62   14.40   26.93    3.23   48%  26% Create thread
+    3.16    2.93    4.27    0.09   78%  20% Yield thread [all suspended]
+    2.91    2.40    5.87    0.17   57%   1% Suspend [suspended] thread
+    2.73    2.40    6.40    0.19   64%  15% Resume thread
+    4.05    3.73   11.47    0.27   62%  90% Set priority
+    0.82    0.27    2.67    0.17   56%   3% Get priority
+    9.07    8.53   24.27    0.51   78%  71% Kill [suspended] thread
+    3.19    2.93    7.20    0.14   70%  28% Yield [no other] thread
+    5.45    4.53   17.87    0.49   78%  17% Resume [suspended low prio] thread
+    2.67    2.40    5.07    0.15   56%  28% Resume [runnable low prio] thread
+    4.95    4.27   11.47    0.28   82%  14% Suspend [runnable] thread
+    3.15    2.93    4.53    0.11   73%  25% Yield [only low prio] thread
+    2.82    2.40    5.60    0.21   84%  10% Suspend [runnable-&#62;not runnable]
+    8.92    8.00   24.27    0.51   84%  14% Kill [runnable] thread
+    5.10    4.53   12.00    0.27   59%  39% Destroy [dead] thread
+   11.81   10.93   37.33    0.81   87%  95% Destroy [runnable] thread
+   22.15   20.80   54.67    1.27   92%  92% Resume [high priority] thread
+    6.85    6.67   13.60    0.19   99%  50% Thread switch
+
+    0.27    0.27    1.07    0.01   99%  99% Scheduler lock
+    1.74    1.60    2.67    0.14   99%  50% Scheduler unlock [0 threads]
+    1.74    1.60    2.93    0.14   99%  50% Scheduler unlock [1 suspended]
+    1.81    1.60    4.27    0.11   72%  26% Scheduler unlock [many suspended]
+    1.75    1.60    4.00    0.15   50%  49% Scheduler unlock [many low prio]
+
+    1.22    1.07    4.27    0.23   96%  78% Init mutex
+    3.18    2.93    7.20    0.27   96%  53% Lock [unlocked] mutex
+    3.40    3.20    8.00    0.31   96%  96% Unlock [locked] mutex
+    2.77    2.40    5.87    0.22   87%   9% Trylock [unlocked] mutex
+    2.35    2.13    3.47    0.14   65%  31% Trylock [locked] mutex
+    0.78    0.53    2.67    0.14   68%  28% Destroy mutex
+   22.80   22.40   28.80    0.51   96%  71% Unlock/Lock mutex
+
+    2.61    2.40    6.13    0.26   96%  62% Create mbox
+    0.52    0.27    1.60    0.19   40%  37% Peek [empty] mbox
+    3.54    3.20    7.73    0.35   93%  78% Put [first] mbox
+    0.50    0.27    1.60    0.17   46%  37% Peek [1 msg] mbox
+    3.62    3.20    6.93    0.34   59%  65% Put [second] mbox
+    0.52    0.27    2.13    0.23   31%  43% Peek [2 msgs] mbox
+    3.93    3.47   10.13    0.43   65%  65% Get [first] mbox
+    3.92    3.47    7.47    0.40   56%  56% Get [second] mbox
+    3.37    2.93    6.93    0.36   59%  68% Tryput [first] mbox
+    3.30    2.67    6.93    0.38   84%  40% Peek item [non-empty] mbox
+    3.93    3.47    9.33    0.44   65%  71% Tryget [non-empty] mbox
+    2.94    2.67    6.13    0.25   43%  43% Peek item [empty] mbox
+    3.23    2.93    6.67    0.27   56%  84% Tryget [empty] mbox
+    0.58    0.27    2.67    0.20   62%  21% Waiting to get mbox
+    0.55    0.27    1.87    0.14   62%  21% Waiting to put mbox
+    3.82    3.47    9.87    0.39   96%  93% Delete mbox
+   13.35   12.80   21.33    0.50   87%  78% Put/Get mbox
+
+    1.22    1.07    2.93    0.19   96%  59% Init semaphore
+    2.42    2.13    4.27    0.12   81%  15% Post [0] semaphore
+    2.96    2.67    5.07    0.16   68%  21% Wait [1] semaphore
+    2.37    2.13    4.53    0.17   62%  34% Trywait [0] semaphore
+    2.29    2.13    3.47    0.17   96%  53% Trywait [1] semaphore
+    0.66    0.53    2.13    0.17   96%  68% Peek semaphore
+    0.81    0.53    2.93    0.13   75%  21% Destroy semaphore
+   14.47   14.13   21.33    0.43   96%  96% Post/Wait semaphore
+
+    1.44    1.07    3.47    0.29   56%  71% Create counter
+    0.62    0.27    1.07    0.14   62%   3% Get counter value
+    0.56    0.27    1.60    0.17   50%  25% Set counter value
+    3.39    3.20    4.27    0.16   53%  40% Tick counter
+    0.83    0.53    1.87    0.14   68%  15% Delete counter
+
+    2.02    1.87    4.00    0.21   93%  68% Create alarm
+    5.06    4.27   11.73    0.46   78%  18% Initialize alarm
+    0.73    0.27    2.40    0.22   84%   3% Disable alarm
+    4.82    4.27   11.47    0.48   81%  65% Enable alarm
+    1.19    0.80    3.47    0.22   87%   9% Delete alarm
+    3.63    3.47    5.60    0.20   96%  59% Tick counter [1 alarm]
+   15.01   14.93   16.53    0.13   87%  87% Tick counter [many alarms]
+    5.50    5.33    8.00    0.22   96%  65% Tick &#38; fire counter [1 alarm]
+   74.27   74.13   76.80    0.21   96%  78% Tick &#38; fire counters [&#62;1 together]
+   16.90   16.53   19.47    0.23   81%  15% Tick &#38; fire counters [&#62;1 separately]
+   16.70   16.53   36.27    0.33   98%  98% Alarm latency [0 threads]
+   17.85   16.53   34.40    0.47   73%   0% Alarm latency [2 threads]
+   63.26   58.40   80.00    2.64   52%  32% Alarm latency [many threads]
+   30.37   29.33  124.80    1.68   98%  97% Alarm -&#62; thread resume latency
+
+    7.37    5.07   17.87    0.00            Clock/interrupt latency
+
+    9.00    4.53   26.93    0.00            Clock DSR latency
+
+  106       0     376  (main stack:   764)  Thread stack used (992 total)
+All done, main stack            : stack used   764 size  4112
+All done             :  Interrupt stack used   176 size  4096
+All done             : Idlethread stack used   352 size  2048
+
+Timing complete - 30310 ms total
+
+PASS:&lt;Basic timing OK&#62;
+EXIT:&lt;done&#62;
+
+	</LITERALLAYOUT>
+</SECT1>
+
+<!-- ==================================================== -->
+
+<SECT1 id="rt-sh-hs7729pci">
+<TITLE>Board: Hitachi HS7729PCI HS7729 SH3</TITLE>
+<LITERALLAYOUT CLASS="MONOSPACED">
+
+Board: Hitachi HS7729PCI HS7729 SH3
+
+CPU: Hitachi SH3/7729 132MHz
+
+
+Startup, main stack             : stack used   464 size  4112
+Startup              :  Interrupt stack used    92 size  4096
+Startup              : Idlethread stack used    94 size  2048
+
+eCos Kernel Timings
+Notes: all times are in microseconds (.000001) unless otherwise stated
+
+Reading the hardware clock takes 3 'ticks' overhead
+... this value will be factored out of all other measurements
+Clock interrupt took   18.10 microseconds (149 raw clock ticks)
+
+Testing parameters:
+   Clock samples:            32
+   Threads:                  64
+   Thread switches:         128
+   Mutexes:                  32
+   Mailboxes:                32
+   Semaphores:               32
+   Scheduler operations:    128
+   Counters:                 32
+   Alarms:                   32
+
+
+                                 Confidence
+     Ave     Min     Max     Var  Ave  Min  Function
+  ======  ======  ======  ====== ========== ========
+   18.33   15.52   28.24    1.47   53%  28% Create thread
+    3.08    2.91    6.79    0.13   78%  89% Yield thread [all suspended]
+    3.23    3.03    6.18    0.16   59%  70% Suspend [suspended] thread
+    2.70    2.55    6.18    0.15   54%  82% Resume thread
+    4.12    4.00    7.52    0.16   96%  81% Set priority
+    0.61    0.48    1.33    0.07   57%  28% Get priority
+    9.14    8.61   18.91    0.42   85%  57% Kill [suspended] thread
+    3.04    2.91    4.48    0.07   68%  20% Yield [no other] thread
+    5.12    4.73    7.88    0.29   60%  53% Resume [suspended low prio] thread
+    2.54    2.42    3.03    0.09   39%  40% Resume [runnable low prio] thread
+    5.00    4.36    9.45    0.21   75%   1% Suspend [runnable] thread
+    3.04    2.91    4.61    0.07   65%  21% Yield [only low prio] thread
+    2.91    2.79    3.27    0.08   43%  31% Suspend [runnable-&#62;not runnable]
+    8.82    8.12   15.39    0.36   68%  29% Kill [runnable] thread
+    5.07    4.48   12.73    0.37   76%  50% Destroy [dead] thread
+   11.17   10.55   22.91    0.52   78%  67% Destroy [runnable] thread
+   22.43   21.45   32.73    0.61   81%  50% Resume [high priority] thread
+    7.99    7.88   13.58    0.14   98%  86% Thread switch
+
+    0.37    0.36    1.33    0.02   97%  97% Scheduler lock
+    1.74    1.70    2.06    0.06   70%  70% Scheduler unlock [0 threads]
+   1.75    1.70    2.06    0.07   92%  64% Scheduler unlock [1 suspended]
+    1.71    1.70    2.42    0.03   89%  89% Scheduler unlock [many suspended]
+    1.76    1.70    3.64    0.08   96%  64% Scheduler unlock [many low prio]
+
+    4.23    3.88   10.67    0.41   96%  93% Unlock [locked] mutex
+    3.12    2.91    6.91    0.29   96%  87% Trylock [unlocked] mutex
+    2.54    2.42    2.91    0.11   18%  46% Trylock [locked] mutex
+    0.88    0.73    3.15    0.14   65%  96% Destroy mutex
+   22.33   22.06   25.94    0.23   81%  62% Unlock/Lock mutex
+
+    1.92    1.82    4.73    0.19   96%  93% Create mbox
+    0.61    0.48    1.70    0.15   84%  75% Peek [empty] mbox
+    4.00    3.64    9.45    0.36   96%  87% Put [first] mbox
+    0.30    0.24    0.73    0.09   84%  75% Peek [1 msg] mbox
+    3.82    3.64    6.67    0.22   90%  84% Put [second] mbox
+    0.32    0.24    1.33    0.12   81%  81% Peek [2 msgs] mbox
+    4.19    3.76    9.21    0.34   84%  50% Get [first] mbox
+    3.91    3.76    5.21    0.16   84%  75% Get [second] mbox
+    3.51    3.27    8.12    0.34   93%  87% Tryput [first] mbox
+    3.25    2.91    7.15    0.30   62%  56% Peek item [non-empty] mbox
+    3.86    3.52    8.73    0.37   93%  84% Tryget [non-empty] mbox
+    2.87    2.79    3.76    0.12   84%  71% Peek item [empty] mbox
+    3.15    3.03    4.24    0.10   46%  40% Tryget [empty] mbox
+    0.34    0.24    1.33    0.10   43%  46% Waiting to get mbox
+    0.36    0.24    1.45    0.09   53%  37% Waiting to put mbox
+    4.49    4.24   10.91    0.41   96%  96% Delete mbox
+   12.67   12.36   19.52    0.43   96%  96% Put/Get mbox
+
+    0.87    0.85    1.45    0.05   93%  93% Init semaphore
+    2.74    2.55    4.48    0.18   50%  50% Post [0] semaphore
+    3.39    3.15    4.24    0.14   78%  50% Wait [1] semaphore
+    2.62    2.42    5.33    0.21   96%  65% Trywait [0] semaphore
+    2.76    2.67    3.27    0.08   46%  43% Trywait [1] semaphore
+    1.09    0.85    2.91    0.19   68%  56% Peek semaphore
+    0.97    0.73    3.39    0.17   90%  65% Destroy semaphore
+   13.09   12.85   16.12    0.19   84%  65% Post/Wait semaphore
+
+    1.57    1.45    3.88    0.15   96%  93% Create counter
+    0.91    0.73    2.18    0.16   46%  68% Get counter value
+    0.55    0.48    0.97    0.09   90%  62% Set counter value
+    4.19    4.00    5.82    0.13   84%  75% Tick counter
+    0.87    0.73    3.15    0.16   93%  93% Delete counter
+
+    2.50    2.30    5.21    0.18   81%  90% Create alarm
+    6.16    5.70   12.97    0.47   96%  71% Initialize alarm
+    0.50    0.36    1.70    0.11   62%  34% Disable alarm
+    5.16    4.85    8.73    0.29   78%  78% Enable alarm
+    1.18    1.09    2.30    0.12   84%  65% Delete alarm
+    5.22    5.09    7.39    0.14   96%  93% Tick counter [1 alarm]
+   52.37   52.12   52.73    0.20   37%  56% Tick counter [many alarms]
+    6.73    6.55    8.24    0.13   78%  68% Tick &#38; fire counter [1 alarm]
+  108.65  108.61  109.21    0.07   87%  87% Tick &#38; fire counters [&#62;1 together]
+   54.25   54.06   54.79    0.11   65%  18% Tick &#38; fire counters [&#62;1 separately]
+   17.36   17.09   29.82    0.23   82%  57% Alarm latency [0 threads]
+   19.75   17.09   28.00    1.65   46%  40% Alarm latency [2 threads]
+   39.02   34.06   50.67    2.00   53%  15% Alarm latency [many threads]
+   29.31   28.36  105.09    1.27   98%  97% Alarm -&#62; thread resume latency
+
+    5.08    3.88   11.15    0.00            Clock/interrupt latency
+
+    7.32    5.09   16.73    0.00            Clock DSR latency
+
+    6       0     380  (main stack:   820)  Thread stack used (992 total)
+All done, main stack            : stack used   820 size  4112
+All done             :  Interrupt stack used   196 size  4096
+All done             : Idlethread stack used   360 size  2048
+
+Timing complete - 29960 ms total
+PASS:&lt;Basic timing OK&#62;
+EXIT:&lt;done&#62; </LITERALLAYOUT>
+</SECT1>
+
+<!-- ==================================================== -->
+
+<SECT1 id="rt-sh-se7751">
+<TITLE>Board: Hitachi Solution Engine 7751 SH4 (se7751)</TITLE>
+<LITERALLAYOUT CLASS="MONOSPACED">Board: Hitachi Solution Engine 7751 SH4 (se7751)
+
+CPU: Hitachi SH4/7751 162MHz
+
+
+Startup, main stack             : stack used   464 size  4112
+Startup              :  Interrupt stack used    92 size  4096
+Startup              : Idlethread stack used    94 size  2048
+
+
+eCos Kernel Timings
+Notes: all times are in microseconds (.000001) unless otherwise stated
+
+
+Reading the hardware clock takes 1 `ticks' overhead
+... this value will be factored out of all other measurements
+Clock interrupt took    14.27 microseconds (96 raw clock ticks)
+
+
+Testing parameters:
+   Clock samples:            32
+   Threads:                  64
+   Thread switches:         128
+   Mutexes:                  32
+   Mailboxes:                32
+   Semaphores:               32
+   Scheduler operations:    128
+   Counters:                 32
+   Alarms:                   32
+
+                               Confidence
+     Ave     Min     Max     Var  Ave  Min  Function
+  ======  ======  ======  ====== ========== ========
+    8.06    5.63   12.15    1.37   46%  29% Create thread
+    1.15    1.04    5.19    0.15   98%  98% Yield thread [all suspended]
+    1.13    0.89    5.04    0.27   89%  62% Suspend [suspended] thread
+    1.11    0.89    5.19    0.26   89%  71% Resume thread
+    1.45    1.19    3.56    0.23   53%  53% Set priority
+    0.21    0.15    1.19    0.10   90%  79% Get priority
+    4.15    3.56   13.04    0.53   68%  64% Kill [suspended] thread
+    1.12    1.04    3.70    0.12   98%  70% Yield [no other] thread
+    1.75    1.33    8.00    0.38   59%  65% Resume [suspended low prio] thread
+    1.10    0.89    4.59    0.25   87%  73% Resume [runnable low prio] thread
+    1.59    1.33    5.93    0.33   81%  79% Suspend [runnable] thread
+    1.13    1.04    4.30    0.13   98%  71% Yield [only low prio] thread
+    1.09    0.89    3.56    0.21   89%  70% Suspend [runnable-&#62;not runnable]
+    4.96    4.30   11.70    0.44   68%  39% Kill [runnable] thread
+    1.95    1.48    8.00    0.34   75%  57% Destroy [dead] thread
+    4.41    3.85   10.37    0.47   53%  57% Destroy [runnable] thread
+   13.15   11.41   23.85    1.11   73%  39% Resume [high priority] thread
+    3.10    2.96    6.22    0.11   41%  39% Thread switch
+
+    0.13    0.00    1.33    0.06   74%  21% Scheduler lock
+    0.76    0.74    1.78    0.03   96%  96% Scheduler unlock [0 threads]
+    0.76    0.74    1.78    0.03   96%  96% Scheduler unlock [1 suspended]
+    0.77    0.74    2.67    0.05   95%  95% Scheduler unlock [many suspended]
+    0.76    0.74    2.37    0.04   95%  95% Scheduler unlock [many low prio]
+
+    0.52    0.15    2.67    0.26   65%  34% Init mutex
+    1.23    1.04    5.63    0.32   93%  93% Lock [unlocked] mutex
+    1.45    1.19    5.33    0.31   90%  87% Unlock [locked] mutex
+    1.13    0.89    4.15    0.28   90%  84% Trylock [unlocked] mutex
+    1.00    0.89    2.96    0.17   87%  87% Trylock [locked] mutex
+    0.37    0.30    1.78    0.13   90%  84% Destroy mutex
+    9.09    8.59   12.59    0.43   71%  71% Unlock/Lock mutex
+    0.93    0.59    4.30    0.40   84%  71% Create mbox
+    0.26    0.00    1.19    0.17   71%  59% Peek [empty] mbox
+    3.03    2.52    6.37    0.47   50%  59% Put [first] mbox
+    0.23    0.00    0.74    0.14   68%  15% Peek [1 msg] mbox
+    2.93    2.52    4.74    0.46   71%  59% Put [second] mbox
+    0.22    0.00    0.59    0.13   68%  15% Peek [2 msgs] mbox
+    2.07    1.63    5.93    0.37   84%  59% Get [first] mbox
+    2.06    1.63    4.74    0.34   78%  59% Get [second] mbox
+    1.48    1.04    5.48    0.37   62%  53% Tryput [first] mbox
+    1.31    1.04    4.89    0.32   96%  75% Peek item [non-empty] mbox
+    1.47    1.04    5.78    0.38   84%  65% Tryget [non-empty] mbox
+    1.15    0.89    3.11    0.18   71%  56% Peek item [empty] mbox
+    1.20    1.04    3.85    0.21   93%  84% Tryget [empty] mbox
+    0.21    0.00    0.74    0.14   68%  18% Waiting to get mbox
+    0.19    0.00    0.44    0.10   43%  15% Waiting to put mbox
+    2.19    1.93    5.78    0.27   93%  71% Delete mbox
+   10.23    9.93   11.56    0.15   53%  37% Put/Get mbox
+
+    0.37    0.15    1.33    0.26   71%  71% Init semaphore
+    0.98    0.89    2.52    0.13   96%  68% Post [0] semaphore
+    1.08    0.89    3.26    0.15   68%  93% Wait [1] semaphore
+    0.98    0.89    3.41    0.16   93%  93% Trywait [0] semaphore
+    0.73    0.59    1.63    0.07   71%  25% Trywait [1] semaphore
+    0.33    0.30    1.33    0.07   93%  93% Peek semaphore
+    0.34    0.30    1.78    0.09   96%  96% Destroy semaphore
+    9.36    8.74   10.37    0.33   56%  31% Post/Wait semaphore
+
+    0.54    0.15    3.26    0.23   59%  37% Create counter
+    0.13    0.00    0.59    0.07   68%  25% Get counter value
+    0.14    0.00    0.59    0.07   68%  25% Set counter value
+    3.74    3.56    5.33    0.17   53%  75% Tick counter
+    0.32    0.15    2.07    0.12   71%  21% Delete counter
+
+    1.59    1.19    3.11    0.29   71%  43% Create alarm
+    1.89    1.48    6.37    0.44   87%  78% Initialize alarm
+    0.20    0.15    0.74    0.09   87%  84% Disable alarm
+    1.62    1.33    5.63    0.41   87%  84% Enable alarm
+    0.40    0.30    1.33    0.13   87%  62% Delete alarm
+
+   4.03    3.70    5.78    0.27   68%  56% Tick counter [1 alarm]
+   14.18   13.93   15.70    0.27   81%  75% Tick counter [many alarms]
+    4.81    4.59    5.93    0.13   81%  15% Tick &#38; fire counter [1 alarm]
+   30.77   30.52   33.63    0.20   75%  65% Tick &#38; fire counters [&#62;1 together]
+   15.10   14.52   17.04    0.23   71%   3% Tick &#38; fire counters [&#62;1 separately]
+    8.78    8.59   18.22    0.20   97%  89% Alarm latency [0 threads]
+   11.29    9.33   17.48    1.02   56%  22% Alarm latency [2 threads]
+   18.70   15.70   26.37    1.45   54%  22% Alarm latency [many threads]
+   19.40   18.81   57.48    0.65   97%  97% Alarm -&#62; thread resume latency
+
+    4.18    2.81    8.89    0.00            Clock/interrupt latency
+
+    3.98    2.52   11.56    0.00            Clock DSR latency
+
+    6       0     380  (main stack:   728)  Thread stack used (992 total)
+All done, main stack            : stack used   728 size  4112
+All done             :  Interrupt stack used   196 size  4096
+All done             : Idlethread stack used   360 size  2048
+
+Timing complete - 29790 ms total
+
+PASS:&lt;Basic timing OK&#62;
+EXIT:&lt;done&#62; </LITERALLAYOUT>
+</SECT1>
+<SECT1 id="rt-i386-pc">
+<TITLE>Board: PC</TITLE>
+<LITERALLAYOUT CLASS="MONOSPACED">Board: PC
+
+CPU: 433MHz Celeron
+
+Startup, main stack             : stack used   124 size  2912
+Startup              :  Interrupt stack used   280 size  4108
+Startup              : Idlethread stack used    62 size  2048
+
+eCos Kernel Timings
+Notes: all times are in microseconds (.000001) unless otherwise stated
+
+Reading the hardware clock takes 8 'ticks' overhead
+... this value will be factored out of all other measurements
+Clock interrupt took    6.75 microseconds (8 raw clock ticks)
+
+Testing parameters:
+   Clock samples:            32
+   Threads:                  64
+   Thread switches:         128
+   Mutexes:                  32
+   Mailboxes:                32
+   Semaphores:               32
+   Scheduler operations:    128
+   Counters:                 32
+   Alarms:                   32
+
+
+                                 Confidence
+     Ave     Min     Max     Var  Ave  Min  Function
+  ======  ======  ======  ====== ========== ========
+    3.93    1.68    8.38    0.93   68%   3% Create thread
+    0.71    0.00    3.35    0.84   59%  59% Yield thread [all suspended]
+    0.65    0.00    5.03    0.84   64%  64% Suspend [suspended] thread
+    0.63    0.00    1.68    0.79   62%  62% Resume thread
+    0.76    0.00    1.68    0.83   54%  54% Set priority
+    0.39    0.00    1.68    0.60   76%  76% Get priority
+    1.34    0.00    6.70    0.67   73%  25% Kill [suspended] thread
+    0.68    0.00    1.68    0.81   59%  59% Yield [no other] thread
+    0.92    0.00    1.68    0.83   54%  45% Resume [suspended low prio] thread
+    0.63    0.00    1.68    0.79   62%  62% Resume [runnable low prio] thread
+    0.84    0.00    1.68    0.84  100%  50% Suspend [runnable] thread
+    0.73    0.00    1.68    0.82   56%  56% Yield [only low prio] thread
+    0.58    0.00    1.68    0.76   65%  65% Suspend [runnable-&#62;not runnable]
+    1.26    0.00    3.35    0.67   71%  26% Kill [runnable] thread
+    0.86    0.00    3.35    0.86   98%  50% Destroy [dead] thread
+    1.44    0.00    1.68    0.40   85%  14% Destroy [runnable] thread
+    4.45    3.35    6.70    0.89   53%  40% Resume [high priority] thread
+    1.62    0.00    1.68    0.10   96%   3% Thread switch
+
+    0.41    0.00    1.68    0.61   75%  75% Scheduler lock
+    0.48    0.00    1.68    0.69   71%  71% Scheduler unlock [0 threads]
+    0.59    0.00    1.68    0.76   64%  64% Scheduler unlock [1 suspended]
+    0.45    0.00    1.68    0.65   73%  73% Scheduler unlock [many suspended]
+    0.45    0.00    1.68    0.65   73%  73% Scheduler unlock [many low prio]
+
+    0.52    0.00    1.68    0.72   68%  68% Init mutex
+    0.79    0.00    5.03    0.93   96%  59% Lock [unlocked] mutex
+    0.84    0.00    5.03    0.94   96%  56% Unlock [locked] mutex
+    0.63    0.00    1.68    0.79   62%  62% Trylock [unlocked] mutex
+    0.52    0.00    1.68    0.72   68%  68% Trylock [locked] mutex
+    0.58    0.00    1.68    0.76   65%  65% Destroy mutex
+    3.40    3.35    5.03    0.10   96%  96% Unlock/Lock mutex
+
+    0.99    0.00    1.68    0.81   59%  40% Create mbox
+    0.47    0.00    1.68    0.68   71%  71% Peek [empty] mbox
+    0.79    0.00    5.03    0.93   96%  59% Put [first] mbox
+    0.42    0.00    1.68    0.63   75%  75% Peek [1 msg] mbox
+    0.79    0.00    1.68    0.83   53%  53% Put [second] mbox
+    0.37    0.00    1.68    0.57   78%  78% Peek [2 msgs] mbox
+    0.73    0.00    3.35    0.87   59%  59% Get [first] mbox
+    0.73    0.00    1.68    0.82   56%  56% Get [second] mbox
+    0.79    0.00    3.35    0.88   56%  56% Tryput [first] mbox
+    0.68    0.00    3.35    0.85   62%  62% Peek item [non-empty] mbox
+    0.73    0.00    3.35    0.87   59%  59% Tryget [non-empty] mbox
+    0.63    0.00    1.68    0.79   62%  62% Peek item [empty] mbox
+    0.68    0.00    1.68    0.81   59%  59% Tryget [empty] mbox
+    0.26    0.00    1.68    0.44   84%  84% Waiting to get mbox
+    0.63    0.00    1.68    0.79   62%  62% Waiting to put mbox
+    0.73    0.00    3.35    0.87   59%  59% Delete mbox
+    3.25    1.68    3.35    0.20   93%   6% Put/Get mbox
+
+    0.63    0.00    1.68    0.79   62%  62% Init semaphore
+    0.63    0.00    1.68    0.79   62%  62% Post [0] semaphore
+    0.63    0.00    1.68    0.79   62%  62% Wait [1] semaphore
+    0.52    0.00    1.68    0.72   68%  68% Trywait [0] semaphore
+    0.52    0.00    1.68    0.72   68%  68% Trywait [1] semaphore
+    0.52    0.00    1.68    0.72   68%  68% Peek semaphore
+    0.21    0.00    1.68    0.37   87%  87% Destroy semaphore
+    3.30    1.68    3.35    0.10   96%   3% Post/Wait semaphore
+
+    0.79    0.00    3.35    0.88   56%  56% Create counter
+    0.42    0.00    1.68    0.63   75%  75% Get counter value
+    0.37    0.00    1.68    0.57   78%  78% Set counter value
+    0.73    0.00    1.68    0.82   56%  56% Tick counter
+    0.63    0.00    1.68    0.79   62%  62% Delete counter
+
+    0.89    0.00    3.35    0.89   96%  50% Create alarm
+    0.84    0.00    1.68    0.84  100%  50% Initialize alarm
+    0.52    0.00    1.68    0.72   68%  68% Disable alarm
+    0.89    0.00    3.35    0.89   96%  50% Enable alarm
+    0.58    0.00    1.68    0.76   65%  65% Delete alarm
+    0.63    0.00    1.68    0.79   62%  62% Tick counter [1 alarm]
+    5.03    3.35    6.70    0.10   93%   3% Tick counter [many alarms]
+    0.94    0.00    1.68    0.82   56%  43% Tick &#38; fire counter [1 alarm]
+   11.16   10.06   11.73    0.76   65%  34% Tick &#38; fire counters [&#62;1 together]
+    5.19    5.03    6.70    0.28   90%  90% Tick &#38; fire counters [&#62;1 separately]
+    0.01    0.00    1.68    0.03   99%  99% Alarm latency [0 threads]
+    0.13    0.00    1.68    0.24   92%  92% Alarm latency [2 threads]
+    0.94    0.00    3.35    0.85   53%  45% Alarm latency [many threads]
+    1.75    1.68    6.70    0.15   96%  96% Alarm -&#62; thread resume latency
+
+   41       0     368  (main stack:  1036)  Thread stack used (1712 total)
+All done, main stack            : stack used  1036 size  2912
+All done             :  Interrupt stack used   368 size  4108
+All done             : Idlethread stack used   288 size  2048
+
+Timing complete - 28520 ms total
+
+PASS:&lt;Basic timing OK&#62;
+EXIT:&lt;done&#62;
+
+</LITERALLAYOUT>
+</SECT1>
+<SECT1 id="rt-v850-cebsa1">
+<TITLE>Board: NEC V850 Cosmo Evaluation Board</TITLE>
+<LITERALLAYOUT CLASS="MONOSPACED">Board: NEC V850 Cosmo Evaluation Board
+
+CPU: NEC CEB-V850/SA1 17MHz
+
+Startup, main stack  : stack used   552 size  2936
+Startup              : Interrupt stack used   120 size  4096
+Startup              : Idlethread stack used   206 size  2048
+
+eCos Kernel Timings
+Notes: all times are in microseconds (.000001) unless otherwise stated
+
+Reading the hardware clock takes 27 `ticks' overhead
+... this value will be factored out of all other measurements
+Clock interrupt took  280.04 microseconds (1190 raw clock ticks)
+
+Testing parameters:
+   Clock samples:            32
+   Threads:                   7
+   Thread switches:         128
+   Mutexes:                  32
+   Mailboxes:                32
+   Semaphores:               32
+   Scheduler operations:    128
+   Counters:                 32
+   Alarms:                   32
+
+
+                                 Confidence
+     Ave     Min     Max     Var  Ave  Min  Function
+  ======  ======  ======  ====== ========== ========
+  288.71  280.24  297.18    4.84   42%  28% Create thread
+   70.76   70.59   70.82    0.10   71%  28% Yield thread [all suspended]
+   59.06   59.06   59.06    0.00  100% 100% Suspend [suspended] thread
+   60.00   60.00   60.00    0.00  100% 100% Resume thread
+   77.38   77.18   77.41    0.06   85%  14% Set priority
+    3.13    3.06    3.29    0.10   71%  71% Get priority
+  187.46  187.29  187.53    0.10   71%  28% Kill [suspended] thread
+   70.76   70.59   70.82    0.10   71%  28% Yield [no other] thread
+  104.40  103.29  104.71    0.32   85%  14% Resume [suspended low prio] thread
+   59.06   59.06   59.06    0.00  100% 100% Resume [runnable low prio] thread
+   97.11   91.06   98.12    1.73   85%  14% Suspend [runnable] thread
+   70.76   70.59   70.82    0.10   71%  28% Yield [only low prio] thread
+   59.06   59.06   59.06    0.00  100% 100% Suspend [runnable-&#62;not runnable]
+  187.46  187.29  187.53    0.10   71%  28% Kill [runnable] thread
+   95.63   95.29   97.18    0.44   85%  85% Destroy [dead] thread
+  241.28  236.94  242.12    1.24   85%  14% Destroy [runnable] thread
+  378.55  370.35  427.06   13.86   85%  85% Resume [high priority] thread
+  198.77  183.76  452.94   18.77   96%  96% Thread switch
+
+    2.59    2.59    2.59    0.00  100% 100% Scheduler lock
+   41.29   41.18   41.41    0.12  100%  50% Scheduler unlock [0 threads]
+   40.82   40.71   40.94    0.12  100%  50% Scheduler unlock [1 suspended]
+   41.29   41.18   41.41    0.12  100%  50% Scheduler unlock [many suspended]
+   41.29   41.18   41.41    0.12  100%  50% Scheduler unlock [many low prio]
+
+   17.94   17.88   18.12    0.09   75%  75% Init mutex
+   68.71   68.71   68.71    0.00  100% 100% Lock [unlocked] mutex
+   72.10   72.00   73.41    0.15   96%  71% Unlock [locked] mutex
+   57.88   57.88   57.88    0.00  100% 100% Trylock [unlocked] mutex
+   52.24   52.24   52.24    0.00  100% 100% Trylock [locked] mutex
+   12.41   12.24   12.47    0.09   75%  25% Destroy mutex
+  427.06  427.06  427.06    0.00  100% 100% Unlock/Lock mutex
+
+
+   34.94   34.82   35.06    0.12  100%  50% Create mbox
+    0.76    0.71    0.94    0.09   75%  75% Peek [empty] mbox
+   75.29   75.29   75.29    0.00  100% 100% Put [first] mbox
+    1.24    1.18    1.41    0.09   75%  75% Peek [1 msg] mbox
+   75.76   75.76   75.76    0.00  100% 100% Put [second] mbox
+    0.76    0.71    0.94    0.09   75%  75% Peek [2 msgs] mbox
+   80.12   80.00   80.24    0.12  100%  50% Get [first] mbox
+   79.65   79.53   79.76    0.12  100%  50% Get [second] mbox
+   70.12   70.12   70.12    0.00  100% 100% Tryput [first] mbox
+   65.76   65.65   65.88    0.12  100%  50% Peek item [non-empty] mbox
+   78.00   77.88   78.12    0.12  100%  50% Tryget [non-empty] mbox
+   63.12   63.06   63.29    0.09   75%  75% Peek item [empty] mbox
+   67.82   67.76   68.00    0.09   75%  75% Tryget [empty] mbox
+    1.94    1.88    2.12    0.09   75%  75% Waiting to get mbox
+    1.47    1.41    1.65    0.09   75%  75% Waiting to put mbox
+   75.59   75.53   75.76    0.09   75%  75% Delete mbox
+  252.76  252.71  252.94    0.09   75%  75% Put/Get mbox
+
+   20.24   20.24   20.24    0.00  100% 100% Init semaphore
+   54.35   54.35   54.35    0.00  100% 100% Post [0] semaphore
+   66.59   66.59   66.59    0.00  100% 100% Wait [1] semaphore
+   52.24   52.24   52.24    0.00  100% 100% Trywait [0] semaphore
+   53.41   53.41   53.41    0.00  100% 100% Trywait [1] semaphore
+   10.65   10.59   10.82    0.09   75%  75% Peek semaphore
+   12.65   12.47   12.71    0.09   75%  25% Destroy semaphore
+  276.94  276.94  276.94    0.00  100% 100% Post/Wait semaphore
+
+   14.94   14.82   15.06    0.12  100%  50% Create counter
+    2.18    2.12    2.35    0.09   75%  75% Get counter value
+    3.06    3.06    3.06    0.00  100% 100% Set counter value
+   78.12   78.12   78.12    0.00  100% 100% Tick counter
+   13.82   13.65   13.88    0.09   75%  25% Delete counter
+
+   26.94   26.82   27.06    0.12  100%  50% Create alarm
+  104.18  104.00  104.24    0.09   75%  25% Initialize alarm
+    7.65    7.53    7.76    0.12  100%  50% Disable alarm
+  104.94  104.94  104.94    0.00  100% 100% Enable alarm
+   19.47   19.29   19.53    0.09   75%  25% Delete alarm
+   88.53   88.47   88.71    0.09   75%  75% Tick counter [1 alarm]
+  418.61  411.29  645.41   14.17   96%  96% Tick counter [many alarms]
+  139.59  139.53  139.76    0.09   75%  75% Tick &#38; fire counter [1 alarm]
+ 2150.21 2096.71 2367.53   83.59   78%  78% Tick &#38; fire counters [&#62;1 together]
+  478.15  462.35  733.41   29.61   93%  93% Tick &#38; fire counters [&#62;1 separately]
+  219.89  218.59  369.88    2.34   99%  99% Alarm latency [0 threads]
+  292.11  218.59  371.53   37.85   50%  25% Alarm latency [2 threads]
+  292.96  218.59  370.59   38.12   49%  25% Alarm latency [many threads]
+  540.90  495.76 1677.41   17.76   98%   0% Alarm -&#62; thread resume latency
+
+   79.01   78.59  104.71    0.00            Clock/interrupt latency
+
+  123.41   85.88 1982.82    0.00            Clock DSR latency
+
+  522     516     536  (main stack:  1124)  Thread stack used (1912 total)
+All done, main stack : stack used  1124 size  2936
+All done             :  Interrupt stack used   288 size  4096
+All done             : Idlethread stack used   488 size  2048
+
+Timing complete - 32540 ms total
+
+</LITERALLAYOUT>
+</SECT1>
+<SECT1 id="rt-v850-cebsb1">
+<TITLE>Board: NEC V850 Cosmo Evaluation Board</TITLE>
+<LITERALLAYOUT CLASS="MONOSPACED">Board: NEC V850 Cosmo Evaluation Board
+
+CPU: NEC CEB-V850/SB1 16MHz (in internal Flash)
+
+
+Startup, main stack             : stack used   572 size  2936
+Startup              :  Interrupt stack used   132 size  4096
+Startup              : Idlethread stack used   210 size  2048
+
+eCos Kernel Timings
+Notes: all times are in microseconds (.000001) unless otherwise stated
+
+Reading the hardware clock takes 8 'ticks' overhead
+... this value will be factored out of all other measurements
+Clock interrupt took  118.15 microseconds (472 raw clock ticks)
+
+Testing parameters:
+   Clock samples:            32
+   Threads:                   7
+   Thread switches:         128
+   Mutexes:                  32
+   Mailboxes:                32
+   Semaphores:               32
+   Scheduler operations:    128
+   Counters:                 32
+   Alarms:                   32
+
+
+                                 Confidence
+     Ave     Min     Max     Var  Ave  Min  Function
+  ======  ======  ======  ====== ========== ========
+  113.68  111.00  116.50    1.63   42%  28% Create thread
+   30.00   30.00   30.00    0.00  100% 100% Yield thread [all suspended]
+   29.57   29.50   29.75    0.10   71%  71% Suspend [suspended] thread
+   27.43   27.25   27.50    0.10   71%  28% Resume thread
+   34.11   34.00   34.25    0.12   57%  57% Set priority
+    1.57    1.50    1.75    0.10   71%  71% Get priority
+   72.96   72.75   73.00    0.06   85%  14% Kill [suspended] thread
+   30.00   30.00   30.00    0.00  100% 100% Yield [no other] thread
+   42.75   42.75   42.75    0.00  100% 100% Resume [suspended low prio] thread
+   27.00   27.00   27.00    0.00  100% 100% Resume [runnable low prio] thread
+   43.64   41.25   44.25    0.68   85%  14% Suspend [runnable] thread
+   30.00   30.00   30.00    0.00  100% 100% Yield [only low prio] thread
+   29.57   29.50   29.75    0.10   71%  71% Suspend [runnable-&#62;not runnable]
+   72.93   72.75   73.00    0.10   71%  28% Kill [runnable] thread
+   44.89   44.75   45.75    0.24   85%  85% Destroy [dead] thread
+  103.00  101.50  103.25    0.43   85%  14% Destroy [runnable] thread
+  175.21  171.50  197.50    6.37   85%  85% Resume [high priority] thread
+   84.11   79.50  197.25    1.77   98%   0% Thread switch
+
+    1.00    1.00    1.00    0.00  100% 100% Scheduler lock
+   20.06   20.00   20.25    0.09   75%  75% Scheduler unlock [0 threads]
+   20.00   20.00   20.00    0.00  100% 100% Scheduler unlock [1 suspended]
+   20.06   20.00   20.25    0.09   75%  75% Scheduler unlock [many suspended]
+   20.06   20.00   20.25    0.09   75%  75% Scheduler unlock [many low prio]
+
+    4.00    4.00    4.00    0.00  100% 100% Init mutex
+   33.00   33.00   33.00    0.00  100% 100% Lock [unlocked] mutex
+   36.77   36.75   37.25    0.03   96%  96% Unlock [locked] mutex
+   28.13   28.00   28.25    0.13  100%  50% Trylock [unlocked] mutex
+   25.13   25.00   25.25    0.13  100%  50% Trylock [locked] mutex
+    4.88    4.75    5.00    0.13  100%  50% Destroy mutex
+  187.00  187.00  187.00    0.00  100% 100% Unlock/Lock mutex
+
+   10.00   10.00   10.00    0.00  100% 100% Create mbox
+    0.69    0.50    0.75    0.09   75%  25% Peek [empty] mbox
+   34.75   34.75   34.75    0.00  100% 100% Put [first] mbox
+    0.69    0.50    0.75    0.09   75%  25% Peek [1 msg] mbox
+   35.00   35.00   35.00    0.00  100% 100% Put [second] mbox
+    0.69    0.50    0.75    0.09   75%  25% Peek [2 msgs] mbox
+   36.00   36.00   36.00    0.00  100% 100% Get [first] mbox
+   36.00   36.00   36.00    0.00  100% 100% Get [second] mbox
+   31.00   31.00   31.00    0.00  100% 100% Tryput [first] mbox
+   29.50   29.50   29.50    0.00  100% 100% Peek item [non-empty] mbox
+   35.25   35.25   35.25    0.00  100% 100% Tryget [non-empty] mbox
+   27.69   27.50   27.75    0.09   75%  25% Peek item [empty] mbox
+   31.06   31.00   31.25    0.09   75%  75% Tryget [empty] mbox
+    0.94    0.75    1.00    0.09   75%  25% Waiting to get mbox
+    0.94    0.75    1.00    0.09   75%  25% Waiting to put mbox
+   37.81   37.75   38.00    0.09   75%  75% Delete mbox
+  112.00  112.00  112.00    0.00  100% 100% Put/Get mbox
+
+    3.19    3.00    3.25    0.09   75%  25% Init semaphore
+   25.38   25.25   25.50    0.13  100%  50% Post [0] semaphore
+   32.63   32.50   32.75    0.13  100%  50% Wait [1] semaphore
+   24.25   24.25   24.25    0.00  100% 100% Trywait [0] semaphore
+   25.00   25.00   25.00    0.00  100% 100% Trywait [1] semaphore
+    4.00    4.00    4.00    0.00  100% 100% Peek semaphore
+    4.88    4.75    5.00    0.13  100%  50% Destroy semaphore
+  124.50  124.50  124.50    0.00  100% 100% Post/Wait semaphore
+
+    6.50    6.50    6.50    0.00  100% 100% Create counter
+    1.25    1.25    1.25    0.00  100% 100% Get counter value
+    1.44    1.25    1.50    0.09   75%  25% Set counter value
+   36.25   36.25   36.25    0.00  100% 100% Tick counter
+    5.25    5.25    5.25    0.00  100% 100% Delete counter
+
+   12.25   12.25   12.25    0.00  100% 100% Create alarm
+   49.13   49.00   49.25    0.13  100%  50% Initialize alarm
+    2.81    2.75    3.00    0.09   75%  75% Disable alarm
+   48.50   48.50   48.50    0.00  100% 100% Enable alarm
+    8.25    8.25    8.25    0.00  100% 100% Delete alarm
+   46.50   46.50   46.50    0.00  100% 100% Tick counter [1 alarm]
+  485.42  482.25  580.00    5.91   96%  96% Tick counter [many alarms]
+   64.00   64.00   64.00    0.00  100% 100% Tick &#38; fire counter [1 alarm]
+ 1109.76 1100.50 1198.00   16.53   90%  90% Tick &#38; fire counters [&#62;1 together]
+  505.85  502.00  621.00    7.20   96%  96% Tick &#38; fire counters [&#62;1 separately]
+   96.26   95.75  161.25    1.02   99%  99% Alarm latency [0 threads]
+  159.20   95.75  160.75    2.52   97%   0% Alarm latency [2 threads]
+  159.73  110.50  161.75    1.53   97%   0% Alarm latency [many threads]
+  218.45  211.25  445.75    3.55   97%   1% Alarm -&#62; thread resume latency
+
+   28.24   25.25   43.25    0.00            Clock/interrupt latency
+
+   60.15   40.50  221.50    0.00            Clock DSR latency
+
+  472     424     572  (main stack:  1052)  Thread stack used (1912 total)
+All done, main stack            : stack used  1052 size  2936
+All done             :  Interrupt stack used   280 size  4096
+All done             : Idlethread stack used   516 size  2048
+
+Timing complete - 30590 ms total
+
+PASS:&lt;Basic timing OK&#62;
+EXIT:&lt;done&#62;
+
+</LITERALLAYOUT>
+</SECT1>
+</APPENDIX>
new file mode 100644
--- /dev/null
+++ b/doc/sgml/user-guide/target-setup.sgml
@@ -0,0 +1,3038 @@
+<!-- {{{ Banner                         -->
+
+<!-- =============================================================== -->
+<!--                                                                 -->
+<!--     config-tool.sgml                                            -->
+<!--                                                                 -->
+<!--     eCos User Guide                                             -->
+<!--                                                                 -->
+<!-- =============================================================== -->
+<!-- ####COPYRIGHTBEGIN####                                          -->
+<!--                                                                 -->
+<!-- =============================================================== -->
+<!-- Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.  -->
+<!-- This material may be distributed only subject to the terms      -->
+<!-- and conditions set forth in the Open Publication License, v1.0  -->
+<!-- or later (the latest version is presently available at          -->
+<!-- http://www.opencontent.org/openpub/)                            -->
+<!-- Distribution of the work or derivative of the work in any       -->
+<!-- standard (paper) book form is prohibited unless prior           -->
+<!-- permission obtained from the copyright holder                   -->
+<!-- =============================================================== -->
+<!--                                                                 -->      
+<!-- ####COPYRIGHTEND####                                            -->
+<!-- =============================================================== -->
+<!-- #####DESCRIPTIONBEGIN####                                       -->
+<!--                                                                 -->
+<!-- ####DESCRIPTIONEND####                                          -->
+<!-- =============================================================== -->
+
+<!-- }}} -->
+
+
+<appendix id="appendix-target-setup">
+<title>Target Setup</title>
+
+<para>
+The following sections detail the setup of many of the targets
+supported by eCos. 
+</para>
+
+<caution>
+<para>
+This information is presented here only temporarily. It is intended
+that there will be separate documents detailing this information for
+each target in future releases. Consequently not much effort has been
+put into bringing the following documentation up to date -- much of it
+is obsolete, bogus or just plain wrong.
+</para>
+</caution>
+
+<!--
+<para>
+XXXXX Exactly which of these are really supported in 2.0. Can we
+delete some of them. I'm reluctant to waste much time fixing up text
+that is going to be largely rewritten anyway.
+XXXXX
+</para>
+-->
+
+<!-- ==================================================== -->
+
+<SECT1 id="setup-mn10300-stdeval1">
+<TITLE>MN10300 stdeval1 Hardware Setup</TITLE>
+<PARA>The eCos Developer&rsquo;s Kit package comes with a pair
+of EPROMs which provide GDB support for the Matsushita MN10300 (AM31)
+series evaluation board using CygMon, the Cygnus ROM monitor. Images
+of these EPROMs are also provided at <filename>BASE_DIR/loaders/mn10300-stdeval1/cygmon.bin</filename>.
+The LSB EPROM (LROM) is installed to socket IC8 on the board and
+the MSB EPROM (UROM) is installed to socket IC9. Attention should
+be paid to the correct orientation of these EPROMs during installation.</PARA>
+<PARA>The CygMon stubs allows communication with GDB by way of the
+serial port at connector CN2. The communication parameters are fixed
+at 38400 baud, 8 data bits, no parity bit, and 1 stop bit (8-N-1).
+No flow control is employed. Connection to the host computer should
+be made using a standard RS232C serial cable (not a null modem cable).
+A gender changer may also be required.</PARA>
+</SECT1>
+
+<!-- ==================================================== -->
+
+<SECT1 id="setup-mn10300-sim">
+<TITLE>MN10300 Architectural Simulator Setup</TITLE>
+<PARA>The MN10300 simulator is an architectural simulator for the
+Matsushita MN10300 that implements all features of the microprocessor
+ necessary to run eCos. The current implementation provides accurate
+simulation of the instruction set, interrupt controller, timers,
+and  serial I/O.</PARA>
+<PARA>In this release, you can run the same eCos binaries in the
+simulator that can run on target hardware, if built for ROM start-up,
+with the  exception of those that use the watchdog timer.</PARA>
+<PARA>However, note that AM33 devices required to run eCos are not
+simulated; therefore you cannot run eCos binaries built for the
+AM33 under the simulator. For the AM33, the simulator is effectively
+an instruction-set only simulator.</PARA>
+<PARA>To simplify connection to the simulator, you are advised to
+create a GDB macro by putting the following code in your personal
+GDB start-up file (gdb.ini on Windows and .gdbinit on UNIX).</PARA>
+<PROGRAMLISTING>define msim   
+ target sim --board=stdeval1 --memory-region 0x34004000,0x8
+  
+ rbreak cyg_test_exit   
+ rbreak cyg_assert_fail  
+end</PROGRAMLISTING>
+<PARA>You can then connect to the simulator by invoking the command <PROGRAMLISTING>msim</PROGRAMLISTING> on
+the command line:</PARA>
+<PROGRAMLISTING>(gdb) msim</PROGRAMLISTING>
+<PARA>You can achieve the same effect by typing out the macro&rsquo;s
+content on  the command line if necessary.</PARA>
+</SECT1>
+
+<!-- ==================================================== -->
+
+<SECT1 id="setup-am33-stb">
+<TITLE>AM33 STB Hardware Setup</TITLE>
+<PARA>The Matsushita AM33 STB System Reference Board may be used
+in two modes: via a JTAG debugger, or by means of a GDB stub ROM.</PARA>
+<SECT2>
+<TITLE>Use with GDB Stub ROM</TITLE>
+<PARA>The eCos Developer&rsquo;s Kit package comes with a ROM
+image which provides GDB support for
+the Matsushita(R) AM33 STB System Reference Board. To install the
+GDB stub ROM requires the use of the JTAG debugger and the Flash ROM
+programming code available from Matsushita. An image of this ROM
+is also provided at <filename>loaders/am33-stb/gdbload.bin</filename> under
+the root of your eCos installation.</PARA>
+<PARA>Ensure that there is a Flash ROM card in MAIN MEMORY SLOT &lt;0&#62;.
+Follow the directions for programming a Flash ROM supplied with
+the programming software.</PARA>
+<PARA>The final programming of the ROM will need to be done with
+a command similar to the following:</PARA>
+<PROGRAMLISTING>fdown "gdbload.bin",0x80000000,16,1</PROGRAMLISTING>
+<PARA>Once the ROM has been programmed, close down the JTAG debugger,
+turn the STB off, and disconnect the JTAG cable. Ensure that the
+hardware switches are in the following configuration:</PARA>
+<PROGRAMLISTING>U U D D D U D D
+
+D = lower part of rocker switch pushed in
+U = upper part of rocker switch pushed in</PROGRAMLISTING>
+<PARA>This is also the configuration required by the Flash programming
+code, so it should not be necessary to change these.</PARA>
+<PARA>Restart the STB and the stub ROM will now be able to communicate
+with <PRODUCTNAME>GDB</PRODUCTNAME>. eCos programs should be built
+with RAM startup.</PARA>
+<PARA>Programs can then be downloaded via a standard RS232 null
+modem serial cable connected to the SERIAL1 connector on the STB
+front panel (the AM33&quot;s serial port 0). This line is programmed
+to run at 38400 baud, 8 data bits, no parity and 1 stop bit (8-N-1)
+with no flow control. A gender changer may also be required. Diagnostic
+output will be output to GDB using the same connection.</PARA>
+<PARA>This procedure also applies for programming ROM startup eCos
+programs into ROM, given a binary format image of the program from<PROGRAMLISTING> mn10300-elf-objcopy.</PROGRAMLISTING></PARA>
+</SECT2>
+<SECT2>
+<TITLE>Use with the JTAG debugger</TITLE>
+<PARA>To use eCos from the JTAG debugger, executables must be built
+with ROM startup and then downloaded via the JTAG debugger. For
+this to work there must be an SDRAM memory card in SUB MEMORY SLOT &lt;0&#62; and
+the hardware switches on the front panel set to the following: </PARA>
+<PROGRAMLISTING>D U D D D U D D
+
+D = lower part of rocker switch pushed in
+U = upper part of rocker switch pushed in</PROGRAMLISTING>
+<PARA>Connect the JTAG unit and run the debugger as described in
+the documentation that comes with it.</PARA>
+<PARA>eCos executables should be renamed to have a &ldquo;.out&rdquo; extension
+and may then be loaded using the debugger&quot;s &ldquo;l&rdquo; or &ldquo;lp&rdquo; commands.</PARA>
+<PARA>Diagnostic output generated by the program will be sent out
+of the AM33&quot;s serial port 0 which is connected to the SERIAL1
+connector on the STB front panel. This line is programmed to run
+at 38400 baud, 8 data bits, no parity, and one stop bit (8-N-1)
+with no flow control. Connection to the host computer should be
+using a standard RS232 null modem serial cable. A gender changer
+may also be required.</PARA>
+</SECT2>
+<SECT2>
+<TITLE>Building the GDB stub ROM image</TITLE>
+<PARA>eCos comes with a pre-built GDB stub ROM image for the AM33-STB
+platform. This can be found at <filename>loaders/am33-stb/gdbload.bin</filename> relative
+to the eCos installation directory.</PARA>
+<PARA>If necessary, the ROM image can be re-built as follows:</PARA>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>		On Windows hosts, open a Bash session using 
+<EMPHASIS>Start-&#62;Programs-&#62;Red Hat eCos-&#62;eCos
+Development Environment</EMPHASIS></PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Create a build directory and cd into it</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Run (all as one line):
+
+<PROGRAMLISTING>cygtclsh80 BASE_DIR/packages/pkgconf.tcl                          \
+  --target=mn10300_am33 --platform stb --startup rom              \
+  --disable-kernel --disable-uitron --disable-libc --disable-libm \
+  --disable-io --disable-io_serial --disable-wallclock
+--disable-watchdog</PROGRAMLISTING>
+	    </PARA>
+<PARA>where BASE_DIR is the path to the eCos installation
+directory.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Edit the configuration file 
+<filename>pkgconf/hal.h</filename>
+ in the build directory tree by ensuring the following configuration
+options are set as follows:
+
+<PROGRAMLISTING>#define CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
+#define CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
+#undef  CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT
+#define CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT
+#define CYG_HAL_ROM_MONITOR</PROGRAMLISTING>
+	    </PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Run: make</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Run: make -C hal/common/current/current/src/stubrom</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>The file 
+<filename>hal/common/current/src/stubrom</filename>
+ will be an ELF format executable of the ROM image. Use mn10300-elf-objcopy to
+convert this to the appropriate format for loading into the Matsushita
+FLASH ROM programmer, mode &ldquo;binary&rdquo; in this case: 
+
+<PROGRAMLISTING>$ mn10300-elf-objcopy -O binary hal/common/current/src/stubrom/ \
+  stubrom stubrom.img</PROGRAMLISTING></PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT2>
+</SECT1>
+
+<!-- ==================================================== -->
+
+<SECT1 id="setup-tx39-jmr3904">
+<TITLE>TX39 Hardware Setup</TITLE>
+<PARA>The eCos Developer&rsquo;s Kit package comes with a pair
+of ROMs that provide GDB support for
+the Toshiba JMR-TX3904 RISC processor reference board by way of CygMon. </PARA>
+<PARA>Images of these ROMs are also provided at <filename>BASE_DIR/loaders/tx39-jmr3904/cygmon50.bin</filename> and <filename>BASE_DIR/loaders/tx39-jmr3904/cygmon66.bin</filename> for
+50 MHz and 66 MHz boards respectively. The ROMs are installed to
+sockets IC6 and IC7 on the memory daughterboard according to their
+labels. Attention should be paid to the correct orientation of these
+ROMs during installation.</PARA>
+<PARA>The GDB stub allows communication with GDB using the serial
+port (channel C) at connector PJ1. The communication parameters
+are fixed at 38400 baud, 8 data bits, no parity bit, and 1 stop
+bit (8-N-1). No handshaking is employed. Connection to the host
+computer should be made using an RS232C null modem cable.</PARA>
+<PARA>CygMon and eCos currently provide support for a 16Mbyte 60ns
+72pin DRAM SIMM fitted to the PJ21 connector. Different size DRAMs
+may require changes in the value stored in the DCCR0 register. This
+value may be found near line 211 in <filename>hal/mips/arch/<replaceable>&Version;</replaceable>/src/vectors.S</filename>
+in eCos, and near line 99 in
+	  <filename>libstub/mips/tx39jmr/tx39jmr-power.S</filename> in
+CygMon. eCos does not currently use the DRAM for any purpose itself,
+so it is entirely available for application use.</PARA>
+</SECT1>
+
+<!-- ==================================================== -->
+
+<SECT1 id="setup-tx39-sim">
+<TITLE>TX39 Architectural Simulator Setup</TITLE>
+<PARA>The TX39 simulator is an architectural simulator which implements
+all  the features of the Toshiba TX39 needed to run eCos. The current
+implementation provides accurate simulation of the instruction set,
+ interrupt controller, and timers, as well as having generic support
+for diagnostic output, serial I/O, and exceptions.</PARA>
+<PARA>In this release, you can run the same eCos binaries in the
+simulator that can run on target hardware, if it is built for ROM
+start-up.</PARA>
+<PARA>To simplify connection to the simulator, you are advised to
+create a GDB macro by putting the following code in your personal
+GDB start-up file (gdb.ini on Windows and .gdbinit on UNIX).</PARA>
+<PROGRAMLISTING>define tsim   
+ target sim --board=jmr3904pal --memory-region 0xffff8000,0x900 \ 
+            --memory-region 0xffffe000,0x4 \          
+            --memory-region 0xb2100000,0x4   
+ rbreak cyg_test_exit
+ rbreak cyg_assert_fail
+end</PROGRAMLISTING>
+<PARA>You can then connect to the simulator by invoking the command <command>tsim</command> on
+the command line:</PARA>
+<PROGRAMLISTING>(gdb) tsim</PROGRAMLISTING>
+<PARA>You can achieve the same effect by typing out the macro&rsquo;s
+content on the command line if necessary.</PARA>
+</SECT1>
+
+<!-- ==================================================== -->
+
+<SECT1 id="setup-tx49-ref4955">
+<TITLE>TX49 Hardware Setup</TITLE>
+<PARA>The eCos installation CD contains a copy of the eCos GDB stubs
+in  SREC format which must be programmed into the board&rsquo;s
+FLASH memory.</PARA>
+<SECT2>
+<TITLE>Preparing the GDB stubs</TITLE>
+<PARA>These stub preparation steps are not strictly necessary as
+the eCos distribution ships with pre-compiled stubs in the directory <filename>loaders/tx49-ref4955</filename> relative
+to the installation root.</PARA>
+<SECT3>
+<TITLE>Building the GDB stub image with the eCos Configuration Tool</TITLE>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>		  Start with a new document - selecting the 
+<EMPHASIS>File-&#62;New</EMPHASIS>
+ menu item if necessary to do this.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Choose the 
+<EMPHASIS>Build-&#62;Templates</EMPHASIS>
+ menu item, and then select the TX49 REF4955 hardware.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>While still displaying the 
+<EMPHASIS>Build-&#62;Templates</EMPHASIS>
+ dialog box, select the stubs package template to build a GDB stub.
+Click 
+<EMPHASIS>OK</EMPHASIS>.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Build eCos stubs using 
+<EMPHASIS>Build-&#62;Library</EMPHASIS>.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>When the build completes, the image files can be found
+in the bin/ subdirectory of the install tree. GDB stub
+images have the prefix gdb_module.</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT3>
+<SECT3>
+<TITLE> Building the GDB stub image with ecosconfig</TITLE>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>		  Make an empty directory to contain the build tree,
+		  and cd into it.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>To build a GDB stub ROM image, enter the command:</PARA>
+<PROGRAMLISTING>$ ecosconfig new ref4955 stubs </PROGRAMLISTING>
+</LISTITEM>
+<LISTITEM>
+<PARA>Enter the commands:</PARA>
+<PROGRAMLISTING>$ ecosconfig tree
+$ make</PROGRAMLISTING>
+</LISTITEM>
+<LISTITEM>
+<PARA>When the build completes, the image files can be found
+in the bin/ subdirectory of the install tree. GDB stub
+images have the prefix gdb_module.</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT3>
+</SECT2>
+<SECT2>
+<TITLE> Installing GDB stubs into FLASH</TITLE>
+<PARA>Boot into the board&rsquo;s firmware in little-endian mode:</PARA>
+<PARA>Set the switches like this:   </PARA>
+<PARA>SW1: 10000000 (first lever up, the rest down)   
+SW2: 10000010</PARA>
+<PARA>Connect serial cable on the lower connector, configure terminal
+emulator for 38400, 8-N-1.</PARA>
+<PARA>When booting the board, you should get this prompt:</PARA>
+<PROGRAMLISTING>HCP5 rev 0.9B .    
+HCP5?</PROGRAMLISTING>
+<PARA>Select o (option), a (FLASH) and b (boot write). You should
+see this:</PARA>
+<PROGRAMLISTING>Boot ROM Write   
+ROM address-ffffffffbd000000, Boot Bus-[32bit]  
+ID2 0 4 ffffffffa002ad40  
+zzz SS-40000 IV-1 CS-20000 CC-2   
+Flash ROM-[28F640J5], [16bit chip] * 2 * 1
+Block size-00040000  count-64  
+ROM adr ffffffffbd000000-ffffffffbe000000  mask-00fc0000
+Send Srecord file sa=00000000 size=ffffffffffffffff
+ra=fffffffffe000000
+	  </PROGRAMLISTING>
+<PARA>Now send the stub SREC data down to the board using the terminal
+ emulator&rsquo;s &lsquo;send ASCII&rsquo; (or similar)
+functionality. </PARA>
+<PARA>Red Hat has experienced some sensitivity to how fast the data
+is written to the board. Under Windows you should configure Minicom
+to use a line delay of 100 milliseconds. Under Linux, use the slow_cat.tcl
+ script:</PARA>
+<PROGRAMLISTING>% cd BASE_DIR/packages/hal/mips/ref4955/<replaceable>&Version;</replaceable>/misc
+% slow_cat.tcl &lt; [path]/gdb_module.srec &#62; /dev/ttyS0</PROGRAMLISTING>
+<PARA>Power off the board, and change it to boot the GDB stubs in
+big-endian mode by setting the switches like this:</PARA>
+<PARA>SW1: 00000000 (all levers down)   
+SW2: 10001010</PARA>
+<PARA>The GDB stubs allow communication with GDB using the serial
+port at connector PJ7A (lower connector). The communication parameters
+are  fixed at 38400 baud, 8 data bits, no parity bit and 1 stop
+bit  (8-N-1). No flow control is employed. Connection to the host
+computer should be made using a straight through serial cable.</PARA>
+</SECT2>
+</SECT1>
+
+<!-- ==================================================== -->
+
+<SECT1 id="setup-vr4300-vrc4373">
+<TITLE>VR4300 Hardware Setup</TITLE>
+<PARA>The eCos Developer&rsquo;s Kit package comes with an EPROM
+which provides GDB support for the NEC
+VRC4373 evaluation board. An image of this EPROM is also provided
+at <filename>loaders/vr4300-vrc4373/gdbload.bin</filename> under
+the root of your eCos installation.</PARA>
+<PARA>The EPROM is installed to socket U12 on the board. Attention
+should be paid to the correct orientation of the EPROM during installation.
+Only replace the board&quot;s existing ROM using a proper PLCC
+extraction tool, as the socket would otherwise risk getting damaged. </PARA>
+<PARA>The GDB stub in the EPROM allows communication with GDB using
+the serial port at connector J1. The communication parameters are
+fixed at 38400 baud, 8 data bits, no parity bit and 1 stop bit (8-N-1).
+No flow control is employed. Connection to the host computer should
+be made using a straight-through serial cable. </PARA>
+</SECT1>
+<SECT1 id="setup-vr4300-vrc4375">
+<TITLE>VRC4375 Hardware Setup</TITLE>
+<PARA>For information about setting up the VRC4375 to run with RedBoot,
+consult the RedBoot User&quot;s Guide. If using serial debugging,
+the serial line runs at 38400 baud 8-N-1 and should be connected
+to the debug host using the cable supplied with the board.</PARA>
+</SECT1>
+<SECT1 id="setup-mips-atlasmalta">
+<TITLE>Atlas/Malta Hardware Setup</TITLE>
+<PARA>For information about setting up the Atlas and Malta boards to
+run with RedBoot, consult the RedBoot User&quot;s Guide.</PARA>
+</SECT1>
+<SECT1 id="setup-ppc-cogent">
+<TITLE>PowerPC Cogent Hardware Setup</TITLE>
+<PARA>The eCos Developer&rsquo;s Kit package comes with an EPROM
+which provides GDB support for the Cogent
+evaluation board. An image of this EPROM is also provided at
+	  <filename>loaders/powerpc-cogent/gdbload.bin</filename> under
+the root of your eCos installation. The same EPROM and image can
+be used on all three supported daughterboards: CMA287-23 (MPC823),
+CMA287-50 (MPC850), and CMA286-60 (MPC860).</PARA>
+<PARA>The EPROM is installed to socket U4 on the board. Attention
+should be paid to the correct orientation of the EPROM during installation. </PARA>
+<PARA>If you are going to burn a new EPROM using the binary image,
+be careful to get the byte order correct. It needs to be big-endian.
+If the EPROM burner software has a hex-editor, check that the first
+few bytes of the image look like: </PARA>
+<PROGRAMLISTING>00000000: 3c60 fff0 6063 2000 7c68 03a6 4e80 0020 &lt;&grave;..&grave;c.|h..N.. </PROGRAMLISTING>
+<PARA>If the byte order is wrong you will see 603c instead of 3c60
+etc. Use the EPROM burner software to make a byte-swap before you
+burn to image to the EPROM. </PARA>
+<PARA>If the GDB stub EPROM you burn does not work, try reversing
+the byte-order, even if you think you have it the right way around.
+At least one DOS-based EPROM burner program is known to have the
+byte-order upside down.</PARA>
+<PARA>The GDB stub in the EPROM allows communication with GDB using
+the serial port at connector P12 (CMA101) or P3 (CMA102). The communication parameters
+are fixed at 38400 baud, 8 data bits, no parity bit and 1 stop bit
+(8-N-1). No flow control is employed. Connection to the host computer
+should be made using a dedicated serial cable as specified in the
+Cogent CMA manual.</PARA>
+<SECT2>
+<TITLE>Installing the Stubs into ROM</TITLE>
+<SECT3>
+<TITLE>Preparing the Binaries</TITLE>
+<PARA>These two binary preparation steps are not strictly necessary
+as the eCos distribution ships with pre-compiled binaries in the
+directory <filename>loaders/powerpc-cogent</filename> relative to the installation
+root.</PARA>
+<SECT4>
+<TITLE>Building the ROM images with the eCos Configuration Tool</TITLE>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>Start with a new document - selecting the 
+<EMPHASIS>File-&#62;New</EMPHASIS>
+ menu item if necessary to do this.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Choose the 
+<EMPHASIS>Build-&#62;Templates</EMPHASIS>
+ menu item, and then select the PowerPC    CMA28x hardware.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>While still displaying the 
+<EMPHASIS>Build-&#62;Templates</EMPHASIS>
+ dialog box, select the &ldquo;stubs&rdquo; package template
+to build a GDB stub. Click 
+<EMPHASIS>OK</EMPHASIS>.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Build eCos using 
+<EMPHASIS>Build-&#62;Library</EMPHASIS>.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>When the build completes, the image files can be found
+in the bin/ subdirectory of the install tree. GDB stub
+ROM images have the  prefix &ldquo;gdb_module&rdquo;.</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT4>
+<SECT4>
+<TITLE>Building the ROM images with ecosconfig</TITLE>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>Make an empty directory to contain the build tree,
+and cd into it.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>To build a GDB stub ROM image, enter the command: 
+  
+<PROGRAMLISTING>$ ecosconfig new cma28x stubs </PROGRAMLISTING></PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Enter the commands: 
+
+<PROGRAMLISTING>$ ecosconfig tree
+$ make</PROGRAMLISTING>
+ </PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>When the build completes, the image files can be found
+in the bin/ subdirectory of the install tree. GDB stub
+ROM images have the prefix &ldquo;gdb_module&rdquo;.</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT4>
+</SECT3>
+<SECT3>
+<TITLE> Installing the Stubs into ROM or FLASH</TITLE>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>Program the binary image file gdb_module.bin
+into ROM or FLASH referring to the instructions of your ROM programmer.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA> Plug the ROM/FLASH into socket U4 as described
+at the beginning of this <EMPHASIS>Hardware Setup</EMPHASIS> section.</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT3>
+</SECT2>
+</SECT1>
+<SECT1 id="setup-ppc-mbx860">
+<TITLE>PowerPC MBX860 Hardware Setup</TITLE>
+<PARA>The eCos Developer&rsquo;s Kit package comes with an EPROM
+which provides GDB support for the Motorola
+PowerPC MBX860 evaluation board. An image of this EPROM is also
+provided at <filename>loaders/powerpc-mbx/gdbload.bin</filename> under
+the root of your eCos installation.</PARA>
+<PARA>The EPROM is installed to socket XU1 on the board. Attention
+should be paid to the correct orientation of the EPROM during installation.
+Only replace the board&quot;s existing ROM using a proper PLCC
+extraction tool, as the socket would otherwise risk getting damaged.</PARA>
+<PARA>The GDB stub in the EPROM allows communication with GDB using
+the serial port at connector SMC1/COM1. The communication
+parameters are fixed at 38400 baud, 8 data bits, no parity bit and
+1 stop bit (8-N-1). No flow control is employed. Connection to the
+host computer should be made using a suitable serial cable.</PARA>
+<PARA>In order to make the board execute the EPROM that you just
+installed (rather than the on-board FLASH memory), it may be necessary
+move some links on the board. Specifically, ensure that link J4
+is in position 1-2. If in doubt, refer to the MBX documentation
+from Motorola, ensuring that Boot Port Size=8 Bits/ROM
+for BOOT (CS#7), in their terminology.</PARA>
+<SECT2>
+<TITLE>Installing the Stubs into FLASH</TITLE>
+<SECT3>
+<TITLE>Preparing the Binaries</TITLE>
+<PARA>These two binary preparation steps are not strictly necessary
+as the eCos distribution ships with pre-compiled binaries in the
+directory <filename>loaders/powerpc-mbx</filename> relative to the installation
+root.</PARA>
+<SECT4>
+<TITLE>Building the ROM images with the eCos Configuration Tool</TITLE>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>Start with a new document - selecting the 
+<EMPHASIS>File-&#62;New</EMPHASIS>
+ menu item if necessary to do this.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Choose the 
+<EMPHASIS>Build-&#62;Templates</EMPHASIS>
+ menu item, and then select the PowerPC    Motorola MBX860/821
+hardware.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>While still displaying the 
+<EMPHASIS>Build-&#62;Templates</EMPHASIS>
+ dialog box, select the &ldquo;stubs&rdquo; package template
+to build a GDB stub. Click 
+<EMPHASIS>OK</EMPHASIS>.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Build eCos using 
+<EMPHASIS>Build-&#62;Library</EMPHASIS>. </PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>When the build completes, the image files can be found
+in the bin/ subdirectory of the install tree. GDB stub
+ROM images have the prefix &ldquo;gdb_module&rdquo;.</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT4>
+<SECT4>
+<TITLE>Building the ROM images with ecosconfig</TITLE>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>Make an empty directory to contain the build tree,
+and cd into it.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>To build a GDB stub ROM image, enter the command: 
+  
+<PROGRAMLISTING>$ ecosconfig new mbx stubs </PROGRAMLISTING></PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Enter the commands: 
+    
+<PROGRAMLISTING>$ ecosconfig tree
+$ make </PROGRAMLISTING></PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>When the build completes, the image files can be found
+in the bin/ subdirectory of the install tree. GDB stub
+ROM images have the prefix &ldquo;gdb_module&rdquo;.</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT4>
+</SECT3>
+<SECT3>
+<TITLE> Installing the Stubs into ROM</TITLE>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA> Program the binary image file gdb_module.bin
+into ROM or FLASH referring to the instructions of your ROM programmer.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA> Plug the ROM/FLASH into socket XU1 as described
+near the beginning of this <EMPHASIS>Hardware Setup</EMPHASIS> section.</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT3>
+<SECT3>
+<TITLE>Installing the Stubs into FLASH</TITLE>
+<PARA>This assumes you have EPPC-Bug in the on-board FLASH. This
+can be determined by setting up the board according to the below
+instructions and powering up the board. The EPPC-Bug prompt should
+appear on the SMC1 connector at 9600 baud, 8N1.</PARA>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>Set jumper 3 to 2-3     [allow XU2 FLASH to
+be programmed]</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Set jumper 4 to 2-3     [boot EPPC-Bug]</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+<SECT4>
+<TITLE> Program FLASH</TITLE>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA> Prepare EPPC-Bug for download:</PARA>
+<PROGRAMLISTING>EPPC-Bug&#62;lo 0</PROGRAMLISTING>
+<PARA>At this point the monitor is ready for input. It will not return
+the prompt until the file has been downloaded.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Use the terminal emulator&rsquo;s ASCII download feature
+(or a simple clipboard     copy/paste operation) to download
+the gdb_module.srec data.
+
+Note that on Linux, Minicom&rsquo;s ASCII download feature seems
+to be broken. A workaround is to load the file into Emacs (or another
+editor) and copy the full contents to the clipboard. Then press
+the mouse paste-button (usually the middle one) over the Minicom
+window.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Program the FLASH with the downloaded data:
+    
+<PROGRAMLISTING>EPPC-Bug&#62;pflash 40000 60000 fc000000</PROGRAMLISTING></PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Switch off the power, and change jumper 4 to 1-2. Turn
+on the power again. The board should now boot using the newly programmed
+stubs.</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT4>
+</SECT3>
+</SECT2>
+</SECT1>
+<SECT1 id="setup-ppc-sim">
+<TITLE>PowerPC Architectural Simulator Setup</TITLE>
+<PARA>The PowerPC simulator is an architectural simulator which
+implements all the features of the PowerPC needed to run eCos. The
+current implementation provides accurate simulation of the instruction
+set and timers, as well as having generic support for diagnostic
+output  and exceptions.</PARA>
+<PARA>The simulator also allows devices to be simulated, but no
+device simulation support has been defined for the serial device
+drivers in this release.</PARA>
+<PARA>To simplify connection to the simulator, you are advised to
+create a GDB macro by putting the following code in your personal
+GDB start-up file (gdb.ini on Windows and .gdbinit on UNIX).</PARA>
+<PROGRAMLISTING>define psim   
+ target sim -o &rsquo;/iobus/pal&commat;0xf0001000/reg 0xf0001000 32&rsquo;   
+ rbreak cyg_test_exit   
+ rbreak cyg_assert_fail  
+end</PROGRAMLISTING>
+<PARA>You can then connect to the simulator by invoking the command <command>psim</command> on
+the command line:</PARA>
+<PROGRAMLISTING>(gdb) psim</PROGRAMLISTING>
+<PARA>You can achieve the same effect by typing out the macro&rsquo;s
+content on the command line if necessary.</PARA>
+<NOTE>
+<PARA>The PowerPC simulator cannot execute binaries built for any
+of the supported hardware targets. You must generate a configuration
+using the PowerPC simulator platform: 
+<PROGRAMLISTING>$ ecosconfig new psim</PROGRAMLISTING>
+ or some such.</PARA>
+</NOTE>
+</SECT1>
+<SECT1 id="setup-sparclite-sleb">
+<TITLE>SPARClite Hardware Setup</TITLE>
+<PARA>The eCos Developer&rsquo;s Kit package comes with a ROM
+which provides GDB support for the Fujitsu SPARClite Evaluation
+Board by way of CygMon<PRODUCTNAME>. </PRODUCTNAME></PARA>
+<PARA>An image of this ROM is also provided at
+	  <filename>BASE_DIR/loaders/sparclite-sleb/cygmon.bin.</filename> The
+ROM is installed in socket IC9 on the evaluation board. Attention
+should be paid to the correct orientation of the ROM during installation.</PARA>
+<PARA>The GDB stub allows communication with GDB using a TCP channel
+via the ethernet port at connector J5.</PARA>
+<SECT2>
+<TITLE><!-- <index></index> --><!-- <xref> -->Ethernet Setup</TITLE>
+<PARA>The ethernet setup is described in the board&rsquo;s manual,
+but here is a recapitulation.</PARA>
+<PARA>Set the board&rsquo;s ethernet address using SW1 on the
+motherboard:</PARA>
+<PROGRAMLISTING>	    SW1-4 SW1-3 SW1-2 SW1-1    Ethernet Address
+	    ----- ----- ----- -----    ----------------
+	    OFF   OFF   OFF   OFF     No ethernet, use serial
+	    OFF   OFF   OFF    ON     00:00:0E:31:00:01
+	    OFF   OFF    ON   OFF     00:00:0E:31:00:02
+	    OFF   OFF    ON    ON     00:00:0E:31:00:03
+	    OFF    ON   OFF   OFF     00:00:0E:31:00:04
+	    OFF    ON   OFF    ON     00:00:0E:31:00:05
+	    OFF    ON    ON   OFF     00:00:0E:31:00:06
+	    OFF    ON    ON    ON     00:00:0E:31:00:07
+	    ON    OFF   OFF   OFF     00:00:0E:31:00:08
+	    ON    OFF   OFF    ON     00:00:0E:31:00:09
+	    ON    OFF    ON   OFF     00:00:0E:31:00:0A
+	    ON    OFF    ON    ON     00:00:0E:31:00:0B
+	    ON     ON   OFF   OFF     00:00:0E:31:00:0C
+	    ON     ON   OFF    ON     00:00:0E:31:00:0D
+	    ON     ON    ON   OFF     00:00:0E:31:00:0E
+	    ON     ON    ON    ON     00:00:0E:31:00:0F</PROGRAMLISTING>
+<SECT3><!-- <index></index> -->
+<TITLE>BOOTP/DHCP service on Linux</TITLE>
+<PARA>Configure the BOOTP or DHCP server on the network to recognize
+the evaluation board&rsquo;s ethernet address so it can assign
+the board an IP address. Below is a sample DHCP server configuration
+from a Linux system (<filename>/etc/dhcpd.conf</filename>).
+It shows a setup for three evaluation boards.</PARA>
+<PROGRAMLISTING>#
+# DHCP server configuration.
+#
+allow bootp;
+
+subnet 192.168.1.0 netmask 255.255.255.0 {
+  host mb831evb {
+    hardware ethernet 00:00:0e:31:00:01;
+    fixed-address mb831evb;
+  }
+  host mb832evb {
+    hardware ethernet 00:00:0e:31:00:02;
+    fixed-address mb832evb;
+  }
+  host mb833evb {
+    hardware ethernet 00:00:0e:31:00:03;
+    fixed-address mb833evb;
+  }
+} </PROGRAMLISTING>
+</SECT3>
+<SECT3><!-- <index></index> -->
+<TITLE>BOOTP/DHCP boot process</TITLE>
+<PARA>Even when configured to use a TCP channel, CygMon will still
+print a boot message to the serial channel. If the BOOTP process
+was successful and an IP address was found, a message &ldquo;BOOTP
+found xxx.xxx.xxx.xxx&rdquo; will be printed where xxx.xxx.xxx.xxx
+is the IP address assigned by the BOOTP or DHCP server. If the BOOTP
+process fails, a message indicating failure will be printed and
+the serial port will be used as the debug channel.</PARA>
+<PARA>Once the board finds an IP address it will respond to ICMP
+echo request packets (ping). This gives a simple means to test the
+health of the board.</PARA>
+<PARA>As described in &ldquo;Ethernet Setup&rdquo; on&nbsp;page&nbsp;72,
+it should now be possible to connect to the SPARClite board from
+within GDB by using the command:</PARA>
+<PROGRAMLISTING>(gdb) target remote &lt;host&#62;:1000</PROGRAMLISTING>
+</SECT3>
+</SECT2>
+<SECT2>
+<TITLE>Serial Setup</TITLE>
+<PARA>The CygMon stubs also allow communication with GDB by way
+of the serial port at connector CON1. The communication parameters
+are fixed at 19200 baud, 8 data bits, no parity bit and 1 stop bit
+(8-N-1). No flow control is employed. Connection to the host computer
+should be made using a null modem cable. A gender changer may also
+be required.</PARA>
+</SECT2>
+</SECT1>
+<SECT1 id="setup-sparclite-sim">
+<TITLE>SPARClite Architectural Simulator Setup</TITLE>
+<PARA>The ESA SPARClite simulator is an architectural simulator
+which implements all the features of the SPARClite needed to run
+eCos. The current implementation provides accurate simulation of
+the instruction set, interrupt controller, and timers, as well as
+having generic support for diagnostic output and exceptions.</PARA>
+<PARA>Note that the ESA SPARClite simulator is unsupported, but
+is included in the release as a convenience.</PARA>
+<PARA>To simplify connection to the simulator, you are advised to
+create a GDB macro by putting the following code in your personal
+GDB start-up file (gdb.ini on Windows and .gdbinit on UNIX).</PARA>
+<PROGRAMLISTING>define ssim   
+ target sim -nfp -sparclite -dumbio   
+ rbreak cyg_test_exit   
+ rbreak cyg_assert_fail  
+end</PROGRAMLISTING>
+<PARA>You can then connect to the simulator by invoking the command <command>ssim</command> on
+the command line:</PARA>
+<PROGRAMLISTING>(gdb) ssim</PROGRAMLISTING>
+<PARA>You can achieve the same effect by typing out the macro&rsquo;s
+content on the command line if necessary.</PARA>
+</SECT1>
+<SECT1 ID="setup-arm-pid">
+<TITLE><!-- <index></index> --><!-- <xref> -->ARM PID Hardware Setup</TITLE>
+<PARA>eCos comes with two ROM images that provide GDB support for
+the ARM PID board. The first ROM image provides a port of the CygMon
+ROM monitor, which includes a command-line interface and a GDB remote
+stub. The second ROM image provides a remote GDB stub only, which
+is a minimal environment for downloading and debugging eCos programs
+solely using GDB.</PARA>
+<PARA>eCos, CygMon and the GDB stubs all support the PID fitted
+with both ARM7T and ARM9 daughterboards. CygMon and the stubs can
+be programmed into either the programmable ROM (U12) or the FLASH
+(U13). Pre-built forms of both ROM images are provided in the directory
+loaders/arm-pid under the root of your eCos installation,
+along with a tool that will program the stubs into the FLASH memory on
+the board. CygMon images are prefixed with the name 'cygmon' and
+GDB stub ROM images are given the prefix 'gdb_module'.
+Images may be provided in a number of formats including ELF (.img
+extension), binary (.bin extension) and SREC (.srec extension).
+Note that some unreliability has been experienced in downloading
+files using Angel 1.00. Angel 1.02 appears to be more robust in
+this application.</PARA>
+<SECT2>
+<TITLE>Installing the Stubs into FLASH</TITLE>
+<SECT3>
+<TITLE>Preparing the Binaries</TITLE>
+<PARA>These two binary preparation steps are not strictly necessary
+as the eCos distribution ships with pre-compiled binaries in the
+directory loaders/arm-pid relative to the installation
+root.</PARA>
+</SECT3>
+<SECT3>
+<TITLE>Building the ROM images with the eCos Configuration Tool</TITLE>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>Start with a new document - selecting the 
+<EMPHASIS>File</EMPHASIS>-&#62;<EMPHASIS>New</EMPHASIS>
+ menu item if necessary to do this.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Choose the 
+<EMPHASIS>Build</EMPHASIS>
+-&#62;
+<EMPHASIS>Templates</EMPHASIS>
+ menu item, and then select the ARM PID hardware.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>While still displaying the 
+<EMPHASIS>Build</EMPHASIS>
+-&#62;
+<EMPHASIS>Templates</EMPHASIS>
+ dialog box, select either the "stubs" package template to build
+a GDB stub image, or the "cygmon" template to build the CygMon ROM
+Monitor. Click 
+<EMPHASIS>OK</EMPHASIS>.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Build eCos using 
+<EMPHASIS>Build</EMPHASIS>
+-&#62;
+<EMPHASIS>Library</EMPHASIS></PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>When the build completes, the image files can be found
+in the bin/ subdirectory of the install tree. GDB stub
+ROM images have the prefix "gdb_module". CygMon images
+have the prefix "cygmon".</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT3>
+<SECT3>
+<TITLE>Building the ROM images with ecosconfig</TITLE>
+<!-- <PARA>(See <XREF LINKEND="USING-ECOSCONFIG-ON-UNIX">)</PARA> -->
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>		    Make an empty directory to contain the build tree,
+and cd into it.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>To build a GDB stub ROM image, enter the command:</PARA>
+<PROGRAMLISTING>$ ecosconfig new pid stubs</PROGRAMLISTING>
+<PARA>or to build a CygMon ROM monitor image, enter the command:</PARA>
+<PROGRAMLISTING>$ ecosconfig new pid cygmon</PROGRAMLISTING>
+</LISTITEM>
+<LISTITEM>
+<PARA>Enter the commands:</PARA>
+<PROGRAMLISTING>$ ecosconfig tree
+$ make</PROGRAMLISTING>
+</LISTITEM>
+<LISTITEM>
+<PARA>When the build completes, the image files can be found
+in the bin/ subdirectory of the install tree. GDB stub
+ROM images have the prefix "gdb_module". CygMon images
+have the prefix "cygmon".</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT3>
+<SECT3>
+<TITLE>Building the FLASH Tool with the eCos Configuration Tool</TITLE>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>Start with a new document - selecting the 
+<EMPHASIS>File</EMPHASIS>-&#62;<EMPHASIS>New</EMPHASIS>
+ menu item if necessary to do this.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Choose the
+<EMPHASIS>Build</EMPHASIS>-&#62;<EMPHASIS>Templates</EMPHASIS>
+ menu item, and then select the ARM PID hardware.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Enable the "Build flash programming tool" option in the
+ARM PID HAL (CYGBLD_BUILD_FLASH_TOOL)
+and resolve any resulting configuration conflicts.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Build eCos using 
+<EMPHASIS>Build</EMPHASIS>
+-&#62;
+<EMPHASIS>Library</EMPHASIS></PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>When the build completes, the FLASH tool image file can
+be found in the bin/ subdirectory of the install tree,
+with the prefix "prog_flash"</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT3>
+<SECT3>
+<TITLE>Building the FLASH Tool with ecosconfig</TITLE>
+<!-- <PARA>(See <XREF LINKEND="USING-ECOSCONFIG-ON-UNIX">)</PARA> -->
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>		    Make an empty directory to contain the build tree,
+and cd into it
+		    </PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Enter the command:</PARA>
+<PROGRAMLISTING>$ ecosconfig new pid</PROGRAMLISTING>
+</LISTITEM>
+<LISTITEM>
+<PARA>Edit the file ecos.ecc and enable the option CYGBLD_BUILD_FLASH_TOOL
+by uncommenting its user_value property and setting it
+to 1.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Enter the commands:</PARA>
+<PROGRAMLISTING>$ ecosconfig resolve</PROGRAMLISTING>
+<PARA>[there will be some output]</PARA>
+<PROGRAMLISTING>$ ecosconfig tree
+$ make</PROGRAMLISTING>
+</LISTITEM>
+<LISTITEM>
+<PARA>When the build completes, the FLASH tool image file can
+be found in the bin/ subdirectory of the install tree,
+with the prefix "prog_flash"</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT3>
+<SECT3>
+<TITLE>Prepare the Board for FLASH Programming</TITLE>
+<PARA>Each time a new image is to be programmed in the FLASH, the
+jumpers on the board must be set to allow Angel to run:</PARA>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>		    Set jumper 7-8 on LK6   [using the Angel code
+in the 16 bit EPROM]</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Set jumper 5-6 on LK6   [select 8bit ROM mode]</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Set jumper LK18         [ROM remap - this is
+also required for eCos]</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Set S1 to 0-0-1-1       [20MHz operation]</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Open jumper LK4  [enable little-endian operation]
+
+Attach a serial cable from Serial A on the PID board to connector
+1 on the development system. This is the cable through which the
+binaries will be downloaded. Attach a serial cable from Serial B
+on the PID board to connector 2 on the development system (or any
+system that will work as a terminal). Through this cable, the FLASH
+tool will write its instructions (at 38400 baud).</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT3>
+<SECT3>
+<TITLE>Program the FLASH</TITLE>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>Download the FLASH ROM image onto the PID board. For
+example. for the GDB stubs image:
+
+<PROGRAMLISTING>bash$ arm-elf-gdb -nw gdb_module.img
+GNU gdb 4.18-DEVTOOLSVERSION
+Copyright 1998 Free Software Foundation, Inc.
+GDB is free software, covered by the GNU General Public License,
+and you are welcome to change it and/or distribute copies
+of it under certain conditions. Type "show copying" to see the conditions.
+There is absolutely no warranty for GDB. Type "show warranty" for details.
+This GDB was configured as "--host=i586-pc-cygwin32 --target=arm-elf".
+(no debugging symbols found)...
+(gdb) target rdi s=com1
+Angel Debug Monitor for PID (Built with Serial(x1), Parallel, DCC) 1.00
+(Advanced RISC Machines SDT 2.10)
+Angel Debug Monitor rebuilt on Jan 20 1997 at 02:33:43
+Connected to ARM RDI target.
+(gdb) load
+Loading section .rom_vectors, size 0x44 lma 0x60000
+Loading section .text, size 0x1f3c lma 0x60044
+Loading section .rodata, size 0x2c lma 0x61f80
+Loading section .data, size 0x124 lma 0x61fac
+Start address 0x60044 , load size 8400
+Transfer rate: 5169 bits/sec.
+(gdb) q 
+The program is running.  Exit anyway? (y or n) y </PROGRAMLISTING>
+
+<NOTE>
+<PARA> On a UNIX or Linux system, the serial port must be
+ /dev/ttyS0 instead of COM1.
+ You need to make sure that the /dev/ttyS0 files
+have the right permissions:
+<SCREEN>$ su
+ Password:
+ # chmod o+rw /dev/ttyS0*
+ # exit 
+		      </SCREEN>
+If you are programming the GDB stub image, it will now be located
+at 0x60000..0x64000. If you are programming the Cygmon ROM Monitor,
+it will be located at 0x60000..0x80000.</PARA>
+</NOTE></PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Now download the FLASH programmer tool</PARA>
+<PROGRAMLISTING>bash$ arm-elf-gdb prog_flash.img 
+GNU gdb 4.18-DEVTOOLSVERSION
+Copyright 1998 Free Software Foundation, Inc.
+GDB is free software, covered by the GNU General Public License,
+and you are welcome to change it and/or distribute
+copies of it under certain conditions. Type "show copying" to see
+the conditions. There is absolutely no warranty for GDB.  Type "show
+warranty" for details.
+This GDB was configured as "--host=i586-pc-cygwin32 --target=arm-elf".
+(gdb) target rdi s=com1
+Angel Debug Monitor for PID (Built with Serial(x1), Parallel, DCC) 1.00
+(Advanced RISC Machines SDT 2.10)
+Angel Debug Monitor rebuilt on Jan 20 1997 at 02:33:43
+Connected to ARM RDI target.
+(gdb) load
+Loading section .rom_vectors, size 0x44 lma 0x40000
+Loading section .text, size 0x44a4 lma 0x40044
+Loading section .rodata, size 0x318 lma 0x444e8
+Loading section .data, size 0x1c8 lma 0x44800
+Start address 0x40044 , load size 18888
+Transfer rate: 5596 bits/sec.
+(gdb) c</PROGRAMLISTING>
+</LISTITEM>
+<LISTITEM>
+<PARA>The FLASH tool will output some text on the board serial
+port B at 38400 baud:</PARA>
+<PROGRAMLISTING>ARM
+eCos
+
+FLASH here!
+manuf: 8, device: 40
+Error: Wrong Manufaturer: 08
+... Please change FLASH jumper</PROGRAMLISTING>
+</LISTITEM>
+<LISTITEM>
+<PARA>This text is repeated until you remove the jumper 7-8
+on LK6. Then the output will be:</PARA>
+<PROGRAMLISTING>manuf: 1F, device: A4
+AT29C040A recognised
+About to program FLASH using data at 60000..64000
+*** Press RESET now to abort!</PROGRAMLISTING>
+</LISTITEM>
+<LISTITEM>
+<PARA> You have about 10 seconds to abort the operation by pressing
+reset. After this timeout, the FLASH programming happens:</PARA>
+<SCREEN>...Programming FLASH 
+All done!</SCREEN>
+</LISTITEM>
+<LISTITEM>
+<PARA>Quit/kill the GDB process, which will hang.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Next time you reset the board, the stub will be in control,
+communicating on Serial A at 38400 baud.</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+<NOTE>
+<PARA>If you do not have two serial ports available on your host
+computer, you may still verify the FLASH programming completed successfully
+by quitting/killing the GDB process after running "c" in
+step 2 above. Then switch the serial cable on the PID from Serial
+A to Serial B and run a terminal emulator on the host computer.
+In a few seconds you should see the the repeated text described
+in step 2 above and you may continue the remaining steps as normal.</PARA>
+</NOTE>
+</SECT3>
+<SECT3>
+<TITLE>Programming the FLASH for big-endian mode</TITLE>
+<PARA>The process is almost identical to the previous instructions
+which apply to a PID board running in little-endian mode only.</PARA>
+<PARA>The only adjustments to make are that if programming a <EMPHASIS>GDB</EMPHASIS> stub
+ROM image (or CygMon ROM monitor image), you must enable the option "Use
+Big-endian mode" in the <EMPHASIS>eCos Configuration Tool</EMPHASIS> (CYGHWR_HAL_ARM_BIGENDIAN
+if using ecosconfig and editing ecos.ecc).</PARA>
+<PARA>When programming the FLASH there are two options:</PARA>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>Program FLASH using the little-endian FLASH tool. After
+powering off, replace the ROM controller with the special big-endian
+version which can be acquired from ARM. (This has not been tested
+by Red Hat).</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Use a special big-endian version of the FLASH tool which
+byte-swaps all the words as they are written to the FLASH.</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+<PARA>Build this tool by enabling the "Build flash programming tool
+for BE images on LE boards" option (CYGBLD_BUILD_FLASH_TOOL_BE),
+resulting in a utility with the prefix "prog_flash_BE_image_LE_system"
+which should be used instead of "prog_flash".</PARA>
+<PARA>Note that there is a limitation to this method: no sub-word
+data can be read from the ROM. To work around this, the .rodata
+section is folded into the .data section and thus copied to RAM
+before the system starts.</PARA>
+<PARA>Given that Thumb instructions are 16 bit, it is not possible
+to run ROM-startup Thumb binaries on the PID board using this method.</PARA>
+<PARA>When the image has been programmed, power off the board, and
+set jumper LK4 to enable big-endian operation.</PARA>
+</SECT3>
+</SECT2>
+<SECT2>
+<TITLE>Installing the Stubs into ROM</TITLE>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>Program the binary image file gdb_module.bin
+into ROM referring to the instructions of your ROM programmer.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Plug the ROM into socket U12 and install jumper LK6 pins
+7-8 to enable the ROM.</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT2>
+</SECT1>
+<SECT1 id="setup-arm-aeb1">
+<TITLE><!-- <index></index> -->ARM AEB-1 Hardware Setup</TITLE>
+<SECT2>
+<TITLE>Overview</TITLE>
+<PARA>The ARM AEB-1 comes with tools in ROM. These include a simple
+FLASH management tool and the Angel&reg; monitor. eCos for
+the ARM AEB-1 comes with GDB stubs suitable for programming into
+the onboard FLASH. GDB is the preferred debug environment for GDB,
+and while Angel provides a subset of the features in the eCos GDB
+stub, Angel is unsupported.</PARA>
+<PARA>Both eCos and the stubs support both Revision B and Revision
+C of the AEB-1 board. Stub ROM images for both types of board can
+be found in the loaders/arm-aeb directory under the root
+of your eCos installation. You can select which board you are using
+by selecting either the aeb or aebC platform by selecting the appropriate
+platform HAL in the <EMPHASIS>eCos Configuration Tool</EMPHASIS>.</PARA>
+<PARA>The GDB stub can be downloaded to the board for programming
+in the FLASH using the board's on-board ROM monitor:</PARA>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>talk to the AEB-1 board with a terminal emulator (or
+a real terminal!)</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>use the board's rom menu to download a UU-encoded
+version of the GDB stubs which will act as a ROM monitor</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>tell the board to use this new monitor, and then hook
+GDB up to it for real debugging</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT2>
+<SECT2>
+<TITLE>Talking to the Board</TITLE>
+<PARA>Connect a terminal or computer's serial port to the
+ARM AEB-1. On a PC with a 9-pin serial port, you can use the cable
+shipped by ARM with no modification. </PARA>
+<PARA>Set the terminal or terminal emulator to 9600N1 (9600 baud,
+no parity, 1 stop bit). </PARA>
+<PARA>Reset the board by pressing the little reset button on the
+top. You will see the following text: </PARA>
+<PROGRAMLISTING>	ARM Evaluation Board Boot Monitor 0.01 (19 APR 1998)
+	Press ENTER within 2 seconds to stop autoboot</PROGRAMLISTING>
+<PARA>Press ENTER quickly, and you will get the boot prompt: </PARA>
+<PROGRAMLISTING>	Boot:</PROGRAMLISTING>
+</SECT2>
+<SECT2>
+<TITLE>Downloading the Stubs via the Rom Menu</TITLE>
+<PARA>Using the AEB-1 rom menu to download the GDB stubs from the
+provided ".UU" file.</PARA>
+<NOTE>
+<PARA>This is an annotated 'terminal' session
+with the AEB-1 monitor:</PARA>
+</NOTE>
+<PROGRAMLISTING>+Boot: help
+Module is BootStrap       1.00 (14 Aug 1998)</PROGRAMLISTING>
+<PROGRAMLISTING>Help is available on:</PROGRAMLISTING>
+<PROGRAMLISTING>Help          Modules       ROMModules    UnPlug        PlugIn
+Kill          SetEnv        UnSetEnv      PrintEnv      DownLoad
+Go            GoS           Boot          PC            FlashWrite
+FlashLoad     FlashErase</PROGRAMLISTING>
+<PROGRAMLISTING>Boot: download c000
+Ready to download. Use 'transmit' option on terminal
+emulator to download file.</PROGRAMLISTING>
+<PROGRAMLISTING>... at this point, download the ASCII file "loaders/arm-aeb/
+    gdb_module.img.UU". The details of this operation differ
+    depending on which terminal emulator is used. It may be
+    necessary to enter "^D" (control+D) when the download completes
+   to get the monitor to return to command mode. </PROGRAMLISTING>
+<PROGRAMLISTING>Loaded file gdb_module.img.bin at address
+0000c000, size = 19392 </PROGRAMLISTING>
+</SECT2>
+<SECT2>
+<TITLE>Activating the GDB Stubs</TITLE>
+<PARA>Commit the GDB stubs module to FLASH: </PARA>
+<PROGRAMLISTING>	Boot: flashwrite 4018000 C000 8000
+    </PROGRAMLISTING>
+<PARA>Verify that the eCos/"GDB stubs" module is now added
+in the list of modules in the board: </PARA>
+<PROGRAMLISTING>	Boot: rommodules
+    </PROGRAMLISTING>
+<PARA>You should see output similar to the following: </PARA>
+<PROGRAMLISTING>	Header   Base     Limit
+	04000004 04000000 040034a8 BootStrap       1.00 (14 Aug 1998) 
+	04003a74 04003800 04003bc0 Production Test 1.00 (13 Aug 1998) 
+	0400e4f4 04004000 0400e60f Angel           1.02 (12 MAY 1998) 
+	0401c810 04018000 0401cbc0 eCos              1.3  (27 Jan 2000)
+GDB stubs
+    </PROGRAMLISTING>
+<PARA>Now make the eCos/"GDB stubs" module be the default
+monitor: </PARA>
+<PROGRAMLISTING>	Boot: plugin eCos
+    </PROGRAMLISTING>
+<NOTE>
+<PARA>Since the GDB stubs are always linked at the same address
+(0x4018000), the operation of writing to the FLASH and selecting
+the stubs as default monitor is an idempotent operation. You can
+download a new set of stubs following the same procedure - you do
+not have to unregister or delete anything.</PARA>
+</NOTE>
+</SECT2>
+<SECT2>
+<TITLE>Building the GDB Stub FLASH ROM Images</TITLE>
+<PARA>Pre-built GDB stubs images are provided in the directory loaders/arm-aeb
+relative to the root of your eCos installation, but here are instructions
+on how to rebuild them if you should ever need to.</PARA>
+</SECT2>
+<SECT2>
+<TITLE>Building the GDB Stubs with the eCos Configuration Tool</TITLE>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>Start with a new document - selecting the 
+<EMPHASIS>File</EMPHASIS>
+-&#62;
+<EMPHASIS>New</EMPHASIS>
+ menu item if necessary to do this.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Choose the 
+<EMPHASIS>Build</EMPHASIS>
+-&#62;
+<EMPHASIS>Templates</EMPHASIS>
+ menu item, and then select the ARM AEB-1 hardware.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>While still displaying the 
+<EMPHASIS>Build-&#62;Templates</EMPHASIS>
+ dialog box, select the "stubs" package template to build a GDB
+stub image. Click 
+<EMPHASIS>OK</EMPHASIS>.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>If applicable, set the "AEB board revision" option to
+"C" from "B" depending on the board revision being used.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Build eCos using 
+<EMPHASIS>Build</EMPHASIS>
+-&#62;
+<EMPHASIS>Library.</EMPHASIS></PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>When the build completes, the image files can be found
+in the bin/ subdirectory of the install tree. The GDB stub
+ROM images have the prefix "gdb_module".</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT2>
+<SECT2>
+<TITLE>Building the GDB Stub ROMs with ecosconfig</TITLE>
+<!-- <PARA>(See <XREF LINKEND="USING-ECOSCONFIG-ON-UNIX">)</PARA> -->
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>Make an empty directory to contain the build tree,
+and cd into it.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>To build a GDB stub ROM image, enter the command:</PARA>
+<PROGRAMLISTING>$ ecosconfig new aeb stubs</PROGRAMLISTING>
+</LISTITEM>
+<LISTITEM>
+<PARA>If applicable, edit ecos.ecc and set the AEB board revision. (CYGHWR_HAL_ARM_AEB_REVISION)
+from the default "B" to "C" by uncommenting the user_value
+property and setting it to "C".</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Enter the commands
+ 
+<PROGRAMLISTING>$ ecosconfig tree
+$ make</PROGRAMLISTING></PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>When the build completes, the image files can be found
+in the bin/ subdirectory of the install tree. The GDB stub
+ROM images have the prefix "gdb_module".</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT2>
+</SECT1>
+<SECT1 id="setup-arm-cma230">
+<TITLE><!-- <index></index> -->ARM Cogent CMA230 Hardware Setup</TITLE>
+<PARA>The eCos Developer's Kit package comes with an EPROM
+which provides GDB support for the Cogent evaluation board. An image
+of this EPROM is also provided at loaders/arm-cma230/gdbload.bin
+under the root of your eCos installation. </PARA>
+<PARA>The EPROM is installed to socket U3 on the board. Attention
+should be paid to the correct orientation of the EPROM during installation.</PARA>
+<PARA>If you are going to burn a new EPROM using the binary image,
+be careful to get the byte order correct. It needs to be little-endian,
+which is usually the default in PC based programmer software.</PARA>
+<PARA>If the GDB stub EPROM you burn does not work, try reversing
+the byte-order, even if you think you have it the right way around.
+At least one DOS-based EPROM burner program is known to have the
+byte-order upside down.</PARA>
+<PARA>The GDB stub in the EPROM allows communication with GDB using
+the serial port at connector P12 (CMA101) or P3 (CMA102). The communication parameters
+are fixed at 38400 baud, 8 data bits, no parity bit and 1 stop bit
+(8-N-1).  No flow control is employed. Connection to the host computer
+should be made using a dedicated serial cable as specified in the
+Cogent CMA manual.</PARA>
+<SECT2>
+<TITLE>Building the GDB Stub FLASH ROM images</TITLE>
+<PARA>Pre-built GDB stubs images are provided in the directory loaders/arm-cma230 relative
+to the root of your eCos installation, but here are instructions
+on how to rebuild them if you should ever need to.</PARA>
+<PARA>CygMon images are prefixed with the name 'cygmon' and
+GDB stub ROM images</PARA>
+<PARA>are given the prefix 'gdb_module'.
+Images may be provided in a number of formats including ELF (.img
+extension), binary (.bin extension) and SREC (.srec extension). </PARA>
+</SECT2>
+<SECT2>
+<TITLE>Building the GDB Stubs with the eCos Configuration Tool</TITLE>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>1. Start with a new document - selecting the File-&#62;New
+menu item if necessary to do this.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Choose the 
+<EMPHASIS>Build</EMPHASIS>-&#62;<EMPHASIS>Templates</EMPHASIS>
+ menu item, and then select the ARM CMA230 hardware.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>While still displaying the 
+<EMPHASIS>Build</EMPHASIS>
+-&#62;
+<EMPHASIS>Templates</EMPHASIS>
+ dialog box, select the "stubs" package template to build a GDB
+stub image. Click 
+<EMPHASIS>OK</EMPHASIS>.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Build eCos using 
+<EMPHASIS>Build</EMPHASIS>
+-&#62;
+<EMPHASIS>Library</EMPHASIS></PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>When the build completes, the image files can be found
+in the bin/ subdirectory of the install tree. The GDB stub
+ROM images have the prefix "gdb_module".</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT2>
+<SECT2>
+<TITLE>Building the GDB Stub ROMs with ecosconfig</TITLE>
+<!-- <PARA>(See <XREF LINKEND="USING-ECOSCONFIG-ON-UNIX">)</PARA> -->
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>1. Make an empty directory to contain the build tree,
+and cd into it.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>To build a GDB stub ROM image, enter the command:</PARA>
+<PROGRAMLISTING>$ ecosconfig new cma230 stubs</PROGRAMLISTING>
+</LISTITEM>
+<LISTITEM>
+<PARA>Enter the commands:
+ 
+<PROGRAMLISTING>$ ecosconfig tree
+$ make</PROGRAMLISTING></PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>When the build completes, the image files can be found
+in the bin/ subdirectory of the install tree. The GDB stub
+ROM images have the prefix "gdb_module".</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT2>
+</SECT1>
+<SECT1 id="setup-arm-ep7211">
+<TITLE><!-- <index></index> --><!-- <xref> -->Cirrus Logic ARM EP7211 Development
+Board Hardware Setup</TITLE>
+<PARA>eCos comes with two Flash ROM images that provide GDB support
+for the Cirrus Logic EP7211 Development Board (also known as the
+EDB7211).. Note that on some board revisions, the board is silk-screened
+as EDB7111-2. The first Flash ROM image provides a port of the CygMon
+ROM monitor, which includes a command-line interface and a GDB remote
+stub. The second Flash ROM image provides a remote GDB stub only.</PARA>
+<PARA>Both ROM images are provided in the directory loaders/arm-edb7211
+under the root of your eCos installation. CygMon images are prefixed
+with the name 'edb7211_cygmon' and are
+provided in a number of formats including binary (.bin extension)
+and SREC (.srec) extension. GDB stub ROM images are given the prefix 'edb7211_gdb_module'. </PARA>
+<PARA>The ROM images provided for the EP7211 Development Board must
+be programmed into the FLASH. Please refer to the section titled
+"Loading the ROM image into On-Board flash" on how to program the
+ROM onto the board.</PARA>
+<PARA>Both Cygmon and GDB Stub ROMS allow communication with GDB
+via the serial connector labelled 'UART 1'. The
+communication parameters are fixed at 38400 baud, 8 data bits, no
+parity bit and 1 stop bit (8-N-1). No flow control is employed.
+Connection to the host computer should be made using a null modem cable.
+A gender changer may also be required. Note that the GDB Configuration tool
+uses the serial port identifiers 0 and 1 to identify the EB7211
+serial ports UART1 and UART2 respectively.</PARA>
+<PARA>Both eCos and the ROM images assume the core clock is generated
+with a 3.6864 MHz PLL input. The CPU will be configured to run at
+73.728MHz.</PARA>
+<PARA>Note: The EP7211 CPU needs a two step RESET process. After
+pressing the &grave;URESET' pushbutton, the &grave;WAKEUP' pushbutton
+must be pressed to complete the process.</PARA>
+<NOTE>
+<PARA>When an eCos program is run on an EDB7211 board fitted with
+either CygMon or a GDB stub ROM, then the code in ROM loses control.
+This means that if you require the ability to remotely stop execution
+on the target, or want thread debugging capabilities, you must include
+GDB stub support when configuring eCos.</PARA>
+</NOTE>
+<SECT2>
+<TITLE>Building programs for programming into FLASH</TITLE>
+<PARA>If your application is to be run directly from FLASH, you
+must configure eCos appropriately for "ROM" startup. This can be
+done in the <EMPHASIS>eCos Configuration Tool</EMPHASIS> by setting
+the "Startup type" HAL option to "ROM". If using the ecosconfig utility,
+set the user_value of the CYG_HAL_STARTUP
+option in ecos.ecc to "ROM".</PARA>
+<PARA>When you have linked your application with eCos, you will
+then have an ELF executable. To convert this into a format appropriate
+for the Cirrus Logic FLASH download utility, or the dl_7xxx
+utility on Linux, you can use the utility arm-elf-objcopy, as in
+the following example:</PARA>
+<PROGRAMLISTING>$ arm-elf-objcopy -O binary helloworld.exe helloworld.bin</PROGRAMLISTING>
+<PARA>This will produce a binary format image helloworld.bin which
+can be downloaded into FLASH.</PARA>
+</SECT2>
+<SECT2>
+<TITLE>Building the GDB Stub FLASH ROM images</TITLE>
+<PARA>Pre-built GDB stubs images are provided in the directory loaders/arm-edb7211 relative
+to the root of your eCos installation, but here are instructions
+on how to rebuild them if you should ever need to.</PARA>
+<PARA>CygMon images are prefixed with the name 'cygmon' and
+GDB stub ROM images are given the prefix 'gdb_module'.
+Images may be provided in a number of formats including ELF (.img
+extension), binary (.bin extension) and SREC (.srec extension). </PARA>
+</SECT2>
+<SECT2>
+<TITLE>Building the ROM images with the eCos Configuration Tool</TITLE>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>Start with a new document - selecting the 
+<EMPHASIS>File</EMPHASIS>-&#62;<EMPHASIS>New</EMPHASIS>
+ menu item if necessary to do this.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Choose the 
+<EMPHASIS>Build</EMPHASIS>-&#62;<EMPHASIS>Templates</EMPHASIS>
+ menu item, and then select the "Cirrus Logic development board"
+hardware.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>While still displaying the 
+<EMPHASIS>Build</EMPHASIS>
+-&#62;
+<EMPHASIS>Templates</EMPHASIS>
+ dialog box, select either the "stubs" package template to build
+a GDB stub image, or the "cygmon" template to build the CygMon ROM
+Monitor. Click 
+<EMPHASIS>OK</EMPHASIS>.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Build eCos using 
+<EMPHASIS>Build</EMPHASIS>
+-&#62;
+<EMPHASIS>Library</EMPHASIS></PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>When the build completes, the image files can be found
+in the bin/ subdirectory of the install tree. GDB stub
+ROM images have the prefix "gdb_module". CygMon images
+have the prefix "cygmon".</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT2>
+<SECT2>
+<TITLE>Building the ROM images with ecosconfig</TITLE>
+<!-- <PARA>(See <XREF LINKEND="USING-ECOSCONFIG-ON-UNIX">)</PARA> -->
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>Make an empty directory to contain the build tree,
+and cd into it.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>To build a GDB stub ROM image, enter the command:</PARA>
+<PROGRAMLISTING>$ ecosconfig new edb7xxx stubs</PROGRAMLISTING>
+<PARA>or to build a CygMon ROM monitor image, enter the command:</PARA>
+<PROGRAMLISTING>$ ecosconfig new edb7xxx cygmon</PROGRAMLISTING>
+</LISTITEM>
+<LISTITEM>
+<PARA>Enter the commands:</PARA>
+<PROGRAMLISTING>$ ecosconfig tree
+$ make</PROGRAMLISTING>
+</LISTITEM>
+<LISTITEM>
+<PARA>When the build completes, the image files can be found
+in the bin/ subdirectory of the install tree. GDB stub
+ROM images have the prefix "gdb_module". CygMon images
+have the prefix "cygmon".</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT2>
+<SECT2>
+<TITLE><!-- <xref> -->Loading the ROM Image into On-board Flash</TITLE>
+<PARA>Program images can be written into Flash memory by means of
+a bootstrap program which is built into the  EDB7211.  This program
+communicates with a support program on your host to download and
+program an image into the Flash memory.</PARA>
+<PARA>Cirrus Logic provides such a program for use with Windows/DOS.
+ eCos comes with a similar program which will run under Linux. The
+basic operation of both programs is the same.</PARA>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>Connect a serial line to 'UART 1'.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Power off the  EDB7211.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Install jumper 'PROGRAM ENABLE' which
+enables this special mode for downloading Flash images. Note that
+some board revisions have this jumper labelled &ldquo;BOOT ENABLE&rdquo;.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Power on the  EDB7211.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Execute the Flash writing program on your host.  On Linux,
+this would be:</PARA>
+<PROGRAMLISTING>     # dl_edb7xxx &lt;PATH&#62;/gdb_module.bin</PROGRAMLISTING>
+<PARA>where '&lt;PATH&#62;' is the path to
+the binary format version of the ROM image you wish to load, either
+as built in the previous section or the "loaders/arm-edb7211/" subdirectory
+of your eCos installation. The download tool defaults to 38400 baud and
+device /dev/ttyS1 for communication. To change
+these, specify them as parameters, e.g.
+	      </PARA>
+<PROGRAMLISTING># dl_edb7xxx &lt;PATH&#62;/gdb_module.bin 9600 /dev/ttyS0</PROGRAMLISTING>
+</LISTITEM>
+<LISTITEM>
+<PARA>The download program will indicate that it is waiting
+for the board to come alive.  At this point, press 'RESET' and
+then 'WAKEUP' switches in order.  There should be
+some indication of progress, first of the code being downloaded,
+then of the programming process.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Upon completion of the programming, power off the  EDB7211.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Remove the 'PROGRAM ENABLE/BOOT ENABLE' jumper.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Power on the  EDB7211, press 'RESET' and 'WAKEUP'.
+ The new ROM image should now be running on the board.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>The GDB debugger will now be able to communicate with
+the board to download and debug RAM based programs.
+
+This procedure also applies for loading ROM-startup eCos programs
+into the on-board FLASH memory, given a binary format image of the
+program from arm-elf-objcopy.  Loading a ROM-startup eCos program
+into Flash will overwrite the GDB Stub ROM/CygMon in Flash,
+so you would have to reload the GDB Stub ROM/CygMon to
+return to normal RAM-startup program development.</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT2>
+<SECT2>
+<TITLE>Building the Flash Downloader on Linux</TITLE>
+<PARA>eCos provides a Flash download program suitable for use with
+the  EP7211 Development Board which will run on Linux.  Follow these
+steps to build this program.  Note: at the time of the writing of
+these instructions, the download program is built directly within
+the eCos source repository since it is
+not configuration specific.</PARA>
+<PROGRAMLISTING>  # cd &lt;eCos install dir&#62;/packages/hal/arm/edb7xxx/<replaceable>&Version;</replaceable>/support</PROGRAMLISTING>
+<PROGRAMLISTING>  # make</PROGRAMLISTING>
+<PARA>(where '# ' is your shell prompt)</PARA>
+<PARA>Note: this program was adapted from the Cirrus Logic original
+DOS program and still contains some vestiges of that environment.</PARA>
+</SECT2>
+<SECT2>
+<TITLE>Developing eCos Programs with the ARM Multi-ICE</TITLE>
+<PARA>The EP7211 Development Board supports use of the ARM
+	    Multi-processor EmbeddedICE(tm), also known as the
+	    Multi-ICE. Full instructions on how to install and use the
+	    Multi-ICE in conjunction with GDB are provided in the
+	    <EMPHASIS>"GNUPro Toolkit Reference for eCos
+	      ARM/Thumb"</EMPHASIS> manual. However, the following
+	    platform-specific details should be noted.</PARA>
+<PARA>You will need an ARM Multi-ICE Server configuration
+	    file for the EP7211 Development Board. Here is a suggested
+	    configuration file to use:</PARA>
+<PROGRAMLISTING>======== File "720T.cfg" ======== 
+;Total IR length = 4 
+[TITLE] 
+Multi-ICE configuration for EP7211 
+ 
+[TAP 0] 
+ARM720T 
+ 
+[TAPINFO] 
+YES 
+ 
+[Timing] 
+Low=0 
+High=0 
+Adaptive=OFF 
+==================================</PROGRAMLISTING>
+<PARA>You must ensure that the board has the appropriate soldered
+connections. For the EP7211 this involves connecting TEST0 and TEST1
+of the EP7211 to ground. To do this you must solder a wire from
+ground at JP33 to TP8 and TP9.</PARA>
+<PARA>With respect to using multiple devices simultaneously, note
+that the EP7211 is not ID sensitive.</PARA>
+<PARA>If you wish to view diagnostic output from your program that
+was downloaded via the Multi-ICE, you will note that by default
+the output on the serial line (as viewed by a terminal such as Hyperterm
+in Windows, or cu in Unix) is in the form of GDB packets.</PARA>
+<PARA>To get legible output, the solution is to set the "GDB Serial
+port" to a different device from the "Diagnostic serial port", and
+you should use the Diagnostic serial port to view the diagnostic
+output.</PARA>
+<PARA>Warning: The multi-ice-gdb-server will fail on startup if
+the board has not been both reset and awakened before running the
+server. </PARA>
+<PARA>To resolve this, it is necessary to free up the connection
+from within the ARM Multi-ICE server itself. However when this happens,
+the next time you use GDB to load the program into the board, you
+will see lots of "Readback did not match original data" messages
+in the output of the multi-ice-gdb-server program. This indicates
+your program did not load correctly, and you should restart the
+multi-ice-gdb-server program, taking care to reset the board correctly
+before reconnecting. </PARA>
+<PARA>As a reminder, you must specify --config-dialog to the
+	    multi-ice-gdb-server program to connect to the board
+	    correctly. If you do not, the multi-ice-gdb-server program
+	    will not be able to connect.</PARA>
+</SECT2>
+</SECT1>
+
+<SECT1 ID="setup-arm-ep7212">
+<TITLE><!-- <conditionaltext> -->Cirrus Logic ARM EP7212 Development Board
+Hardware Setup</TITLE>
+<PARA>The Cirrus Logic EP7212 Development Board is almost identical
+to the EP7211 Development Board from a hardware setup viewpoint,
+and is based on the same port of eCos. Therefore the earlier documentation
+for the EP7211 Development Board can be considered equivalent, but
+with the following changes:</PARA>
+<ITEMIZEDLIST>
+<LISTITEM>
+<PARA>The first serial port is silk screened as "UART 1" on
+the EP7211 Development Board, but is silk screened as "Serial Port
+0" on the EP7212 Development Board. Similarly "UART 2" is silk screened
+as "Serial Port 1" on the EP7212 Development Board.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>JP2 (used to control reprogramming of the FLASH) is not
+silkscreened with "Boot Enable".</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>To setup the EP7212 Development Board for use with the
+ARM Multi-ICE JTAG debugging interface unit, it is necessary to
+connect TEST0 and TEST1 of the EP7212 to ground.  On the Development
+Board, this is accomplished by placing shorting blocks on JP47 and
+JP48. When the shorting blocks are fitted, the board can only be
+operated through the Multi-ICE - debugging over a serial line is
+not possible.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA><!-- <conditionaltext> -->Pre-built GDB stubs are
+	      provided in the directory
+	      <FILENAME>loaders/arm-edb7212</FILENAME> relative to the
+	      root of your eCos installation</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>When rebuilding the GDB stub ROM image, change the "Cirrus
+Logic processor variant" option (CYGHWR_HAL_ARM_EDB7XXX_VARIANT)
+from the EP7211 to the EP7212. This can be selected in the 
+<EMPHASIS>eCos Configuration Tool</EMPHASIS>
+, or if using ecosconfig, can be set by uncommenting the user_value
+property of this option in ecos.ecc and setting it to "EP7212".</PARA>
+</LISTITEM>
+</ITEMIZEDLIST>
+</SECT1>
+<SECT1 ID="setup-arm-ep7312">
+<TITLE><!-- <conditionaltext> -->Cirrus Logic ARM EP7312 Development Board
+Hardware Setup</TITLE>
+<PARA>The Cirrus Logic EP7312 Development Board is similar
+to the EP7212 Development Board from a hardware setup viewpoint,
+and is based on the same port of eCos.</PARA>
+<PARA>When rebuilding the RedBoot ROM image or an eCos application,
+change the "Cirrus Logic processor variant" option
+(CYGHWR_HAL_ARM_EDB7XXX_VARIANT)
+from the EP7211 to the EP7312. This can be selected in the 
+<EMPHASIS>eCos Configuration Tool</EMPHASIS>
+, or if using ecosconfig, can be set by uncommenting the user_value
+property of this option in ecos.ecc and setting it to "EP7312".
+</PARA>
+<PARA>
+See the RedBoot documentation for building and installing RedBoot for this
+target.  Only RedBoot is supported as a boot image; ROMRAM startup is
+recommended.
+</PARA>
+<SECT2 ID="ep7312-90MHz-operation">
+<TITLE>90MHz Operation</TITLE>
+<PARA>
+The EP7xxx targets offer a choice of clock speeds, from 18MHz to a maximum,
+normally, of 72MHz.  These are described as kHz values 18432 36864 49152
+and 73728 within the configuration tool.  If you have a release which
+supports it, you will also see 90317 as an available option here, for 90MHz
+operation.
+</PARA>
+<PARA>
+This option only applies to certain EP7312 hardware, not all EP7312 boards
+support it.  Do not select 90MHz when building RedBoot or your eCos
+application unless you are absolutely sure that your board supports it.
+</PARA>
+<PARA>
+If you do have a 90MHz board and wish to execute at 90MHz, it is in fact
+not necessary to build RedBoot specially, if you build your eCos
+application configured for 90MHz.  RedBoot will run at 72MHz and your
+application will run at 90MHz.  If you do install a 90MHz RedBoot, then you
+must build eCos for 90MHz or timing and baud rates on serial I/O will be
+wrong.
+</PARA>
+<PARA>
+In other words, code (either eCos app or RedBoot) built for 90MHz will
+&ldquo;change up a gear&rdquo; when it starts up; but code built for 72MHz,
+because it needs to run correctly on boards without the
+&ldquo;gearbox&rdquo; does not change back down, so if you mix the two,
+unexpected timing can result.  To run a non-eCos application without any
+hardware initialization code at 90MHz, you must install a specially-built
+RedBoot.
+</PARA>
+</SECT2>
+</SECT1>
+<SECT1 id="setup-arm-ep7209">
+<TITLE>Cirrus Logic ARM EP7209 Development Board Hardware Setup</TITLE>
+<PARA>Note: At time of writing, no EP7209 Development Board is available,
+and consequently eCos has not been verified for use with the EP7209
+Development Board.</PARA>
+<PARA>The Cirrus Logic EP7209 Development Board is almost identical
+to the EP7212 Board in all respects, except that it is not fitted
+with DRAM, nor has it a DRAM controller.</PARA>
+<PARA>The only valid configuration for the EDB7209 is ROM based.
+The STUBS and RAM startup modes are not available as no DRAM is
+fitted.</PARA>
+</SECT1>
+<SECT1 id="setup-arm-clps7111">
+<TITLE><!-- <index></index> -->Cirrus Logic ARM CL-PS7111 Evaluation Board Hardware Setup</TITLE>
+<PARA>The implementation of the port of eCos to the Cirrus Logic
+ARM CL-PS7111 Evaluation Board (also known as EB7111) is based on
+the EP7211 Development Board port.</PARA>
+<PARA>For that reason, the setup required is identical to the  EP7211
+Development Board as described above, with the following exceptions:</PARA>
+<ITEMIZEDLIST>
+<LISTITEM>
+<PARA>The Cygmon ROM monitor is not supported</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>The ARM Multi-ICE is not supported</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA><!-- <conditionaltext> -->Pre-built GDB stubs are provided in the
+directory loaders/arm-eb7111 relative to the root of your
+eCos installation</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>If rebuilding the GDB stub ROM image, change the "Cirrus
+Logic processor variant" option (CYGHWR_HAL_ARM_EDB7XXX_VARIANT)
+from the EP7211 to the CL_PS7111. This can be selected
+in the 
+<EMPHASIS>eCos Configuration Tool</EMPHASIS>
+, or if using ecosconfig, can be set by uncommenting the user_value
+property of this option in ecos.ecc and setting it to "CL_PS7111"</PARA>
+</LISTITEM>
+</ITEMIZEDLIST>
+<PARA>All remote serial communication is done with the serial I/O
+connector</PARA>
+<PROGRAMLISTING>/misc   
+% slow_cat.tcl &lt; [path]/gdb_module.srec &#62; /dev/ttyS0</PROGRAMLISTING>
+<PARA>Power off the board, and change it to boot the GDB stubs in
+big-endian mode by setting the switches like this:</PARA>
+<PARA>SW1: 00000000 (all levers down)   
+SW2: 10001010</PARA>
+<PARA>The GDB stubs allow communication with GDB using the serial
+port at connector PJ7A (lower connector). The communication parameters
+are  fixed at 38400 baud, 8 data bits, no parity bit and 1 stop
+bit  (8-N-1). No flow control is employed. Connection to the host
+computer should be made using a straight through serial cable.</PARA>
+</SECT1>
+<SECT1 id="setup-arm-ebsa285">
+<TITLE>StrongARM EBSA-285 Hardware Setup</TITLE>
+<PARA>The eCos Developer&rsquo;s Kit package comes with a ROM
+image which provides GDB support for
+the Intel&reg; StrongARM&reg; Evaluation Board EBSA-285.
+ Both eCos and the Stub ROM image assume the clocks are: 3.6864
+MHz PLL input for generating the core clock, and 50MHz osc input
+for external clocks. An image of this ROM is also provided at <filename>loaders/arm-ebsa285/gdbload.bin</filename> under
+the root of your eCos installation.</PARA>
+<PARA>The ROM monitor image (an eCos GDB
+stub) provided for the EBSA-285 board must be programmed into the
+flash, replacing the Angel monitor on the board. Please refer to
+the section titled "Loading the ROM Image into On-Board flash" on how
+to program the ROM onto the board.</PARA>
+<PARA>The Stub ROM allows communication with GDB via the serial
+connector on the bulkhead mounting bracket COM0.  The communication
+parameters are fixed at 38400 baud, 8 data bits, no parity bit and
+1 stop bit (8-N-1).  No flow control is employed.</PARA>
+<SECT2>
+<TITLE>Building the GDB Stub FLASH ROM images</TITLE>
+<PARA>Pre-built GDB stubs images are provided in the directory loaders/arm-ebsa285 relative
+to the root of your eCos installation, but here are instructions
+on how to rebuild them if you should ever need to.</PARA>
+</SECT2>
+<SECT2>
+<TITLE>Building the GDB Stubs with the eCos Configuration Tool</TITLE>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>Start with a new document - selecting the 
+<EMPHASIS>File</EMPHASIS>
+-&#62;
+<EMPHASIS>New</EMPHASIS>
+ menu item if necessary to do this.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Choose the 
+<EMPHASIS>Build</EMPHASIS>
+-&#62;
+<EMPHASIS>Templates</EMPHASIS>
+ menu item, and then select the StrongARM EBSA285 hardware.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>While still displaying the 
+<EMPHASIS>Build</EMPHASIS>
+-&#62;
+<EMPHASIS>Templates</EMPHASIS>
+ dialog box, select the "stubs" package template to build a GDB
+stub image. Click 
+<EMPHASIS>OK</EMPHASIS>.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Build eCos using 
+<EMPHASIS>Build</EMPHASIS>
+-&#62;
+<EMPHASIS>Library</EMPHASIS></PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>When the build completes, the image files can be found
+in the bin/ subdirectory of the install tree. The GDB stub
+ROM images have the prefix "gdb_module".</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT2>
+<SECT2>
+<TITLE>Building the GDB Stub ROMs with ecosconfig</TITLE>
+<PARA>(See &ldquo;Using ecosconfig on UNIX&rdquo; on&nbsp;page&nbsp;72)</PARA>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>Make an empty directory to contain the build tree,
+and cd into it.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>To build a GDB stub ROM image, enter the command:
+
+<PROGRAMLISTING>$ ecosconfig new ebsa285 stubs</PROGRAMLISTING></PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Enter the commands:
+ 
+<PROGRAMLISTING>$ ecosconfig tree
+$ make</PROGRAMLISTING></PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>When the build completes, the image files can be found
+in the bin/ subdirectory of the install tree. The GDB stub
+ROM images have the prefix "gdb_module".</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT2>
+<SECT2>
+<TITLE>Loading the ROM Image into On-board Flash</TITLE>
+<PARA>There are several ways to install the eCos gdb stub ROM image
+in the EBSA board&rsquo;s flash memory. Once installed, the gdb
+stub ROM provides standard eCos download and debug via the EBSA
+board&quot;s serial port. The options available include the
+Linux based EBSA flash upgrade utility provided by Red Hat, direct writing
+of the flash via MultiICE (JTAG) hardware debugger, and other flash management
+utilities from Intel (these only support DOS, and proprietary ARM tools
+and image formats). Only the Red Hat flash upgrade tool is supported
+and tested in this release.</PARA>
+<PARA>The flash upgrade tool requires the EBSA board to be configured
+as a PCI slave (rather than a master, its normal operating mode)
+and plugged into a Linux host computer&quot;s PCI bus.</PARA>
+<PARA>Configuring the board for flash loading: Follow the instructions
+in the EBSA-285 Reference Manual, pages A-2 and A-3 to configure
+the board as an add-in card, and enable flash blank programming.
+ Briefly: assuming the board was in the default setting to execute
+as a bus master ("Host Bridge") make jumper 9 (J9), move jumper
+10 (J10) to external reset (PCI_RST), and move jumper 15
+(J15) link 4-6-5 to connect 5-6 instead of 4-6.</PARA>
+<PARA>Configuring the board for execution of eCos programs: Follow
+the instructions in the EBSA-285 Reference Manual, pages A-2 and
+A-3 to configure the board as a "Host Bridge" with "Central Function".
+ Briefly: unset J9, move J10 to on-board reset (BRD_RST),
+and set J15 to make 4-6 instead of 5-6 (see page A-8 also).  Plug
+the card into its own PCI bus, not the Linux PC used for the flash-programming
+process.</PARA>
+<PARA>Building the Linux software: the Linux software sources are
+in directory</PARA>
+<PROGRAMLISTING>      &lt;BASE_DIR&#62;/packages/hal/arm/ebsa285/v1_3/support/linux/safl_util</PROGRAMLISTING>
+<PARA>in the eCos source repository.  There are two parts to the
+system: a loadable kernel module and the flash utility.  The loadable
+kernel module is safl.o and the utility is sa_flash.  To
+build:</PARA>
+<PARA>  cd to this directory, or a copy of it.</PARA>
+<PARA>  make</PARA>
+<PARA>This builds safl.o and sa_flash. The kernel module
+must be installed, and a device file created for it. Both of these
+operations require root permissions.  Create the device file by: </PARA>
+<PROGRAMLISTING>      % mknod /dev/safl c 10 178</PROGRAMLISTING>
+<PARA>Programming the flash: switch off the EBSA-285, and remove
+the EBSA-285 board from its PCI bus.  Take appropriate anti-static
+precautions. Configure it for flash loading as above, halt your
+Linux system and turn it off.  Install the EBSA-285 board in the
+PCI bus of the Linux system and boot it up. (Single user is good enough,
+assuming your image and safl_util build dir are on a local
+disc partition.)  Change directory to the safl_util directory,
+then, to load the kernel module and flash an image onto the eval
+board (as root): </PARA>
+<PROGRAMLISTING>       % insmod safl.o
+       % sa_flash &lt;image_file&#62;</PROGRAMLISTING>
+<PARA>Halt and turn off the Linux machine and remove the EBSA-285
+card.  Take appropriate anti-static precautions.  Configure it for
+execution of eCos programs as above, and plug it into its own PCI
+bus.  Restart the Linux machine however you wish.</PARA>
+<PARA>This information is replicated in the README file within the
+safl_util directory and its parents, and in the EBSA-285
+Reference Manual from Intel, appendix A "Configuration Guide". 
+If in doubt, please refer to those documents also.</PARA>
+<PARA>This procedure also applies for loading ROM-startup eCos programs
+into the on-board flash memory, given a binary format image of the
+program from arm-elf-objcopy.  Loading a ROM-startup eCos program
+into flash will overwrite the StubROM in flash, so you would have
+to reload the StubROM to return to normal RAM-startup program development.</PARA>
+</SECT2>
+<SECT2>
+<TITLE>Running your eCos Program Using GDB and the StubROM</TITLE>
+<NOTE>
+<PARA>You must first load the StubROM image into the flash memory
+on the EBSA-285 board before doing this.  See &ldquo;Loading
+the ROM Image into On-board Flash&rdquo;, page 93 for details.</PARA>
+</NOTE>
+<PARA>Connect to the StubROM in the board and run your eCos program &lt;PROGRAM&#62; as</PARA>
+<PARA>follows:</PARA>
+<PROGRAMLISTING>      $ arm-elf-gdb -nw &lt;PROGRAM&#62;
+      (gdb) set remotebaud 38400
+      (gdb) target remote &lt;DEVICE&#62;</PROGRAMLISTING>
+<PARA>Where &lt;DEVICE&#62; is /dev/ttyS0
+or COM1: or similar, depending on your environment and how you connected
+your serial line to the host computer. Expect some output here,
+for example:</PARA>
+<PROGRAMLISTING>      Remote debugging using /dev/ttyS0
+      0x410026a4 in ?? ()</PROGRAMLISTING>
+<PARA>then, to load the program</PARA>
+<PROGRAMLISTING>        (gdb) load
+    </PROGRAMLISTING>
+<PARA>which will report locations and sizes of sections as they
+load, then begin execution using</PARA>
+<PROGRAMLISTING>      (gdb) continue</PROGRAMLISTING>
+<PARA>If you have no eCos program yet, but you want to connect to
+the board just to verify serial communications, tell gdb "set endian
+little" before anything else, so that it understands the board (GDB
+normally infers this from information within the eCos program).</PARA>
+<NOTE>
+<PARA>When an eCos program is run on the EBSA-285 board, the GDB
+stub in ROM loses control. This means that if you require the ability
+to stop execution on the target remotely, or want thread debugging
+capabilities, you must include GDB stub support when configuring
+<PRODUCTNAME>eCos</PRODUCTNAME>.</PARA>
+</NOTE>
+</SECT2>
+</SECT1>
+<SECT1 id="setup-arm-ipaq">
+<TITLE><!-- <conditionaltext> --> <!-- NOTE: could not find it --><!-- <index></index> -->Compaq iPAQ PocketPC Hardware Setup</TITLE>
+<PARA>For setting up the iPAQ to run with RedBoot, see the the <EMPHASIS>RedBoot
+User's Guide</EMPHASIS>. Connections may be made using
+the Compact Flash Ethernet interface.  A serial cable may be connected
+directly, or via the cradle. Serial communication uses the parameters
+38400,8,N,1. The LCD/Touchscreen may also be used as an
+interface to RedBoot and eCos applications.</PARA>
+</SECT1>
+<SECT1 id="setup-sh-edk7708">
+<TITLE>SH3/EDK7708 Hardware Setup</TITLE>
+<PARA>The eCos Developer&rsquo;s Kit package comes with a ROM
+which provides GDB support for the Hitachi EDK7708 board (a big-endian
+and a little-endian version). Images of these  ROMs are also provided
+at <filename>loaders/sh-edk7708/gdbload.bin</filename> and
+	  <filename>loaders/sh-edk7708le/gdbload.bin</filename> under
+the root of your eCos installation.</PARA>
+<PARA>The ROM is installed to socket U6 on the board. When using
+the big-endian ROM, jumper 9 must be set to 2-3. When using the
+little-endian ROM, jumper 9 must be set to 1-2. Attention should
+be paid to the correct orientation of the ROM during installation.
+Only replace the board&quot;s existing ROM using a proper PLCC extraction
+tool, as the socket would otherwise risk being damaged. </PARA>
+<PARA>If you are going to program a new ROM or FLASH using the binary
+image, you may have to experiment to get the right byte-order in
+the device. Depending on the programming software you use, it might
+be necessary to enable byte-swapping.  If the GDB stub ROM/FLASH
+you program does not work, try reversing the byte-order.</PARA>
+<PARA>The GDB stub in the EPROM allows communication with GDB using
+the serial port at connector J1. The communication parameters are
+fixed at 38400 baud, 8 data bits, no parity bit and 1 stop bit (8-N-1).
+No flow control is employed. Connection to the host computer should
+be made using the dedicated serial cable included in the EDK package. </PARA>
+<SECT2>
+<TITLE>Installing the Stubs into FLASH</TITLE>
+<SECT3>
+<TITLE>Preparing the Binaries</TITLE>
+<PARA>These two binary preparation steps are not strictly necessary
+as the eCos distribution ships with pre-compiled binaries in the
+directory loaders/sh-edk7708 and loaders/sh-edk7708le
+relative to the installation root.</PARA>
+<SECT4>
+<TITLE>Building the ROM images with the eCos Configuration Tool</TITLE>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>Start with a new document - selecting the 
+<EMPHASIS>File-&#62;New</EMPHASIS>
+ menu item if necessary to do this.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Choose the 
+<EMPHASIS>Build-&#62;Templates</EMPHASIS>
+ menu item, and then select the SH EDK7708 hardware.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>While still displaying the 
+<EMPHASIS>Build-&#62;Templates</EMPHASIS>
+ dialog box, select the &ldquo;stubs&rdquo; package template
+to build a GDB stub. Click 
+<EMPHASIS>OK</EMPHASIS>.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>If building a little-endian image, disable the &ldquo;Use
+big-endian mode&rdquo; option in the SH EDK7708 HAL (CYGHWR_HAL_SH_BIGENDIAN).</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Build eCos using 
+<EMPHASIS>Build-&#62;Library</EMPHASIS>. </PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>When the build completes, the image files can be found
+in the bin/ subdirectory of the install tree. GDB stub
+ROM images have the prefix &ldquo;gdb_module&rdquo;.</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT4>
+<SECT4>
+<TITLE>Building the ROM images with ecosconfig</TITLE>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>Make an empty directory to contain the build tree,
+and cd into it.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>To build a GDB stub ROM image, enter the command: 
+  
+<PROGRAMLISTING>$ ecosconfig new edk7708 stubs</PROGRAMLISTING>
+ </PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>If building a little-endian image, uncomment the user
+value in ecos.ecc for CYGHWR_HAL_SH_BIGENDIAN
+and change it to 0.   </PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Enter the commands:
+    
+<PROGRAMLISTING>$ ecosconfig tree      
+$ make </PROGRAMLISTING></PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>When the build completes, the image files can be found
+in the bin/ subdirectory of the install tree. GDB stub
+ROM images have the  prefix &ldquo;gdb_module&rdquo;.</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT4>
+</SECT3>
+<SECT3>
+<TITLE> Installing the Stubs into ROM or FLASH</TITLE>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>Program the binary image file gdb_module.bin
+into ROM or FLASH referring to the instructions of your ROM programmer.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Plug the ROM/FLASH into socket U6. If the image
+is little-endian set jumper 9 to 1-2. If the image is big-endian
+set jumper 9 to 2-3.</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT3>
+</SECT2>
+</SECT1>
+<SECT1 id="setup-sh-cq7708">
+<TITLE>SH3/CQ7708 Hardware Setup</TITLE>
+<SECT2>
+<TITLE>Preparing the board</TITLE>
+<PARA>Make sure the DIP switches on the board are set as follows:
+  </PARA>
+<PROGRAMLISTING>SW1-1 ON
+SW1-2 OFF   
+SW1-3 ON   
+SW1-4 OFF</PROGRAMLISTING>
+<PROGRAMLISTING>SW2-1 ON   
+SW2-2 ON   
+SW2-3 OFF   
+SW2-4 OFF</PROGRAMLISTING>
+<PARA>If you are using a straight through serial cable which has
+flow control lines, you will also need to cut JP12 (5-6) as the
+flow control lines can cause NMIs.</PARA>
+</SECT2>
+<SECT2>
+<TITLE>eCos GDB Stubs</TITLE>
+<PARA>The eCos installation CD contains a copy of the eCos GDB stubs
+in  binary format which must be programmed into an EPROM or FLASH
+and  installed on the board.</PARA>
+<SECT3>
+<TITLE> Preparing the GDB stubs</TITLE>
+<PARA>These stub preparation steps are not strictly necessary as
+the eCos distribution ships with pre-compiled stubs in the directory
+loaders/sh3-cq7708 relative to the installation root.</PARA>
+</SECT3>
+<SECT3>
+<TITLE>Building the GDB stub image with the eCos Configuration Tool</TITLE>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>Start with a new document - selecting the 
+<EMPHASIS>File-&#62;New</EMPHASIS>
+ menu item if necessary to do this.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Choose the 
+<EMPHASIS>Build-&#62;Templates</EMPHASIS>
+ menu item, and then select the SH3 cq7708 hardware.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>While still displaying the 
+<EMPHASIS>Build-&#62;Templates</EMPHASIS>
+ dialog box, select the stubs package template to build a GDB stub.
+Click 
+<EMPHASIS>OK</EMPHASIS>.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA> Build eCos stubs using 
+<EMPHASIS>Build-&#62;Library</EMPHASIS>.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA> When the build completes, the image files can be found
+in the 
+<FILENAME>bin/</FILENAME>
+ subdirectory of the install tree. GDB stub images have the prefix 
+<FILENAME>gdb_module</FILENAME>.</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT3>
+<SECT3>
+<TITLE> Building the GDB stub image with ecosconfig</TITLE>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>Make an empty directory to contain the build tree,
+and cd into it.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA> To build a GDB stub ROM image, enter the command: 
+     
+<PROGRAMLISTING>$ ecosconfig new cq7708 stubs </PROGRAMLISTING></PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA> Enter the commands:
+    
+<PROGRAMLISTING>$ ecosconfig tree      
+$ make</PROGRAMLISTING></PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>When the build completes, the image files can be found
+in the 
+<FILENAME>bin/</FILENAME>
+ subdirectory of the install tree. GDB stub images have the prefix 
+<FILENAME>gdb_module</FILENAME>.  </PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT3>
+</SECT2>
+<SECT2>
+<TITLE>Programming the stubs in EPROM/FLASH</TITLE>
+<PARA>The board can use different sizes of ROMs. Use this table
+to adjust the board&rsquo;s jumpers to the ROM sizes you are
+using.</PARA>
+<PROGRAMLISTING>size(kbit)    JP7   JP9   JP10   JP11     
+256           2-3   2-3   open   open     
+512           1-2   2-3   open   open     
+1000          1-2   open  open   2-3     
+2000          1-2   1-2   open   2-3     
+4000          1-2   1-2   short  2-3     
+8000          1-2   1-2   short  1-2</PROGRAMLISTING>
+<PARA>There are two ways to program the stubs. We advise you to
+use method 1, since it is simpler. Method 2 is unsupported and requires
+a bit of fiddling.</PARA>
+<PARA><EMPHASIS>Method 1: </EMPHASIS> </PARA>
+<PARA>Program the binary stub image into two EPROMs, E and O. EPROM
+E should  contain the even bytes, and O the odd bytes (your EPROM
+programmer should  have the ability to split the image).</PARA>
+<PARA>EPROM E should be installed in socket IC8, and EPROM O should
+be  installed in socket IC4.</PARA>
+<PARA>Set JP6 to 16 bit mode (1-2 soldered, 2-3 cut)  Set SW1-4
+to ON and SW2-1 to OFF.</PARA>
+<PARA></PARA>
+<PARA><EMPHASIS>Method2: </EMPHASIS> </PARA>
+<PARA>Assuming that the stub binary is smaller than 32 KB, you can
+install it in a single EPROM.</PARA>
+<PARA>Compile the <FILENAME>mkcqrom.c</FILENAME> program
+found in the <FILENAME>misc</FILENAME> directory.</PARA>
+<PARA>Use it to convert the binary image to the required format.
+See the  <FILENAME>mkcqrom.c</FILENAME> source for a
+description of what is done, and why it is  necessary. </PARA>
+<PROGRAMLISTING> % mkcqrom gdb_module.bin gdb_mangled.bin</PROGRAMLISTING>
+<PARA>Program the <FILENAME>gdb_mangled.bin</FILENAME> file
+into an EPROM and install it in  socket IC4</PARA>
+<PARA>Set JP6 to 8 bit mode (cut 1-2, solder 2-3)</PARA>
+<PARA>The GDB stubs allow communication with GDB using the serial
+port at connector CN7. The communication parameters are fixed at
+38400 baud, 8 data bits, no parity bit and 1 stop bit (8-N-1). No
+flow control is employed. Connection to the host computer should
+be made using a  straight through serial cable.</PARA>
+</SECT2>
+</SECT1>
+<SECT1 id="setup-sh-hs7729pci">
+<TITLE>SH3/HS7729PCI Hardware Setup</TITLE>
+<PARA>Please see the RedBoot manual for instructions on how to prepare
+the board for use with eCos.</PARA>
+</SECT1>
+<SECT1 id="setup-sh-se77x9">
+<TITLE>SH3/SE77x9 Hardware Setup</TITLE>
+<PARA>Please see the RedBoot manual for instructions on how to prepare
+the board for use with eCos.</PARA>
+</SECT1>
+<SECT1 id="setup-sh-cq7750">
+<TITLE>SH4/CQ7750 Hardware Setup</TITLE>
+<SECT2>
+<TITLE>Preparing the board</TITLE>
+<PARA>Make sure the DIP switches on the board are set as follows:
+  </PARA>
+<PROGRAMLISTING>SW1-1 ON
+SW1-2 OFF   
+SW1-3 ON   
+SW1-4 OFF</PROGRAMLISTING>
+<PROGRAMLISTING>SW2-1 ON   
+SW2-2 ON   
+SW2-3 OFF   
+SW2-4 OFF</PROGRAMLISTING>
+<PARA>If you are using a straight through serial cable which has
+flow control lines, you will also need to cut JP12 (5-6) as the
+flow control lines can cause NMIs.</PARA>
+</SECT2>
+<SECT2>
+<TITLE>eCos GDB Stubs</TITLE>
+<PARA>The eCos installation CD contains a copy of the eCos GDB stubs
+in  binary format which must be programmed into an EPROM or FLASH
+and  installed on the board.</PARA>
+<SECT3>
+<TITLE> Preparing the GDB stubs</TITLE>
+<PARA>These stub preparation steps are not strictly necessary as
+the eCos distribution ships with pre-compiled stubs in the directory
+loaders/sh3-cq7708 relative to the installation root.</PARA>
+</SECT3>
+<SECT3>
+<TITLE>Building the GDB stub image with the eCos Configuration Tool</TITLE>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>Start with a new document - selecting the 
+<EMPHASIS>File-&#62;New</EMPHASIS>
+ menu item if necessary to do this.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Choose the 
+<EMPHASIS>Build-&#62;Templates</EMPHASIS>
+ menu item, and then select the SH3 cq7708 hardware.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>While still displaying the 
+<EMPHASIS>Build-&#62;Templates</EMPHASIS>
+ dialog box, select the stubs package template to build a GDB stub.
+Click 
+<EMPHASIS>OK</EMPHASIS>.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA> Build eCos stubs using 
+<EMPHASIS>Build-&#62;Library</EMPHASIS>.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA> When the build completes, the image files can be found
+in the 
+<FILENAME>bin/</FILENAME>
+ subdirectory of the install tree. GDB stub images have the prefix 
+<FILENAME>gdb_module</FILENAME>.</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT3>
+<SECT3>
+<TITLE> Building the GDB stub image with ecosconfig</TITLE>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>Make an empty directory to contain the build tree,
+and cd into it.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA> To build a GDB stub ROM image, enter the command: 
+     
+<PROGRAMLISTING>$ ecosconfig new cq7708 stubs </PROGRAMLISTING></PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA> Enter the commands:
+    
+<PROGRAMLISTING>$ ecosconfig tree      
+$ make</PROGRAMLISTING></PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>When the build completes, the image files can be found
+in the 
+<filename>bin/</filename>
+ subdirectory of the install tree. GDB stub images have the prefix 
+<filename>gdb_module</filename>.  </PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT3>
+</SECT2>
+<SECT2>
+<TITLE>Programming the stubs in EPROM/FLASH</TITLE>
+<PARA>The board can use different sizes of ROMs. Use this table
+to adjust the board&rsquo;s jumpers to the ROM sizes you are
+using.</PARA>
+<PROGRAMLISTING>size(kbit)    JP7   JP9   JP10   JP11     
+256           2-3   2-3   open   open     
+512           1-2   2-3   open   open     
+1000          1-2   open  open   2-3     
+2000          1-2   1-2   open   2-3     
+4000          1-2   1-2   short  2-3     
+8000          1-2   1-2   short  1-2</PROGRAMLISTING>
+<PARA>There are two ways to program the stubs. We advise you to
+use method 1, since it is simpler. Method 2 is unsupported and requires
+a bit of fiddling.</PARA>
+<PARA><EMPHASIS>Method 1: </EMPHASIS> </PARA>
+<PARA>Program the binary stub image into two EPROMs, E and O. EPROM
+E should  contain the even bytes, and O the odd bytes (your EPROM
+programmer should  have the ability to split the image).</PARA>
+<PARA>EPROM E should be installed in socket IC8, and EPROM O should
+be  installed in socket IC4.</PARA>
+<PARA>Set JP6 to 16 bit mode (1-2 soldered, 2-3 cut)  Set SW1-4
+to ON and SW2-1 to OFF.</PARA>
+<PARA></PARA>
+<PARA><EMPHASIS>Method2: </EMPHASIS> </PARA>
+<PARA>Assuming that the stub binary is smaller than 32 KB, you can
+install it in a single EPROM.</PARA>
+<PARA>Compile the <filename>mkcqrom.c</filename> program
+found in the <FILENAME>misc</FILENAME> directory.</PARA>
+<PARA>Use it to convert the binary image to the required format.
+See the  <FILENAME>mkcqrom.c</FILENAME> source for a
+description of what is done, and why it is  necessary. </PARA>
+<PROGRAMLISTING> % mkcqrom gdb_module.bin gdb_mangled.bin</PROGRAMLISTING>
+<PARA>Program the <FILENAME>gdb_mangled.bin</FILENAME> file
+into an EPROM and install it in  socket IC4</PARA>
+<PARA>Set JP6 to 8 bit mode (cut 1-2, solder 2-3)</PARA>
+<PARA>The GDB stubs allow communication with GDB using the serial
+port at connector CN7. The communication parameters are fixed at
+38400 baud, 8 data bits, no parity bit and 1 stop bit (8-N-1). No
+flow control is employed. Connection to the host computer should
+be made using a  straight through serial cable.</PARA>
+</SECT2>
+</SECT1>
+<SECT1 id="setup-sh-se7751">
+<TITLE>SH4/SE7751 Hardware Setup</TITLE>
+<PARA>Please see the RedBoot manual for instructions on how to prepare
+the board for use with eCos.</PARA>
+</SECT1>
+<SECT1 id="setup-v850-cebsa1">
+<TITLE>NEC CEB-V850/SA1 Hardware Setup</TITLE>
+<PARA>The CEB-V850 board is fitted with a socketed EPROM. The internal
+Flash of the V850 supplied with the CEB-V850 boards defaults to
+vectoring into this EPROM. A  GDB stub image should be programmed
+into an EPROM fitted to this board, and a pre-built image is provided
+at <FILENAME>loaders/v850-ceb_v850/v850sa1/gdb_module.bin </FILENAME>under
+the root of your eCos installation.</PARA>
+<PARA>The EPROM is installed to the socket labelled U7 on the board.
+Attention should be paid to the correct orientation of the EPROM
+during installation. </PARA>
+<PARA>When programming an EPROM using the binary image, be careful
+to get the byte order correct. It needs to be little-endian. If
+the EPROM burner software has a hex-editor, check that the first
+few bytes of the image look similar to: </PARA>
+<PROGRAMLISTING>00000000: 0018 8007 5e02 0000 0000 0000 0000 0000</PROGRAMLISTING>
+<PARA>If the byte order is wrong you will see 1800 instead of 0018
+etc. Use the EPROM burner software to make a byte-swap before you
+burn to image to the EPROM. </PARA>
+<PARA>If the GDB stub EPROM you burn does not work, try reversing
+the byte-order, even if you think you have it the right way around.
+At least one DOS-based EPROM burner program is known to have the
+byte-order upside down.</PARA>
+<PARA>The GDB stub in the EPROM allows communication with GDB using
+the serial port. The communication parameters are fixed at 38400
+baud, 8 data bits, no parity bit and 1 stop bit (8-N-1). No flow
+control is employed. Connection to the host computer should be made
+using a dedicated serial cable as specified in the CEB-V850/SA1
+manual.</PARA>
+<SECT2>
+<TITLE>Installing the Stubs into ROM</TITLE>
+<SECT3>
+<TITLE>Preparing the Binaries</TITLE>
+<PARA>These two binary preparation steps are not strictly necessary
+as the eCos distribution ships with pre-compiled binaries in the
+directory loaders/v850-ceb_v850 relative to the
+installation root.</PARA>
+<SECT4>
+<TITLE>Building the ROM images with the eCos Configuration Tool</TITLE>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>Start with a new document - selecting the 
+<EMPHASIS>File-&#62;New</EMPHASIS>
+ menu item if necessary to do this.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Choose the 
+<EMPHASIS>Build-&#62;Templates</EMPHASIS>
+ menu item, and then select the NEC CEB-V850/SA1 hardware.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>While still displaying the 
+<EMPHASIS>Build-&#62;Templates</EMPHASIS>
+ dialog box, select the &ldquo;stubs&rdquo; package template
+to build a GDB stub. Click 
+<EMPHASIS>OK</EMPHASIS>.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Build eCos using 
+<EMPHASIS>Build-&#62;Library</EMPHASIS>. </PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>When the build completes, the image files can be found
+in the bin/ subdirectory of the install tree. GDB stub
+ROM images have the  prefix &ldquo;gdb_module&rdquo;.</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT4>
+<SECT4>
+<TITLE>Building the ROM images with ecosconfig</TITLE>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>Make an empty directory to contain the build tree,
+and cd into it. </PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>To build a GDB stub ROM image, enter the command:
+
+<PROGRAMLISTING>$ ecosconfig new ceb-v850 stubs </PROGRAMLISTING></PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Enter the commands: 
+
+<PROGRAMLISTING>$ ecosconfig tree
+$ make</PROGRAMLISTING>
+ </PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>When the build completes, the image files can be found
+in the bin/ subdirectory of the install tree. GDB stub
+ROM images have the prefix &ldquo;gdb_module&rdquo;.</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT4>
+</SECT3>
+<SECT3>
+<TITLE> Installing the Stubs into ROM or FLASH</TITLE>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA> Program the binary image file gdb_module.bin
+into ROM or FLASH referring to the instructions of your ROM
+		  programmer. </PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA> Plug the ROM/FLASH into the socket as described
+at the beginning of this section.</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT3>
+</SECT2>
+<SECT2>
+<TITLE>Debugging with the NEC V850 I.C.E.</TITLE>
+<PARA>eCos applications may be debugged using the NEC V850 In Circuit
+Emulator (I.C.E.) A PC running Microsoft Windows is required in
+order to run the NEC ICE software and drivers. In addition Red Hat
+have developed a &ldquo;libremote&rdquo; server application
+named v850ice.exe which is used on the PC connected to the I.C.E.
+in order to allow connections from GDB.</PARA>
+<PARA>The I.C.E. must be physically connected to a Windows NT system
+through NEC&quot;s PCI or PC Card interface.  A driver, DLLs,
+and application are provided by NEC to control the I.C.E.</PARA>
+<PARA>v850ice is a Cygwin based server that runs on the NT system
+and provides an interface between the gdb client and the I.C.E.
+software. v850-elf-gdb may be run on the Windows NT system or on
+a remote system. v850-elf-gdb communicates with the libremote server
+using the gdb remote protocol over a TCP/IP socket.  v850ice
+communicates with the I.C.E. by calling functions in the NECMSG.DLL provided
+by NEC.</PARA>
+<SECT3>
+<TITLE>INITIAL SETUP</TITLE>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>Configure the hardware including the I.C.E., SA1 or
+SB1 Option Module, and target board.  Install the interface card
+in the Windows NT system. Reference NEC&quot;s documentation
+for interface installation, jumper settings, etc.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Install the Windows NT device driver provided by NEC.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Copy the NEC DLLs, MDI application, and other support
+files to a directory on the Windows NT system. The standard location
+is C:\NecTools32. This directory will be referred to as
+the "libremote server directory" in this document. v850ice.exe must
+also be copied to this directory after being built. The required
+files are:  cpu.cfg, Nec.cfg, MDI.EXE, NECMSG.DLL, EX85032.DLL,
+V850E.DLL, IE850.MON, IE850E.MON, and D3037A.800.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Make certain the file cpu.cfg contains the line:</PARA>
+<PROGRAMLISTING>CpuOption=SA1</PROGRAMLISTING>
+<PARA>if using a V850/SA1 module, or:</PARA>
+<PROGRAMLISTING>CpuOption=SB1</PROGRAMLISTING>
+<PARA>if using a V850/SB1 module.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Set the environment variable IEPATH to point to the libremote
+server</PARA>
+<PARA>directory.</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT3>
+<SECT3>
+<TITLE>BUILD PROCEDURES</TITLE>
+<PARA>A pre-built v850ice.exe executable is supplied in the loaders/v850-ceb_v850 directory
+relative to the root of the eCos installation. However the following process
+will allow the rebuilding of this executable if required:</PARA>
+<PARA>For this example assume the v850ice libremote tree has been
+copied to a directory named "server".  The directory structure will
+be similar to the following diagram:</PARA>
+<PARA><PROGRAMLISTING>                server
+                   |
+                 devo
+                 /  \
+           config    libremote
+                      /     \
+                   lib       v850ice</PROGRAMLISTING></PARA>
+<PARA>Build the v850ice source as follows.  Be sure to use the native
+Cygwin compiler tools that were supplied alongside eCos.</PARA>
+<PARA>cd server
+mkdir build
+cd build
+../devo/configure --target=v850-elf --host=i686-pc-cygwin
+make</PARA>
+<PARA>The resultant libremote server image (v850ice.exe) can be
+found in build/libremote/v850ice.  Copy v850ice.exe
+to the lib remote server directory.</PARA>
+</SECT3>
+<SECT3>
+<TITLE>V850ICE.EXE EXECUTION</TITLE>
+<PARA>The v850ice command line syntax is:</PARA>
+<PARA>v850ice [-d] [-t addr] [port number]</PARA>
+<PARA>The optional -d option enables debug output.  The -t option
+is associated with thread debugging - see the "eCos thread debugging"
+section below for details. By default v850ice listens on port 2345
+for an attach request from a gdb client.  A different port number
+may be specified on the command line.</PARA>
+<PARA>To run the libremote server:</PARA>
+<ORDEREDLIST>
+<LISTITEM>
+<PARA>Power on the I.C.E. and target board.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Open a Cygwin window.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>Run v850ice.</PARA>
+</LISTITEM>
+<LISTITEM>
+<PARA>You will see the MDI interface window appear.  In this
+window you should see the "Connected to In-Circuit Emulator" message.
+ In the Cygwin window, the libremote server will indicate it is
+ready to accept a gdb client connection with the message "v850ice:
+ listening on port 2345."</PARA>
+</LISTITEM>
+</ORDEREDLIST>
+</SECT3>
+<SECT3>
+<TITLE>V850-ELF-GDB EXECUTION</TITLE>
+<PARA>Run the v850-elf-gdb client to debug the V850 target.  It
+is necessary to issue certain configuration commands to the I.C.E.
+software.  These commands may be issued directly in the MDI window
+or they may be issued from the gdb client through the "monitor"
+command.</PARA>
+<PARA>On the Cosmo CEB-V850 board, on-chip Flash is mapped at address
+0x0, the on-board EPROM at 0x100000 and the on-board RAM at 0xfc0000.
+Since a stand alone V850 will start executing from address 0x0 on
+reset, it is normal to load either an application or a bootstrap
+loader for Flash at this address. eCos programs may be built to
+boot from Flash or the on-board EPROM. If building for the on-board
+EPROM, it would be expected that the Flash will contain the default
+CEB-V850 flash contents. An ELF format version of the default contents
+may be found in the eCos distribution with the name v850flash.img.</PARA>
+<PARA>In stand alone operation, normally the code in this flash image
+would have been programmed into the V850 on the Cosmo board, and
+this would cause it to vector into the on-board EPROM to run the
+application located there. In the case of eCos, this application
+may be a GDB stub ROM application, allowing the further download
+to RAM over serial of actual applications to debug.</PARA>
+<PARA>As an example, we shall demonstrate how to use the I.C.E.
+to download the v850flash.img and GDB stub EPROM image using I.C.E.
+emulator memory only, and not requiring any actual programming of
+devices.</PARA>
+<PARA>v850-elf-gdb -nw
+(gdb) file v850flash.img
+(gdb) target remote localhost:2345
+(gdb) monitor reset
+(gdb) monitor cpu r=256 a=16
+(gdb) monitor map r=0x100000-L 0x80000
+(gdb) monitor map u=0xfc0000-L 0x40000
+(gdb) monitor pinmask k
+(gdb) monitor step
+(gdb) monitor step
+(gdb) monitor step
+(gdb) monitor step
+(gdb) load
+(gdb) detach
+(gdb) file gdb_module.img
+(gdb) target remote localhost:2345
+(gdb) load
+(gdb) continue</PARA>
+<PARA>NOTE: The four "monitor step" commands are only required the
+first time the board is connected to the I.C.E., otherwise the program
+will fail.</PARA>
+<PARA>This is because of a limitation of the I.C.E. hardware that
+means that the first time it is used, the "map" commands are not
+acted on and the addresses "0x100000" and "0xfc0000" are not mapped.
+This can be observed using the command "td e-20" in the MDI application&quot;s
+console to display the trace buffer, which will show that the contents
+of address 0x100000 are not valid. Subsequent runs do not require
+the "monitor step" commands.</PARA>
+<PARA>It is unusual to load two executable images to a target through
+gdb.  From the example above notice that this is accomplished by
+attaching to the libremote server, loading the flash image, detaching,
+reattaching, and loading the ROM/RAM image. It is more
+normal to build an executable image that can be executed directly.
+In eCos this is achieved by selecting either the ROM or ROMRAM startup
+type, and optionally enable building for the internal FLASH. The
+I.C.E. emulator memory can emulate both the internal FLASH and the
+EPROM, so real hardware programming is not required.</PARA>
+<PARA>Upon running this example you will notice that the libremote
+server does not exit upon detecting a detach request, but simply
+begins listening for the next attach request.  To cause v850ice
+to terminate, issue the "monitor quit" or "monitor exit" command
+from the gdb client.  v850ice will then terminate with the next
+detach request.  (You can also enter control-c in the Cygwin/DOS
+window where v850ice is running.)</PARA>
+</SECT3>
+<SECT3>
+<TITLE>MDI INTERFACE VS. GDB INTERFACE</TITLE>
+<PARA>If a filename is referenced in an MDI command, whether the
+command is entered in the MDI window or issued from the gdb client
+with the monitor command, the file must reside on the Windows NT
+libremote server system.  When specifying a filename when entering
+a command in the MDI window it is obvious that a server local file
+is being referenced.  When issuing an MDI command from the gdb client, the
+user must remember that the command line is simply passed to the
+I.C.E. software on the server system.  The command is executed by
+the I.C.E. software as though it were entered locally.</PARA>
+<PARA>Executable images may be loaded into the V850 target by entering
+the "load" command in the MDI window or with the gdb "load" command.
+ If the MDI load command is used, the executable image must be located
+on the server system and must be in S Record format.  If the gdb
+load command is used, the executable image must be located on the
+client system and must be in ELF format.</PARA>
+<PARA>Be aware that the gdb client is not aware of debugger commands
+issued from the MDI window.  It is possible to cause the gdb client
+and the I.C.E. software to get out of sync by issuing commands from
+both interfaces during the same debugging session.</PARA>
+</SECT3>
+<SECT3>
+<TITLE>eCos THREAD DEBUGGING</TITLE>
+<PARA>eCos and the V850 I.C.E. libremote server have been written
+to work together to allow debugging of eCos threads. This is an
+optional feature, disabled by default because of the overheads trying
+to detect a threaded program involves.</PARA>
+<PARA>Obviously thread debugging is not possible for programs with
+"RAM" startup type, as they are expected to operate underneath a
+separate ROM monitor (such as a GDB stub ROM), that itself would
+provide its own thread debugging capabilities over the serial line.
+Thread debugging is relevant only for programs built for Flash, ROM,
+or ROMRAM startup.</PARA>
+<PARA>To configure the libremote server to support thread debugging,
+use the command:</PARA>
+<PARA><PROGRAMLISTING>(gdb) monitor syscallinfo ADDRESS</PROGRAMLISTING></PARA>
+<PARA>at the GDB console prompt, where ADDRESS is the address of
+the syscall information structure included in the applications.
+In eCos this has been designed to be located at a consistent address
+for each CPU model (V850/SA1 or V850/SB1). It
+may be determined from an eCos executable using the following command
+at a cygwin bash prompt:</PARA>
+<PARA><PROGRAMLISTING>v850-elf-nm EXECUTABLE | grep hal_v85x_ice_syscall_info</PROGRAMLISTING></PARA>
+<PARA>At the current time, this address is 0xfc0400 for a Cosmo
+board fitted with a V850/SA1, or 0xfc0540 for a Cosmo board
+fitted with a V850/SB1.</PARA>
+<PARA>So for example, the GDB command for the SB1 would be:</PARA>
+<PARA><PROGRAMLISTING>(gdb) monitor syscallinfo 0xfc0540</PROGRAMLISTING></PARA>
+<PARA>Given that the syscallinfo address is fixed over all eCos
+executables for a given target, it is possible to define it on the
+libremote command line as well using the "-t" option, for example:</PARA>
+<PARA><PROGRAMLISTING>bash$ v850ice -t 0xfc0400
+v850ice: listening on port 2345</PROGRAMLISTING></PARA>
+</SECT3>
+</SECT2>
+</SECT1>
+<SECT1 id="setup-v850-cebsb1">
+<TITLE>NEC CEB-V850/SB1 Hardware Setup</TITLE>
+<PARA>The instructions for setting up the CEB-V850/SB1
+are virtually identical to those of the CEB-V850/SA1 above.
+The only significant differences are that pre-built loaders are available
+at loaders/v850-ceb_v850/v850sb1 within
+the eCos installation. Binaries supporting boards with both 16MHz
+and 8MHz clock speeds are supplied. Also when building applications,
+or rebuilding the stubs for a V850/SB1 target, then the
+V850 CPU variant must be changed in the CEB-V850 HAL to the SB1.</PARA>
+</SECT1>
+<SECT1 id="setup-i386-pc">
+<TITLE>i386 PC Hardware Setup</TITLE>
+<para>
+eCos application on the PC can be run in three ways: via RedBoot,
+loaded directly from a floppy disk, or loaded by the GRUB bootloader.
+</para>
+<sect2>
+<title>RedBoot Support</title>
+<PARA>For information about setting up the PC to run with RedBoot,
+consult the RedBoot User&quot;s Guide. If using serial debugging,
+the serial line runs at 38400 baud 8-N-1 and should be connected
+to the debug host using a null modem cable. If ethernet debugging
+is required, an i82559 compatible network interface card, such as
+an Intel EtherExpress Pro 10/100,  should be installed
+on the target PC and connected to the development PC running GDB.
+When RedBoot is configured appropriately to have an IP address set,
+then GDB will be able to debug directly over TCP/IP to the
+target PC.</PARA>
+</sect2>
+<sect2>
+<title>Floppy Disk Support</title>
+<para>
+If an application is built with a startup type of FLOPPY, then it is
+configured to be a self-booting image that must be written onto a
+formatted floppy disk. This will erase any existing file system or
+data that is already on the disk, so proceed
+with caution.
+</para>
+<para>
+To write an application to floppy disk, it must first be converted to
+a pure binary format. This is done with the following command:
+</para>
+<screen width=72>
+$ <userinput>i386-elf-objcopy -O binary app.elf app.bin</userinput>
+</screen>
+<para>
+Here <filename>app.elf</filename> is the final linked application
+executable, in ELF format (it may not have a <filename>.elf</filename>
+extension). The file <filename>app.bin</filename> is the resulting
+pure binary file. This must be written to the floppy disk with the
+following command:
+<screen width=72>
+$ <userinput>dd conv=sync if=app.bin of=/dev/fd0</userinput>
+</screen>
+</para>
+<para>For NT Cygwin users, this can be done by first ensuring that the raw
+floppy device is mounted as <filename>/dev/fd0</filename>. To check if this
+is the case, type the command <command>mount</command> at the Cygwin bash
+prompt. If the floppy drive is already mounted, it will be listed as something
+similar to the following line:</para>
+<screen>  \\.\a: /dev/fd0 user binmode</screen>
+<para>If this line is not listed, then mount the floppy drive using the command:
+</para>
+<screen>$ <userinput>mount -f -b //./a: /dev/fd0</userinput></screen>
+<para>To actually install the boot image on the floppy, use the command:</para>
+<screen>
+$ <userinput>dd conv=sync if=app.bin of=/dev/fd0</userinput>
+</screen>
+<para>Insert this floppy in the A: drive of the PC to be used as a target
+and ensure that the BIOS is configured to boot from A: by default. On reset,
+the PC will boot from the floppy and the eCos application will load
+itself and execute immediately.</para>
+<note><title>NOTE</title>
+<para>Unreliable floppy media may cause the write to silently fail. This
+can be determined if the RedBoot image does not correctly
+boot. In such cases, the floppy should be (unconditionally) reformatted
+using the <command>fdformat</command> command on Linux, or
+<command>format a: /u</command> on DOS/Windows. If this fails, try a
+different disk.</para>
+</note>
+</sect2>
+<sect2>
+<title>GRUB Bootloader Support</title>
+<para>
+If an application is built with the GRUB startup type, it is
+configured to be loaded by the GRUB bootloader.
+</para>
+<para>
+GRUB is an open source boot loader that supports many different
+operating systems. It is available from
+<ulink
+url="http://www.gnu.org/software/grub">http://www.gnu.org/software/grub</ulink>.
+The latest version of GRUB should be downloaded from there and installed.
+In Red Hat Linux version 7.2 and later it is the default bootloader
+for Linux and therefore is already installed.
+</para>
+<para>
+To install GRUB on a floppy disk from Linux you need to execute the
+following commands:
+</para>
+<screen>
+$ <userinput>mformat a:</userinput>
+$ <userinput>mount /mnt/floppy</userinput>
+$ <userinput>grub-install --root-directory=/mnt/floppy '(fd0)'</userinput>
+Probing devices to guess BIOS drives. This may take a long time.
+Installation finished. No error reported.
+This is the contents of the device map /mnt/floppy/boot/grub/device.map.
+Check if this is correct or not. If any of the lines is incorrect,
+fix it and re-run the script `grub-install'.
+
+(fd0)	/dev/fd0
+$ <userinput>cp $ECOS_REPOSITORY/packages/hal/i386/pc/current/misc/menu.lst /mnt/floppy/boot/grub</userinput>
+$ <userinput>umount /mnt/floppy</userinput>
+</screen>
+<para>
+The file <filename>menu.lst</filename> is an example GRUB menu
+configuration file. It contains menu items to load some of the
+standard eCos tests from floppy or from partition zero of the first
+hard disk. You should, of course, customize this file to load your own
+application. Alternatively you can use the command-line interface of
+GRUB to input commands yourself.
+</para>
+<para>
+Applications can be installed, or updated simply by copying them to
+the floppy disk at the location expected by the
+<filename>menu.lst</filename> file. For booting from floppy disks it
+is recommended that the executable be stripped of all debug and symbol
+table information before copying. This reduces the size of the file
+and can make booting faster.
+</para>
+<para>
+To install GRUB on a hard disk, refer to the GRUB documentation. Be
+warned, however, that if you get this wrong it may compromise any
+existing bootloader that exists on the hard disk and may make any
+other operating systems unbootable. Practice on floppy disks or
+sacrificial hard disks first. On machines running Red Hat Linux
+version 7.2 and later, you can just add your own menu items to the
+<filename>/boot/grub/menu.lst</filename> file that already exists.
+</para>
+</sect2>
+<sect2>
+<title>Debugging FLOPPY and GRUB Applications</title>
+<para>
+When RedBoot loads an application it also provides debugging services
+in the form of GDB remote protocol stubs. When an application is
+loaded stand-alone from a floppy disk, or by GRUB, these services are
+not present. To allow these application to be debugged, it is possible
+to include GDB stubs into the application.
+</para>
+<para>
+To do this, set the &quot;Support for GDB stubs&quot;
+(<literal>CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS</literal>) configuration
+option. Following this any application built will allow GDB to connect
+to the debug serial port (by default serial device 0, also known as
+COM1) whenever the application takes an exception, or if a Control-C
+is typed to the debug port. Ethernet debugging is not supported.
+</para>
+<para>
+The option &quot;Enable initial breakpoint&quot;
+(<literal>CYGDBG_HAL_DEBUG_GDB_INITIAL_BREAK</literal>) causes the HAL
+to take a breakpoint immediately before calling cyg_start(). This
+gives the developer a chance to set any breakpoints or inspect the
+system state before it proceeds. The configuration sets this option by
+default if GDB stubs are included, and this is not a RedBoot build. To
+make the application execute immediately either disable this option,
+or disable <literal>CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS</literal>.
+</para>
+</sect2>
+</SECT1>
+<SECT1 id="setup-synth-i386linux">
+<TITLE><!-- <conditionaltext> --><!-- <index></index> -->i386/Linux Synthetic Target Setup</TITLE>
+<PARA>When building for the synthetic Linux target, the resulting
+binaries are native Linux applications with the HAL providing suitable
+bindings between the eCos kernel and the Linux kernel.</PARA>
+<NOTE>
+<PARA>Please be aware that the current implementation of the Linux
+synthetic target does not allow thread-aware debugging.</PARA>
+</NOTE>
+<PARA>These Linux applications cannot be run on a Windows system.
+However, it is possible to write a similar HAL emulation for the
+Windows kernel if such a testing target is desired.</PARA>
+<SECT2>
+<TITLE>Tools</TITLE>
+
+<PARA>For the synthetic target, eCos relies on features not available
+in native compilers earlier than gcc-2.95.1. It also requires version
+2.9.5 or later of the GNU linker. If you have gcc-2.95.1 or later
+and ld version 2.9.5 or later, then you do not need to build new
+tools. eCos does not support earlier versions. You can check the compiler
+version using <COMMAND>gcc -v</COMMAND> 
+and the linker version using <COMMAND>ld
+-v</COMMAND>.</PARA>
+
+<PARA>If you have native tools that are sufficiently recent for
+use with eCos, you should be aware that by default eCos assumes
+that the tools <COMMAND>i686-pc-linux-gnu-gcc</COMMAND>, <COMMAND>i686-pc-linux-gnu-ar</COMMAND>,
+ <COMMAND>i686-pc-linux-gnu-ld</COMMAND>, and <COMMAND>i686-pc-linux-gnu-objcopy</COMMAND> are
+on your system and are the correct versions for use with eCos. But
+instead, you can tell eCos to use your native tools by editing the
+configuration value "Global command prefix" (CYGBLD_GLOBAL_COMMAND_PREFIX)
+in your eCos configuration. If left empty (i.e. set to the empty
+string) eCos will use your native tools when building.</PARA>
+<PARA>If you have any difficulties, it is almost certainly easiest
+overall to rebuild the tools as described on: <ULINK URL="http://sources.redhat.com/ecos/getstart.html">http://sources.redhat.com/ecos/getstart.html</ULINK></PARA>
+</SECT2>
+</SECT1>
+
+
+</appendix>
--- a/doc/sgml/user-guide/user-guide.sgml
+++ b/doc/sgml/user-guide/user-guide.sgml
@@ -7,10 +7,16 @@
 <!ENTITY ui "&micro;ITRON">
 <!ENTITY cygnus-full "Cygnus Solutions">
 <!ENTITY cygnus-legal-notice SYSTEM "CYGNUS-TERMS">
-<!ENTITY cygnus-ecos-license SYSTEM "cygnus-ecos-license.sgml">
+<!ENTITY ecos-license SYSTEM "ecos-license.sgml">
+<!ENTITY introduction SYSTEM "introduction.sgml">
+<!ENTITY installation SYSTEM "installation.sgml">
+<!ENTITY programming SYSTEM "programming.sgml">
 <!ENTITY config-tool SYSTEM "config-tool.sgml">
 <!ENTITY programming-concepts-and-techniques SYSTEM "programming-concepts-techniques.sgml">
 <!ENTITY configuration SYSTEM "configuration.sgml">
+<!ENTITY target-setup SYSTEM "target-setup.sgml">
+<!ENTITY real-time-characterization SYSTEM "real-time-characterization.sgml">
+
 <!NOTATION PNG SYSTEM "PNG">
 <!ENTITY send-pr SYSTEM "send-pr.sgml">
 <!ENTITY graphic1 SYSTEM "pix/config-f1.png" NDATA png>
@@ -43,12 +49,22 @@
 <!ENTITY graphic28 SYSTEM "pix/addfromfolder.png" NDATA png>
 <!ENTITY graphic29 SYSTEM "pix/bash.png" NDATA png>
 <!ENTITY graphic30 SYSTEM "pix/comprepos.png" NDATA png>
-<!ENTITY Version CDATA "v1_3_x">
 <!ENTITY graphic31 SYSTEM "pix/admin.png" NDATA png>
 <!ENTITY graphic32 SYSTEM "pix/settings-display.png" NDATA png>
 <!ENTITY graphic33 SYSTEM "pix/settings-confict.png" NDATA png>
 <!ENTITY graphic34 SYSTEM "pix/settings-runtests.png" NDATA png>
-<!ENTITY version CDATA "1.3.x">
+<!ENTITY programming-graphic1 SYSTEM "pix/config-f1.png" NDATA png>
+<!ENTITY programming-graphic2 SYSTEM "pix/templates01.png" NDATA png>
+<!ENTITY programming-graphic3 SYSTEM "pix/ARMStartup01.png" NDATA png>
+<!ENTITY programming-graphic4 SYSTEM "pix/build-lib01.png" NDATA png>
+<!ENTITY programming-graphic5 SYSTEM "pix/save-as-dialog.png" NDATA png>
+<!ENTITY programming-graphic6 SYSTEM "pix/build-tools2.png" NDATA png>
+<!ENTITY programming-graphic7 SYSTEM "pix/user-tools-dialog.png" NDATA png>
+<!ENTITY programming-graphic8 SYSTEM "pix/build-tests01.png" NDATA png>
+<!ENTITY programming-graphic9 SYSTEM "pix/twothreads2.png" NDATA png>
+
+<!-- <!ENTITY version CDATA "&lt;version&gt;"> -->
+<!ENTITY Version CDATA "<version>">
 
 <!-- End Document Specific Declarations -->
 
@@ -58,6 +74,7 @@
   <bookinfo>
     <TITLE>eCos User Guide</TITLE>
     <copyright><year>2001, 2002</year><holder>Red Hat, Inc.</holder></copyright>
+    <copyright><year>2003</year><holder>eCosCentric Ltd.</holder></copyright>
 
     <legalnotice>
 	<title>Documentation licensing terms</title>
@@ -100,55 +117,21 @@ of Microsoft Corporation, Inc. </para>
 <para>All other brand and product names, trademarks, and copyrights are the
 property of their respective owners. </para>
       </legalnotice>
-      <legalnotice>
-<title>Warranty</title>
-<para>eCos and RedBoot are open source software, covered by the Red Hat eCos Public License,
-and you are welcome to change it and/or distribute copies of it under certain
-conditions. The supplied version of eCos and/or RedBoot is supported for customers of Red Hat. See <ulink
-url="http://sources.redhat.com/ecos/license-overview.html">http://sources.redhat.com/ecos/license-overview.html
-</ulink></para>
-<para>For non-customers, eCos and RedBoot software has NO WARRANTY. </para>
-<para>Because this software is licensed free of charge, there are no warranties
-for it, to the extent permitted by applicable law. Except when otherwise stated
-in writing, the copyright holders and/or other parties provide the software
-&ldquo;as is&rdquo; without warranty of any kind, either expressed or implied,
-including, but not limited to, the implied warranties of merchantability and
-fitness for a particular purpose. The entire risk as to the quality and performance
-of the software is with you. Should the software prove defective, you assume
-the cost of all necessary servicing, repair or correction.</para>
-<para> In no event, unless required by applicable law or agreed to in writing,
-will any copyright holder, or any other party who may modify and/or redistribute
-the program as permitted above, be liable to you for damages, including any
-general, special, incidental or consequential damages arising out of the use
-or inability to use the program (including but not limited to loss of data
-or data being rendered inaccurate or losses sustained by you or third parties
-or a failure of the program to operate with any other programs), even if such
-holder or other party has been advised of the possibility of such damages.
-</para>
-      </legalnotice>
     </bookinfo>
 
 
-    <part id="preliminaries">
-    <title>Preliminaries</title>
-    <preface id="contacting-redhat">
-      <title>How to Contact Red Hat</title>
-      <para><address>Red Hat Corporate Headquarters
-	  <street>2600 Meridian Parkway</street>
-	  <city>Durham</city><state>NC</state> <postcode>27713</postcode> <country>
-	    USA</country>
-	  Telephone (toll free): <phone>+1 888 REDHAT 1 (+1 888 733 4281)</phone>
-	  Telephone (main line): <phone>+1 919 547 0012 </phone>
-	  Telephone (FAX line): <fax>+1 919 547 0024 </fax>
-</address>
-	  Website: <ulink url="http://www.redhat.com/">http://www.redhat.com/
-	</ulink>
-</para>
-    </preface>
-  </part>
-
+  &introduction;
+  &installation;
+  &programming;
   &config-tool;
   &programming-concepts-and-techniques;
   &configuration;
 
+  <part id="appendices">
+  <title>Appendixes</title>
+  &target-setup;
+  &real-time-characterization;
+  &ecos-license;
+  </part>
+
 </BOOK>