diff --git a/nuttx/Documentation/NuttX.html b/nuttx/Documentation/NuttX.html index 5a824cc8d..f73f1008e 100644 --- a/nuttx/Documentation/NuttX.html +++ b/nuttx/Documentation/NuttX.html @@ -29,7 +29,7 @@ Overview.
- What is NuttX? + What is NuttX? Look at all those files and features... How can it be a tiny OS? @@ -476,7 +476,7 @@

-

  • Bult-in USB trace functionality for USB debug.
  • +
  • Built-in USB trace functionality for USB debug.
  • @@ -497,7 +497,7 @@

    -

  • Graphics library and tiny windowing system under developement.
  • +
  • Graphics library and tiny windowing system under development.
  • @@ -505,7 +505,7 @@

    NuttX Add-Ons. The following packages are available to extend the basic NuttX feature set: -

    +

    @@ -539,9 +539,126 @@ SourceForge website.

    +
    +

    + Look at all those files and features... How can it be a tiny OS?. + 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? +

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Lots of Features -- More can be smaller! +

    +

    + The philosophy behind that NuttX is that lots of features are great... BUT + 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. +

    +

    + 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 total memory (code and data). + On the other hand, I often run richly featured NuttX builds that require + memory up to 100Kb. +

    +
    + Many, many files -- More really is smaller! +

    +

    + 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? +

    +
      +
    • + Static Libraries. + Because in the NuttX build processed, objects are compiled and saved into + static libraries (archives). + 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. +
    • +
    +
    + Other Tricks +

    +

    + 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: +

    +
      +
    • + Configuration Files. + 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 NuttX Porting Guide + 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. +
    • +
    • + Weak Symbols + The GNU toolchain supports weak 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. +
    • +
    +
    + @@ -709,7 +826,7 @@

    STATUS: - 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 driver; that implementation is complete but completely untested.

    @@ -755,7 +872,7 @@

    STATUS: - 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 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 diff --git a/nuttx/Documentation/NuttXScreenShot.jpg b/nuttx/Documentation/NuttXScreenShot.jpg new file mode 100644 index 000000000..199686b50 Binary files /dev/null and b/nuttx/Documentation/NuttXScreenShot.jpg differ diff --git a/nuttx/graphics/README.txt b/nuttx/graphics/README.txt index 48775342c..07efa722d 100644 --- a/nuttx/graphics/README.txt +++ b/nuttx/graphics/README.txt @@ -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 operations. The toolkit can be used for window-oriented graphics 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, single user implementaton (NXSU as described below) and a somewhat 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/nx.h -- Describes the NX 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) Directories: @@ -66,7 +68,11 @@ graphics/nxsu 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. -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 top of NX and works with either the single-user or multi-user NX version. See include/nuttx/nxtk.h

    @@ -569,11 +686,11 @@ This allows poll()/select() to wake-up on new connections to a listener socket.
  • 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).
  • Partially developed a graphics framework based on the framebuffer drivers, however, 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.
  • Added support for fixed precision math.
  • @@ -664,9 +781,9 @@

    STATUS: 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 - support. A verifed NuttShell (NSH) configuration is also available. + support. A verified NuttShell (NSH) configuration is also available.