summaryrefslogblamecommitdiff
path: root/nuttx/Documentation/NuttX.html
blob: f84038533cfb8bff1934a4966429074dcbb9c1cc (plain) (tree)
1
2
3
4
5
6
7
8
9
10




                              




                                                                        
                                          






                        
                            









                                  










                                                                   


                                  



                                                     


                                  



                                                                          


                                  



                                                              


                                  




                                                                            


                                  




                                                  


                                  


                                                              
                                                                  
       


                                  



                                                         
     

                                  



                                                                   
     












                                            
   
               


                                                         

                           
                                                          






                          



                                                                     

     
                                                          






                              
       

                                                                                   
                 
        



                                                                     


                                                      

     
                                                          






                          





                                                                                     

     
                                                          






                               

                                                                     
                                                                   

                                                                    
                                                                          





                                                                           

     
                                                          






                        


                                                                    

     
                                                          






                        


                                  

                 
 
















                                                          
                                    






               
                                  






               
                                  






               

                                                                                                     






               
                                               






               
                                       






               
                                                                                                                                                             






               
                                                                






               
                                    






               
                                                






               
                                                                                         













                                                          
                                                       






               
                                                    






               
                                                      






               
                                                                                         






               
                                       













                                                          
                                            













                                                          
                                        






               
                                              






               
                                           






               
                                    



                 























                                                                                              






                                              

   
                                                                    


                                                                                                 
                                                             
                                                                         
    







                                                                                      

    





                                                                  
    
   
                                                                                                
    
 






                                                        
 









                                               

                                                                       
                                                                              

        

                                                                    
        




                                               
                    




               
       
                                                                                             

                                                                                       
                                                                           

        





                                                                                 





                                                                                   
                                                                           


                    
                                                                                



        

                                               
                     









                                                                                           
                                                          


                    
                                           
        










                                               
       
                                          
                                                                                         
                                                                                              

        

                                                                         

                                                                                       

                                                                                         
        




                                               









                                                                           
                                                        


                    






                                                                                            




















                                                                                                     







                                              







                                                                     



                                                        

                                                                                       






                                               







                                                                                  
                                                           





                                                                                  
                                                                          






                                               





                      


                                                                  


                 

                                                                                    

                                                                                 
 


                        


































































































                                                                                                    

                                                                          






























                                                                                                     
                               





               

                                                                     

                                                                  


                                                                          







                        



                                                     
 
    
                      

                                                                          
                                          
    



                                                
                      



                                                                         


                                                
                                             
      








                                                                      
               

                                                                   
    









                                                                
     
 






                                              
 


                                                
                                                                     
                                                                    

                                                                     


                       
 






                                                  
 






                                                                                                                                         



                                  
                                                                        




                                  
                                                                      












                                                      
                                                              




         
                                                       
 



















                                                                                        
 
                                                             


                                                               



















                                                              
                                                                   
 
                                                                       

                                                                                   
                                                     
                                                               
                                                           

                                                      

                                                                                  

                                                                    





                                                                               

                                                      
 
                                                                   
 
                                                        
 
                                                    




                        













                                                                                                                                        



                                                            
 


                                  
                                                       


                                  
                                                             
     







                                                 
              
 








                                                






                                                                                                 
                                                                                    

     

                                                                                      


        


       
<html>
<head>
<title>NuttX</title>
</head>
<body background="backgd.gif">
<hr><hr>
<table width ="100%">
  <tr align="center" bgcolor="#e4e4e4">
    <td>
      <h1><big><font color="#3c34ec"><i>NuttX RTOS</i></font></big></h1>
      <p>Last Updated: August 17, 2008</p>
    </td>
  </tr>
</table>
<hr><hr>
<table width ="100%">
  <tr bgcolor="#e4e4e4">
    <td>
  <h1>Table of Contents</h1>
    </td>
  </tr>
</table>

<center><table width ="80%">
<tr>
<td>
<table>
<tr>
  <td><img src="favicon.ico"></td>
  <td>
    <a href="#overview">Overview</a>.<br>
    What is NuttX?
  </td>
</tr>
<tr>
  <td><img src="favicon.ico"></td>
  <td>
    <a href="#downloads">Downloads</a>.<br>
    Where can I get NuttX?  What is the current development status?
  </td>
</tr>
<tr>
  <td><img src="favicon.ico"></td>
  <td>
    <a href="#platforms">Supported Platforms</a>.<br>
    What target platforms has NuttX been ported to?
  </td>
</tr>
<tr>
  <td><img 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>
</tr>
<tr>
  <td><img 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>
</tr>
<tr>
  <td><img 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>
</tr>
<tr>
  <td><img 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>
</tr>
<tr>
  <td><img 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.
    (Do you want to help develop NuttX?  If so, send me an email).
  </td>
</tr>
<tr>
  <td><img src="favicon.ico"></td>
  <td>
    <a href="#documentation">Other Documentation</a>.<br>
    What other NuttX documentation is available?
  </td>
</tr>
<tr>
  <td><img src="favicon.ico"></td>
  <td>
    <a href="#trademarks">Trademarks</a>.<br>
    Some of the words used in this document belong to other people.
  </td>
</tr>
</table>
</td>
</td>
</table></center>

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

<p>
  <b>Goals</b>.
  Nuttx is a real timed embedded operating system (RTOS).
  Its goals are:
<p>
<center><table width="90%">
<tr>
  <td valign="top" width="18"><img src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>Small Footprint</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      Usable in all but the tightest micro-controller environments,
      The focus is on the tiny-to-small, deeply embedded environment.
    </p>
</tr>
<tr>
  <td valign="top" width="18"><img src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>Rich Feature OS Set</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      The goal is to provide implementations of most standard POSIX OS interfaces
      to support a rich, multi-threaded development environment for deeply embedded
      processors.
    </p>
      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.
      (2) There is no MMU-based support for processes.
      At present, NuttX assumes a flat address space.
    </p>
</tr>
<tr>
  <td valign="top" width="18"><img src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>Highly Scalable</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <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>
</tr>
<tr>
  <td valign="top" width="18"><img src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>Standards Compliance</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      NuttX strives to achieve a high degree of standards compliance.
      The primary governing standards are POSIX and ANSI standards.
      Additional standard APIs from Unix and other common RTOS's are
      adopted for functionality not available under these standards
      or for functionality that is not appropriate for the deeply-embedded
      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>
</tr>
<tr>
  <td valign="top" width="18"><img src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>Real-Time</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      Fully pre-emptible, fixed priority and round-robin scheduling.
    </p>
</tr>
<tr>
  <td valign="top" width="18"><img src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>Totally Open</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      Non-restrictive BSD license.
    </p>
</tr>
</table></center>

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

<tr>
  <td valign="top" width="18"><img src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>Standards Compliant Core Task Management</b>
  </td>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
      <li>Modular, micro-kernel</li>
    </p>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
      <li>Fully pre-emptible.</li>
    </p>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
      <li>Naturally scalable.</li>
    </p>
</tr>

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

<tr>
  <td><br></td>
  <td>
    <p>
      <li>FIFO and round-robin scheduling.</li>
    </p>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
      <li>Realtime, deterministic.</li>
    </p>
</tr>

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

<tr>
  <td><br></td>
  <td>
    <p>
      <li>VxWorks-like task management and watchdog timers.</li>
    </p>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
      <li>BSD socket interface.</li>
    </p>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
      <li>Extensions to manage pre-emption.</li>
    </p>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
      <li>Well documented in the NuttX <a href="NuttxUserGuide.html">User Guide</a>.</li>
    </p>
</tr>

<tr>
  <td valign="top" width="18"><img src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>File system</b>
  </td>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
      <li>Tiny in-memory, root pseudo-file-system.</li>
    </p>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
      <li>Supports character and block drivers.</li>
    </p>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
      <li>Network and serial driver architecture.</li>
    </p>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
      <li>Mount-able volumes.  Bind mountpoint, filesystem, and block device driver.</li>
    </p>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
      <li>VFAT filesystem support.</li>
    </p>
</tr>

<tr>
  <td valign="top" width="18"><img src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>C Library</b>
  </td>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
      <li>Fully integrated into the OS.</li>
    </p>
</tr>

<tr>
  <td valign="top" width="18"><img src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>Networking</b>
  </td>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
      <li>TCP/IP, UDP, ICMP stacks.</li>
    </p>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
      <li>Small footprint (based on uIP).</li>
    </p>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
      <li>BSD compatible socket layer.</li>
    </p>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
      <li>Networking utilities.</li>
    </p>
</tr>
</table></center>

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

<tr>
  <td valign="top" width="18"><img src="favicon.ico"></td>
  <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>

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

<p>
  The 24th release of NuttX (nuttx-0.3.12) is available for download
  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>.
  Unreleased changes after this release are available in CVS.
  These unreleased changes are listed <a href="#pendingchanges">here</a>.
</p>
  The nuttx-0.3.12 release includes some minor bugfixes as well as a few new features.
  Bugs fixed include:
  <ul>
    <li>Corrected an error in recursive mutex implementation.</li>
    <li>task_create() was only dup'in the first three file descriptors.</li>
    <li>Fixed driver open reference counting errors in dup(), dup2(), and exit().</li>
    <li>Fixed error handling logic in fflush().</li>
  </ul>
</p>
<p>
  New features were also added:
  <ul>
    <li>Pipes and pipe() API</li>
    <li>FIFOs and mkfifo() API</li>
    <li>mkfatfs() API can be used to format FAT file systems.</li>
  </ul>
</p>
<p>
  As usual, any feedback about bugs or suggestions for improvement would be greatly appreciated.
</p>

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

<center><table width="90%">
<tr>
  <td valign="top"><img src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>Linux User Mode</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      A user-mode port of NuttX to the x86 Linux platform is available.
      The purpose of this port is primarily to support OS feature development.
    </p>
    <p>
      <b>STATUS:</b>
      Does not support interrupts but is otherwise fully functional.
    </p>
   </td>
</tr>
<tr>
  <td valign="top"><img src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>ARM7TDMI</b>.
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      <b>TI TMS320C5471</b> (also called <b>C5471</b> or <b>TMS320DA180</b> or <b>DA180</b>).
      NuttX operates on the ARM7 of this dual core processor.
      This port uses the <a href="http://www.spectrumdigital.com/">Spectrum Digital</a>
      evaluation board with a GNU arm-elf toolchain* under Linux or Cygwin.
    </p>
    <p>
      <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).
      This port also used the GNU arm-eld toolchain* under Linux or Cygwin.
    </p>
    <p>
      <b>STATUS:</b>
        Initial coding of this port code complete but has not yet been verified.
    </p>
  </td>
</tr>
<tr>
  <td valign="top"><img src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>ARM926EJS</b>.
  </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>
      with a GNU arm-elf toolchain* under Linux or Cygwin.
    </p>
    <p>
      <b>STATUS:</b>
        This port is complete and verified.
    </p>
   </td>
</tr>
<tr>
  <td valign="top"><img src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>8052 Microcontroller</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      <b>PJRC 87C52 Development Board</b>.
      This port uses the <a href="http://www.pjrc.com/">PJRC</a> 87C52 development system
      and the <a href="http://sdcc.sourceforge.net/">SDCC</a> toolchain under Linux or Cygwin.
    </p>
    <p>
     <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.
      This architecture has not been built in some time will likely have some compilation
      problems because of SDCC compiler differences.
    </p>
   </td>
</tr>
<tr>
  <td valign="top"><img src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <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.
      The development environment is Cygwin under WinXP.
    </p>
    <p>
      <b>STATUS:</b>
      The initial release of support for the z16f was made available in NuttX version 0.3.7.
    </p>
   </td>
</tr>
<tr>
  <td valign="top"><img 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>
<tr>
  <td valign="top"><img src="favicon.ico"></td>
  <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.
      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.
    </p>
   </td>
</tr>
<tr>
  <td valign="top"><img src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>Zilog Z80</b>
  </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
      under Linux or Cygwin (verified using version 2.6.0).
      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>
      This port is complete and stable to the extent that it can be tested
      using an instruction set simulator.
    </p>
   </td>
</tr>
<tr>
  <td valign="top"><img src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>Other ports</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      There are partial ports for the TI TMS320DM270 and for MIPS.
    </p>
   </td>
</tr>
</table></center>

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

<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
    <a name="environments"><h1>Development Environments</h1></a>
  </td>
  </tr>
</table>

<center><table width="90%">
<tr>
  <td valign="top"><img 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>
  <td valign="top"><img 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>
  <td valign="top"><img 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>
  <td valign="top"><img 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>
  <td valign="top"><img 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>
        <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>
  <td valign="top"><img src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>Others Environments?</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      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
      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.
    </p>
  </td>
</tr>
</table></center>

<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
    <a name="footprint"><h1>Memory Footprint</h1></a>
  </td>
  </tr>
</table>

<ul>
<p><b>C5471 (ARM7)</b>
  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):
</p>
<pre>
   text    data     bss     dec     hex filename
  53272     428    3568   57268    dfb4 nuttx
</pre>
<p><b>DM320 (ARM9)</b>
  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
  49472     296    3972   53740    d1ec nuttx
</pre>
<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>
<p><b>87C52</b>
  A reduced functionality OS test for the 8052 target requires only
  about 18-19Kb:
</p>
<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>
</ul>

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

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

<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
    <a name="history"><h1>Release History</h1></a>
  </td>
  </tr>
</table>

<ul>
<p>
   The current NuttX Change Log is available in CVS <a href="http://nuttx.cvs.sourceforge.net/*checkout*/nuttx/nuttx/ChangeLog">here</a>.
   ChangeLog snapshots associated with the current release are available below.
</p>
</ul>

<center><table width ="80%">
<tr>
  <td><img src="favicon.ico"></td>
   <td>
      <a href="ChangeLog.txt">Change Logs for All NuttX Releases</a><br>
   </td>
</tr>
<tr>
  <td><img src="favicon.ico"></td>
   <td>
      <a href="#currentrelease">ChangeLog for Current Releases</a><br>
   </td>
</tr>
<tr>
  <td><img src="favicon.ico"></td>
   <td>
      <a href="#pendingchanges">Unreleased Changes</a>
   </td>
</tr>
</table></center>

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

<pre><ul>
0.3.12 2008-08-10 Gregory Nutt <spudmonkey@racsa.co.cr>

	* Improved solution to POSIX timer lifetime controls bug fixed in 0.3.11.
	* Add test for recursive mutexes
	* Correct bug in recursive mutex logic
	* Add mkfifo()
	* Add pipe() and test for both pipes and fifos
	* Attempts to open a FIFO will now block until there is at least one writer
	* Add test/Fixed errors in FIFO reader/writer interlocks
	* Removed limitation: task_create() was only dup'ing 3 file descriptors (now
	  dups all open file descriptors).
	* Added a test for redirection of stdio through pipes
	* Fixed error in dup and dup2: Must call open/close methods in fs/driver so that
	  driver can correctly maintain open reference counts.
	* Same issue on closing file descriptors in exit()
	* Fixed in error in stdio flush logic.  Needed ssize_t vs size_t for error
	  check.
	* Moved all FAT related files from fs to fs/fat
	* Implemented mkfatfs(), a non-standard API to create a FAT filesystem on a
	  block device (not yet tested).
	* Added a test for mkfatfs() on a RAM disk in examples/mount and verified
	  basic mkfatfs functionality for FAT12.

pascal-0.1.2 2008-02-10 Gregory Nutt <spudmonkey@racsa.co.cr>

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

buildroot-0.1.0 2007-03-09 &lt;spudmonkey@racsa.co.cr&gt

	* Support for arm-elf toolchain
</pre></ul>

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

<pre><ul>
nuttx-0.3.13 2008-xx-xx Gregory Nutt &lt;spudmonkey@racsa.co.cr&gt;

	* Added mkfatfs, mkfifo, sleep, usleep and nice commands to NSH
	* Fixed problem with console input in Cygwin-based simulator; NSH now works
	  with simulator.
	* NSH will now execute commands in background
	* sched_get_priority_max/min returned error on SCHED_RR
	* Removed duplicate getenv() implementation in /lib
	* Correct detection of End-of-File in fgets
	* Implement sh and crude script handler in NSH
	* Fix prototype of read() and write(). Need to use ssize_t and size_t, not
	  int and unsigned int.
	* Add support for redirection of command output in NSH
	* NSH can now use both telnet and serial front ends together
	* $variable can be used for any command value in NSH.
	* Fixed an error in opendir() that could cause an assertion to fail
	  inappropriately.
	* Correct an error in the FAT that caused files opened for writing with
	  O_APPEND to fail.  The file was not being properly positioned to the
	  end of the file in that case.
	* NSH now supports last exit status $?
	* NSH now supports if-then[-else]-fi construct

pascal-0.1.3 2008-xx-xx Gregory Nutt &lt;spudmonkey@racsa.co.cr&gt;

buildroot-0.1.1 2008-xx-xx &lt;spudmonkey@racsa.co.cr&gt

	* Support for m68k-elf and m68hc11 toolchain
</pre></ul>

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

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

<ul><table>
<tr>
  <td><img src="favicon.ico"></td>
  <td><a href="NuttxUserGuide.html">User Guide</a></td>
</tr>
<tr>
  <td><img src="favicon.ico"></td>
  <td><a href="NuttxPortingGuide.html">Porting Guide</a></td>
</tr>
<tr>
  <td><img src="favicon.ico"></td>
  <td><a href="ChangeLog.txt">Change Log</a></td>
</tr>
<tr>
  <td><img src="favicon.ico"></td>
  <td><a href="TODO.txt">To-Do List</a></td>
</tr>
</center></ul>

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

</body>
</html>