0790fcfae0
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@216 42af7a65-404d-4744-a932-0658087f49c3
538 lines
15 KiB
HTML
538 lines
15 KiB
HTML
<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: May 12, 2007</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></td>
|
|
</tr>
|
|
<tr>
|
|
<td><img src="favicon.ico"></td>
|
|
<td><a href="#downloads">Downloads</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td><img src="favicon.ico"></td>
|
|
<td><a href="#platforms">Supported Platforms</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td><img src="favicon.ico"></td>
|
|
<td><a href="#footprint">Memory Footprint</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td><img src="favicon.ico"></td>
|
|
<td><a href="#licensing">Licensing</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td><img src="favicon.ico"></td>
|
|
<td><a href="#history">Release History</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td><img src="favicon.ico"></td>
|
|
<td><a href="#documentation">Other Documentation</a></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"><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"><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 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"><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"><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 functionaly 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"><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"><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>
|
|
|
|
<table width ="100%">
|
|
<tr bgcolor="#e4e4e4">
|
|
<td>
|
|
<a name="downloads"><h1>Downloads</h1></a>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p>
|
|
The seventh release of NuttX (nuttx-0.2.4) is available for download
|
|
from the <a href="http://sourceforge.net/project/showfiles.php?group_id=189573">SourceForge</a>
|
|
website.
|
|
</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 developement.
|
|
</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 a <b>C5471</b> or <b>TMS320DM180</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*.
|
|
</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*.
|
|
</p>
|
|
<p>
|
|
<b>STATUS:</b>
|
|
This port is in progress and should be available in the nuttx-0.2.5 release.
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><img src="favicon.ico"></td>
|
|
<td bgcolor="#5eaee1">
|
|
<b>ARM9EJS</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*.
|
|
</p>
|
|
<p>
|
|
<b>STATUS:</b>
|
|
This port is code complete but totally untested due to hardware issues with my OSD.
|
|
</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.
|
|
</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.
|
|
</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 be used to build a NuttX-compatible arm-elf toolchain.</blockquote>
|
|
|
|
<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>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><pre>
|
|
0.1.0 2007-03-09 Gregory Nutt <spudmonkey@racsa.co.cr>
|
|
|
|
* Initial Release
|
|
* Support for Linux user mode simulation and TI
|
|
TMS320C5471 (Arm7) provided
|
|
|
|
0.1.1 2007-03-14 Gregory Nutt <spudmonkey@racsa.co.cr>
|
|
|
|
* Corrected an error in interrupt level context switching
|
|
for C5471
|
|
* Added fgets() and gets() logic; verified c5471 console read.
|
|
* Corrected error in reading from the C5471 serial port:
|
|
Improper use of semaphore can cause deadlock.
|
|
* Fixed an error in the memory cleanup: The idle task
|
|
cannot take sempahores (because it must always be ready
|
|
to run).
|
|
* Tasks can now accept a configurable maximum number of
|
|
input parameters (argc)
|
|
* _task_init() was divided into separate functions that
|
|
require fewer parameters. This was necessary to keep
|
|
the stack usage down for the 8051/2 (which has only
|
|
256 bytes of stack).
|
|
* Attempts to use C5471 console from interrupt handlers
|
|
can cause errors. Added a special path for this case.
|
|
* Refuse calls to sem_wait and sem_trywait from interrupt
|
|
handlers. This was happening because interrupt handlers
|
|
were calling printf-like functions.
|
|
* Added strtok() and strtok_r()
|
|
* Added a simple shell called nsh (see examples/nsh).
|
|
* Platform support for 8052 is complete but not stable
|
|
when the timer interrupt is enabled. Seems to be an
|
|
issue when SP enters indirect address space.
|
|
* Documentation updates
|
|
|
|
0.1.2 2007-03-19 Gregory Nutt <spudmonkey@racsa.co.cr>
|
|
|
|
* Add dirent.h, opendir(), readdir(), closedir(), etc.
|
|
* Add strerror()
|
|
* Added 'ls' command to nsh
|
|
* Added C5471 watchdog driver
|
|
* Fixed another bug where free() is called from IDLE task.
|
|
Can't do this; the caller must be able to wait for access
|
|
to memory.
|
|
* Fixed bugs associated with debug output:
|
|
Cannot do dbg() in middle of context switch logic.
|
|
because it may require use of semaphores and cause
|
|
additional context switches. lldbg() is safe.
|
|
* Interrupt must be disabled throughout all context switches.
|
|
* Separated C5471 serial driver; a shareable part is
|
|
in drivers/. ; the C5471 specific part is in arch/C5471.
|
|
serial.h defines the interface.
|
|
* Fixed mq_receive() and mq_send() -- bad memcpy()
|
|
* Fixed C5471 signal deliver logic: use of dbg() and
|
|
other actions by use signal handler can alter errno.
|
|
need to protect errno during signal handling.
|
|
* Fixed uninitialized variable in filesystem that could
|
|
cause various problems
|
|
* Added a test for roundrobin scheduler.
|
|
|
|
0.2.1 2007-03-22 Gregory Nutt <spudmonkey@racsa.co.cr>
|
|
|
|
* Fix error in handing signed decimal in vsprintf().
|
|
* Major restructuring of header files to get closer to
|
|
POSIX compliance.
|
|
* Eliminate compilation warnings that that crept into
|
|
recent check-ins
|
|
* Add kill()
|
|
* Added support for POSIX timers
|
|
* Some Documentation updates
|
|
* Added support for the Neuros OSD / DM320
|
|
|
|
0.2.2 2007-03-26 Gregory Nutt <spudmonkey@racsa.co.cr>
|
|
* Created the configs/ directory; separated board configuration
|
|
from processor architecture logic
|
|
* Add memory leak detection test to examples/ostest
|
|
* Corrected memory leak in OS pthread join logic
|
|
* Corrected memory leaks in examples/ostest due to failures
|
|
to join or detach from pthreads.
|
|
* Added pthread_once(), pthread_kill(), pthread_sigmask()
|
|
* Added pthread_barrierattr_*() APIs
|
|
* Added pthread_barrier_init(), pthread_barrier_destroy(), and
|
|
pthread_barrier_wait();
|
|
* Added pthread barrier test
|
|
* Added protection so that errno cannot be modified from
|
|
interrupt handling.
|
|
* sched_setparam(), sched_setscheduler() now correctly set
|
|
errno; pthread_setscheduler() now returns the correct errno.
|
|
* Added pthread_setschedprio().
|
|
* Added directories to hold board-specific header files
|
|
* Added directories to hold board-specific drivers
|
|
|
|
0.2.3 2007-03-29 Gregory Nutt <spudmonkey@racsa.co.cr>
|
|
|
|
* mq_receive and mq_send now return errno's appropriately
|
|
* mq_receive and mq_send are now correctly awakened by signals.
|
|
* Fixed an unmatched sched_lock/unlock pair in task_delete().
|
|
* sched_lock must be called in _exit() because operation of
|
|
task_delete() can cause pending tasks to be merged and a
|
|
context switch to occur.
|
|
* Added mq_timedreceive() and mq_timedsend()
|
|
* signal mask is now inherited by both child tasks and threads.
|
|
* Improved sharebility of stdout among pthreads (only). Nothing
|
|
was broken, but by moving the mutual exclusion logic to a
|
|
higher level, the printf output is more readable.
|
|
* Fixed a bug in file system cleanup: A list was being deleted
|
|
before the buffers contained in the list.
|
|
* Fixed a bug in the wait-for-message-queue-not-empty logic.
|
|
* Added a test of timed mqueue operations; detected and corrected
|
|
some mqueue errors.
|
|
* Identified and corrected a race condition associated with
|
|
pthread_join. In the failure condition, memory was being
|
|
deallocated while still in use.
|
|
|
|
0.2.4 2007-04-28 Gregory Nutt <spudmonkey@racsa.co.cr>
|
|
|
|
* Verfied c5471 build under Cygwin on WinXP
|
|
* Makesystem changes to better support different SoCs.
|
|
* Made arch/c5471/include and arch/dm320/include identical in
|
|
preparation for merging into arch/arm
|
|
* Logic from arch/c5471 and arch/dm320 combined into arch/arm.
|
|
arch/c5471 and arch/dm320 are deprecated and will be removed
|
|
when the new c5471 and dm320 logic is verified.
|
|
|
|
0.2.5 2007-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr>
|
|
|
|
* Corrected some build/configuration issues introduced with the
|
|
last release.
|
|
* Added support for the NXP 214x processor on the mcu123.com lpc214x
|
|
development board (untested)
|
|
* Added support for block devices.
|
|
* Simulated target now exports a VFAT filesystem
|
|
* Added mount() and umount()
|
|
* Started m68322
|
|
* Added support for the NXP 214x processor on the mcu123.com lpc214x
|
|
</pre></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</td>
|
|
</tr>
|
|
<tr>
|
|
<td><img src="favicon.ico"></td>
|
|
<td><a href="NuttxPortingGuide.html">Porting Guide</td>
|
|
</tr>
|
|
</center></ul>
|
|
|
|
</body>
|
|
</html>
|
|
|