summaryrefslogblamecommitdiff
path: root/nuttx/Documentation/NuttX.html
blob: bc8398e5d0530095026c1c6996a6de7255c03325 (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: September 18, 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 valign="top" width="22"><img height="20" width="20" src="favicon.ico"></td>
  <td>
    <a href="#overview">Overview</a>.<br>
    What is NuttX?
  </td>
</tr>
<tr>
  <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>
</tr>
<tr>
  <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>
</tr>
<tr>
  <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>
</tr>
<tr>
  <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>
</tr>
<tr>
  <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>
</tr>
<tr>
  <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>
</tr>
<tr>
  <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.
    (Do you want to help develop NuttX?  If so, send me an email).
  </td>
</tr>
<tr>
  <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>
</tr>
<tr>
  <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>
</tr>
</table>
</td>
</tr>
</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="22"><img height="20" width="20" 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="22"><img height="20" width="20" 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="22"><img height="20" width="20" 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="22"><img height="20" width="20" 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="22"><img height="20" width="20" 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="22"><img height="20" width="20" 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="22"><img height="20" width="20" 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>Highly configurable.</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="22"><img height="20" width="20" 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, serial, CAN, driver architecture.</li>
    </p>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
      <li>RAMDISK, pipes, FIFO, <code>/dev/null</code>, <code>/dev/zero</code> drivers.</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>FAT12/16/32 filesystem support.</li>
    </p>
</tr>

<tr>
  <td><br></td>
  <td>
    <p>
      <li>ROMFS filesystem support.</li>
    </p>
</tr>
<tr>
  <td valign="top" width="22"><img height="20" width="20" 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="22"><img height="20" width="20" 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 (DHCP, SMTP, TELNET, TFTP, HTTP)</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="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>

<tr>
  <td valign="top" width="22"><img height="20" width="20" 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 26th release of NuttX (nuttx-0.3.14) 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>
<p>
  The nuttx-0.3.14 release includes some important bug fixes as well as a few new features.
  Critical bugs fixed include:
  <ul>
    <li>FAT FS:
      <ul>
        <li>Fixed several critical bugs with regard to fat reading and writing and FAT12
          accesses.  Basically the FAT FS only worked with my tiny test files and test
          cases.  A lot of stronger FAT tested is still needed!!</li>
        <li>Fixed another FAT bug in implementation of FAT lseek; this prohibit correct
          random access to large files.</li>
      </ul>
    </li>
    <li>Network:
      <ul>
        <li>Corrected a critical bug that may prevent <code>recvfrom()</code> from receiving
          packets from most remote UDP port numbers.</li>
        <li>Corrected an error in multi-threaded socket handling in <code>send()</code> and
         <code>sendto()</code>. Outgoing data could overwrite incoming data.</li>
        <li>Corrected IP checksum calculation in ICMP and UDP message send logic.
        <li>Corrected an error in <code>send()</code> timeout logic.</li>
      </ul>
    </li>
  </ul>
</p>
<p>
  New features were also added:
  <ul>
    <li>Network:
      <ul>
        <li>Added support for application access to ICMP protocol stacks; Added
          ping request logic (<code>net/uip</code>).
        <li>Added basic TFTP client logic (<code>netutils/tftpc</code>).
      </ul>
    </li>
    <li>NuttShell (NSH):
      <ul>
        <li>New commands: <code>test</code>, <code>[</code>, <code>ping</code>,
        <code>mkrd,</code> <code>xd</code>, andTFTP <code>get</code> and <code>put</code> commands.
        (See the new NuttShell User Guide for additional information).
      </ul>
    </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 height="20" width="20" 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 height="20" width="20" 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>
        A basic port that boots and supports a serial console is in place.
    </p>
  </td>
</tr>
<tr>
  <td valign="top"><img height="20" width="20" 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 height="20" width="20" 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 height="20" width="20" 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 height="20" width="20" src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>Zilog eZ80Acclaim!</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      <b>Zilog eZ80Acclaim! Microncontroller</b>.
      This port uses the ZiLOG ez80f0910200kitg development kit, eZ80F091 part
      and the Zilog ZDS-II Windows command line tools.
      The development environment is Cygwin under WinXP.
    </p>
    <p>
      <b>STATUS:</b>
      This is a work in progress.  Verified ez80 support will be announced in a future NuttX release.
    </p>
   </td>
</tr>
<tr>
  <td valign="top"><img height="20" width="20" 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 height="20" width="20" 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 height="20" width="20" 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 height="20" width="20" src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>Linux + GNU make + GCC/binutils</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      The is the most natural development environment for NuttX.
      Any version of the GCC/binutils toolchain may be used.
      There is a  highly modified <a href="http://buildroot.uclibc.org/">buildroot</a>
      available for download from the
      <a href="http://sourceforge.net/project/showfiles.php?group_id=189573">NuttX SourceForge</a>
      page.
      This download may be used to build a NuttX-compatible arm-elf toolchain under Linux or Cygwin.
      Additional support for m68k, m68hc11, and m68hc12 is available in the
      <a href="http://nuttx.cvs.sourceforge.net/nuttx/misc/buildroot/">NuttX CVS</a>.
    </p>
   </td>
</tr>

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

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

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

<tr>
  <td valign="top"><img height="20" width="20" src="favicon.ico"></td>
  <td bgcolor="#5eaee1">
    <b>Cygwin + GNU make + Windows Native Toolchain</b>
  </td>
</tr>
<tr>
  <td><br></td>
  <td>
    <p>
      This is a tougher environment.
      In this case, the Windows native toolchain is unaware of the the
      Cygwin <i>sandbox</i> and, instead, operates in the native Windows environment.
      The primary difficulties with this are:
    </p>
    <ul>
      <li>
        <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 height="20" width="20" 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 valign="top" width="22"><img height="20" width="20" src="favicon.ico"></td>
   <td>
      <a href="ChangeLog.txt">Change Logs for All NuttX Releases</a><br>
   </td>
</tr>
<tr>
  <td valign="top" width="22"><img height="20" width="20" src="favicon.ico"></td>
   <td>
      <a href="#currentrelease">ChangeLog for Current Releases</a><br>
   </td>
</tr>
<tr>
  <td valign="top" width="22"><img height="20" width="20" 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>
nuttx-0.3.14 2008-09-08 Gregory Nutt &lt;spudmonkey@racsa.co.cr&gt;
	* FAT FS now uses position variable in struct file.  This simplifies operations
	  like ftell().
	* fseek() needs to discard bytes buffered by ungetc().
	* Corrected ftell() return value.
	* Added fsetpos() and fgetpos().
	* NSH: Now supports 'test' and '[' commands
	* Correct error in send() timeout logic.
	* Correct error in multi-threaded socket handling in send() and sendto().
	  Outgoing data could overwrite incoming data.
	* Add support to uIP for application access to ICMP protocol stacks; Add
	  ping request logic.
	* NSH: Add ping command
	* Correct IP checksum calculation in ICMP and UDP message send logic.
	* NSH: Created an HTML document and a more detailed README file describing NSH.
	* Added basic TFTP client logic (netutils/tftpc).  Untested as of initial check-in.
	* NSH: Add get and put commands to support TFTP get and put operations.
	* NSH: Added a mkrd command that will create a RAMDISK that can be formatted
	  and mounted.
	* Corrected a critical bug that prevent recvfrom from receiving packets from
	  any remote UDP port.
	* NSH: Add hexadecimal dump command (xd)
	* Fixed several critical bugs with regard to fat reading and writing and FAT12
	  accesses.  Basically the FAT FS only worked with my tiny test files and test
	  cases.  A lot of stronger FAT tested is needed!!
	* Fixed another FAT bug in implementation of FAT lseek; this prohibit correct
	  random access to large files.

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.15 2008-xx-xx Gregory Nutt &lt;spudmonkey@racsa.co.cr&gt;
	* Added support for ROMFS filesystem.
	* Added a simple test the ROMFS filesystem (examples/romfs)
	* NSH: Use ROMFS to provide an option for a start-up script at /etc/init.d/rcS
	* Add definition of BIOC_XIPBASE ioctl and implement in RAM disk block driver.
	  This is a low level requirement for eXecute In Place (XIP) support.
	* Add a FIOC_MMAP to perform memory mapping of a file and implemented the
	  ioctl command in the ROMFS filesystem.  This is a requirement for eXecute
	  In Place (XIP) support.
	* Add mmap() API with restricted capability (only for XIP support)
	* Extend ROMFS test at /examples/romfs to verify mmap() and XIP support.
	* Add support for Intel Hex format output using objcopy
	* Complete the basic port of the NXP LPC2148 on the mcu123.com board.
	  The basic port includes successful booting, serial console and succesfully
	  passing the examples/ostest.
	* ARM architectures now support drivers/lowconsole.c

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 valign="top" width="22"><img height="20" width="20" src="favicon.ico"></td>
  <td><a href="NuttxUserGuide.html">User Guide</a></td>
</tr>
<tr>
  <td valign="top" width="22"><img height="20" width="20" src="favicon.ico"></td>
  <td><a href="NuttxPortingGuide.html">Porting Guide</a></td>
</tr>
<tr>
  <td valign="top" width="22"><img height="20" width="20" src="favicon.ico"></td>
  <td><a href="NuttShell.html">NuttShell (NSH)</a></td>
</tr>
<tr>
  <td valign="top" width="22"><img height="20" width="20" src="favicon.ico"></td>
  <td><a href="ChangeLog.txt">Change Log</a></td>
</tr>
<tr>
  <td valign="top" width="22"><img height="20" width="20" 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>