From 55a4dea904a3d51e3960bd2b036ba2dc3996cd90 Mon Sep 17 00:00:00 2001
From: Gregory Nutt
2.0 Directory Structure
- 2.1 Documentation
3.0 Configuring and Building
- 2.2 arch/
+ 2.1 nuttx/Documentation
+ 2.2 nuttx/arch/
- 2.3 binfmt/
- 2.4 configs/
+ 2.3 nuttx/binfmt/
+ 2.4 nuttx/audio/
+ 2.5 nuttx/configs/
- 2.4.1 Subdirectory Structure
- 2.5 nuttx/drivers/
- 2.4.2 Summary of Files
+ 2.5.1 Subdirectory Structure
+ 2.5.2 Summary of Files
- 2.4.2.1 Board Specific Logic
- 2.4.3 Supported Boards
- 2.4.2.2 Board Specific Configuration Sub-Directories
+ 2.5.2.1 Board Specific Logic
+ 2.5.2.2 Board Specific Configuration Sub-Directories
- 2.4.4 Adding a New Board Configuration
+ 2.5.3 Supported Boards
+ 2.5.4 Adding a New Board Configuration
- 2.6 nuttx/fs/
- 2.7 nuttx/graphics/
- 2.8 nuttx/include/
- 2.9 nuttx/libc/
- 2.10 nuttx/libxx/
- 2.11 nuttx/mm/
- 2.12 nuttx/net
- 2.13 nuttx/sched/
- 2.14 nuttx/syscall/
- 2.15 nuttx/tools/
- 2.16 nuttx/Makefile
- 2.17 apps/netutils
- 2.18 apps/nshlib
- 2.19 apps/examples/
+ 2.6 nuttx/drivers/
+ 2.7 nuttx/crypto/
+ 2.8 nuttx/fs/
+ 2.9 nuttx/graphics/
+ 2.10 nuttx/include/
+ 2.11 nuttx/lib/
+ 2.12 nuttx/libc/
+ 2.13 nuttx/libxx/
+ 2.14 nuttx/mm/
+ 2.15 nuttx/net
+ 2.16 nuttx/sched/
+ 2.17 nuttx/syscall/
+ 2.18 nuttx/tools/
+ 2.19 nuttx/wireless/
+ 2.20 nuttx/Makefile
@@ -148,26 +149,35 @@
4.5.16
4.6 up_addrenv_kstackfree()
boardctl() Application Interface
- 4.7 APIs Exported by NuttX to Architecture-Specific Logic
+ 4.7 Symmetric Multiprocssing (SMP) Application Interface
- 4.7.1
- 4.8 Shared Memory
+ 4.8 APIs Exported by NuttX to Architecture-Specific Logic
os_start()
- 4.7.2 OS List Management APIs
- 4.7.3 sched_process_timer()
- 4.7.4 sched_timer_expiration()
- 4.7.5 sched_alarm_expiration()
- 4.7.6 irq_dispatch()
+ 4.7.1 up_testset()
+ 4.7.2 up_cpu_index()
+ 4.7.3 up_cpu_start()
+ 4.7.4 up_cpu_initialize()
+ 4.7.5 up_cpu_pause()
+ 4.7.6 up_cpu_resume()
- 4.8.1
- 4.9 On-Demand Pagingup_shmat()
- 4.8.2 up_shmdt()
+ 4.8.1 os_start()
+ 4.8.2 OS List Management APIs
+ 4.8.3 sched_process_timer()
+ 4.8.4 sched_timer_expiration()
+ 4.8.5 sched_alarm_expiration()
+ 4.8.6 irq_dispatch()
- 4.10 LED Support
+ 4.9 Shared Memory
- 4.10.1 Header Files
+ 4.10 On-Demand Paging
- 4.10.2 LED Definitions
- 4.10.3 Common LED interfaces
+ 4.9.1 up_shmat()
+ 4.9.2 up_shmdt()
+
+ 4.11 LED Support
+
5.0 NuttX File System
@@ -263,6 +273,10 @@
| | | |--<other-chips>/
| | | `-- (architecture-specific source files)
| | `-- <other-architecture directories>/
+| |-- audio/
+| | |-- Makefile
+| | |-- Kconfig
+| | `-- (common audio source files)
| |-- binfmt/
| | |-- Makefile
| | |-- Kconfig
@@ -303,7 +317,7 @@
| | | `-- (more standard header files)
| | |-- (non-standard include sub-directories)
| | `-- (non-standard header files)
-| |-- libc/
+| |-- libc/
| | |-- Makefile
| | |-- Kconfig
| | `-- (libc source files)
@@ -352,8 +366,12 @@
| | |-- Makefile
| | |-- Kconfig
| | `-- (syscall source files)
-| `-- tools/
-| `-- (miscellaneous scripts and programs)
+| |-- tools/
+| | `-- (miscellaneous scripts and programs)
+| `-- tools/
+| |-- Makefile
+| |-- Kconfig
+| `-- (wireless management source files)
`- apps
|-- netutils/
| |-- Makefile
@@ -614,35 +632,7 @@
arch/arm:
- This directory holds common ARM architectures. At present, this includes
- the following subdirectories:
- arch/arm/include and arch/arm/src/common:
- Common ARM logic.
- arch/arm/include/c5471 and arch/arm/src/c5471:
- TI TMS320C5471 (also called TMS320DM180 or just C5471).
- NuttX operates on the ARM7 of this dual core processor.
- This port is complete, verified, and included in the NuttX release 0.1.1.
- arch/arm/include/dm320 and arch/arm/src/dm320:
- TI TMS320DM320 (also called just DM320).
- NuttX operates on the ARM9EJS of this dual core processor.
- This port complete, verified, and included in the NuttX release 0.2.1.
- arch/arm/include/lpc214x and arch/arm/src/lpc214x:
- These directories provide support for NXP LPC214x family of
- processors.
- STATUS: This port boots and passes the OS test (apps/examples/ostest).
- 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 verified NuttShell configuration is also available.
- configs/mcu123-lpc214x:
@@ -717,14 +707,20 @@
system into memory in a form that can be used to execute them.
-
+ The audio/ subdirectory contains the NuttX audio sub-system.
+
The configs/ subdirectory contains configuration data for each board.
These board-specific configurations plus the architecture-specific configurations in
the arch/ subdirectory complete define a customized port of NuttX.
The configs directory contains board specific configuration files. Each board must
provide a subdirectory <board-name> under configs/ with the following characteristics:
@@ -750,8 +746,8 @@
`-- (other board-specific configuration sub-directories)/
-
include/:
@@ -773,7 +769,7 @@
It must support the following targets: libext$(LIBEXT), clean, and distclean.
The configs/<board-name>/ sub-directory holds all of the
files that are necessary to configure NuttX for the particular board.
@@ -845,248 +841,11 @@
- All of the specific boards supported by NuttX are identified below. - These are the specific <board-name>'s that may be used to configure NuttX - as described below. + All of the specific boards supported by NuttX are identified in the README.txt file.
-configs/avr32dev1:
- This is a port of NuttX to the Atmel AVR32DEV1 board. That board is
- based on the Atmel AT32UC3B0256 MCU and uses a specially patched
- version of the GNU toolchain: The patches provide support for the
- AVR32 family. That patched GNU toolchain is available only from the
- Atmel website. STATUS: This port is functional but very basic. There
- are configurations for NSH and the OS test.
- configs/c5471evm:
- This is a port to the Spectrum Digital C5471 evaluation board. The
- C5471 is a dual core processor from TI with an ARM7TDMI general purpose
- processor and a c54 DSP. It is also known as TMS320DA180 or just DA180.
- NuttX runs on the ARM core and is built with with a GNU arm-nuttx-elf toolchain
- under Linux or Cygwin. This port is complete and verified.
- configs/demo9s12ne64:
- Freescale DMO9S12NE64 board based on the MC9S12NE64 hcs12 cpu. This
- port uses the m9s12x GCC toolchain. STATUS: (Still) under development; it
- is code complete but has not yet been verified.
- configs/ea3131:
- Embedded Artists EA3131 Development bard. This board is based on the
- an NXP LPC3131 MCU. This OS is built with the arm-nuttx-elf toolchain.
- STATUS: This port is complete and mature.
- configs/eagle100:
- Micromint Eagle-100 Development board. This board is based on the
- an ARM Cortex-M3 MCU, the Luminary LM3S6918. This OS is built with the
- arm-nuttx-elf toolchain. STATUS: This port is complete and mature.
- configs/ez80f0910200kitg
- ez80Acclaim! Microcontroller. This port use the Zilog ez80f0910200kitg
- development kit, eZ80F091 part, and the Zilog ZDS-II Windows command line
- tools. The development environment is Cygwin under WinXP.
- configs/ez80f910200zco:
- ez80Acclaim! Microcontroller. This port use the Zilog ez80f0910200zco
- development kit, eZ80F091 part, and the Zilog ZDS-II Windows command line
- tools. The development environment is Cygwin under WinXP.
- configs/lm3s6965-ek:
- Stellaris LM3S6965 Evaluation Kit. This board is based on the
- an ARM Cortex-M3 MCU, the Luminary/TI LM3S6965. This OS is built with the
- arm-nuttx-elf toolchain. STATUS: This port is complete and mature.
- configs/lm3s8962-ek:
- Stellaris LMS38962 Evaluation Kit. STATUS: contributed.
- configs/lpcxpresso-lpc1768:
- Embedded Artists base board with NXP LPCExpresso LPC1768. This board
- is based on the NXP LPC1768. The Code Red toolchain is used by default.
- configs/mbed:
- The configurations in this directory support the mbed board (http://mbed.org)
- that features the NXP LPC1768 microcontroller. This OS is also built
- with the arm-nuttx-elf toolchain. STATUS: Contributed.
- configs/mcu123-lpc214x:
- This port is for the NXP LPC2148 as provided on the mcu123.com
- lpc214x development board.
- This OS is also built with the arm-nuttx-elf toolchain* under Linux or Cygwin.
- The port supports serial, timer0, spi, and usb.
- configs/mirtoo:
- This is the port to the DTX1-4000L "Mirtoo" module.
- This module uses MicroChipPIC32MX250F128D.
- See the Dimitech website for further information.
- configs/mx1ads:
- This is a port to the Motorola MX1ADS development board. That board
- is based on the Freescale i.MX1 processor. The i.MX1 is an ARM920T.
- STATUS: This port is nearly code complete but was never fully
- integrated due to tool-related issues.
- configs/ne64badge:
- Future Electronics Group NE64 /PoE Badge board based on the
- MC9S12NE64 hcs12 cpu. This port uses the m9s12x GCC toolchain.
- STATUS: The port is code-complete but was never fully tested.
- configs/ntosd-dm320:
- This port uses the Neuros OSD with a GNU arm-nuttx-elf toolchain* under Linux or Cygwin.
- See Neuros Wiki
- for further information.
- NuttX operates on the ARM9EJS of this dual core processor.
- STATUS: This port is code complete, verified, and included in the
- NuttX 0.2.1 release.
- configs/nucleus2g:
- This port uses the Nucleus 2G board (with Babel CAN board).
- This board features an NXP LPC1768 processor.
- See the 2G Engineering website for more information about the Nucleus 2G.
- configs/olimex-lpc1766stk:
- This port uses the Olimex LPC1766-STK board and a GNU GCC toolchain under
- Linux or Cygwin. STATUS: Complete and mature.
- configs/olimex-lpc2378:
- This port uses the Olimex-lpc2378 board and a GNU arm-nuttx-elf toolchain under
- Linux or Cygwin. STATUS: ostest and NSH configurations available.
- configs/olimex-strp711:
- This port uses the Olimex STR-P711 board arm-nuttx-elf toolchain* under Linux or Cygwin.
- See the Olimex web site
- for further information.
- STATUS: Configurations for the basic OS test and NSH are complete and verified.
- configs/pcblogic-pic32mx:
- This is the port of NuttX to the PIC32MX board from PCB Logic Design Co.
- This board features the MicroChip PIC32MX460F512L.
- The board is a very simple -- little more than a carrier for the PIC32
- MCU plus voltage regulation, debug interface, and an OTG connector.
- STATUS: Code complete but testing has been stalled due to tool related problems
- (PICkit 2 does not work with the PIC32).
- configs/qemu-i486:
- Port of NuttX to QEMU in i486 mode. This port will also run on real i486
- hardware (Google the Bifferboard).
- configs/rgmp:
- RGMP stands for RTOS and GPOS on Multi-Processor. RGMP is a project for
- running GPOS and RTOS simultaneously on multi-processor platforms. You can
- port your favorite RTOS to RGMP together with an unmodified Linux to form a
- hybrid operating system. This makes your application able to use both RTOS
- and GPOS features.
- See the RGMP Wiki for further information about RGMP.
- configs/sam3u-ek:
- The port of NuttX to the Atmel SAM3U-EK development board.
- configs/skp16c26:
- Renesas M16C processor on the Renesas SKP16C26 StarterKit. This port
- uses the GNU m32c toolchain. STATUS: The port is complete but untested
- due to issues with compiler internal errors.
- configs/stm3210e-eval:
- STMicro STM3210E-EVAL development board based on the STMicro STM32F103ZET6
- microcontroller (ARM Cortex-M3). This port uses the GNU Cortex-M3
- toolchain.
- configs/sim:
- 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.
- This port does not support interrupts or a real timer (and hence no
- round robin scheduler) Otherwise, it is complete.
- configs/us7032evb1:
- This is a port of the Hitachi SH-1 on the Hitachi SH-1/US7032EVB1 board.
- STATUS: 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
- problem, some pipeline issue that is not handled properly by the gcc 3.4.5 toolchain
- (which has very limited SH-1 support to begin with), or perhaps with the CMON debugger.
- At any rate, I have exhausted all of the energy that I am willing to put into this cool
- old processor for the time being.
- configs/vsn:
- ISOTEL NetClamps VSN V1.2 ready2go sensor network platform based on the
- STMicro STM32F103RET6. Contributed by Uros Platise.
- See the Isotel web site for further information
- about the NetClamps board.
- configs/xtrs:
- TRS80 Model 3. This port uses a vintage computer based on the Z80.
- An emulator for this computer is available to run TRS80 programs on a
- Linux platform (http://www.tim-mann.org/xtrs.html).
- configs/z16f2800100zcog
- z16f Microcontroller.
- This port use the Zilog z16f2800100zcog development kit and the
- Zilog ZDS-II Windows command line tools.
- The development environment is Cygwin under WinXP.
- configs/z80sim:
- z80 Microcontroller. This port uses a Z80 instruction set simulator
- called z80sim.
- This port also the SDCC toolchain under Linux or Cygwin(verified with version 2.6.0).
- configs/z8encore000zco
- z8Encore! Microcontroller. This port use the Zilog z8encore000zco
- development kit, Z8F6403 part, and the Zilog ZDS-II Windows command line
- tools. The development environment is Cygwin under WinXP.
- configs/z8encore000zco
- z8Encore! Microcontroller. This port use the Zilog z8f64200100kit
- development kit, Z8F6423 part, and the Zilog ZDS-II Windows command line
- tools. The development environment is Cygwin under WinXP.
- configs/z8f64200100kit:
- z8Encore! Microcontroller. This port use the Zilog z8f64200100kit
- development kit, Z8F6423 part, and the Zilog ZDS-II Windows command line
- tools. The development environment is Cygwin under WinXP.
-
- * A customized version of the buildroot
- is available to build these toolchains under Linux or Cygwin.
-
Okay, so you have created a new board configuration directory.
Now, how do you hook this board into the configuration system so that you can select with make menuconfig?
@@ -1164,7 +923,13 @@ endif
This includes additional, board-specific configuration variable definitions in configs/myboard/Kconfig.
+ This sub-directory holds the NuttX cryptographic sub-system. +
+ +This directory holds architecture-independent device drivers. @@ -1228,7 +993,7 @@ drivers/ `-- (Various common driver source files) -
This directory contains the NuttX file system. @@ -1261,7 +1026,7 @@ fs/ `-- (common file system source files) -
This directory contains files for graphics/video support under NuttX. @@ -1288,7 +1053,7 @@ graphics/ `-- (common file system source files) -
This directory holds NuttX header files. Standard header files file retained in can be included in the normal fashion: @@ -1351,7 +1116,15 @@ include/ `-- (More standard header files) -
+ This is a (almost) empty directory that has a holding place for generated static libraries. + The NuttX build system generates a collection of such static libraries in this directory during the compile phaase. + These libraries are then in a known place for the final link phase where they are accessed to generated the final binaries. +
+ +This directory holds a collection of standard libc-like functions with custom interfaces into NuttX. @@ -1399,28 +1172,28 @@ libc/ `-- (Implementation of some functions from unistd.h) -
This directory holds a tiny, minimal standard std C++ that can be used to build some, simple C++ applications in NuttX.
-This is the NuttX memory manager.
-This directory contains the implementation of the NuttX networking layer including internal socket APIs.
-The files forming core of the NuttX RTOS reside here.
-
If NuttX is built as a separately compiled kernel (with CONFIG_BUILD_PROTECTED=y or CONFIG_BUILD_KERNEL=y),
then the contents of this directory are built.
@@ -1428,7 +1201,7 @@ libc/
between user-mode applications and the kernel-mode RTOS.
This directory holds a collection of tools and scripts to simplify configuring, building and maintaining NuttX. @@ -1466,88 +1239,19 @@ tools/ Some of these tools are discussed below as well in the discussion of configuring and building NuttX.
-+ This directory holds support for hardware-independent wireless support. +
+ +
The top-level Makefile in the ${TOPDIR} directory contains all of the top-level control
logic to build NuttX.
Use of this Makefile to build NuttX is described below.
- This directory contains most of the network applications. - Some of these are original with NuttX (like tftpc and dhcpd) and others were leveraged from the uIP-1.0 apps directory. - As the uIP apps/README says, these applications "are not all heavily tested." -
--netutils/ -|-- Kconfig -|-- Makefile -|-- dhcdp/ -| |-- Kconfig -| |-- Make.defs -| `-- (DHCP client source files) -|-- dhcpd/ -| |-- Kconfig -| |-- Make.defs -| `-- (DHCP server source files) -|-- ftpc/ -| |-- Kconfig -| |-- Make.defs -| `-- (FTP client source files) -|-- ftpd/ -| |-- Kconfig -| |-- Make.defs -| `-- (FTP server source files) -|-- resolv/ -| |-- Kconfig -| |-- Make.defs -| `-- (resolv source files) -|-- resolv/ -| |-- Kconfig -| |-- Make.defs -| `-- (resolv source files) -|-- smtp/ -| |-- Kconfig -| |-- Make.defs -| `-- (smtp source files) -|-- telnetd/ -| |-- Kconfig -| |-- Make.defs -| `-- (Telnet client source files) -|-- tftpc/ -| |-- Kconfig -| |-- Make.defs -| `-- (TFTP client source files) -|-- thttpd/ -| |-- Kconfig -| |-- Make.defs -| `-- (thttpd HTTP server source files) -|-- netlib/ -| |-- Kconfig -| |-- Make.defs -| `-- (netlib source files) -|-- weblclient/ -| |-- Kconfig -| |-- Make.defs -| `-- (webclient source files) -|-- webserver/ -| |-- Kconfig -| |-- Make.defs -| `-- (uIP webserver source files) -`-- (netutils common files) -- -
- This directory contains for the core of the NuttShell (NSH) application. -
- -- Example and test programs to build against. -
-
@@ -3907,24 +3611,230 @@ void lpwork_restorepriority(uint8_t reqprio);
-1 (ERROR) is returned on failure with the errno variable to to indicate the nature of the failure.
-4.7 APIs Exported by NuttX to Architecture-Specific Logic+4.7 Symmetric Multiprocssing (SMP) Application Interface++According to Wikipedia: "Symmetric multiprocessing (SMP) involves a symmetric multiprocessor system hardware and software architecture where two or more identical processors connect to a single, shared main memory, have full access to all I/O devices, and are controlled by a single operating system instance that treats all processors equally, reserving none for special purposes. Most multiprocessor systems today use an SMP architecture. In the case of multi-core processors, the SMP architecture applies to the cores, treating them as separate processors. + ++"SMP systems are tightly coupled multiprocessor systems with a pool of homogeneous processors running independently, each processor executing different programs and working on different data and with capability of sharing common resources (memory, I/O device, interrupt system and so on) and connected using a system bus or a crossbar." + ++For a technical description of the NuttX implementation of SMP, see the NuttX SMP Wiki Page. + + + None + + +4.7.1
+ |