Skip to content
Snippets Groups Projects
NuttX.html 39.6 KiB
Newer Older
<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
    <a name="environments"><h1>Development Environments</h1></a>
  </td>
  </tr>
</table>

<center><table width="90%">
<tr>
patacongo's avatar
patacongo committed
  <td valign="top"><img height="20" width="20" src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>Linux + GNU make + GCC/binutils</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      The is the most natural development environment for NuttX.
      Any version of the GCC/binutils toolchain may be used.
      There is a  highly modified <a href="http://buildroot.uclibc.org/">buildroot</a>
      available for download from the
      <a href="http://sourceforge.net/project/showfiles.php?group_id=189573">NuttX SourceForge</a>
      page.
patacongo's avatar
patacongo committed
      This download may be used to build a NuttX-compatible ELF toolchain under Linux or Cygwin.
      That toolchain will support ARM, m68k, m68hc11, m68hc12, and SuperH ports.
      The buildroot CVS may be accessed in the 
      <a href="http://nuttx.cvs.sourceforge.net/nuttx/misc/buildroot/">NuttX CVS</a>.
    </p>
   </td>
</tr>

<tr>
patacongo's avatar
patacongo committed
  <td valign="top"><img height="20" width="20" src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>Linux + GNU make + SDCC</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      Also very usable is the Linux environment using the 
      <a href="http://sdcc.sourceforge.net/">SDCC</a> compiler.
      The SDCC compiler provides support for the 8051/2, z80, hc08, and other microcontrollers.
      The SDCC-based logic is less well exercised and you will likely find some compilation
      issues if you use parts of NuttX with SDCC that have not been well-tested.
    </p>
   </td>
</tr>

<tr>
patacongo's avatar
patacongo committed
  <td valign="top"><img height="20" width="20" src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>Cygwin + GNU make + GCC/binutils</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      This combination works well too.
      It works just as well as the native Linux environment except
      that compilation and build times are a little longer.
      The custom NuttX buildroot referenced above may be build in
      the Cygwin environment as well.
    </p>
  </td>
</tr>

<tr>
patacongo's avatar
patacongo committed
  <td valign="top"><img height="20" width="20" src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>Cygwin + GNU make + SDCC</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
       I have never tried this combination, but it would probably work just fine.
    </p>
  </td>
</tr>

<tr>
patacongo's avatar
patacongo committed
  <td valign="top"><img height="20" width="20" src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>Cygwin + GNU make + Windows Native Toolchain</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      This is a tougher environment.
      In this case, the Windows native toolchain is unaware of the the
      Cygwin <i>sandbox</i> and, instead, operates in the native Windows environment.
      The primary difficulties with this are:
    </p>
    <ul>
      <li>
patacongo's avatar
patacongo committed
        <b>Paths</b>.
        Full paths for the native toolchain must follow Windows standards.
        For example, the path <code>/home/my\ name/nuttx/include</code> my have to be
        converted to something like <code>'C:\cygwin\home\my name\nuttx\include'</code>
        to be usable by the toolchain.
      </li>
      <p>
        Fortunately, this conversion is done simply using the <code>cygpath</code> utility.
      </p>
      <li>
        <b>Symbolic Links</b>
        NuttX depends on symbolic links to install platform-specific directories in the build system.
        On Linux, true symbolic links are used.
        On Cygwin, emulated symbolic links are used.
        Unfortunately, for native Windows applications that operate outside of the
        Cygwin <i>sandbox</i>, these symbolic links cannot be used.
      </li>
      <p>
        The NuttX make system works around this limitation by copying the platform
        specific directories in place.
        These copied directories make work a little more complex, but otherwise work well.
      </p>
    </ul>
    <p>
      At present, on the Zilog Z16F port uses a native Windows toolchain
      (the Zilog ZDS-II toolchain).
    </p.
  </td>
</tr>

<tr>
patacongo's avatar
patacongo committed
  <td valign="top"><img height="20" width="20" src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
patacongo's avatar
patacongo committed
    <b>Other Environments?</b>
patacongo's avatar
patacongo committed
      The primary environmental dependency of NuttX are (1) GNU make,
      (2) bash scripting, and (3) Linux utilities (such as sed).
      If you have other platforms that support GNU make or make
      utilities that are compatible with GNU make, then it is very
patacongo's avatar
patacongo committed
      likely that NuttX would work in that environment as well (with some
      porting effort). If GNU make is not supported, then some significant
      modification of the Make system would be required.
patacongo's avatar
patacongo committed
<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
    <a name="footprint"><h1>Memory Footprint</h1></a>
  </td>
  </tr>
</table>
patacongo's avatar
patacongo committed

patacongo's avatar
patacongo committed
<ul>
<p><b>C5471 (ARM7)</b>
patacongo's avatar
patacongo committed
  The build for this ARM7 target that includes most of the OS features and
  a broad range of OS tests.  The size of this executable as given by the
  Linux <tt>size</tt> command is (3/9/07):
patacongo's avatar
patacongo committed
<pre>
   text    data     bss     dec     hex filename
  53272     428    3568   57268    dfb4 nuttx
</pre>
<p><b>DM320 (ARM9)</b>
patacongo's avatar
patacongo committed
  This build for the ARM9 target includes a significant subset of OS
  features, a filesystem, Ethernet driver, full TCP/IP, UDP and (minimal)
  ICMP stacks (via uIP) and a small network test application: (11/8/07,
  configuration netconfig, examples/nettest)
</p>
<pre>
   text    data     bss     dec     hex filename
patacongo's avatar
patacongo committed
  49472     296    3972   53740    d1ec nuttx
patacongo's avatar
patacongo committed
<p>
  Another build for the ARM9 target includes a minimal OS feature
  set, Ethernet driver, full TCP/IP and (minimal) ICMP stacks, and
  a small webserver: (11/20/07, configuration uipconfig, examples/uip)
</p>
<pre>
   text    data     bss     dec     hex filename
  52040      72    4148   56260    dbc4 nuttx
</pre>
patacongo's avatar
patacongo committed
<p><b>87C52</b>
  A reduced functionality OS test for the 8052 target requires only
  about 18-19Kb:
<pre>
Stack starts at: 0x21 (sp set to 0x20) with 223 bytes available.

Other memory:
   Name             Start    End      Size     Max
   ---------------- -------- -------- -------- --------
   PAGED EXT. RAM                         0      256
   EXTERNAL RAM     0x0100   0x02fd     510     7936
   ROM/EPROM/FLASH  0x2100   0x6e55   19798    24384
</pre>
patacongo's avatar
patacongo committed
</ul>
patacongo's avatar
patacongo committed

patacongo's avatar
patacongo committed
<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
    <a name="licensing"><h1>Licensing</h1></a>
  </td>
  </tr>
</table>
patacongo's avatar
patacongo committed

patacongo's avatar
patacongo committed
<ul>
<p>
  NuttX is available under the highly permissive
patacongo's avatar
patacongo committed
  <a href="http://en.wikipedia.org/wiki/BSD_license">BSD license</a>.
patacongo's avatar
patacongo committed
  Other than some fine print that you agree to respect the copyright
patacongo's avatar
patacongo committed
  you should feel absolutely free to use NuttX in any environment and
  without any concern for jeopardizing any proprietary software that
patacongo's avatar
patacongo committed
  you may link with it.
</p>
</ul>
patacongo's avatar
patacongo committed

patacongo's avatar
patacongo committed
<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
    <a name="history"><h1>Release History</h1></a>
  </td>
  </tr>
</table>
patacongo's avatar
patacongo committed
<ul>
<p>
   The current NuttX Change Log is available in CVS <a href="http://nuttx.cvs.sourceforge.net/*checkout*/nuttx/nuttx/ChangeLog">here</a>.
   ChangeLog snapshots associated with the current release are available below.
</p>
</ul>

patacongo's avatar
patacongo committed
<center><table width ="80%">
<tr>
patacongo's avatar
patacongo committed
  <td valign="top" width="22"><img height="20" width="20" src="favicon.ico"></td>
patacongo's avatar
patacongo committed
   <td>
patacongo's avatar
patacongo committed
      <a href="ChangeLog.txt">Change Logs for All NuttX Releases</a><br>
patacongo's avatar
patacongo committed
   </td>
</tr>
<tr>
patacongo's avatar
patacongo committed
  <td valign="top" width="22"><img height="20" width="20" src="favicon.ico"></td>
patacongo's avatar
patacongo committed
   <td>
patacongo's avatar
patacongo committed
      <a href="#currentrelease">ChangeLog for Current Releases</a><br>
patacongo's avatar
patacongo committed
   </td>
</tr>
<tr>
patacongo's avatar
patacongo committed
  <td valign="top" width="22"><img height="20" width="20" src="favicon.ico"></td>
patacongo's avatar
patacongo committed
   <td>
      <a href="#pendingchanges">Unreleased Changes</a>
   </td>
</tr>
</table></center>

patacongo's avatar
patacongo committed
<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
patacongo's avatar
patacongo committed
    <a name="currentrelease">ChangeLog for Current Release</a>
patacongo's avatar
patacongo committed
  </td>
  </tr>
</table>

<pre><ul>
patacongo's avatar
patacongo committed
nuttx-0.3.19 2008-xx-xx Gregory Nutt &lt;spudmonkey@racsa.co.cr&gt;
	* Add poll() and select() APIs (in the initial check-in, these work only with character devices) 
	* Add poll() methods to /dev/null, /dev/zero, pipes, fifos, and serial drivers.
	* Add examples/poll for testing poll() and select()
	* Fix hostile behavior of getc, fgetc, getchar, etc.: the serial driver was waiting for a
	  full buffer of read data before return.  This means that getc would stall when it needed
	  to refill the input buffer. The old behavior (read full blocks) might be useful in other
	  contexts, so it is still available within the driver as a configuration option.
	* Implement poll() and select() support for TCP/IP sockets
	* Fixed an important bug in the TCP/IP buffering logic.  When TCP/IP read-ahead is enabled
	  and not recv() is in-place when a TCP/IP packet is received, the packet is placed into
	  a read-ahead buffer.  However, the old contents of the read-ahead buffer were not being
	  cleared and old data would contaminate the newly received buffer.
	* Implemented support for connection backlog.  The size of the backlog is specified by the
	  second argument of the standard listen() API.  Hooks are provided to support poll()/select()
	  waiting for connections, with a subsequent call to accept() to use the backlogged connection.
	* Fixed a minor bug in accept().  It should allow the address and addresslen values to be NULL
	* Added first-cut definition for a framebuffer interface (and simulated framebuffer for testing
	  purposes only)
	* Added fixed precision math support
	* Added some color converson routines into what may become a real graphics library someday.
	* Added a framebuffer driver for the DM320 (untested on initial check-in)
	* Network: add support for outgoing multicast addresses
	* Added some rasterizers to the graphics library
patacongo's avatar
patacongo committed

pascal-0.1.2 2008-02-10 Gregory Nutt &lt;spudmonkey@racsa.co.cr&gt;

	* Add logic to build and link with the ZDS-II toolchain
	  use with the z16f.
	* Make sure that POFF header structures are aligned
	* Standardized POFF file format to big-endian
	* Break up large switch statements to lower complexity
	  and eliminate a compiler bug
	* Changes so that runtime compiles with SDCC.

buildroot-0.1.2 2007-11-06 &lt;spudmonkey@racsa.co.cr&gt

	* Support for m68k-elf and m68hc11 toolchain
	* Add patch to build older binutils with newer Texinfo version
	* Add support for SH-1 toolchain
</pre></ul>

<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
    <a name="pendingchanges">Unreleased Changes</a>
  </td>
  </tr>
</table>

<pre><ul>
patacongo's avatar
patacongo committed
nuttx-0.3.20 2008-xx-xx Gregory Nutt &lt;spudmonkey@racsa.co.cr&gt;
patacongo's avatar
patacongo committed
	* Initial release of a tiny windowing system for NuttX
	* Add fixed precision sin() and cos() (not well tested at initial check-in)
	* Add an X11-based simulated framebuffer driver
	* The simulated target now has an option (CONFIG_SIM_WALLTIME) that will let the simulation
	  run in more-or-less realtime.
patacongo's avatar
patacongo committed
	* Added more more extensive window support:  frames, toolbars, etc.
	* Added support for bitmap fonts
patacongo's avatar
patacongo committed
	* Integrated the new font support with a font test in examples/nx
patacongo's avatar
patacongo committed
pascal-0.1.3 2008-xx-xx Gregory Nutt &lt;spudmonkey@racsa.co.cr&gt;
patacongo's avatar
patacongo committed

patacongo's avatar
patacongo committed
buildroot-0.1.3 2008-xx-xx &lt;spudmonkey@racsa.co.cr&gt;
patacongo's avatar
patacongo committed
	* Add support for H8/300 toolchain
patacongo's avatar
patacongo committed
</pre></ul>

patacongo's avatar
patacongo committed
<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
    <a name="TODO"><h1>Bugs, Issues, <i>Things-To-Do</i></h1></a>
  </td>
  </tr>
</table>

<ul>
<p>
   The current list of NuttX <i>Things-To-Do</i> in CVS <a href="http://nuttx.cvs.sourceforge.net/*checkout*/nuttx/nuttx/TODO">here</a>.
   A snapshot of the <i>To-Do</i> list associated with the current release are available <a href="TODO.txt">here</a>.
</p>
</ul>
patacongo's avatar
patacongo committed
<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
    <a name="documentation"><h1>Other Documentation</h1></a>
  </td>
  </tr>
</table>
patacongo's avatar
patacongo committed

patacongo's avatar
patacongo committed
<ul><table>
<tr>
patacongo's avatar
patacongo committed
  <td valign="top" width="22"><img height="20" width="20" src="favicon.ico"></td>
patacongo's avatar
patacongo committed
  <td><a href="NuttxUserGuide.html">User Guide</a></td>
patacongo's avatar
patacongo committed
</tr>
<tr>
patacongo's avatar
patacongo committed
  <td valign="top" width="22"><img height="20" width="20" src="favicon.ico"></td>
patacongo's avatar
patacongo committed
  <td><a href="NuttxPortingGuide.html">Porting Guide</a></td>
patacongo's avatar
patacongo committed
</tr>
patacongo's avatar
patacongo committed
<tr>
patacongo's avatar
patacongo committed
  <td valign="top" width="22"><img height="20" width="20" src="favicon.ico"></td>
patacongo's avatar
patacongo committed
  <td><a href="NuttShell.html">NuttShell (NSH)</a></td>
</tr>
patacongo's avatar
patacongo committed
<tr>
patacongo's avatar
patacongo committed
  <td valign="top" width="22"><img height="20" width="20" src="favicon.ico"></td>
patacongo's avatar
patacongo committed
  <td><a href="ChangeLog.txt">Change Log</a></td>
</tr>
<tr>
patacongo's avatar
patacongo committed
  <td valign="top" width="22"><img height="20" width="20" src="favicon.ico"></td>
patacongo's avatar
patacongo committed
  <td><a href="TODO.txt">To-Do List</a></td>
</tr>
patacongo's avatar
patacongo committed
</center></ul>
patacongo's avatar
patacongo committed

patacongo's avatar
patacongo committed
<small>
<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
    <a name="trademarks"><h1>Trademarks</h1></a>
  </td>
  </tr>
</table>
<ul>
patacongo's avatar
patacongo committed
  <li>ARM, ARM7 ARM7TDMI, ARM9, ARM926EJS are trademarks of Advanced RISC Machines, Limited.</li>
  <li>Cygwin is a trademark of Red Hat, Incorporated.</li>
  <li>Linux is a registered trademark of Linus Torvalds.</li>
  <li>LPC2148 is a trademark of NXP Semiconductors.</li>
  <li>TI is a tradename of Texas Instruments Incorporated.</li>
  <li>UNIX is a registered trademark of The Open Group.</li>
  <li>VxWorks is a registered trademark of Wind River Systems, Incorporated.</li>
patacongo's avatar
patacongo committed
  <li>ZDS, ZNEO, Z16F, Z80, and Zilog are a registered trademark of Zilog, Inc.</li>
patacongo's avatar
patacongo committed
</ul>
<p>
patacongo's avatar
patacongo committed
  NOTE: NuttX is <i>not</i> licensed to use the POSIX trademark.  NuttX uses the POSIX
  standard as a development guideline only.
patacongo's avatar
patacongo committed
</p>
</small>

patacongo's avatar
patacongo committed
</body>
</html>