Skip to content
NuttX.html 40.6 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: March 8, 2009</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>
patacongo's avatar
patacongo committed
    What is NuttX?  Look at all those files and features... How can it be a tiny OS?
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>
patacongo's avatar
patacongo committed
      <li>Built-in USB trace functionality for USB debug.</li>
patacongo's avatar
patacongo committed
    </p>
</tr>
patacongo's avatar
patacongo committed

patacongo's avatar
patacongo committed
<tr>
  <td valign="top" width="22"><img height="20" width="20" src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>Graphics Support</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      <li>Framebuffer drivers.</li>
    </p>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      <li>
         NX: A graphics library, tiny windowing system and tiny font support.
         Documented in the <a href="NXGraphicsSubsystem.html">NX Graphics Subsystem</a>
         manual.
      </li>
patacongo's avatar
patacongo committed
    </p>
</tr>
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:
patacongo's avatar
patacongo committed
</p>
patacongo's avatar
patacongo committed
<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>
patacongo's avatar
patacongo committed
  </td>
</tr>
</table></center>

<p>
  <b>Look at all those files and features... How can it be a tiny OS?</b>.
  The NuttX feature list (above) is fairly long and if you look at the NuttX
  source tree, you will see that there are hundreds of source files comprising
  NuttX.  How can NuttX be a tiny OS with all of that?
patacongo's avatar
patacongo committed
</p>
<center><table width="90%">

<tr>
  <td valign="top" width="22"><img height="20" width="20" src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>Lots of Features -- More can be smaller!</b>
  </td>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
      The philosophy behind that NuttX is that lots of features are great... <i>BUT</i>
      also that if you don't use those features, then you should not have to pay a penalty
      for the unused features.
      And, with NuttX, you don't!  If you don't use a feature, it will not
      be included in the final executable binary.
      You only have to pay the penalty of increased footprint for the features
      that you actually use.
    </p>
    <p>
      Using a variety of technologies, NuttX can scale from the very tiny to
      the moderate-size system.  I have executed NuttX with some simple applications
      in as little as 32Kb <i>total</i> memory (code and data).
      On the other hand, typical, richly featured NuttX builds require more like 64Kb
      (and if all of the features are used, this can push 100Kb).
patacongo's avatar
patacongo committed
    </p>
  </td>
patacongo's avatar
patacongo committed
</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>Many, many files -- More really is smaller!</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      One may be intimidated by the size NuttX source tree.  There are hundreds of source files!
      How can that be a tiny OS?
      Actually, the large number of files is one of the tricks to keep NuttX small and
      as scalable as possible.
      Most files contain only a single function. 
      Sometimes just one tiny function with only a few lines of code.
      Why?
    </p>
    <ul>
      <li>
        <b>Static Libraries</b>.
        Because in the NuttX build processed, objects are compiled and saved into
        <i>static libraries</i> (<i>archives</i>).
        Then, when the file executable is linked, only the object files that are needed
        are extracted from the archive and added to the final executable.
        By having many, many tiny source files, you can assure that no code that you do
        not execute is ever included in the link.
        And by having many, tiny source files you have better granularity --
        if you don't use that tiny function of even just a few lines of code, it will
        not be included in the binary.
      </li>
    </ul>
  </td>
</tr>

<tr>
  <td valign="top" width="22"><img height="20" width="20" src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>Other Tricks</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      As mentioned above, the use of many, tiny source files and linking from static
      libraries keeps the size of NuttX down.
      Other tricks used in NuttX include:
    </p>
    <ul>
      <li>
         <b>Configuration Files</b>.
         Before you build NuttX, you must provide a configuration file that specifies
         what features you plan to use and which features you do not.
         This configuration file contains a long list of settings that control
         what is built into NuttX and what is not.
         There are hundreds of such settings
         (see the <a href="NuttxPortingGuide.html#apndxconfigs">NuttX Porting Guide</a>
         for a partial list that excludes platform specific settings).
         These many, many configuration options allow NuttX to be highly tuned to
         meet size requirements.
         The downside to all of these configuration options is that it greatly
         complicates the maintenance of NuttX -- but that is my problem, not yours.
      </li>
      <li>
         <b>Weak Symbols</b>
         The GNU toolchain supports <i>weak</i> symbols and these also help to keep
         the size of NuttX down.
         Weak symbols prevent object files from being drawn into the link even if they
         are accessed from source code.
         Careful use of weak symbols is another trick for keep unused code out of the
         final binary.
      </li>
    </ul>
  </td>
</tr>

patacongo's avatar
patacongo committed
</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.4.2</b>.
  The 34<sup>th</sup> release of NuttX (nuttx-0.4.2) 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>
patacongo's avatar
patacongo committed
  This release adds no new OS features but does include support for two new architectures:
patacongo's avatar
patacongo committed
  <ul>
patacongo's avatar
patacongo committed
  <li>
patacongo's avatar
patacongo committed
    <b>eZ80Acclaim!</b>
patacongo's avatar
patacongo committed
      Basic support has been integrated and verified for the ez80f910200zcog-d board (eZ80F91-based).
      That basic support includes timer interrupts and serial console.
      Ongoing work includes an EMAC driver that should be integrated for the next release nuttx-0.4.2.
    </p>
    <p>
       eZ80Acclaim! support has been in the code base for some time, but has only just
       been integrated due to toolchain issues.
    </p>
  <li>
    <p>Renesas M16C/20</b>.
      Support for the Renesas SKP16C20 board has been included in the NuttX source tree.
      However, as was with the eZ80Acclaim!, testing and integration of that port is stalled due to toolchain issues.
    </p>
  </li>
patacongo's avatar
patacongo committed
  </ul>
patacongo's avatar
patacongo committed
</p>
patacongo's avatar
patacongo committed
<p>
patacongo's avatar
patacongo committed
  These changes were verified only on the ZiLOG ez80f910200zcog-d platform. Please report any errors to me.
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>
patacongo's avatar
patacongo committed
      A user-mode port of NuttX to the x86 Linux/Cygwin 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>
patacongo's avatar
patacongo committed
<tr>
  <td><br></td>
  <td><hr></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
      This port boots and passes the OS test (examples/ostest).
patacongo's avatar
patacongo committed
      The port is complete and verified.  As of NuttX 0.3.17, the port includes:
patacongo's avatar
patacongo committed
      timer interrupts, serial console, USB driver, and SPI-based MMC/SD card
patacongo's avatar
patacongo committed
      support.  A verified NuttShell (NSH) configuration is also available.
patacongo's avatar
patacongo committed
<tr>
  <td><br></td>
  <td><hr></td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      <b>STMicro STR71x</b>.
      Support is provided for the STMicro STR71x family of processors.  In particular,
      support is provided for the Olimex STR-P711 evaluation board.
      This port also used the GNU arm-elf toolchain* under Linux or Cygwin.
    </p>
    <p>
      <b>STATUS:</b>
      Coding is complete on the basic port (boot logic, system time, serial console),
      but no testing has been performed due to some problems I am having with my
      JTAG wiggler and OpenOCD on Linux.
     </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>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>
patacongo's avatar
patacongo committed
        The basic port (timer interrupts, serial ports, network, framebuffer, 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>
  <td valign="top"><img height="20" width="20" src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>Renesas/Hitachi SuperH</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      <b>SH-1 SH7032</b>.
      This port uses the Hitachi SH-1 Low-Cost Evaluation Board (SH1_LCEVB1), US7032EVB,
      with a GNU arm-elf toolchain* under Linux or Cygwin.
    </p>
    <p>
     <b>STATUS:</b>
patacongo's avatar
patacongo committed
      This port is available as of release 0.3.18 of NuttX.  The port is basically complete
patacongo's avatar
patacongo committed
      and many examples run correctly.  However, there are remaining instabilities that
      make the port un-usable.  The nature of these is not understood; the behavior is
      that certain SH-1 instructions stop working as advertised.  This could be a silicon
      problem, some pipeline issue that is not handled properly by the gcc 3.4.5 toolchain
      (which has very limit SH-1 support to begin with), or perhaps with the CMON debugger.
      At any rate, I have exhausted all of the energy that I am willing to put into this cool
      old processor for the time being.
patacongo's avatar
patacongo committed
    </p>
   </td>
patacongo's avatar
patacongo committed
</tr>
<tr>
  <td valign="top"><img height="20" width="20" src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>Renesas M16C/26</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      <b>Renesas M16C/26 Microncontroller</b>.
      This port uses the Renesas SKP16C26 Starter kit and the GNU M32C toolchain. 
      The development environment is either Linux or Cygwin under WinXP.
    </p>
    <p>
      <b>STATUS:</b>
      Initial source files released in nuttx-0.4.2.
patacongo's avatar
patacongo committed
      At this point, the port has not been integrated;	the target cannot be built
      because the GNU <code>m16c-elf-ld</code> link fails with  the following message:
    </p>
    <ul>
    <code>m32c-elf-ld: BFD (GNU Binutils) 2.19 assertion fail /home/Owner/projects/nuttx/buildroot/toolchain_build_m32c/binutils-2.19/bfd/elf32-m32c.c:482</code>
    </ul>
    <p>Where the reference line is:</p>
    <ul><pre>
/* If the symbol is out of range for a 16-bit address,
   we must have allocated a plt entry.  */
BFD_ASSERT (*plt_offset != (bfd_vma) -1);
</pre></ul>
    <p>
      No workaround is known at this time.  This is a show stopper for M16C for
      the time being.
patacongo's avatar
patacongo committed
    </p>
   </td>
patacongo's avatar
patacongo committed
</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">
patacongo's avatar
patacongo committed
    <b>Zilog eZ80 Acclaim!</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      <b>Zilog eZ80Acclaim! Microncontroller</b>.
patacongo's avatar
patacongo committed
      There are two eZ80Acclaim! ports:
patacongo's avatar
patacongo committed
    <ul>
      <li>One uses the ZiLOG ez80f0910200kitg development kit, and
      <li>The other uses the ZiLOG ez80f0910200zcog-d development kit.
    </ul>
patacongo's avatar
patacongo committed
      Both boards are based on the eZ80F091 part and both use the Zilog ZDS-II
      Windows command line tools.
      The development environment is Cygwin under WinXP.
patacongo's avatar
patacongo committed
      <b>STATUS:</b>
      Testing with the ZiLOG ez80f0910200kitg has been performed only on the on the ZDS-II simulator.
patacongo's avatar
patacongo committed
      However, support for the  ZiLOG ez80f0910200zcog-d is complete.
patacongo's avatar
patacongo committed
      The first integrated version was released in NuttX version 0.4.2.
      As of this writing, that port provides basic board support with a serial console.
patacongo's avatar
patacongo committed
      An eZ80F09 EMAC driver has been developed, but not fully tested as of that 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>.