update
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@1417 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
parent
3ed415a835
commit
1d9cd0293b
@ -29,7 +29,7 @@
|
|||||||
<td valign="top" width="22"><img height="20" width="20" src="favicon.ico"></td>
|
<td valign="top" width="22"><img height="20" width="20" src="favicon.ico"></td>
|
||||||
<td>
|
<td>
|
||||||
<a href="#overview">Overview</a>.<br>
|
<a href="#overview">Overview</a>.<br>
|
||||||
What is NuttX?
|
What is NuttX? Look at all those files and features... How can it be a tiny OS?
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
@ -476,7 +476,7 @@
|
|||||||
<td><br></td>
|
<td><br></td>
|
||||||
<td>
|
<td>
|
||||||
<p>
|
<p>
|
||||||
<li>Bult-in USB trace functionality for USB debug.</li>
|
<li>Built-in USB trace functionality for USB debug.</li>
|
||||||
</p>
|
</p>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
@ -497,7 +497,7 @@
|
|||||||
<td><br></td>
|
<td><br></td>
|
||||||
<td>
|
<td>
|
||||||
<p>
|
<p>
|
||||||
<li>Graphics library and tiny windowing system under developement.</li>
|
<li>Graphics library and tiny windowing system under development.</li>
|
||||||
</p>
|
</p>
|
||||||
</tr>
|
</tr>
|
||||||
</table></center>
|
</table></center>
|
||||||
@ -505,7 +505,7 @@
|
|||||||
<p>
|
<p>
|
||||||
<b>NuttX Add-Ons</b>.
|
<b>NuttX Add-Ons</b>.
|
||||||
The following packages are available to extend the basic NuttX feature set:
|
The following packages are available to extend the basic NuttX feature set:
|
||||||
<p>
|
</p>
|
||||||
<center><table width="90%">
|
<center><table width="90%">
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
@ -539,9 +539,126 @@
|
|||||||
<a href="http://sourceforge.net/project/showfiles.php?group_id=189573">SourceForge</a>
|
<a href="http://sourceforge.net/project/showfiles.php?group_id=189573">SourceForge</a>
|
||||||
website.</li>
|
website.</li>
|
||||||
</p>
|
</p>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table></center>
|
</table></center>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<b>Look at all those files and features... How can it be a tiny OS?</b>.
|
||||||
|
The NuttX feature list (above) is fairly long and if you look at the NuttX
|
||||||
|
source tree, you will see that there are hundreds of source files comprising
|
||||||
|
NuttX. How can NuttX be a tiny OS will all of that?
|
||||||
|
</p>
|
||||||
|
<center><table width="90%">
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td valign="top" width="22"><img height="20" width="20" src="favicon.ico"></td>
|
||||||
|
<td bgcolor="#5eaee1">
|
||||||
|
<b>Lots of Features -- More can be smaller!</b>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td><br></td>
|
||||||
|
<td>
|
||||||
|
<p>
|
||||||
|
The philosophy behind that NuttX is that lots of features are great... <i>BUT</i>
|
||||||
|
also that if you don't use those features, then you should not have to pay a penalty
|
||||||
|
for the unused features.
|
||||||
|
And, with NuttX, you don't! If you don't use a feature, it will not
|
||||||
|
be included in the final executable binary.
|
||||||
|
You only have to pay the penalty of increased footprint for the features
|
||||||
|
that you actually use.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Using a variety of technologies, NuttX can scale from the very tiny to
|
||||||
|
the moderate-size system. I have executed NuttX with some simple applications
|
||||||
|
in as little as 32Kb <i>total</i> memory (code and data).
|
||||||
|
On the other hand, I often run richly featured NuttX builds that require
|
||||||
|
memory up to 100Kb.
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td valign="top" width="22"><img height="20" width="20" src="favicon.ico"></td>
|
||||||
|
<td bgcolor="#5eaee1">
|
||||||
|
<b>Many, many files -- More really is smaller!</b>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><br></td>
|
||||||
|
<td>
|
||||||
|
<p>
|
||||||
|
One may be intimidated by the size NuttX source tree. There are hundreds of source files!
|
||||||
|
How can that be a tiny OS?
|
||||||
|
Actually, the large number of files is one of the tricks to keep NuttX small and
|
||||||
|
as scalable as possible.
|
||||||
|
Most files contain only a single function.
|
||||||
|
Sometimes just one tiny function with only a few lines of code.
|
||||||
|
Why?
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<b>Static Libraries</b>.
|
||||||
|
Because in the NuttX build processed, objects are compiled and saved into
|
||||||
|
<i>static libraries</i> (<i>archives</i>).
|
||||||
|
Then, when the file executable is linked, only the object files that are needed
|
||||||
|
are extracted from the archive and added to the final executable.
|
||||||
|
By having many, many tiny source files, you can assure that no code that you do
|
||||||
|
not execute is ever included in the link.
|
||||||
|
And by having many, tiny source files you have better granularity --
|
||||||
|
if you don't use that tiny function of even just a few lines of code, it will
|
||||||
|
not be included in the binary.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td valign="top" width="22"><img height="20" width="20" src="favicon.ico"></td>
|
||||||
|
<td bgcolor="#5eaee1">
|
||||||
|
<b>Other Tricks</b>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><br></td>
|
||||||
|
<td>
|
||||||
|
<p>
|
||||||
|
As mentioned above, the use of many, tiny source files and linking from static
|
||||||
|
libraries keeps the size of NuttX down.
|
||||||
|
Other tricks used in NuttX include:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<b>Configuration Files</b>.
|
||||||
|
Before you build NuttX, you must provide a configuration file that specifies
|
||||||
|
what features you plan to use and which features you do not.
|
||||||
|
This configuration file contains a long list of settings that control
|
||||||
|
what is built into NuttX and what is not.
|
||||||
|
There are hundreds of such settings
|
||||||
|
(see the <a href="NuttxPortingGuide.html#apndxconfigs">NuttX Porting Guide</a>
|
||||||
|
for a partial list that excludes platform specific settings).
|
||||||
|
These many, many configuration options allow NuttX to be highly tuned to
|
||||||
|
meet size requirements.
|
||||||
|
The downside to all of these configuration options is that it greatly
|
||||||
|
complicates the maintenance of NuttX -- but that is my problem, not yours.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<b>Weak Symbols</b>
|
||||||
|
The GNU toolchain supports <i>weak</i> symbols and these also help to keep
|
||||||
|
the size of NuttX down.
|
||||||
|
Weak symbols prevent object files from being drawn into the link even if they
|
||||||
|
are accessed from source code.
|
||||||
|
Careful use of weak symbols is another trick for keep unused code out of the
|
||||||
|
final binary.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</table></center>
|
||||||
|
|
||||||
<table width ="100%">
|
<table width ="100%">
|
||||||
<tr bgcolor="#e4e4e4">
|
<tr bgcolor="#e4e4e4">
|
||||||
<td>
|
<td>
|
||||||
@ -569,11 +686,11 @@
|
|||||||
This allows <code>poll()</code>/<code>select()</code> to wake-up on new connections to a listener socket.
|
This allows <code>poll()</code>/<code>select()</code> to wake-up on new connections to a listener socket.
|
||||||
</li>
|
</li>
|
||||||
<li>Added definition of a framebuffer driver and implement framebuffer drivers for the
|
<li>Added definition of a framebuffer driver and implement framebuffer drivers for the
|
||||||
simulated platform and the TI DM320 (untested as of the inital check-in).
|
simulated platform and the TI DM320 (untested as of the initial check-in).
|
||||||
</li>
|
</li>
|
||||||
<li>Partially developed a graphics framework based on the framebuffer drivers, however,
|
<li>Partially developed a graphics framework based on the framebuffer drivers, however,
|
||||||
this will not be ready for use for a few more release.
|
this will not be ready for use for a few more release.
|
||||||
Currently this includes only a few color conversion routines and some rasteizing functions.
|
Currently this includes only a few color conversion routines and some rasterizing functions.
|
||||||
A tiny windowing system is under development but not ready for check-in yet.
|
A tiny windowing system is under development but not ready for check-in yet.
|
||||||
<li>Added support for fixed precision math.
|
<li>Added support for fixed precision math.
|
||||||
</li>
|
</li>
|
||||||
@ -664,9 +781,9 @@
|
|||||||
<p>
|
<p>
|
||||||
<b>STATUS:</b>
|
<b>STATUS:</b>
|
||||||
This port boots and passes the OS test (examples/ostest).
|
This port boots and passes the OS test (examples/ostest).
|
||||||
The port is complete and verifed. As of NuttX 0.3.17, the port includes:
|
The port is complete and verified. As of NuttX 0.3.17, the port includes:
|
||||||
timer interrupts, serial console, USB driver, and SPI-based MMC/SD card
|
timer interrupts, serial console, USB driver, and SPI-based MMC/SD card
|
||||||
support. A verifed NuttShell (NSH) configuration is also available.
|
support. A verified NuttShell (NSH) configuration is also available.
|
||||||
</p>
|
</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -709,7 +826,7 @@
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<b>STATUS:</b>
|
<b>STATUS:</b>
|
||||||
The basic port (timer interrupts, serial ports, network, framebuffe, etc.) is complete.
|
The basic port (timer interrupts, serial ports, network, framebuffer, etc.) is complete.
|
||||||
All implemented features have been verified with the exception of the USB device-side
|
All implemented features have been verified with the exception of the USB device-side
|
||||||
driver; that implementation is complete but completely untested.
|
driver; that implementation is complete but completely untested.
|
||||||
</p>
|
</p>
|
||||||
@ -755,7 +872,7 @@
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<b>STATUS:</b>
|
<b>STATUS:</b>
|
||||||
This port is availble as of release 0.3.18 of NuttX. The port is basically complete
|
This port is available as of release 0.3.18 of NuttX. The port is basically complete
|
||||||
and many examples run correctly. However, there are remaining instabilities that
|
and many examples run correctly. However, there are remaining instabilities that
|
||||||
make the port un-usable. The nature of these is not understood; the behavior is
|
make the port un-usable. The nature of these is not understood; the behavior is
|
||||||
that certain SH-1 instructions stop working as advertised. This could be a silicon
|
that certain SH-1 instructions stop working as advertised. This could be a silicon
|
||||||
|
BIN
Documentation/NuttXScreenShot.jpg
Normal file
BIN
Documentation/NuttXScreenShot.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.8 KiB |
@ -18,6 +18,7 @@ at the present, but here is the longer term roadmap:
|
|||||||
NXTOOLKIT - A set of C graphics tools that provide higher-level window drawing
|
NXTOOLKIT - A set of C graphics tools that provide higher-level window drawing
|
||||||
operations. The toolkit can be used for window-oriented graphics
|
operations. The toolkit can be used for window-oriented graphics
|
||||||
without NXWIDGETS and is built on top of NX.
|
without NXWIDGETS and is built on top of NX.
|
||||||
|
NXFONTS - A set of C graphics tools for present (bitmap) font images.
|
||||||
NX - The tiny NuttX windowing system. This includes both a small-footprint,
|
NX - The tiny NuttX windowing system. This includes both a small-footprint,
|
||||||
single user implementaton (NXSU as described below) and a somewhat
|
single user implementaton (NXSU as described below) and a somewhat
|
||||||
larger multi-user implentation (NXMU as described below). Both
|
larger multi-user implentation (NXMU as described below). Both
|
||||||
@ -33,6 +34,7 @@ Related Header Files
|
|||||||
include/nuttx/nxglib.h -- Describes the NXGLIB C interfaces
|
include/nuttx/nxglib.h -- Describes the NXGLIB C interfaces
|
||||||
include/nuttx/nx.h -- Describes the NX C interfaces
|
include/nuttx/nx.h -- Describes the NX C interfaces
|
||||||
include/nutt/nxtk.h -- Describe the NXTOOLKIT C interfaces
|
include/nutt/nxtk.h -- Describe the NXTOOLKIT C interfaces
|
||||||
|
include/nutt/nxfont.h -- Describe sthe NXFONT C interfaces
|
||||||
include/nuttx/nxwidgets.h -- Will describe the NXWIDGETS classes (no longer planned)
|
include/nuttx/nxwidgets.h -- Will describe the NXWIDGETS classes (no longer planned)
|
||||||
|
|
||||||
Directories:
|
Directories:
|
||||||
@ -66,7 +68,11 @@ graphics/nxsu
|
|||||||
queue to serialize window operations from many threads. The multi-user front-end
|
queue to serialize window operations from many threads. The multi-user front-end
|
||||||
is selected when CONFIG_NX_MULTIUSER is defined in the NuttX configuration file.
|
is selected when CONFIG_NX_MULTIUSER is defined in the NuttX configuration file.
|
||||||
|
|
||||||
graphics/nxtoolkit
|
graphics/nxfonts
|
||||||
|
This is where the NXFONTS implementation resides. This is a relatively low-
|
||||||
|
level set of charset set/glyph management APIs. See include/nuttx/nxfonts.h
|
||||||
|
|
||||||
|
graphics/nxtk
|
||||||
This is where the NXTOOLKIT implementation resides. This toolkit is built on
|
This is where the NXTOOLKIT implementation resides. This toolkit is built on
|
||||||
top of NX and works with either the single-user or multi-user NX version. See
|
top of NX and works with either the single-user or multi-user NX version. See
|
||||||
include/nuttx/nxtk.h
|
include/nuttx/nxtk.h
|
||||||
|
Loading…
Reference in New Issue
Block a user