Skip to content
Snippets Groups Projects
NuttX.html 48.1 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: September 16, 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>
patacongo's avatar
patacongo committed
<tr>
  <td valign="top" width="22"><img height="20" width="20" src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>GNU Toolchains</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      Compatible GNU toolchains based on <a href="http://buildroot.uclibc.org/">buildroot</a>
      available for
      <a href="https://sourceforge.net/project/showfiles.php?group_id=189573&package_id=224585">download</a>
      to provide a complete development environment for many architectures.
    </p>
</tr>
patacongo's avatar
patacongo committed
</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>
      <li>Realtime, deterministic, with support for priority inheritance</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>
patacongo's avatar
patacongo committed
      <li>Generic driver for SPI-based MMC/SD/SDH cards.</li>
patacongo's avatar
patacongo committed
    </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>
  <td><br></td>
  <td>
    <p>
      <li><a href="NuttXNxFlat.html">NXFLAT</a>.
      A new binary format call NXFLAT that can be used to 
      execute separately linked programs in place in a file system.
    </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><br></td>
  <td>
    <p>
      <li>
        A NuttX port of Jeff Poskanzer's <a href="http://acme.com/software/thttpd">THTTPD</a> HTTP server
        integrated with <a href="NuttXNxFlat.html">NXFLAT</a> to provide true, embedded CGI.
      </li>
    </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.11</b>.

<p>
  This 43<sup>rd</sup> release of NuttX was made on September 16, 2009 and is available for download from the
  <a href="http://sourceforge.net/project/showfiles.php?group_id=189573">SourceForge</a> website.
patacongo's avatar
patacongo committed
  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
  This release of NuttX incorporates the verified port of Jeff Poskanzer's <a href="http://acme.com/software/thttpd">THTTPD</a> HTTP server.
  Many of the key features of THTTPD have been tested on the Micromint Eagle-100 development board (Cortex-M3).
  These tests verify:
</p>
<ul>
  <li>Serving of files from any file system, and </li>
  <li>Execution of CGI executable.
    This release supports execution of <a href="http://www.nuttx.org/NuttXNxFlat.html">NXFLAT executables</a> residing on a ROMFS file system.
</ul>
<p>
  A standard CGI interface is used:  Information is pasted to the CGI program via POST commands and via environment variables.
  CGI socket I/O is redirected to <code>stdin</code> and <code>stdout</code> so that the CGI program only need to <code>printf()</code> to send its content back to the HTTP client.
patacongo's avatar
patacongo committed
</p>
patacongo's avatar
patacongo committed
<p>
  Another value to this THTTPD integration effort has been that THTTPD has provided a very good test bed for finding NuttX networking bugs.
  Several very critical networking bugs have been fixed with this 0.4.11 release (see the <a href="#currentrelease">ChangeLog</a> for details).
  Networking throughput has also been greatly improved.
  Anyone using NuttX networking should consider upgrading to this release.
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
      support.  A verified NuttShell <a href="NuttShell.html">(NSH)</a>
      configuration is also available.
    <p>
      <b>Development Environments:</b>
      1) Linux with native Linux GNU toolchain, 2) Cygwin with Cygwin GNU toolchain, or 3) Cygwin
      with Windows native toolchain (CodeSourcery or devkitARM).  A DIY toolchain for Linux
      or Cygwin is provided by the NuttX
      <a href="http://sourceforge.net/project/showfiles.php?group_id=189573&package_id=224585">buildroot</a>
      package.
    </p>
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>
      Integration is complete on the basic port (boot logic, system time, serial console).
      Two configurations have been verified: (1) The board boots and passes the OS test
      with console output visible on UART0, and the NuttShell <a href="NuttShell.html">(NSH)</a>
      is fully functional with interrupt driven serial console.  An SPI driver is available
      but untested (because the Olimex card slot appears to accept only MMC cards; I have
      only SD cards).  Additional features are needed: USB driver, MMC integration, to name two.
    </p>
    <p>
      <b>Development Environments:</b>
      1) Linux with native Linux GNU toolchain, 2) Cygwin with Cygwin GNU toolchain, or 3) Cygwin
      with Windows native toolchain (CodeSourcery or devkitARM).  A DIY toolchain for Linux
      or Cygwin is provided by the NuttX
      <a href="http://sourceforge.net/project/showfiles.php?group_id=189573&package_id=224585">buildroot</a>
      package.
    </p>
patacongo's avatar
patacongo committed
  </td>
</tr>
<tr>
  <td valign="top"><img height="20" width="20" src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>ARM920T</b>.
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      <b>Freescale MC9328MX1</b> or <b>i.MX1</b>.
      This port uses the Freescale MX1ADS development board with a GNU arm-elf toolchain*
      under either Linux or Cygwin.
    </p>
    <p>
      <b>STATUS:</b>
patacongo's avatar
patacongo committed
        This port is in progress.  Coding is complete on the basic port (timer, serial console, SPI).
        Verified support for the i.MX1 will be announced in a future release of NuttX (work has
        been temporarily stopped to support the Luminary LM3S6918).
    </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 untested.
patacongo's avatar
patacongo committed
    </p>
patacongo's avatar
patacongo committed
   </td>
</tr>
<tr>
  <td valign="top"><img height="20" width="20" src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>ARM Cortex-M3</b>.
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      <b>Luminary LM3S6918</b>.
      This port uses the <a href=" http://www.micromint.com/">Micromint</a> Eagle-100 development
      board with a GNU arm-elf toolchain* under either Linux or Cygwin.
    </p>
    <p>
      <b>STATUS:</b>
patacongo's avatar
patacongo committed
        The initial, release of this port was included in NuttX  version 0.4.6.
        The current port includes timer, serial console, Ethernet, SSI, and microSD support.
        There are working configurations the NuttX OS test, to run the <a href="NuttShell.html">NuttShell
        (NSH)</a>, the NuttX networking test, and the uIP web server.
    <p>
      <b>Development Environments:</b>
      1) Linux with native Linux GNU toolchain, 2) Cygwin with Cygwin GNU toolchain, or 3) Cygwin
      with Windows native toolchain (CodeSourcery or devkitARM).  A DIY toolchain for Linux
      or Cygwin is provided by the NuttX
      <a href="http://sourceforge.net/project/showfiles.php?group_id=189573&package_id=224585">buildroot</a>
      package.
    </p>
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>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>