You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by gi...@apache.org on 2022/10/13 00:21:05 UTC

[incubator-nuttx-website] branch asf-site updated: Publishing web: 6758fc5efbbf5ed16c807ccdfb012d94d1db201a docs: 53dd0819cf4317f24e081aa0175d1c4ef3fa4c57

This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 04e6ca2  Publishing web: 6758fc5efbbf5ed16c807ccdfb012d94d1db201a docs: 53dd0819cf4317f24e081aa0175d1c4ef3fa4c57
04e6ca2 is described below

commit 04e6ca274188b68fe75634cb35b0814b529c9384
Author: dependabot[bot] <49...@users.noreply.github.com>
AuthorDate: Thu Oct 13 00:18:14 2022 +0000

    Publishing web: 6758fc5efbbf5ed16c807ccdfb012d94d1db201a docs: 53dd0819cf4317f24e081aa0175d1c4ef3fa4c57
---
 content/docs/10.0.0/index.html                     |   2 +-
 content/docs/10.0.1/index.html                     |   2 +-
 content/docs/10.1.0/index.html                     |   2 +-
 content/docs/10.2.0/index.html                     |   2 +-
 content/docs/10.3.0/index.html                     |   2 +-
 .../docs/latest/_sources/guides/customapps.rst.txt | 346 ++++++++++++++
 .../latest/_sources/guides/customboards.rst.txt    |  71 +++
 content/docs/latest/_sources/guides/index.rst.txt  |   2 +
 content/docs/latest/glossary.html                  |   4 +-
 content/docs/latest/guides/cpp_cmake.html          |   2 +
 content/docs/latest/guides/customapps.html         | 521 +++++++++++++++++++++
 .../guides/{tasktrace.html => customboards.html}   | 104 ++--
 content/docs/latest/guides/drivers.html            |   2 +
 content/docs/latest/guides/index.html              |  34 ++
 content/docs/latest/guides/nfs.html                |   2 +
 content/docs/latest/guides/pysimcoder.html         |   6 +-
 content/docs/latest/guides/simulator.html          |   2 +
 content/docs/latest/guides/tasktrace.html          |   2 +
 content/docs/latest/guides/tasktraceinternal.html  |   2 +
 content/docs/latest/guides/tasktraceuser.html      |   2 +
 content/docs/latest/guides/usbtrace.html           |   2 +
 content/docs/latest/index.html                     |   4 +-
 content/docs/latest/objects.inv                    | Bin 37777 -> 38373 bytes
 content/docs/latest/searchindex.js                 |   2 +-
 content/feed.xml                                   |   4 +-
 25 files changed, 1083 insertions(+), 41 deletions(-)

diff --git a/content/docs/10.0.0/index.html b/content/docs/10.0.0/index.html
index f251b0b..b4d3636 100644
--- a/content/docs/10.0.0/index.html
+++ b/content/docs/10.0.0/index.html
@@ -207,7 +207,7 @@ by following these <a class="reference internal" href="contributing/documentatio
 <div class="section" id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" title="Permalink to this headline">¶</a></h1>
 <p>NuttX is a real-time operating system (RTOS) with an emphasis on standards compliance and small footprint. Scalable from 8-bit to 32-bit microcontroller environments, the primary governing standards in NuttX are Posix and ANSI standards. Additional standard APIs from Unix and other common RTOS’s (such as VxWorks) are adopted for functionality not available under these standards, or for functionality that is not appropriate for deeply-embedded environments (such as fork()).</p>
-<p>Last Updated: 12 October 22 at 00:16</p>
+<p>Last Updated: 13 October 22 at 00:15</p>
 <div class="toctree-wrapper compound">
 <p class="caption"><span class="caption-text">Table of Contents</span></p>
 <ul class="current">
diff --git a/content/docs/10.0.1/index.html b/content/docs/10.0.1/index.html
index be22828..ec11acc 100644
--- a/content/docs/10.0.1/index.html
+++ b/content/docs/10.0.1/index.html
@@ -217,7 +217,7 @@ by following these <a class="reference internal" href="contributing/documentatio
 <div class="section" id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" title="Permalink to this headline">¶</a></h1>
 <p>NuttX is a real-time operating system (RTOS) with an emphasis on standards compliance and small footprint. Scalable from 8-bit to 32-bit microcontroller environments, the primary governing standards in NuttX are Posix and ANSI standards. Additional standard APIs from Unix and other common RTOS’s (such as VxWorks) are adopted for functionality not available under these standards, or for functionality that is not appropriate for deeply-embedded environments (such as fork()).</p>
-<p>Last Updated: 12 October 22 at 00:17</p>
+<p>Last Updated: 13 October 22 at 00:15</p>
 <div class="toctree-wrapper compound">
 <p class="caption"><span class="caption-text">Table of Contents</span></p>
 <ul class="current">
diff --git a/content/docs/10.1.0/index.html b/content/docs/10.1.0/index.html
index 137d9b8..cb7ddf6 100644
--- a/content/docs/10.1.0/index.html
+++ b/content/docs/10.1.0/index.html
@@ -217,7 +217,7 @@ by following these <a class="reference internal" href="contributing/documentatio
 <div class="section" id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" title="Permalink to this headline">¶</a></h1>
 <p>NuttX is a real-time operating system (RTOS) with an emphasis on standards compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller environments, the primary governing standards in NuttX are POSIX and ANSI standards. Additional standard APIs from Unix and other common RTOS’s (such as VxWorks) are adopted for functionality not available under these standards, or for functionality that is not appropriate for deeply-embedded environments (such as fork()).</p>
-<p>Last Updated: 12 October 22 at 00:17</p>
+<p>Last Updated: 13 October 22 at 00:16</p>
 <div class="toctree-wrapper compound">
 <p class="caption"><span class="caption-text">Table of Contents</span></p>
 <ul class="current">
diff --git a/content/docs/10.2.0/index.html b/content/docs/10.2.0/index.html
index 70fc229..60b3398 100644
--- a/content/docs/10.2.0/index.html
+++ b/content/docs/10.2.0/index.html
@@ -218,7 +218,7 @@ by following these <a class="reference internal" href="contributing/documentatio
 <div class="section" id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" title="Permalink to this headline">¶</a></h1>
 <p>NuttX is a real-time operating system (RTOS) with an emphasis on standards compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller environments, the primary governing standards in NuttX are POSIX and ANSI standards. Additional standard APIs from Unix and other common RTOS’s (such as VxWorks) are adopted for functionality not available under these standards, or for functionality that is not appropriate for deeply-embedded environments (such as fork()).</p>
-<p>Last Updated: 12 October 22 at 00:17</p>
+<p>Last Updated: 13 October 22 at 00:16</p>
 <div class="toctree-wrapper compound">
 <p class="caption"><span class="caption-text">Table of Contents</span></p>
 <ul class="current">
diff --git a/content/docs/10.3.0/index.html b/content/docs/10.3.0/index.html
index 70fc229..60b3398 100644
--- a/content/docs/10.3.0/index.html
+++ b/content/docs/10.3.0/index.html
@@ -218,7 +218,7 @@ by following these <a class="reference internal" href="contributing/documentatio
 <div class="section" id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" title="Permalink to this headline">¶</a></h1>
 <p>NuttX is a real-time operating system (RTOS) with an emphasis on standards compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller environments, the primary governing standards in NuttX are POSIX and ANSI standards. Additional standard APIs from Unix and other common RTOS’s (such as VxWorks) are adopted for functionality not available under these standards, or for functionality that is not appropriate for deeply-embedded environments (such as fork()).</p>
-<p>Last Updated: 12 October 22 at 00:17</p>
+<p>Last Updated: 13 October 22 at 00:16</p>
 <div class="toctree-wrapper compound">
 <p class="caption"><span class="caption-text">Table of Contents</span></p>
 <ul class="current">
diff --git a/content/docs/latest/_sources/guides/customapps.rst.txt b/content/docs/latest/_sources/guides/customapps.rst.txt
new file mode 100644
index 0000000..5ae2ca6
--- /dev/null
+++ b/content/docs/latest/_sources/guides/customapps.rst.txt
@@ -0,0 +1,346 @@
+==================
+Custom Apps How-to
+==================
+
+Nuttx comes with a large number of Apps but, most likely, you will want to add your own.
+
+There are various different options for this depending on your requirements.
+
+  #. Replace the apps/ directory completely
+  #. Extend the apps/ directory to include a new custom directory
+  #. Include an additional custom directory outside of the main source trees
+
+The following sections explain these 3 methods using a ``CustomHello.c`` app and
+the directory ``CustomApps`` as an example.
+
+.. Tip::
+  If you make errors while setting this up and the build fails, it is most likely you'll
+  need to run ``make clean`` and possibly even ``make distclean`` before rebuilding to
+  ensure it works correctly.
+
+-----------------------------------------
+1. Replace The Apps/ Directory Completely
+-----------------------------------------
+
+The CustomApps directory need only to contain the minimum three files:
+   
+  * ``Makefile``
+  * ``Kconfig``
+  * ``CustomHello.c``
+
+
+1.1 Makefile
+------------
+
+The custom application directory must include a Makefile to make all of the targets
+expected by the NuttX build and must generate an archive called libapps.a in the
+top-level of the custom directory structure. 
+
+The Makefile has just those minimum required targets:
+
+    .. code-block:: console
+
+      APPDIR = ${shell pwd}
+ 
+      -include $(TOPDIR)/Make.defs
+ 
+      # files
+ 
+      CSRCS = CustomHello.c
+      COBJS = CustomHello.o
+ 
+      ROOTDEPPATH = --dep-path .
+ 
+      # Build targets
+ 
+      all: libapps.a
+      .PHONY: dirlinks context preconfig depend clean clean_context distclean
+      .PRECIOUS: libapps$(LIBEXT)
+ 
+      # Compile C Files
+ 
+      $(COBJS): %$(OBJEXT): %.c
+      $(call COMPILE, $<, $@)
+ 
+      # Add object files to the apps archive
+ 
+      libapps.a: $(COBJS)
+        $(call ARCHIVE, libapps.a, $(COBJS))
+ 
+      # Create directory links
+ 
+      dirlinks:
+ 
+      # Setup any special pre-build context
+ 
+      context:
+ 
+      # Setup any special pre-configuration context
+ 
+      preconfig:
+ 
+      # Make the dependency file, Make.deps
+ 
+      depend: Makefile $(CSRCS)
+        $(Q) $(MKDEP) $(ROOTDEPPATH) "$(CC)" -- $(CFLAGS) -- $(SRCS) > Make.dep
+ 
+      # Clean the results of the last build
+ 
+      clean:
+        $(call CLEAN)
+ 
+      # Remove the build context and directory links
+ 
+      clean_context:
+ 
+      # Restore the directory to its original state
+ 
+      distclean: clean clean_context
+        $(call DELFILE, Make.dep)
+ 
+      # Include dependencies
+     
+      -include Make.dep
+  
+1.2 Kconfig
+-----------
+
+A Kconfig file must be included but need not be populated with any meaningful options.
+This is a place where you can add settings to generate customized builds of your custom
+application and/or choose which of your apps to include.
+
+In the minimum case, Kconfig is only:
+
+    .. code-block:: console
+
+      # For a description of the syntax of this configuration file,
+      # see the file kconfig-language.txt in the NuttX tools repository.
+      #
+
+or
+
+    .. code-block:: console
+
+      # For a description of the syntax of this configuration file,
+      # see the file kconfig-language.txt in the NuttX tools repository.
+      #
+
+
+
+1.3 CustomHello.c
+-----------------
+
+The custom application must actually compile some source files in order to generate the required
+libapps.a archive. One of these source files must include the ``main()`` entry point to the
+application.
+
+The function of this main() entry point simply to bring-up the full application. It is called
+at the completion of OS initialization.
+
+What this application initialization entry point does, how it interacts with the rest of your
+application, and where the rest of you application code is located is of no concern to the OS.
+
+Only this one entry point is needed.
+
+For this "Hello, Custom World!" application ``custom_hello()`` is the application entry point:
+
+    .. code-block:: console
+
+      #include <stdio.h>
+ 
+      int custom_hello(int argc, char *argv[])
+      {
+        printf("Hello, Custom World!!\n");
+        return 0;
+      }
+
+1.4 Building with the CustomApps Directory
+------------------------------------------
+
+In order to build with the new custom configuration, you will need the following in your configuration:
+
+:menuselection:`CONFIG_APPS_DIR="../CustomApps"`
+
+:menuselection:`CONFIG_USER_ENTRYPOINT="custom_hello"`
+
+Note that you can only access the ``../CustomApps/Kconfig`` configuration file if ``CONFIG_APPS_DIR`` is set
+to ``../CustomApps`` BEFORE ``make menuconfig`` is executed
+
+This can be done by
+
+* hand-editing the .config file before running make menuconfig, which is rarely a good idea
+* Using ``kconfig-tweak --set-str CONFIG_APPS_DIR ../CustomApps``
+* select the CustomApps directory as a command line option at the time the board is configured:
+  
+      .. code-block:: console  
+
+        ./tools/configure.sh -a ../CustomApps <board>:<config>
+
+  or
+
+      .. code-block:: console  
+
+        .tools/configure.sh -l ../CustomBoards/MyCustomBoardName/MyCustomConfig
+
+Then build as you normally would. When you execute the custom_hello app you should see:
+
+  .. code-block:: console
+
+    Hello, Custom World!!
+
+---------------------------------------------------------------
+2. Extend the apps/ directory to include a new custom directory
+---------------------------------------------------------------
+
+The collection of apps provided in nuttx-apps can be useful, and this method simply
+extends the directory structure to include your own directory structure. 
+
+The existing /apps makefile automatically checks for the existence of sub-directories
+that contain a ``Makefile`` and ``Make.defs`` file. This example assumes there is likely
+to be more than one custom app, and includes a ``Kconfig`` for the app itself. Inclusion
+of a ``Kconfig`` allows custom App options to be included in the Nuttx configuration
+system, but is optional.
+
+2.1 Custom Apps Directory
+-------------------------
+
+Simply create a new directory under the existing apps directory with a name of your choice.
+This example uses the directory name ``CustomApps``.
+
+2.2 Make.defs
+-------------
+
+Create this file in the ``CustomApps`` directory, with the following line added:
+
+  .. code-block:: console
+
+    include $(wildcard $(APPDIR)/CustomApps/*/Make.defs)
+
+2.3 Makefile
+------------
+
+Create a Makefile in the ``CustomApps`` directory, with the following lines added:
+
+  .. code-block:: console
+
+    MENUDESC = "Custom Apps"
+
+    include $(APPDIR)/Directory.mk
+
+2.4 CustomHello App
+-------------------
+
+Create a sub-directory under the ``CustomApps`` directory called ``CustomHello``.
+
+The same ``CustomHello.c`` file as described above should be created here.
+
+2.5 CustomHello Makefile
+------------------------
+
+Create a Makefile in the ``CustomApps/CustomHello`` directory with the following lines:
+
+  .. code-block:: console
+
+    include $(APPDIR)/Make.defs
+
+    # Custom Hello built-in application info
+
+    PROGNAME = $(CONFIG_CUSTOM_APPS_CUSTOM_HELLO_PROGNAME)
+    PRIORITY = $(CONFIG_CUSTOM_APPS_CUSTOM_HELLO_PRIORITY)
+    STACKSIZE = $(CONFIG_CUSTOM_APPS_CUSTOM_HELLO_STACKSIZE)
+    MODULE = $(CONFIG_CUSTOM_APPS_CUSTOM_HELLO)
+
+    # Custom Hello
+
+    MAINSRC = CustomHello.c
+
+    include $(APPDIR)/Application.mk   
+
+
+2.6 CustomHello Kconfig
+-----------------------
+
+Create a Kconfig file in the ``CustomApps/CustomHello`` directory, with the following lines. For
+the purposes of this example, the Kconfig will only cover our single application):
+
+  .. code-block:: console
+
+    #
+    # For a description of the syntax of this configuration file,
+    # see the file kconfig-language.txt in the NuttX tools repository.
+    #
+
+    config CUSTOM_APPS_CUSTOM_HELLO
+	    tristate "Custom Hello App"
+	    default n
+	    ---help---
+		    Enable the Custom Hello App
+		
+    if CUSTOM_APPS_CUSTOM_HELLO
+
+    config CUSTOM_APPS_CUSTOM_HELLO_PROGNAME
+	    string "Program name"
+	    default "custom_hello"
+	    ---help---
+		    This is the name of the program that will be used when the NSH ELF
+		    program is installed.
+	
+    config CUSTOM_APPS_CUSTOM_HELLO_PRIORITY
+	    int "Custom Hello task priority"
+	    default 100
+
+    config CUSTOM_APPS_CUSTOM_HELLO_STACKSIZE
+	    int "Custom Hello stack size"
+	    default DEFAULT_TASK_STACKSIZE
+  
+    endif
+
+2.7 Build and Run
+-----------------
+
+Once these files have been created, run a ``make clean`` (you may need to run ``make distclean``
+followed by ``make menuconfig``. If successful there will be new Kconfig entries.
+
+:menuselection:`Application Configuraration --> Custom Apps --> Custom Hello App`
+
+Select the ``Custom Hello App`` and run the usual build process. If successful
+you can run the newly included ``custom_hello`` app.
+
+--------------------------------------------------------------------------
+3. Include an Additional Custom Cirectory Outside of the Main Source Trees
+--------------------------------------------------------------------------
+
+Thia is similar to the previous approach, but places the ``CustomApps`` directory
+outside of the default trees.
+
+3.1 Create Custom Apps directory and a Symbolic Link
+----------------------------------------------------
+
+Create a directory for the custom apps in a location of your choosing. Then create A
+symbolic link in the main nuttx/apps directory.
+
+This example assumes this has been placed below the top Nuttx folder, alongside the
+default ``apps`` directory, i.e. ``nuttx/CustomApps``
+
+  .. code-block:: console
+
+    $ pwd
+    /home/nuttx
+    $ ls -1
+    apps
+    CustomBoards
+    nuttx
+    $ mkdir CustomApps
+    $ ls -1
+    apps
+    CustomApps
+    CustomBoards
+    nuttx
+    $ cd apps
+    $ ln -s ../CustomApps CustomApps
+
+3.2 Make.defs etc.
+------------------
+
+Follow all the steps as in sections 2.2 to 2.7 above, creating the exact same files but
+placing then in the new ``CustomApps`` directory location created as described here. 
diff --git a/content/docs/latest/_sources/guides/customboards.rst.txt b/content/docs/latest/_sources/guides/customboards.rst.txt
new file mode 100644
index 0000000..fcd4301
--- /dev/null
+++ b/content/docs/latest/_sources/guides/customboards.rst.txt
@@ -0,0 +1,71 @@
+====================
+Custom Boards How-To
+====================
+
+As explained in :doc:`../quickstart/configuring`, supported boards (also known
+as "in-tree" boards) are configured using a standard syntax:
+
+    .. code-block:: console
+
+      $ cd nuttx
+      $ ./tools/configure.sh -l board-name:config-name
+        Copy files
+        Select CONFIG_HOST_LINUX=y
+        Refreshing...
+
+Sometimes it is not appropriate, or not wanted, to add a new or custom board to
+the Nuttx boards tree itself. If so, the board can be defined out-of-tree in a
+custom directory and still be built easily.
+
+------------------
+Add a Custom Board
+------------------
+
+The same set of files as provided for in-tree boards is required (i.e. configs,
+Kconfig, scripts, etc.) but these can be placed in a directory of your choice.
+
+In this example, the files are assumed to exist in:
+ ``../nuttx/CustomBoards/MyCustomBoardName`` 
+
+    .. code-block:: console
+
+      $pwd
+      /home/nuttx/nuttx
+      $ ls -1 ../CustomBoards/MyCustomBoardName
+      configs
+      helpers
+      include
+      Kconfig
+      scripts
+      $ ls ../CustomBoards/MyCustomBoardName/configs
+      nsh
+      MyCustomConfig
+      $
+
+
+To build the custom board, the syntax is slightly different to in-tree boards and configs:
+
+    .. code-block:: console
+
+      $ .tools/configure -l ../CustomBoards/MyCustomBoardName/MyCustomConfig
+      Copy files
+      Select CONFIG_HOST_LINUX=y
+      Refreshing...
+
+Kconfig Settings
+----------------
+
+Once the board is configured, to ensure subsequent builds run correctly, there
+are two Kconfig settings that need to be set. These are:
+
+:menuselection:`Board Selection --> Custom Board Configuration --> Custom Board Name`
+
+:menuselection:`Board Selection --> Custom Board Configuration --> Relative custom board directory`
+
+They should be set to suit your board name and directory location.
+
+.. Note::
+   If you subsequently run a ``make distclean`` operation, then these settings will be lost.
+   They should be added back before building, and/or before running ``make menuconfig``.
+
+
diff --git a/content/docs/latest/_sources/guides/index.rst.txt b/content/docs/latest/_sources/guides/index.rst.txt
index 6fff019..6b4c332 100644
--- a/content/docs/latest/_sources/guides/index.rst.txt
+++ b/content/docs/latest/_sources/guides/index.rst.txt
@@ -12,3 +12,5 @@ Guides
   tasktrace.rst
   cpp_cmake.rst
   pysimcoder.rst
+  customboards.rst
+  customapps.rst
diff --git a/content/docs/latest/glossary.html b/content/docs/latest/glossary.html
index dfbd75e..6b52786 100644
--- a/content/docs/latest/glossary.html
+++ b/content/docs/latest/glossary.html
@@ -40,7 +40,7 @@
     <script src="_static/js/theme.js"></script>
     <link rel="index" title="Index" href="genindex.html" />
     <link rel="search" title="Search" href="search.html" />
-    <link rel="prev" title="pysimCoder integration with NuttX" href="guides/pysimcoder.html" /> 
+    <link rel="prev" title="Custom Apps How-to" href="guides/customapps.html" /> 
 </head>
 
 <body class="wy-body-for-nav"> 
@@ -380,7 +380,7 @@
            </div>
           </div>
           <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
-        <a href="guides/pysimcoder.html" class="btn btn-neutral float-left" title="pysimCoder integration with NuttX" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+        <a href="guides/customapps.html" class="btn btn-neutral float-left" title="Custom Apps How-to" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
     </div>
 
   <hr/>
diff --git a/content/docs/latest/guides/cpp_cmake.html b/content/docs/latest/guides/cpp_cmake.html
index c98aed6..ff220a4 100644
--- a/content/docs/latest/guides/cpp_cmake.html
+++ b/content/docs/latest/guides/cpp_cmake.html
@@ -115,6 +115,8 @@
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="pysimcoder.html">pysimCoder integration with NuttX</a></li>
+<li class="toctree-l2"><a class="reference internal" href="customboards.html">Custom Boards How-To</a></li>
+<li class="toctree-l2"><a class="reference internal" href="customapps.html">Custom Apps How-to</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/guides/customapps.html b/content/docs/latest/guides/customapps.html
new file mode 100644
index 0000000..5b70678
--- /dev/null
+++ b/content/docs/latest/guides/customapps.html
@@ -0,0 +1,521 @@
+<!--
+ Documentation/_templates/layout.html
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.  The
+ ASF licenses this file to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance with the
+ License.  You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ License for the specific language governing permissions and limitations
+ under the License.
+-->
+
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
+
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <title>Custom Apps How-to &mdash; NuttX latest documentation</title>
+      <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+      <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+      <link rel="stylesheet" href="../_static/tabs.css" type="text/css" />
+      <link rel="stylesheet" href="../_static/custom.css" type="text/css" />
+    <link rel="shortcut icon" href="../_static/favicon.ico"/>
+  <!--[if lt IE 9]>
+    <script src="../_static/js/html5shiv.min.js"></script>
+  <![endif]-->
+  
+        <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
+        <script src="../_static/jquery.js"></script>
+        <script src="../_static/underscore.js"></script>
+        <script src="../_static/doctools.js"></script>
+    <script src="../_static/js/theme.js"></script>
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="Glossary" href="../glossary.html" />
+    <link rel="prev" title="Custom Boards How-To" href="customboards.html" /> 
+</head>
+
+<body class="wy-body-for-nav"> 
+  <div class="wy-grid-for-nav">
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search" >
+  
+    <a href="../index.html" class="icon icon-home"> NuttX
+  
+
+  
+    
+    <img src="../_static/NuttX.png" class="logo" alt="Logo"/>
+  
+  </a>
+
+  <!-- this version selector is quite ugly, should be probably replaced by something
+       more modern -->
+
+  <div class="version-selector">
+    <select onchange="javascript:location.href = this.value;">
+    
+    <option value="../../latest" selected="selected">latest</option>
+    
+    <option value="../../10.0.0" >10.0.0</option>
+    
+    <option value="../../10.0.1" >10.0.1</option>
+    
+    <option value="../../10.1.0" >10.1.0</option>
+    
+    <option value="../../10.2.0" >10.2.0</option>
+    
+    <option value="../../10.3.0" >10.3.0</option>
+    
+    </select>
+  </div>
+
+  
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
+              <p class="caption" role="heading"><span class="caption-text">Table of Contents</span></p>
+<ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../index.html">Home</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../introduction/index.html">Introduction</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../quickstart/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contributing/index.html">Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../introduction/inviolables.html">The Inviolable Principles of NuttX</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../platforms/index.html">Supported Platforms</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../components/index.html">OS Components</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../applications/index.html">Applications</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../reference/index.html">API Reference</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">FAQ</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Guides</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="nfs.html">NFS Client How-To</a></li>
+<li class="toctree-l2"><a class="reference internal" href="usbtrace.html">USB Device Trace</a></li>
+<li class="toctree-l2"><a class="reference internal" href="simulator.html">Simulator</a></li>
+<li class="toctree-l2"><a class="reference internal" href="drivers.html">Drivers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tasktrace.html">Task Trace</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cpp_cmake.html">C++ Example using CMake</a></li>
+<li class="toctree-l2"><a class="reference internal" href="pysimcoder.html">pysimCoder integration with NuttX</a></li>
+<li class="toctree-l2"><a class="reference internal" href="customboards.html">Custom Boards How-To</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Custom Apps How-to</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#replace-the-apps-directory-completely">1. Replace The Apps/ Directory Completely</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="#makefile">1.1 Makefile</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#kconfig">1.2 Kconfig</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#customhello-c">1.3 CustomHello.c</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#building-with-the-customapps-directory">1.4 Building with the CustomApps Directory</a></li>
+</ul>
+</li>
+<li class="toctree-l3"><a class="reference internal" href="#extend-the-apps-directory-to-include-a-new-custom-directory">2. Extend the apps/ directory to include a new custom directory</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="#custom-apps-directory">2.1 Custom Apps Directory</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#make-defs">2.2 Make.defs</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#id1">2.3 Makefile</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#customhello-app">2.4 CustomHello App</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#customhello-makefile">2.5 CustomHello Makefile</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#customhello-kconfig">2.6 CustomHello Kconfig</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#build-and-run">2.7 Build and Run</a></li>
+</ul>
+</li>
+<li class="toctree-l3"><a class="reference internal" href="#include-an-additional-custom-cirectory-outside-of-the-main-source-trees">3. Include an Additional Custom Cirectory Outside of the Main Source Trees</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="#create-custom-apps-directory-and-a-symbolic-link">3.1 Create Custom Apps directory and a Symbolic Link</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#make-defs-etc">3.2 Make.defs etc.</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../glossary.html">Glossary</a></li>
+</ul>
+
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">NuttX</a>
+      </nav>
+
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="Page navigation">
+  <ul class="wy-breadcrumbs">
+      <li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
+          <li><a href="index.html">Guides</a> &raquo;</li>
+      <li>Custom Apps How-to</li>
+      <li class="wy-breadcrumbs-aside">
+            <a href="../_sources/guides/customapps.rst.txt" rel="nofollow"> View page source</a>
+      </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+             
+  <section id="custom-apps-how-to">
+<h1>Custom Apps How-to<a class="headerlink" href="#custom-apps-how-to" title="Permalink to this headline"></a></h1>
+<p>Nuttx comes with a large number of Apps but, most likely, you will want to add your own.</p>
+<p>There are various different options for this depending on your requirements.</p>
+<blockquote>
+<div><ol class="arabic simple">
+<li><p>Replace the apps/ directory completely</p></li>
+<li><p>Extend the apps/ directory to include a new custom directory</p></li>
+<li><p>Include an additional custom directory outside of the main source trees</p></li>
+</ol>
+</div></blockquote>
+<p>The following sections explain these 3 methods using a <code class="docutils literal notranslate"><span class="pre">CustomHello.c</span></code> app and
+the directory <code class="docutils literal notranslate"><span class="pre">CustomApps</span></code> as an example.</p>
+<div class="admonition tip">
+<p class="admonition-title">Tip</p>
+<p>If you make errors while setting this up and the build fails, it is most likely you’ll
+need to run <code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">clean</span></code> and possibly even <code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">distclean</span></code> before rebuilding to
+ensure it works correctly.</p>
+</div>
+<section id="replace-the-apps-directory-completely">
+<h2>1. Replace The Apps/ Directory Completely<a class="headerlink" href="#replace-the-apps-directory-completely" title="Permalink to this headline"></a></h2>
+<p>The CustomApps directory need only to contain the minimum three files:</p>
+<blockquote>
+<div><ul class="simple">
+<li><p><code class="docutils literal notranslate"><span class="pre">Makefile</span></code></p></li>
+<li><p><code class="docutils literal notranslate"><span class="pre">Kconfig</span></code></p></li>
+<li><p><code class="docutils literal notranslate"><span class="pre">CustomHello.c</span></code></p></li>
+</ul>
+</div></blockquote>
+<section id="makefile">
+<h3>1.1 Makefile<a class="headerlink" href="#makefile" title="Permalink to this headline"></a></h3>
+<p>The custom application directory must include a Makefile to make all of the targets
+expected by the NuttX build and must generate an archive called libapps.a in the
+top-level of the custom directory structure.</p>
+<p>The Makefile has just those minimum required targets:</p>
+<blockquote>
+<div><div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">APPDIR = ${shell pwd}</span>
+
+<span class="go">-include $(TOPDIR)/Make.defs</span>
+
+<span class="gp"># </span>files
+
+<span class="go">CSRCS = CustomHello.c</span>
+<span class="go">COBJS = CustomHello.o</span>
+
+<span class="go">ROOTDEPPATH = --dep-path .</span>
+
+<span class="gp"># </span>Build targets
+
+<span class="go">all: libapps.a</span>
+<span class="go">.PHONY: dirlinks context preconfig depend clean clean_context distclean</span>
+<span class="go">.PRECIOUS: libapps$(LIBEXT)</span>
+
+<span class="gp"># </span>Compile C Files
+
+<span class="gp">$</span><span class="o">(</span>COBJS<span class="o">)</span>: %<span class="k">$(</span>OBJEXT<span class="k">)</span>: %.c
+<span class="gp">$</span><span class="o">(</span>call COMPILE, $&lt;, <span class="nv">$@</span><span class="o">)</span>
+
+<span class="gp"># </span>Add object files to the apps archive
+
+<span class="go">libapps.a: $(COBJS)</span>
+<span class="gp">  $</span><span class="o">(</span>call ARCHIVE, libapps.a, <span class="k">$(</span>COBJS<span class="k">)</span><span class="o">)</span>
+
+<span class="gp"># </span>Create directory links
+
+<span class="go">dirlinks:</span>
+
+<span class="gp"># </span>Setup any special pre-build context
+
+<span class="go">context:</span>
+
+<span class="gp"># </span>Setup any special pre-configuration context
+
+<span class="go">preconfig:</span>
+
+<span class="gp"># </span>Make the dependency file, Make.deps
+
+<span class="go">depend: Makefile $(CSRCS)</span>
+<span class="gp">  $</span><span class="o">(</span>Q<span class="o">)</span> <span class="k">$(</span>MKDEP<span class="k">)</span> <span class="k">$(</span>ROOTDEPPATH<span class="k">)</span> <span class="s2">&quot;</span><span class="k">$(</span>CC<span class="k">)</span><span class="s2">&quot;</span> -- <span class="k">$(</span>CFLAGS<span class="k">)</span> -- <span class="k">$(</span>SRCS<span class="k">)</span> &gt; Make.dep
+
+<span class="gp"># </span>Clean the results of the last build
+
+<span class="go">clean:</span>
+<span class="gp">  $</span><span class="o">(</span>call CLEAN<span class="o">)</span>
+
+<span class="gp"># </span>Remove the build context and directory links
+
+<span class="go">clean_context:</span>
+
+<span class="gp"># </span>Restore the directory to its original state
+
+<span class="go">distclean: clean clean_context</span>
+<span class="gp">  $</span><span class="o">(</span>call DELFILE, Make.dep<span class="o">)</span>
+
+<span class="gp"># </span>Include dependencies
+
+<span class="go">-include Make.dep</span>
+</pre></div>
+</div>
+</div></blockquote>
+</section>
+<section id="kconfig">
+<h3>1.2 Kconfig<a class="headerlink" href="#kconfig" title="Permalink to this headline"></a></h3>
+<p>A Kconfig file must be included but need not be populated with any meaningful options.
+This is a place where you can add settings to generate customized builds of your custom
+application and/or choose which of your apps to include.</p>
+<p>In the minimum case, Kconfig is only:</p>
+<blockquote>
+<div><div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp"># </span>For a description of the syntax of this configuration file,
+<span class="gp"># </span>see the file kconfig-language.txt <span class="k">in</span> the NuttX tools repository.
+<span class="gp">#</span>
+</pre></div>
+</div>
+</div></blockquote>
+<p>or</p>
+<blockquote>
+<div><div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp"># </span>For a description of the syntax of this configuration file,
+<span class="gp"># </span>see the file kconfig-language.txt <span class="k">in</span> the NuttX tools repository.
+<span class="gp">#</span>
+</pre></div>
+</div>
+</div></blockquote>
+</section>
+<section id="customhello-c">
+<h3>1.3 CustomHello.c<a class="headerlink" href="#customhello-c" title="Permalink to this headline"></a></h3>
+<p>The custom application must actually compile some source files in order to generate the required
+libapps.a archive. One of these source files must include the <code class="docutils literal notranslate"><span class="pre">main()</span></code> entry point to the
+application.</p>
+<p>The function of this main() entry point simply to bring-up the full application. It is called
+at the completion of OS initialization.</p>
+<p>What this application initialization entry point does, how it interacts with the rest of your
+application, and where the rest of you application code is located is of no concern to the OS.</p>
+<p>Only this one entry point is needed.</p>
+<p>For this “Hello, Custom World!” application <code class="docutils literal notranslate"><span class="pre">custom_hello()</span></code> is the application entry point:</p>
+<blockquote>
+<div><div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">#</span>include &lt;stdio.h&gt;
+
+<span class="go">int custom_hello(int argc, char *argv[])</span>
+<span class="go">{</span>
+<span class="go">  printf(&quot;Hello, Custom World!!\n&quot;);</span>
+<span class="go">  return 0;</span>
+<span class="go">}</span>
+</pre></div>
+</div>
+</div></blockquote>
+</section>
+<section id="building-with-the-customapps-directory">
+<h3>1.4 Building with the CustomApps Directory<a class="headerlink" href="#building-with-the-customapps-directory" title="Permalink to this headline"></a></h3>
+<p>In order to build with the new custom configuration, you will need the following in your configuration:</p>
+<p><span class="menuselection">CONFIG_APPS_DIR=”../CustomApps”</span></p>
+<p><span class="menuselection">CONFIG_USER_ENTRYPOINT=”custom_hello”</span></p>
+<p>Note that you can only access the <code class="docutils literal notranslate"><span class="pre">../CustomApps/Kconfig</span></code> configuration file if <code class="docutils literal notranslate"><span class="pre">CONFIG_APPS_DIR</span></code> is set
+to <code class="docutils literal notranslate"><span class="pre">../CustomApps</span></code> BEFORE <code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">menuconfig</span></code> is executed</p>
+<p>This can be done by</p>
+<ul>
+<li><p>hand-editing the .config file before running make menuconfig, which is rarely a good idea</p></li>
+<li><p>Using <code class="docutils literal notranslate"><span class="pre">kconfig-tweak</span> <span class="pre">--set-str</span> <span class="pre">CONFIG_APPS_DIR</span> <span class="pre">../CustomApps</span></code></p></li>
+<li><p>select the CustomApps directory as a command line option at the time the board is configured:</p>
+<blockquote>
+<div><div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">./tools/configure.sh -a ../CustomApps &lt;board&gt;:&lt;config&gt;</span>
+</pre></div>
+</div>
+</div></blockquote>
+<p>or</p>
+<blockquote>
+<div><div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">.tools/configure.sh -l ../CustomBoards/MyCustomBoardName/MyCustomConfig</span>
+</pre></div>
+</div>
+</div></blockquote>
+</li>
+</ul>
+<p>Then build as you normally would. When you execute the custom_hello app you should see:</p>
+<blockquote>
+<div><div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">Hello, Custom World!!</span>
+</pre></div>
+</div>
+</div></blockquote>
+</section>
+</section>
+<section id="extend-the-apps-directory-to-include-a-new-custom-directory">
+<h2>2. Extend the apps/ directory to include a new custom directory<a class="headerlink" href="#extend-the-apps-directory-to-include-a-new-custom-directory" title="Permalink to this headline"></a></h2>
+<p>The collection of apps provided in nuttx-apps can be useful, and this method simply
+extends the directory structure to include your own directory structure.</p>
+<p>The existing /apps makefile automatically checks for the existence of sub-directories
+that contain a <code class="docutils literal notranslate"><span class="pre">Makefile</span></code> and <code class="docutils literal notranslate"><span class="pre">Make.defs</span></code> file. This example assumes there is likely
+to be more than one custom app, and includes a <code class="docutils literal notranslate"><span class="pre">Kconfig</span></code> for the app itself. Inclusion
+of a <code class="docutils literal notranslate"><span class="pre">Kconfig</span></code> allows custom App options to be included in the Nuttx configuration
+system, but is optional.</p>
+<section id="custom-apps-directory">
+<h3>2.1 Custom Apps Directory<a class="headerlink" href="#custom-apps-directory" title="Permalink to this headline"></a></h3>
+<p>Simply create a new directory under the existing apps directory with a name of your choice.
+This example uses the directory name <code class="docutils literal notranslate"><span class="pre">CustomApps</span></code>.</p>
+</section>
+<section id="make-defs">
+<h3>2.2 Make.defs<a class="headerlink" href="#make-defs" title="Permalink to this headline"></a></h3>
+<p>Create this file in the <code class="docutils literal notranslate"><span class="pre">CustomApps</span></code> directory, with the following line added:</p>
+<blockquote>
+<div><div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">include $(wildcard $(APPDIR)/CustomApps/*/Make.defs)</span>
+</pre></div>
+</div>
+</div></blockquote>
+</section>
+<section id="id1">
+<h3>2.3 Makefile<a class="headerlink" href="#id1" title="Permalink to this headline"></a></h3>
+<p>Create a Makefile in the <code class="docutils literal notranslate"><span class="pre">CustomApps</span></code> directory, with the following lines added:</p>
+<blockquote>
+<div><div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">MENUDESC = &quot;Custom Apps&quot;</span>
+
+<span class="go">include $(APPDIR)/Directory.mk</span>
+</pre></div>
+</div>
+</div></blockquote>
+</section>
+<section id="customhello-app">
+<h3>2.4 CustomHello App<a class="headerlink" href="#customhello-app" title="Permalink to this headline"></a></h3>
+<p>Create a sub-directory under the <code class="docutils literal notranslate"><span class="pre">CustomApps</span></code> directory called <code class="docutils literal notranslate"><span class="pre">CustomHello</span></code>.</p>
+<p>The same <code class="docutils literal notranslate"><span class="pre">CustomHello.c</span></code> file as described above should be created here.</p>
+</section>
+<section id="customhello-makefile">
+<h3>2.5 CustomHello Makefile<a class="headerlink" href="#customhello-makefile" title="Permalink to this headline"></a></h3>
+<p>Create a Makefile in the <code class="docutils literal notranslate"><span class="pre">CustomApps/CustomHello</span></code> directory with the following lines:</p>
+<blockquote>
+<div><div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">include $(APPDIR)/Make.defs</span>
+
+<span class="gp"># </span>Custom Hello built-in application info
+
+<span class="go">PROGNAME = $(CONFIG_CUSTOM_APPS_CUSTOM_HELLO_PROGNAME)</span>
+<span class="go">PRIORITY = $(CONFIG_CUSTOM_APPS_CUSTOM_HELLO_PRIORITY)</span>
+<span class="go">STACKSIZE = $(CONFIG_CUSTOM_APPS_CUSTOM_HELLO_STACKSIZE)</span>
+<span class="go">MODULE = $(CONFIG_CUSTOM_APPS_CUSTOM_HELLO)</span>
+
+<span class="gp"># </span>Custom Hello
+
+<span class="go">MAINSRC = CustomHello.c</span>
+
+<span class="go">include $(APPDIR)/Application.mk</span>
+</pre></div>
+</div>
+</div></blockquote>
+</section>
+<section id="customhello-kconfig">
+<h3>2.6 CustomHello Kconfig<a class="headerlink" href="#customhello-kconfig" title="Permalink to this headline"></a></h3>
+<p>Create a Kconfig file in the <code class="docutils literal notranslate"><span class="pre">CustomApps/CustomHello</span></code> directory, with the following lines. For
+the purposes of this example, the Kconfig will only cover our single application):</p>
+<blockquote>
+<div><div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">#</span>
+<span class="gp"># </span>For a description of the syntax of this configuration file,
+<span class="gp"># </span>see the file kconfig-language.txt <span class="k">in</span> the NuttX tools repository.
+<span class="gp">#</span>
+
+<span class="go">config CUSTOM_APPS_CUSTOM_HELLO</span>
+<span class="go">        tristate &quot;Custom Hello App&quot;</span>
+<span class="go">        default n</span>
+<span class="go">        ---help---</span>
+<span class="go">                Enable the Custom Hello App</span>
+
+<span class="go">if CUSTOM_APPS_CUSTOM_HELLO</span>
+
+<span class="go">config CUSTOM_APPS_CUSTOM_HELLO_PROGNAME</span>
+<span class="go">        string &quot;Program name&quot;</span>
+<span class="go">        default &quot;custom_hello&quot;</span>
+<span class="go">        ---help---</span>
+<span class="go">                This is the name of the program that will be used when the NSH ELF</span>
+<span class="go">                program is installed.</span>
+
+<span class="go">config CUSTOM_APPS_CUSTOM_HELLO_PRIORITY</span>
+<span class="go">        int &quot;Custom Hello task priority&quot;</span>
+<span class="go">        default 100</span>
+
+<span class="go">config CUSTOM_APPS_CUSTOM_HELLO_STACKSIZE</span>
+<span class="go">        int &quot;Custom Hello stack size&quot;</span>
+<span class="go">        default DEFAULT_TASK_STACKSIZE</span>
+
+<span class="go">endif</span>
+</pre></div>
+</div>
+</div></blockquote>
+</section>
+<section id="build-and-run">
+<h3>2.7 Build and Run<a class="headerlink" href="#build-and-run" title="Permalink to this headline"></a></h3>
+<p>Once these files have been created, run a <code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">clean</span></code> (you may need to run <code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">distclean</span></code>
+followed by <code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">menuconfig</span></code>. If successful there will be new Kconfig entries.</p>
+<p><span class="menuselection">Application Configuraration ‣ Custom Apps ‣ Custom Hello App</span></p>
+<p>Select the <code class="docutils literal notranslate"><span class="pre">Custom</span> <span class="pre">Hello</span> <span class="pre">App</span></code> and run the usual build process. If successful
+you can run the newly included <code class="docutils literal notranslate"><span class="pre">custom_hello</span></code> app.</p>
+</section>
+</section>
+<section id="include-an-additional-custom-cirectory-outside-of-the-main-source-trees">
+<h2>3. Include an Additional Custom Cirectory Outside of the Main Source Trees<a class="headerlink" href="#include-an-additional-custom-cirectory-outside-of-the-main-source-trees" title="Permalink to this headline"></a></h2>
+<p>Thia is similar to the previous approach, but places the <code class="docutils literal notranslate"><span class="pre">CustomApps</span></code> directory
+outside of the default trees.</p>
+<section id="create-custom-apps-directory-and-a-symbolic-link">
+<h3>3.1 Create Custom Apps directory and a Symbolic Link<a class="headerlink" href="#create-custom-apps-directory-and-a-symbolic-link" title="Permalink to this headline"></a></h3>
+<p>Create a directory for the custom apps in a location of your choosing. Then create A
+symbolic link in the main nuttx/apps directory.</p>
+<p>This example assumes this has been placed below the top Nuttx folder, alongside the
+default <code class="docutils literal notranslate"><span class="pre">apps</span></code> directory, i.e. <code class="docutils literal notranslate"><span class="pre">nuttx/CustomApps</span></code></p>
+<blockquote>
+<div><div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span><span class="nb">pwd</span>
+<span class="go">/home/nuttx</span>
+<span class="gp">$ </span>ls -1
+<span class="go">apps</span>
+<span class="go">CustomBoards</span>
+<span class="go">nuttx</span>
+<span class="gp">$ </span>mkdir CustomApps
+<span class="gp">$ </span>ls -1
+<span class="go">apps</span>
+<span class="go">CustomApps</span>
+<span class="go">CustomBoards</span>
+<span class="go">nuttx</span>
+<span class="gp">$ </span><span class="nb">cd</span> apps
+<span class="gp">$ </span>ln -s ../CustomApps CustomApps
+</pre></div>
+</div>
+</div></blockquote>
+</section>
+<section id="make-defs-etc">
+<h3>3.2 Make.defs etc.<a class="headerlink" href="#make-defs-etc" title="Permalink to this headline"></a></h3>
+<p>Follow all the steps as in sections 2.2 to 2.7 above, creating the exact same files but
+placing then in the new <code class="docutils literal notranslate"><span class="pre">CustomApps</span></code> directory location created as described here.</p>
+</section>
+</section>
+</section>
+
+
+           </div>
+          </div>
+          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+        <a href="customboards.html" class="btn btn-neutral float-left" title="Custom Boards How-To" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+        <a href="../glossary.html" class="btn btn-neutral float-right" title="Glossary" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+    </div>
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>&#169; Copyright 2020, The Apache Software Foundation.</p>
+  </div>
+
+   
+
+</footer>
+        </div>
+      </div>
+    </section>
+  </div>
+  <script>
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>
\ No newline at end of file
diff --git a/content/docs/latest/guides/tasktrace.html b/content/docs/latest/guides/customboards.html
similarity index 58%
copy from content/docs/latest/guides/tasktrace.html
copy to content/docs/latest/guides/customboards.html
index 093f01f..41a6de5 100644
--- a/content/docs/latest/guides/tasktrace.html
+++ b/content/docs/latest/guides/customboards.html
@@ -23,7 +23,7 @@
   <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
 
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-  <title>Task Trace &mdash; NuttX latest documentation</title>
+  <title>Custom Boards How-To &mdash; NuttX latest documentation</title>
       <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
       <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
       <link rel="stylesheet" href="../_static/tabs.css" type="text/css" />
@@ -40,8 +40,8 @@
     <script src="../_static/js/theme.js"></script>
     <link rel="index" title="Index" href="../genindex.html" />
     <link rel="search" title="Search" href="../search.html" />
-    <link rel="next" title="Task Trace User Guide" href="tasktraceuser.html" />
-    <link rel="prev" title="Drivers" href="drivers.html" /> 
+    <link rel="next" title="Custom Apps How-to" href="customapps.html" />
+    <link rel="prev" title="pysimCoder integration with NuttX" href="pysimcoder.html" /> 
 </head>
 
 <body class="wy-body-for-nav"> 
@@ -107,13 +107,17 @@
 <li class="toctree-l2"><a class="reference internal" href="usbtrace.html">USB Device Trace</a></li>
 <li class="toctree-l2"><a class="reference internal" href="simulator.html">Simulator</a></li>
 <li class="toctree-l2"><a class="reference internal" href="drivers.html">Drivers</a></li>
-<li class="toctree-l2 current"><a class="current reference internal" href="#">Task Trace</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="tasktraceuser.html">Task Trace User Guide</a></li>
-<li class="toctree-l3"><a class="reference internal" href="tasktraceinternal.html">Task Trace Internals</a></li>
-</ul>
-</li>
+<li class="toctree-l2"><a class="reference internal" href="tasktrace.html">Task Trace</a></li>
 <li class="toctree-l2"><a class="reference internal" href="cpp_cmake.html">C++ Example using CMake</a></li>
 <li class="toctree-l2"><a class="reference internal" href="pysimcoder.html">pysimCoder integration with NuttX</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Custom Boards How-To</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#add-a-custom-board">Add a Custom Board</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="#kconfig-settings">Kconfig Settings</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="customapps.html">Custom Apps How-to</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../glossary.html">Glossary</a></li>
@@ -134,9 +138,9 @@
   <ul class="wy-breadcrumbs">
       <li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
           <li><a href="index.html">Guides</a> &raquo;</li>
-      <li>Task Trace</li>
+      <li>Custom Boards How-To</li>
       <li class="wy-breadcrumbs-aside">
-            <a href="../_sources/guides/tasktrace.rst.txt" rel="nofollow"> View page source</a>
+            <a href="../_sources/guides/customboards.rst.txt" rel="nofollow"> View page source</a>
       </li>
   </ul>
   <hr/>
@@ -144,33 +148,77 @@
           <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
            <div itemprop="articleBody">
              
-  <section id="task-trace">
-<h1>Task Trace<a class="headerlink" href="#task-trace" title="Permalink to this headline"></a></h1>
-<p>Task Trace is the tool to collect the various events in the NuttX kernel and display the result graphically.</p>
-<p>It can collect the following events.</p>
+  <section id="custom-boards-how-to">
+<h1>Custom Boards How-To<a class="headerlink" href="#custom-boards-how-to" title="Permalink to this headline"></a></h1>
+<p>As explained in <a class="reference internal" href="../quickstart/configuring.html"><span class="doc">Configuring</span></a>, supported boards (also known
+as “in-tree” boards) are configured using a standard syntax:</p>
 <blockquote>
-<div><ul class="simple">
-<li><p>Task execution, termination, switching</p></li>
-<li><p>System call enter/leave</p></li>
-<li><p>Interrupt handler enter/leave</p></li>
-</ul>
+<div><div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span><span class="nb">cd</span> nuttx
+<span class="gp">$ </span>./tools/configure.sh -l board-name:config-name
+<span class="go">  Copy files</span>
+<span class="go">  Select CONFIG_HOST_LINUX=y</span>
+<span class="go">  Refreshing...</span>
+</pre></div>
+</div>
 </div></blockquote>
-<div class="toctree-wrapper compound">
-<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
-<ul>
-<li class="toctree-l1"><a class="reference internal" href="tasktraceuser.html">Task Trace User Guide</a></li>
-<li class="toctree-l1"><a class="reference internal" href="tasktraceinternal.html">Task Trace Internals</a></li>
-</ul>
+<p>Sometimes it is not appropriate, or not wanted, to add a new or custom board to
+the Nuttx boards tree itself. If so, the board can be defined out-of-tree in a
+custom directory and still be built easily.</p>
+<section id="add-a-custom-board">
+<h2>Add a Custom Board<a class="headerlink" href="#add-a-custom-board" title="Permalink to this headline"></a></h2>
+<p>The same set of files as provided for in-tree boards is required (i.e. configs,
+Kconfig, scripts, etc.) but these can be placed in a directory of your choice.</p>
+<dl>
+<dt>In this example, the files are assumed to exist in:</dt><dd><p><code class="docutils literal notranslate"><span class="pre">../nuttx/CustomBoards/MyCustomBoardName</span></code></p>
+<blockquote>
+<div><div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$</span><span class="nb">pwd</span>
+<span class="go">/home/nuttx/nuttx</span>
+<span class="gp">$ </span>ls -1 ../CustomBoards/MyCustomBoardName
+<span class="go">configs</span>
+<span class="go">helpers</span>
+<span class="go">include</span>
+<span class="go">Kconfig</span>
+<span class="go">scripts</span>
+<span class="gp">$ </span>ls ../CustomBoards/MyCustomBoardName/configs
+<span class="go">nsh</span>
+<span class="go">MyCustomConfig</span>
+<span class="gp">$</span>
+</pre></div>
+</div>
+</div></blockquote>
+</dd>
+</dl>
+<p>To build the custom board, the syntax is slightly different to in-tree boards and configs:</p>
+<blockquote>
+<div><div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>.tools/configure -l ../CustomBoards/MyCustomBoardName/MyCustomConfig
+<span class="go">Copy files</span>
+<span class="go">Select CONFIG_HOST_LINUX=y</span>
+<span class="go">Refreshing...</span>
+</pre></div>
 </div>
-<img alt="../_images/task-trace-overview.png" src="../_images/task-trace-overview.png" />
+</div></blockquote>
+<section id="kconfig-settings">
+<h3>Kconfig Settings<a class="headerlink" href="#kconfig-settings" title="Permalink to this headline"></a></h3>
+<p>Once the board is configured, to ensure subsequent builds run correctly, there
+are two Kconfig settings that need to be set. These are:</p>
+<p><span class="menuselection">Board Selection ‣ Custom Board Configuration ‣ Custom Board Name</span></p>
+<p><span class="menuselection">Board Selection ‣ Custom Board Configuration ‣ Relative custom board directory</span></p>
+<p>They should be set to suit your board name and directory location.</p>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>If you subsequently run a <code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">distclean</span></code> operation, then these settings will be lost.
+They should be added back before building, and/or before running <code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">menuconfig</span></code>.</p>
+</div>
+</section>
+</section>
 </section>
 
 
            </div>
           </div>
           <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
-        <a href="drivers.html" class="btn btn-neutral float-left" title="Drivers" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
-        <a href="tasktraceuser.html" class="btn btn-neutral float-right" title="Task Trace User Guide" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+        <a href="pysimcoder.html" class="btn btn-neutral float-left" title="pysimCoder integration with NuttX" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+        <a href="customapps.html" class="btn btn-neutral float-right" title="Custom Apps How-to" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
     </div>
 
   <hr/>
diff --git a/content/docs/latest/guides/drivers.html b/content/docs/latest/guides/drivers.html
index c1ac916..09aa93c 100644
--- a/content/docs/latest/guides/drivers.html
+++ b/content/docs/latest/guides/drivers.html
@@ -117,6 +117,8 @@
 <li class="toctree-l2"><a class="reference internal" href="tasktrace.html">Task Trace</a></li>
 <li class="toctree-l2"><a class="reference internal" href="cpp_cmake.html">C++ Example using CMake</a></li>
 <li class="toctree-l2"><a class="reference internal" href="pysimcoder.html">pysimCoder integration with NuttX</a></li>
+<li class="toctree-l2"><a class="reference internal" href="customboards.html">Custom Boards How-To</a></li>
+<li class="toctree-l2"><a class="reference internal" href="customapps.html">Custom Apps How-to</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/guides/index.html b/content/docs/latest/guides/index.html
index a38dfa8..4246376 100644
--- a/content/docs/latest/guides/index.html
+++ b/content/docs/latest/guides/index.html
@@ -110,6 +110,8 @@
 <li class="toctree-l2"><a class="reference internal" href="tasktrace.html">Task Trace</a></li>
 <li class="toctree-l2"><a class="reference internal" href="cpp_cmake.html">C++ Example using CMake</a></li>
 <li class="toctree-l2"><a class="reference internal" href="pysimcoder.html">pysimCoder integration with NuttX</a></li>
+<li class="toctree-l2"><a class="reference internal" href="customboards.html">Custom Boards How-To</a></li>
+<li class="toctree-l2"><a class="reference internal" href="customapps.html">Custom Apps How-to</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../glossary.html">Glossary</a></li>
@@ -228,6 +230,38 @@
 <li class="toctree-l2"><a class="reference internal" href="pysimcoder.html#using-pysimcoder-to-design-nuttx-application">Using pysimCoder to design NuttX application</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="customboards.html">Custom Boards How-To</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="customboards.html#add-a-custom-board">Add a Custom Board</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="customboards.html#kconfig-settings">Kconfig Settings</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="customapps.html">Custom Apps How-to</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="customapps.html#replace-the-apps-directory-completely">1. Replace The Apps/ Directory Completely</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="customapps.html#makefile">1.1 Makefile</a></li>
+<li class="toctree-l3"><a class="reference internal" href="customapps.html#kconfig">1.2 Kconfig</a></li>
+<li class="toctree-l3"><a class="reference internal" href="customapps.html#customhello-c">1.3 CustomHello.c</a></li>
+<li class="toctree-l3"><a class="reference internal" href="customapps.html#building-with-the-customapps-directory">1.4 Building with the CustomApps Directory</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="customapps.html#extend-the-apps-directory-to-include-a-new-custom-directory">2. Extend the apps/ directory to include a new custom directory</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="customapps.html#custom-apps-directory">2.1 Custom Apps Directory</a></li>
+<li class="toctree-l3"><a class="reference internal" href="customapps.html#make-defs">2.2 Make.defs</a></li>
+<li class="toctree-l3"><a class="reference internal" href="customapps.html#id1">2.3 Makefile</a></li>
+<li class="toctree-l3"><a class="reference internal" href="customapps.html#customhello-app">2.4 CustomHello App</a></li>
+<li class="toctree-l3"><a class="reference internal" href="customapps.html#customhello-makefile">2.5 CustomHello Makefile</a></li>
+<li class="toctree-l3"><a class="reference internal" href="customapps.html#customhello-kconfig">2.6 CustomHello Kconfig</a></li>
+<li class="toctree-l3"><a class="reference internal" href="customapps.html#build-and-run">2.7 Build and Run</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="customapps.html#include-an-additional-custom-cirectory-outside-of-the-main-source-trees">3. Include an Additional Custom Cirectory Outside of the Main Source Trees</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="customapps.html#create-custom-apps-directory-and-a-symbolic-link">3.1 Create Custom Apps directory and a Symbolic Link</a></li>
+<li class="toctree-l3"><a class="reference internal" href="customapps.html#make-defs-etc">3.2 Make.defs etc.</a></li>
+</ul>
+</li>
+</ul>
+</li>
 </ul>
 </div>
 </section>
diff --git a/content/docs/latest/guides/nfs.html b/content/docs/latest/guides/nfs.html
index d228ee7..f6720ae 100644
--- a/content/docs/latest/guides/nfs.html
+++ b/content/docs/latest/guides/nfs.html
@@ -116,6 +116,8 @@
 <li class="toctree-l2"><a class="reference internal" href="tasktrace.html">Task Trace</a></li>
 <li class="toctree-l2"><a class="reference internal" href="cpp_cmake.html">C++ Example using CMake</a></li>
 <li class="toctree-l2"><a class="reference internal" href="pysimcoder.html">pysimCoder integration with NuttX</a></li>
+<li class="toctree-l2"><a class="reference internal" href="customboards.html">Custom Boards How-To</a></li>
+<li class="toctree-l2"><a class="reference internal" href="customapps.html">Custom Apps How-to</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/guides/pysimcoder.html b/content/docs/latest/guides/pysimcoder.html
index d9a536b..d9d0c42 100644
--- a/content/docs/latest/guides/pysimcoder.html
+++ b/content/docs/latest/guides/pysimcoder.html
@@ -40,7 +40,7 @@
     <script src="../_static/js/theme.js"></script>
     <link rel="index" title="Index" href="../genindex.html" />
     <link rel="search" title="Search" href="../search.html" />
-    <link rel="next" title="Glossary" href="../glossary.html" />
+    <link rel="next" title="Custom Boards How-To" href="customboards.html" />
     <link rel="prev" title="C++ Example using CMake" href="cpp_cmake.html" /> 
 </head>
 
@@ -115,6 +115,8 @@
 <li class="toctree-l3"><a class="reference internal" href="#using-pysimcoder-to-design-nuttx-application">Using pysimCoder to design NuttX application</a></li>
 </ul>
 </li>
+<li class="toctree-l2"><a class="reference internal" href="customboards.html">Custom Boards How-To</a></li>
+<li class="toctree-l2"><a class="reference internal" href="customapps.html">Custom Apps How-to</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../glossary.html">Glossary</a></li>
@@ -396,7 +398,7 @@ documentation. The generated application can be then run from NuttX command line
           </div>
           <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
         <a href="cpp_cmake.html" class="btn btn-neutral float-left" title="C++ Example using CMake" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
-        <a href="../glossary.html" class="btn btn-neutral float-right" title="Glossary" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+        <a href="customboards.html" class="btn btn-neutral float-right" title="Custom Boards How-To" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
     </div>
 
   <hr/>
diff --git a/content/docs/latest/guides/simulator.html b/content/docs/latest/guides/simulator.html
index fd552ac..1299ad8 100644
--- a/content/docs/latest/guides/simulator.html
+++ b/content/docs/latest/guides/simulator.html
@@ -117,6 +117,8 @@
 <li class="toctree-l2"><a class="reference internal" href="tasktrace.html">Task Trace</a></li>
 <li class="toctree-l2"><a class="reference internal" href="cpp_cmake.html">C++ Example using CMake</a></li>
 <li class="toctree-l2"><a class="reference internal" href="pysimcoder.html">pysimCoder integration with NuttX</a></li>
+<li class="toctree-l2"><a class="reference internal" href="customboards.html">Custom Boards How-To</a></li>
+<li class="toctree-l2"><a class="reference internal" href="customapps.html">Custom Apps How-to</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/guides/tasktrace.html b/content/docs/latest/guides/tasktrace.html
index 093f01f..b45d50a 100644
--- a/content/docs/latest/guides/tasktrace.html
+++ b/content/docs/latest/guides/tasktrace.html
@@ -114,6 +114,8 @@
 </li>
 <li class="toctree-l2"><a class="reference internal" href="cpp_cmake.html">C++ Example using CMake</a></li>
 <li class="toctree-l2"><a class="reference internal" href="pysimcoder.html">pysimCoder integration with NuttX</a></li>
+<li class="toctree-l2"><a class="reference internal" href="customboards.html">Custom Boards How-To</a></li>
+<li class="toctree-l2"><a class="reference internal" href="customapps.html">Custom Apps How-to</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/guides/tasktraceinternal.html b/content/docs/latest/guides/tasktraceinternal.html
index 9d64d2a..62e9efc 100644
--- a/content/docs/latest/guides/tasktraceinternal.html
+++ b/content/docs/latest/guides/tasktraceinternal.html
@@ -129,6 +129,8 @@
 </li>
 <li class="toctree-l2"><a class="reference internal" href="cpp_cmake.html">C++ Example using CMake</a></li>
 <li class="toctree-l2"><a class="reference internal" href="pysimcoder.html">pysimCoder integration with NuttX</a></li>
+<li class="toctree-l2"><a class="reference internal" href="customboards.html">Custom Boards How-To</a></li>
+<li class="toctree-l2"><a class="reference internal" href="customapps.html">Custom Apps How-to</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/guides/tasktraceuser.html b/content/docs/latest/guides/tasktraceuser.html
index cc962d6..72854cc 100644
--- a/content/docs/latest/guides/tasktraceuser.html
+++ b/content/docs/latest/guides/tasktraceuser.html
@@ -135,6 +135,8 @@
 </li>
 <li class="toctree-l2"><a class="reference internal" href="cpp_cmake.html">C++ Example using CMake</a></li>
 <li class="toctree-l2"><a class="reference internal" href="pysimcoder.html">pysimCoder integration with NuttX</a></li>
+<li class="toctree-l2"><a class="reference internal" href="customboards.html">Custom Boards How-To</a></li>
+<li class="toctree-l2"><a class="reference internal" href="customapps.html">Custom Apps How-to</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/guides/usbtrace.html b/content/docs/latest/guides/usbtrace.html
index b4c8104..5cb3850 100644
--- a/content/docs/latest/guides/usbtrace.html
+++ b/content/docs/latest/guides/usbtrace.html
@@ -110,6 +110,8 @@
 <li class="toctree-l2"><a class="reference internal" href="tasktrace.html">Task Trace</a></li>
 <li class="toctree-l2"><a class="reference internal" href="cpp_cmake.html">C++ Example using CMake</a></li>
 <li class="toctree-l2"><a class="reference internal" href="pysimcoder.html">pysimCoder integration with NuttX</a></li>
+<li class="toctree-l2"><a class="reference internal" href="customboards.html">Custom Boards How-To</a></li>
+<li class="toctree-l2"><a class="reference internal" href="customapps.html">Custom Apps How-to</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/index.html b/content/docs/latest/index.html
index bc72e8b..57cd395 100644
--- a/content/docs/latest/index.html
+++ b/content/docs/latest/index.html
@@ -143,7 +143,7 @@ by following these <a class="reference internal" href="contributing/documentatio
 <section id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" title="Permalink to this headline"></a></h1>
 <p>NuttX is a real-time operating system (RTOS) with an emphasis on standards compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller environments, the primary governing standards in NuttX are POSIX and ANSI standards. Additional standard APIs from Unix and other common RTOS’s (such as VxWorks) are adopted for functionality not available under these standards, or for functionality that is not appropriate for deeply-embedded environments (such as fork()).</p>
-<p>Last Updated: 12 October 22 at 00:18</p>
+<p>Last Updated: 13 October 22 at 00:17</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of Contents</span></p>
 <ul class="current">
@@ -226,6 +226,8 @@ by following these <a class="reference internal" href="contributing/documentatio
 <li class="toctree-l2"><a class="reference internal" href="guides/tasktrace.html">Task Trace</a></li>
 <li class="toctree-l2"><a class="reference internal" href="guides/cpp_cmake.html">C++ Example using CMake</a></li>
 <li class="toctree-l2"><a class="reference internal" href="guides/pysimcoder.html">pysimCoder integration with NuttX</a></li>
+<li class="toctree-l2"><a class="reference internal" href="guides/customboards.html">Custom Boards How-To</a></li>
+<li class="toctree-l2"><a class="reference internal" href="guides/customapps.html">Custom Apps How-to</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/objects.inv b/content/docs/latest/objects.inv
index 5b5e502..ee3f662 100644
Binary files a/content/docs/latest/objects.inv and b/content/docs/latest/objects.inv differ
diff --git a/content/docs/latest/searchindex.js b/content/docs/latest/searchindex.js
index cbf59e6..2d5f136 100644
--- a/content/docs/latest/searchindex.js
+++ b/content/docs/latest/searchindex.js
@@ -1 +1 @@
-Search.setIndex({docnames:["applications/index","applications/nsh/builtin","applications/nsh/commands","applications/nsh/config","applications/nsh/customizing","applications/nsh/index","applications/nsh/installation","applications/nsh/login","applications/nsh/nsh","components/binfmt","components/drivers/block/index","components/drivers/character/analog","components/drivers/character/can","components/drivers/character/foc","components/drivers/character/index","components/drivers/character [...]
\ No newline at end of file
+Search.setIndex({docnames:["applications/index","applications/nsh/builtin","applications/nsh/commands","applications/nsh/config","applications/nsh/customizing","applications/nsh/index","applications/nsh/installation","applications/nsh/login","applications/nsh/nsh","components/binfmt","components/drivers/block/index","components/drivers/character/analog","components/drivers/character/can","components/drivers/character/foc","components/drivers/character/index","components/drivers/character [...]
\ No newline at end of file
diff --git a/content/feed.xml b/content/feed.xml
index 5fdc093..7812cfe 100644
--- a/content/feed.xml
+++ b/content/feed.xml
@@ -5,8 +5,8 @@
     <description></description>
     <link>/</link>
     <atom:link href="/feed.xml" rel="self" type="application/rss+xml"/>
-    <pubDate>Wed, 12 Oct 2022 00:19:04 +0000</pubDate>
-    <lastBuildDate>Wed, 12 Oct 2022 00:19:04 +0000</lastBuildDate>
+    <pubDate>Thu, 13 Oct 2022 00:18:11 +0000</pubDate>
+    <lastBuildDate>Thu, 13 Oct 2022 00:18:11 +0000</lastBuildDate>
     <generator>Jekyll v3.8.5</generator>
     
       <item>