Skip to content
Snippets Groups Projects
NuttX.html 31.8 KiB
Newer Older
patacongo's avatar
patacongo committed
<html>
<head>
<title>NuttX</title>
</head>
<body background="backgd.gif">
patacongo's avatar
patacongo committed
<hr><hr>
<table width ="100%">
  <tr align="center" bgcolor="#e4e4e4">
    <td>
      <h1><big><font color="#3c34ec"><i>NuttX RTOS</i></font></big></h1>
patacongo's avatar
patacongo committed
      <p>Last Updated: November 1, 2008</p>
patacongo's avatar
patacongo committed
    </td>
  </tr>
</table>
<hr><hr>
<table width ="100%">
  <tr bgcolor="#e4e4e4">
    <td>
patacongo's avatar
patacongo committed
    </td>
  </tr>
</table>

<center><table width ="80%">
<tr>
<td>
<table>
<tr>
patacongo's avatar
patacongo committed
  <td valign="top" width="22"><img height="20" width="20" src="favicon.ico"></td>
  <td>
    <a href="#overview">Overview</a>.<br>
    What is NuttX?
  </td>
</tr>
<tr>
patacongo's avatar
patacongo committed
  <td valign="top" width="22"><img height="20" width="20" src="favicon.ico"></td>
  <td>
    <a href="#downloads">Downloads</a>.<br>
    Where can I get NuttX?  What is the current development status?
  </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>
  <td>
    <a href="#platforms">Supported Platforms</a>.<br>
    What target platforms has NuttX been ported to?
  </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>
  <td>
    <a href="#environments">Development Environments</a>.<br>
    What kinds of host cross-development platforms can be used with NuttX?
  </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>
  <td>
    <a href="#footprint">Memory Footprint</a>.<br>
    Just how big is it?  Do I have enough memory to use NuttX?
  </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>
  <td>
    <a href="#licensing">Licensing</a>.<br>
    Are there any licensing restrictions for the use of NuttX? (Almost none)
    Will there be problems if I link my proprietary code with NuttX? (No)
  </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>
  <td>
    <a href="#history">Release History</a><br>
    What has changed in the last release of NuttX?
    What unreleased changes are pending in CVS?
  </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>
  <td>
    <a href="#TODO">Bugs, Issues, <i>Things-To-Do</i></a>.<br>
    Software is never finished nor ever tested well enough.
patacongo's avatar
patacongo committed
    (Do you want to help develop NuttX?  If so, send me an email).
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>
  <td>
    <a href="#documentation">Other Documentation</a>.<br>
    What other NuttX documentation is available?
  </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>
  <td>
    <a href="#trademarks">Trademarks</a>.<br>
    Some of the words used in this document belong to other people.
  </td>
patacongo's avatar
patacongo committed
</tr>
patacongo's avatar
patacongo committed
</table>
</td>
patacongo's avatar
patacongo committed
</tr>
patacongo's avatar
patacongo committed
</table></center>

<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
    <a name="overview"><h1>Overview</h1></a>
  </td>
  </tr>
</table>

patacongo's avatar
patacongo committed
<p>
patacongo's avatar
patacongo committed
  <b>Goals</b>.
patacongo's avatar
patacongo committed
  Nuttx is a real timed embedded operating system (RTOS).
  Its goals are:
<p>
patacongo's avatar
patacongo committed
<center><table width="90%">
<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 bgcolor="#5eaee1">
    <b>Small Footprint</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
patacongo's avatar
patacongo committed
    <p>
      Usable in all but the tightest micro-controller environments,
      The focus is on the tiny-to-small, deeply embedded environment.
    </p>
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 bgcolor="#5eaee1">
    <b>Rich Feature OS Set</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
patacongo's avatar
patacongo committed
    <p>
patacongo's avatar
patacongo committed
      The goal is to provide implementations of most standard POSIX OS interfaces
      to support a rich, multi-threaded development environment for deeply embedded
patacongo's avatar
patacongo committed
      processors.
patacongo's avatar
patacongo committed
    </p>
patacongo's avatar
patacongo committed
      NON-GOALS: (1) It is not a goal to provide the rich level of OS
      features like those provided with Linux.
      Small footprint is more important than features.
      Standard compliance is more important than small footprint.
patacongo's avatar
patacongo committed
      (2) There is no MMU-based support for processes.
      At present, NuttX assumes a flat address space.
    </p>
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 bgcolor="#5eaee1">
    <b>Highly Scalable</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
patacongo's avatar
patacongo committed
    <p>
      Fully scalable from tiny (8-bit) to moderate embedded (32-bit).
      Scalability with rich feature set is accomplished with:
      Many tiny source files, link from static libraries, highly configurable, use of
      weak symbols when available.
    </p>
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 bgcolor="#5eaee1">
    <b>Standards Compliance</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
patacongo's avatar
patacongo committed
    <p>
      NuttX strives to achieve a high degree of standards compliance.
patacongo's avatar
patacongo committed
      The primary governing standards are POSIX and ANSI standards.
patacongo's avatar
patacongo committed
      Additional standard APIs from Unix and other common RTOS's are
      adopted for functionality not available under these standards
patacongo's avatar
patacongo committed
      or for functionality that is not appropriate for the deeply-embedded
patacongo's avatar
patacongo committed
      RTOS (such as <code>fork()</code>).
    </p>
    <p>
      Because of this standards conformance, software developed under other
      standard OSs (such as Linux) should port easily to NuttX.
    </p>
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 bgcolor="#5eaee1">
    <b>Real-Time</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
patacongo's avatar
patacongo committed
    <p>
      Fully pre-emptible, fixed priority and round-robin scheduling.
    </p>
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 bgcolor="#5eaee1">
    <b>Totally Open</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
patacongo's avatar
patacongo committed
    <p>
      Non-restrictive BSD license.
    </p>
patacongo's avatar
patacongo committed
</tr>
</table></center>
patacongo's avatar
patacongo committed

patacongo's avatar
patacongo committed
<p>
  <b>Feature Set</b>.
  Key features of NuttX include:
<p>
<center><table width="90%">

<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 bgcolor="#5eaee1">
    <b>Standards Compliant Core Task Management</b>
  </td>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
patacongo's avatar
patacongo committed
      <li>Modular, micro-kernel</li>
patacongo's avatar
patacongo committed
    </p>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
patacongo's avatar
patacongo committed
      <li>Fully pre-emptible.</li>
patacongo's avatar
patacongo committed
    </p>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
patacongo's avatar
patacongo committed
      <li>Naturally scalable.</li>
patacongo's avatar
patacongo committed
<tr>
  <td><br></td>
  <td>
    <p>
      <li>Highly configurable.</li>
    </p>
</tr>

patacongo's avatar
patacongo committed
<tr>
  <td><br></td>
  <td>
    <p>
patacongo's avatar
patacongo committed
      <li>Easily extensible to new processor architectures, SoC architecture, or board architectures.
          A <a href="NuttxPortingGuide.html">Porting Guide</a> is in development.</li>
patacongo's avatar
patacongo committed
    </p>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
patacongo's avatar
patacongo committed
      <li>FIFO and round-robin scheduling.</li>
patacongo's avatar
patacongo committed
    </p>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
patacongo's avatar
patacongo committed
      <li>Realtime, deterministic.</li>
patacongo's avatar
patacongo committed
    </p>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
patacongo's avatar
patacongo committed
      <li>POSIX/ANSI-like task controls, named message queues, counting semaphores, clocks/timers, signals, pthreads, environment variables, filesystem.</li>
patacongo's avatar
patacongo committed
    </p>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
patacongo's avatar
patacongo committed
      <li>VxWorks-like task management and watchdog timers.</li>
patacongo's avatar
patacongo committed
    </p>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
patacongo's avatar
patacongo committed
      <li>BSD socket interface.</li>
patacongo's avatar
patacongo committed
    </p>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
patacongo's avatar
patacongo committed
      <li>Extensions to manage pre-emption.</li>
patacongo's avatar
patacongo committed
    </p>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
patacongo's avatar
patacongo committed
      <li>Well documented in the NuttX <a href="NuttxUserGuide.html">User Guide</a>.</li>
patacongo's avatar
patacongo committed
    </p>
</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 bgcolor="#5eaee1">
    <b>File system</b>
  </td>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
patacongo's avatar
patacongo committed
      <li>Tiny in-memory, root pseudo-file-system.</li>
patacongo's avatar
patacongo committed
    </p>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
patacongo's avatar
patacongo committed
      <li>Supports character and block drivers.</li>
patacongo's avatar
patacongo committed
    </p>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
patacongo's avatar
patacongo committed
      <li>Network, USB (device), serial, CAN, driver architecture.</li>
patacongo's avatar
patacongo committed
<tr>
  <td><br></td>
  <td>
    <p>
      <li>RAMDISK, pipes, FIFO, <code>/dev/null</code>, <code>/dev/zero</code> drivers.</li>
    </p>
</tr>
patacongo's avatar
patacongo committed
<tr>
  <td><br></td>
  <td>
    <p>
patacongo's avatar
patacongo committed
      <li>Mount-able volumes.  Bind mountpoint, filesystem, and block device driver.</li>
patacongo's avatar
patacongo committed
    </p>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
patacongo's avatar
patacongo committed
      <li>FAT12/16/32 filesystem support.</li>
patacongo's avatar
patacongo committed
    </p>
</tr>
patacongo's avatar
patacongo committed
<tr>
  <td><br></td>
  <td>
    <p>
      <li>Generic driver for SPI-based MMC/SD cards.</li>
    </p>
</tr>
patacongo's avatar
patacongo committed
<tr>
  <td><br></td>
  <td>
    <p>
      <li>ROMFS filesystem support.</li>
    </p>
</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 bgcolor="#5eaee1">
    <b>C Library</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
patacongo's avatar
patacongo committed
      <li>Fully integrated into the OS.</li>
patacongo's avatar
patacongo committed
    </p>
</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 bgcolor="#5eaee1">
    <b>Networking</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
patacongo's avatar
patacongo committed
      <li>TCP/IP, UDP, ICMP stacks.</li>
patacongo's avatar
patacongo committed
    </p>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
patacongo's avatar
patacongo committed
      <li>Small footprint (based on uIP).</li>
patacongo's avatar
patacongo committed
    </p>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
patacongo's avatar
patacongo committed
      <li>BSD compatible socket layer.</li>
patacongo's avatar
patacongo committed
    </p>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
patacongo's avatar
patacongo committed
      <li>Networking utilities (DHCP, SMTP, TELNET, TFTP, HTTP)</li>
patacongo's avatar
patacongo committed
    </p>
</tr>
patacongo's avatar
patacongo committed

<tr>
  <td valign="top" width="22"><img height="20" width="20" src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>USB Device Support</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      <li><i>Gadget</i>-like architecture for USB device controller drivers and device-dependent USB class drivers.</li>
    </p>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      <li>USB device controller drivers available for the NXP LPC214x and TI DM320.</li>
    </p>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
patacongo's avatar
patacongo committed
      <li>Device-dependent USB class drivers available for USB serial and for USB mass storage.</li>
patacongo's avatar
patacongo committed
    </p>
</tr>
patacongo's avatar
patacongo committed
<tr>
  <td><br></td>
  <td>
    <p>
      <li>Bult-in USB trace functionality for USB debug.</li>
    </p>
</tr>
patacongo's avatar
patacongo committed

patacongo's avatar
patacongo committed
</table></center>

patacongo's avatar
patacongo committed
<p>
  <b>NuttX Add-Ons</b>.
  The following packages are available to extend the basic NuttX feature set:
<p>
<center><table width="90%">

patacongo's avatar
patacongo committed
<tr>
  <td valign="top" width="22"><img height="20" width="20" src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>NuttShell (NSH)</b>
  </td>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
      <li>A small, scalable, bash-like shell for NuttX with rich feature set and small footprint.
        See the <a href="NuttShell.html">NuttShell User Guide</a>.</li>
    </p>
</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 bgcolor="#5eaee1">
    <b>Pascal Compiler with NuttX runtime P-Code interpreter add-on</b>
  </td>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
      <li>The Pascal add-on is available for download from the
        <a href="http://sourceforge.net/project/showfiles.php?group_id=189573">SourceForge</a>
        website.</li>
    </p>
</tr>
</table></center>

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

patacongo's avatar
patacongo committed
<p><b>nuttx-0.3.17</b>.
  The 29th release of NuttX (nuttx-0.3.16) is available for download
patacongo's avatar
patacongo committed
  from the <a href="http://sourceforge.net/project/showfiles.php?group_id=189573">SourceForge</a>
  website.
  The change log associated with the release is available <a href="#currentrelease">here</a>.
patacongo's avatar
patacongo committed
  Unreleased changes after this release are available in CVS.
patacongo's avatar
patacongo committed
  These unreleased changes are listed <a href="#pendingchanges">here</a>.
patacongo's avatar
patacongo committed
</p>
patacongo's avatar
patacongo committed
<p><b>MMC/SD and USB Mass Storage Support</b>.
  The nuttx-0.3.17 release includes  additional support for USB in NuttX.
  The following new features were added:
patacongo's avatar
patacongo committed
  <ul>
patacongo's avatar
patacongo committed
    <li>Added support for SPI-based MMC/SD cards (with an SPI driver for the NXP LPC214x).</li>
    <li>Added USB storage class device side driver (BBB)</li>
    <li>Added an example that demonstrates the USB storage class by exporting the SPI based MMC/SD card on the NXP LPC214x.</li>
patacongo's avatar
patacongo committed
  </ul>
</p>
<p>
patacongo's avatar
patacongo committed
  This is an early alpha release of these drivers.
patacongo's avatar
patacongo committed
  A known problem is that the storage driver does not work properly with WinXP when debug features are disabled.
patacongo's avatar
patacongo committed
</p>
patacongo's avatar
patacongo committed
<p><b>Bugs Fixed</b>
  Several important bugs were also fixed in the FAT file system, USB serial driver and
  NXP LPC214x USB controller driver (see the current <a href="#currentrelease">ChangeLog</a> for details).
patacongo's avatar
patacongo committed
<p>
patacongo's avatar
patacongo committed
  These changes were verified only on the mcu123.com NXP LPC2148 board using a Linux development environment.
  USB testing was performed using both a Linux host and a WinXP host.
patacongo's avatar
patacongo committed
  As usual, any feedback about bugs or suggestions for improvement would be greatly appreciated.
patacongo's avatar
patacongo committed
</p>
patacongo's avatar
patacongo committed

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

patacongo's avatar
patacongo committed
<center><table width="90%">
<tr>
patacongo's avatar
patacongo committed
  <td valign="top"><img height="20" width="20" src="favicon.ico"></td>
patacongo's avatar
patacongo committed
  <td bgcolor="#5eaee1">
    <b>Linux User Mode</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
patacongo's avatar
patacongo committed
    <p>
      A user-mode port of NuttX to the x86 Linux platform is available.
patacongo's avatar
patacongo committed
      The purpose of this port is primarily to support OS feature development.
patacongo's avatar
patacongo committed
    </p>
    <p>
patacongo's avatar
patacongo committed
      <b>STATUS:</b>
      Does not support interrupts but is otherwise fully functional.
patacongo's avatar
patacongo committed
    </p>
patacongo's avatar
patacongo committed
   </td>
</tr>
<tr>
patacongo's avatar
patacongo committed
  <td valign="top"><img height="20" width="20" src="favicon.ico"></td>
patacongo's avatar
patacongo committed
  <td bgcolor="#5eaee1">
patacongo's avatar
patacongo committed
    <b>ARM7TDMI</b>.
patacongo's avatar
patacongo committed
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
patacongo's avatar
patacongo committed
    <p>
patacongo's avatar
patacongo committed
      <b>TI TMS320C5471</b> (also called <b>C5471</b> or <b>TMS320DA180</b> or <b>DA180</b>).
patacongo's avatar
patacongo committed
      NuttX operates on the ARM7 of this dual core processor.
      This port uses the <a href="http://www.spectrumdigital.com/">Spectrum Digital</a>
patacongo's avatar
patacongo committed
      evaluation board with a GNU arm-elf toolchain* under Linux or Cygwin.
patacongo's avatar
patacongo committed
    </p>
    <p>
patacongo's avatar
patacongo committed
      <b>STATUS:</b>
      This port is complete, verified, and included in the initial NuttX release.
    </p>
   </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      <b>NXP LPC214x</b>.
      Support is provided for the NXP LPC214x family of processors.  In particular,
      support is provided for the mcu123.com lpc214x evaluation board (LPC2148).
patacongo's avatar
patacongo committed
      This port also used the GNU arm-elf toolchain* under Linux or Cygwin.
patacongo's avatar
patacongo committed
        The basic port includes successful booting, timer interrupts, serial console,
patacongo's avatar
patacongo committed
        USB driver, succesfully passing the OS test, and a NuttShell (NSH) configuration.
patacongo's avatar
patacongo committed
        Additional driver development is underway.
patacongo's avatar
patacongo committed
<tr>
patacongo's avatar
patacongo committed
  <td valign="top"><img height="20" width="20" src="favicon.ico"></td>
patacongo's avatar
patacongo committed
  <td bgcolor="#5eaee1">
    <b>ARM926EJS</b>.
patacongo's avatar
patacongo committed
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      <b>TI TMS320DM320</b> (also called <b>DM320</b>).
      NuttX operates on the ARM9 of this dual core processor.
      This port uses the
      <a href="http://wiki.neurostechnology.com/index.php/Developer_Welcome">Neuros OSD</a>
patacongo's avatar
patacongo committed
      with a GNU arm-elf toolchain* under Linux or Cygwin.
patacongo's avatar
patacongo committed
    </p>
    <p>
      <b>STATUS:</b>
        The basic port (timer interrupts, serial ports, network, etc.) is complete.
patacongo's avatar
patacongo committed
        All implemented features have been verified with the exception of the USB device-side
        driver; that implementation is complete but completely untested.
patacongo's avatar
patacongo committed
    </p>
patacongo's avatar
patacongo committed
   </td>
</tr>
<tr>
patacongo's avatar
patacongo committed
  <td valign="top"><img height="20" width="20" src="favicon.ico"></td>
patacongo's avatar
patacongo committed
  <td bgcolor="#5eaee1">
    <b>8052 Microcontroller</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
patacongo's avatar
patacongo committed
    <p>
patacongo's avatar
patacongo committed
      <b>PJRC 87C52 Development Board</b>.
patacongo's avatar
patacongo committed
      This port uses the <a href="http://www.pjrc.com/">PJRC</a> 87C52 development system
patacongo's avatar
patacongo committed
      and the <a href="http://sdcc.sourceforge.net/">SDCC</a> toolchain under Linux or Cygwin.
patacongo's avatar
patacongo committed
    </p>
    <p>
patacongo's avatar
patacongo committed
     <b>STATUS:</b>
      This port is complete but not stable with timer interrupts enabled.
      There seems to be some issue when the stack pointer enters into the indirect IRAM
      address space during interrupt handling.
patacongo's avatar
patacongo committed
      This architecture has not been built in some time will likely have some compilation
      problems because of SDCC compiler differences.
patacongo's avatar
patacongo committed
    </p>
patacongo's avatar
patacongo committed
   </td>
</tr>
patacongo's avatar
patacongo committed
<tr>
patacongo's avatar
patacongo committed
  <td valign="top"><img height="20" width="20" src="favicon.ico"></td>
patacongo's avatar
patacongo committed
  <td bgcolor="#5eaee1">
patacongo's avatar
patacongo committed
    <b>Zilog Z16F</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      <b>Zilog z16f Microncontroller</b>.
      This port use the Zilog z16f2800100zcog development kit and the Zilog
      ZDS-II Windows command line tools.
patacongo's avatar
patacongo committed
      The development environment is Cygwin under WinXP.
patacongo's avatar
patacongo committed
    </p>
    <p>
      <b>STATUS:</b>
patacongo's avatar
patacongo committed
      The initial release of support for the z16f was made available in NuttX version 0.3.7.
    </p>
   </td>
</tr>
patacongo's avatar
patacongo committed
  <td valign="top"><img height="20" width="20" src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>Zilog eZ80Acclaim!</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      <b>Zilog eZ80Acclaim! Microncontroller</b>.
      This port uses the ZiLOG ez80f0910200kitg development kit, eZ80F091 part
      and the Zilog ZDS-II Windows command line tools.
      The development environment is Cygwin under WinXP.
    </p>
    <p>
      <b>STATUS:</b>
      This is a work in progress.  Verified ez80 support will be announced in a future NuttX release.
    </p>
   </td>
</tr>
patacongo's avatar
patacongo committed
<tr>
patacongo's avatar
patacongo committed
  <td valign="top"><img height="20" width="20" src="favicon.ico"></td>
patacongo's avatar
patacongo committed
  <td bgcolor="#5eaee1">
    <b>Zilog Z8Encore!</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      <b>Zilog Z8Encore! Microncontroller</b>.
      This port uses the either:
    </p>
    <ul>
      <li>Zilog z8encore000zco development kit, Z8F6403 part, or</li>
      <li>Zilog z8f64200100kit development kit, Z8F6423 part</li>
    </ul>
    <p>
      and the Zilog ZDS-II Windows command line tools.
patacongo's avatar
patacongo committed
      The development environment is Cygwin under WinXP.
    </p>
    <p>
      <b>STATUS:</b>
      This release has been verified only on the ZiLOG ZDS-II Z8Encore! chip simulation
      as of nuttx-0.3.9.
patacongo's avatar
patacongo committed
    </p>
   </td>
</tr>
<tr>
patacongo's avatar
patacongo committed
  <td valign="top"><img height="20" width="20" src="favicon.ico"></td>
patacongo's avatar
patacongo committed
  <td bgcolor="#5eaee1">
    <b>Zilog Z80</b>
patacongo's avatar
patacongo committed
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      <b>Z80 Instruction Set Simulator</b>.
      This port uses the <a href="http://sdcc.sourceforge.net/">SDCC</a> toolchain
patacongo's avatar
patacongo committed
      under Linux or Cygwin (verified using version 2.6.0).
patacongo's avatar
patacongo committed
      This port has been verified using only a Z80 instruction simulator.
      That simulator can be found in the NuttX CVS
      <a href="http://nuttx.cvs.sourceforge.net/nuttx/misc/sims/z80sim/">here</a>.
    </p>
    <p>
     <b>STATUS:</b>
patacongo's avatar
patacongo committed
      This port is complete and stable to the extent that it can be tested
patacongo's avatar
patacongo committed
      using an instruction set simulator.
    </p>
   </td>
</tr>
patacongo's avatar
patacongo committed
<tr>
patacongo's avatar
patacongo committed
  <td valign="top"><img height="20" width="20" src="favicon.ico"></td>
patacongo's avatar
patacongo committed
  <td bgcolor="#5eaee1">
    <b>Other ports</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
patacongo's avatar
patacongo committed
    <p>
      There are partial ports for the TI TMS320DM270 and for MIPS.
    </p>
patacongo's avatar
patacongo committed
   </td>
</tr>
</table></center>
patacongo's avatar
patacongo committed

<blockquote>* A highly modified <a href="http://buildroot.uclibc.org/">buildroot</a>
patacongo's avatar
patacongo committed
is available that may be used to build a NuttX-compatible arm-elf toolchain under
Linux or Cygwin.</blockquote>
patacongo's avatar
patacongo committed

<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.
      This download may be used to build a NuttX-compatible arm-elf toolchain under Linux or Cygwin.
      Additional support for m68k, m68hc11, and m68hc12 is available 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>Others 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">