aboutsummaryrefslogtreecommitdiff
path: root/apps/README.txt
diff options
context:
space:
mode:
Diffstat (limited to 'apps/README.txt')
-rw-r--r--apps/README.txt273
1 files changed, 0 insertions, 273 deletions
diff --git a/apps/README.txt b/apps/README.txt
deleted file mode 100644
index 55accfcf6..000000000
--- a/apps/README.txt
+++ /dev/null
@@ -1,273 +0,0 @@
-Application Folder
-==================
-
-Contents
---------
-
- General
- Directory Location
- Built-In Applications
- NuttShell (NSH) Built-In Commands
- Synchronous Built-In Commands
- Application Configuration File
- Example Built-In Application
- Building NuttX with Board-Specific Pieces Outside the Source Tree
-
-General
--------
-This folder provides various applications found in sub-directories. These
-applications are not inherently a part of NuttX but are provided to help
-you develop your own applications. The apps/ directory is a "break away"
-part of the configuration that you may choose to use or not.
-
-Directory Location
-------------------
-The default application directory used by the NuttX build should be named
-apps/ (or apps-x.y/ where x.y is the NuttX version number). This apps/
-directory should appear in the directory tree at the same level as the
-NuttX directory. Like:
-
- .
- |- nuttx
- |
- `- apps
-
-If all of the above conditions are TRUE, then NuttX will be able to
-find the application directory. If your application directory has a
-different name or is location at a different position, then you will
-have to inform the NuttX build system of that location. There are several
-ways to do that:
-
-1) You can define CONFIG_APPS_DIR to be the full path to your application
- directory in the NuttX configuration file.
-2) You can provide the path to the application directory on the command line
- like: make APPDIR=<path> or make CONFIG_APPS_DIR=<path>
-3) When you configure NuttX using tools/configure.sh, you can provide that
- path to the application directory on the configuration command line
- like: ./configure.sh -a <app-dir> <board-name>/<config-name>
-
-Built-In Applications
----------------------
-NuttX also supports applications that can be started using a name string.
-In this case, application entry points with their requirements are gathered
-together in two files:
-
- - builtin/builtin_proto.h Entry points, prototype function
- - builtin/builtin_list.h Application specific information and requirements
-
-The build occurs in several phases as different build targets are executed:
-(1) context, (2) depend, and (3) default (all). Application information is
-collected during the make context build phase.
-
-To execute an application function:
-
- exec_builtin() is defined in the nuttx/include/apps/builtin.h
-
-NuttShell (NSH) Built-In Commands
----------------------------------
-One use of builtin applications is to provide a way of invoking your custom
-application through the NuttShell (NSH) command line. NSH will support
-a seamless method invoking the applications, when the following option is
-enabled in the NuttX configuration file:
-
- CONFIG_NSH_BUILTIN_APPS=y
-
-Applications registered in the apps/builtin/builtin_list.h file will then
-be accessible from the NSH command line. If you type 'help' at the NSH
-prompt, you will see a list of the registered commands.
-
-Synchronous Built-In Commands
------------------------------
-By default, built-in commands started from the NSH command line will run
-asynchronously with NSH. If you want to force NSH to execute commands
-then wait for the command to execute, you can enable that feature by
-adding the following to the NuttX configuration file:
-
-CONFIG_SCHED_WAITPID=y
-
-The configuration option enables support for the waitpid() RTOS interface.
-When that interface is enabled, NSH will use it to wait, sleeping until
-the built-in command executes to completion.
-
-Of course, even with CONFIG_SCHED_WAITPID=y defined, specific commands
-can still be forced to run asynchronously by adding the ampersand (&)
-after the NSH command.
-
-Application Configuration File
-------------------------------
-The old-style NuttX configuration uses a special configuration file is
-used to configure which applications are to be included in the build.
-The source for this file is configs/<board>/<configuration>/appconfig.
-The existence of the appconfig file in the board configuration directory\
-is sufficient to enable building of applications.
-
-The appconfig file is copied into the apps/ directory as .config when
-NuttX is configured. .config is included in the toplevel apps/Makefile.
-As a minimum, this configuration file must define files to add to the
-CONFIGURED_APPS list like:
-
- CONFIGURED_APPS += examples/hello system/poweroff
-
-The new NuttX configuration uses kconfig-frontends tools and only the
-NuttX .config file. The new configuration is indicated by the existence
-of the definition CONFIG_NUTTX_NEWCONFIG=y in the NuttX .config file.
-If CONFIG_NUTTX_NEWCONFIG is defined, then the Makefile will:
-
-- Assume that there is no apps/.config file and will instead
-- Include Make.defs files from each of the subdirectories.
-
-When an application is enabled using the kconfig-frontends tool, then
-a new definition is added to the NuttX .config file. For example, if
-you want to enable apps/examples/hello then the old apps/.config would
-have had:
-
- CONFIGURED_APPS += examples/hello
-
-But in the new configuration there will be no apps/.config file and,
-instead, the NuttX .config will have:
-
- CONFIG_EXAMPLES_HELLO=y
-
-This will select the apps/examples/hello in the following way:
-
-- The top-level make will include examples/Make.defs
-- examples/Make.defs will set CONFIGURED_APPS += examples/hello
- like this:
-
- ifeq ($(CONFIG_EXAMPLES_HELLO),y)
- CONFIGURED_APPS += examples/hello
- endif
-
-Thus accomplishing the same thing with no apps/.config file.
-
-Example Built-In Application
-----------------------------
-An example application skeleton can be found under the examples/hello
-sub-directory. This example shows how a builtin application can be added
-to the project. One must define:
-
-Old configuration method:
-
- 1. Create sub-directory as: appname
-
- 2. In this directory there should be:
-
- - A Makefile, and
- - The application source code.
-
- 3. The application source code should provide the entry point:
- appname_main()
-
- 4. Set the requirements in the file: Makefile, specially the lines:
-
- APPNAME = appname
- PRIORITY = SCHED_PRIORITY_DEFAULT
- STACKSIZE = 768
- ASRCS = asm source file list as a.asm b.asm ...
- CSRCS = C source file list as foo1.c foo2.c ..
-
- Look at some of the other Makefiles for examples. Note the
- special registration logic needed for the context: target
-
- 5. Add the to the application to the CONFIGIURED_APPS in the
- apps/.config file:
-
- CONFIGURED_APPS += appname
-
-New Configuration Method:
-
- 1. Create sub-directory as: appname
-
- 2. In this directory there should be:
-
- - A Make.defs file that would be included by the apps/Makefile
- - A Kconfig file that would be used by the configuration tool (see
- misc/tools/kconfig-language.txt). This Kconfig file should be
- included by the apps/Kconfig file
- - A Makefile, and
- - The application source code.
-
- 3. The application source code should provide the entry point:
- appname_main()
-
- 4. Set the requirements in the file: Makefile, specially the lines:
-
- APPNAME = appname
- PRIORITY = SCHED_PRIORITY_DEFAULT
- STACKSIZE = 768
- ASRCS = asm source file list as a.asm b.asm ...
- CSRCS = C source file list as foo1.c foo2.c ..
-
- 4b. The Make.defs file should include a line like:
-
- ifeq ($(CONFIG_APPNAME),y)
- CONFIGURED_APPS += appname
- endif
-
-Building NuttX with Board-Specific Pieces Outside the Source Tree
------------------------------------------------------------------
-
-Q: Has anyone come up with a tidy way to build NuttX with board-
- specific pieces outside the source tree?
-A: Here are four:
-
- 1) There is a make target called 'make export'. It will build
- NuttX, then bundle all of the header files, libaries, startup
- objects, and other build components into a .zip file. You
- can can move that .zip file into any build environment you
- want. You even build NuttX under a DOS CMD window.
-
- This make target is documented in the top level nuttx/README.txt.
-
- 2) You can replace the entire apps/ directory. If there is
- nothing in the apps/ directory that you need, you can define
- CONFIG_APPS_DIR in your .config file so that it points to a
- different, custom application directory.
-
- You can copy any pieces that you like from the old apps/directory
- to your custom apps directory as necessary.
-
- This is documented in NuttX/configs/README.txt and
- nuttx/Documentation/NuttxPortingGuide.html (Online at
- http://nuttx.sourceforge.net/NuttxPortingGuide.html#apndxconfigs
- under Build options). And in the apps/README.txt file.
-
- 3) If you like the random collection of stuff in the apps/ directory
- but just want to expand the existing components with your own,
- external sub-directory then there is an easy way to that too:
- You just create the sympolic link at apps/external that
- redirects to your application sub-directory. The apps/Makefile
- will always automatically check for the existence of an
- apps/external directory and if it exists, it will automatically
- incorporate it into the build.
-
- This feature of the apps/Makefile is documented only here.
-
- You can, for example, create a script called install.sh that
- installs a custom application, configuration, and board specific
- directory:
-
- a) Copy 'MyBoard' directory to configs/MyBoard.
- b) Add a symbolic link to MyApplication at apps/external
- c) Configure NuttX (usually by:
-
- tools/configure.sh MyBoard/MyConfiguration
-
- or simply by copying defconfig->nutt/.config,
- setenv.sh->nuttx/setenv.sh, Make.defs->nuttx/Make.defs,
- appconfig->apps/.config
-
- Using the 'external' link makes it especially easy to add a
- 'built-in' application an existing configuration.
-
- 4) Add any link to apps/
-
- a) Add symbolic links apps/ to as many other directories as you
- want.
- b) Then just add the (relative) paths to the links in your
- appconfig file (that becomes the apps/.config file).
-
- That is basically the same as my option #3 but doesn't use the
- magic 'external' link. The toplevel apps/Makefile will always
- to build whatever in finds in the apps/.config file (plus the
- external link if present).