| <!-- |
| 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.19: https://docutils.sourceforge.io/" /> |
| |
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
| <title>Boards Support — NuttX latest documentation</title> |
| <link rel="stylesheet" type="text/css" href="../_static/pygments.css" /> |
| <link rel="stylesheet" type="text/css" href="../_static/css/theme.css" /> |
| <link rel="stylesheet" type="text/css" href="../_static/copybutton.css" /> |
| <link rel="stylesheet" type="text/css" href="../_static/custom.css" /> |
| |
| |
| <link rel="shortcut icon" href="../_static/favicon.ico"/> |
| <script src="../_static/jquery.js"></script> |
| <script src="../_static/_sphinx_javascript_frameworks_compat.js"></script> |
| <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> |
| <script src="../_static/doctools.js"></script> |
| <script src="../_static/sphinx_highlight.js"></script> |
| <script src="../_static/clipboard.min.js"></script> |
| <script src="../_static/copybutton.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="CMake Support" href="cmake.html" /> |
| <link rel="prev" title="Architecture-Specific Code" href="arch/index.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 |
| |
| |
| |
| </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> |
| |
| <option value="../../11.0.0" >11.0.0</option> |
| |
| <option value="../../12.0.0" >12.0.0</option> |
| |
| <option value="../../12.1.0" >12.1.0</option> |
| |
| <option value="../../12.2.0" >12.2.0</option> |
| |
| <option value="../../12.2.1" >12.2.1</option> |
| |
| <option value="../../12.3.0" >12.3.0</option> |
| |
| <option value="../../12.4.0" >12.4.0</option> |
| |
| <option value="../../12.5.0" >12.5.0</option> |
| |
| <option value="../../12.5.1" >12.5.1</option> |
| |
| <option value="../../12.6.0" >12.6.0</option> |
| |
| <option value="../../12.7.0" >12.7.0</option> |
| |
| <option value="../../12.8.0" >12.8.0</option> |
| |
| <option value="../../12.9.0" >12.9.0</option> |
| |
| <option value="../../12.10.0" >12.10.0</option> |
| |
| <option value="../../12.11.0" >12.11.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" aria-label="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 current"><a class="reference internal" href="index.html">OS Components</a><ul class="current"> |
| <li class="toctree-l2"><a class="reference internal" href="binfmt.html">Binary Loader</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="drivers/index.html">Device Drivers</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="nxflat.html">NXFLAT</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="nxgraphics/index.html">NX Graphics Subsystem</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="paging.html">On-Demand Paging</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="audio/index.html">Audio Subsystem</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="filesystem/index.html">NuttX File System</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="libs/index.html">NuttX libraries</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="net/index.html">Network Support</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="mm/index.html">Memory Management</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="syscall.html">Syscall Layer</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="tools/index.html"><code class="docutils literal notranslate"><span class="pre">/tools</span></code> Host Tools</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="arch/index.html">Architecture-Specific Code</a></li> |
| <li class="toctree-l2 current"><a class="current reference internal" href="#">Boards Support</a><ul> |
| <li class="toctree-l3"><a class="reference internal" href="#board-specific-configurations">Board-Specific Configurations</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="#boards-directory-structure"><code class="docutils literal notranslate"><span class="pre">boards/</span></code> Directory Structure</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="#summary-of-files">Summary of Files</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="#configuration-variables">Configuration Variables</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="#supported-boards">Supported Boards</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="#configuring-nuttx">Configuring NuttX</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="#adding-a-new-board-configuration">Adding a New Board Configuration</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="#building-symbol-tables">Building Symbol Tables</a></li> |
| </ul> |
| </li> |
| <li class="toctree-l2"><a class="reference internal" href="cmake.html">CMake Support</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="openamp.html">OpenAMP Support</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="video.html">Video Subsystem</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="crypto.html">Crypto API Subsystem</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="wireless.html">Wireless Subsystem</a></li> |
| </ul> |
| </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="../implementation/index.html">Implementation Details</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"><a class="reference internal" href="../guides/index.html">Guides</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../glossary.html">Glossary</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../logos/index.html">NuttX Logos</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" aria-label="Home"></a></li> |
| <li class="breadcrumb-item"><a href="index.html">OS Components</a></li> |
| <li class="breadcrumb-item active">Boards Support</li> |
| <li class="wy-breadcrumbs-aside"> |
| <a href="../_sources/components/boards.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="boards-support"> |
| <h1>Boards Support<a class="headerlink" href="#boards-support" title="Permalink to this heading"></a></h1> |
| <p>This page discusses the board support logic for NuttX.</p> |
| <p>The <code class="docutils literal notranslate"><span class="pre">nuttx/boards</span></code> directory is a part of the internal OS. It should contain |
| only OS bring-up logic and driver initialization logic.</p> |
| <p><strong>THERE SHOULD BE NO APPLICATION CALLABLE LOGIC IN THIS DIRECTORY.</strong></p> |
| <p>If you have board-specific, application callable logic, that logic should not |
| go here. Please consider using a sub-directory under <code class="docutils literal notranslate"><span class="pre">apps/platform</span></code> instead.</p> |
| <section id="board-specific-configurations"> |
| <h2>Board-Specific Configurations<a class="headerlink" href="#board-specific-configurations" title="Permalink to this heading"></a></h2> |
| <p>The NuttX configuration consists of:</p> |
| <ul> |
| <li><p>Processor architecture specific files. These are the files contained |
| in the <code class="docutils literal notranslate"><span class="pre">arch/<arch>/</span></code> directory.</p></li> |
| <li><p>Chip/SoC specific files. Each processor architecture is embedded |
| in a chip or System-on-a-Chip (SoC) architecture. The full chip |
| architecture includes the processor architecture plus chip-specific |
| interrupt logic, general purpose I/O (GIO) logic, and specialized, |
| internal peripherals (such as UARTs, USB, etc.).</p> |
| <p>These chip-specific files are contained within chip-specific |
| sub-directories in the <code class="docutils literal notranslate"><span class="pre">arch/<arch>/</span></code> directory and are selected |
| via the <code class="docutils literal notranslate"><span class="pre">CONFIG_ARCH_name</span></code> selection</p> |
| </li> |
| <li><p>Board specific files. In order to be usable, the chip must be |
| contained in a board environment. The board configuration defines |
| additional properties of the board including such things as |
| peripheral LEDs, external peripherals (such as network, USB, etc.).</p> |
| <p>These board-specific configuration files can be found in the |
| <code class="docutils literal notranslate"><span class="pre">boards/<arch>/<chip>/<board>/</span></code> sub-directories. |
| Additional configuration information may be available in board-specific documentation pages |
| at <code class="docutils literal notranslate"><span class="pre">Documentation/platforms/<arch>/<chip>/<board></span></code>.</p> |
| </li> |
| </ul> |
| <p>The <code class="docutils literal notranslate"><span class="pre">boards/</span></code> subdirectory contains configuration data for each board. These |
| board-specific configurations plus the architecture-specific configurations in |
| the <code class="docutils literal notranslate"><span class="pre">arch/</span></code> subdirectory completely define a customized port of NuttX.</p> |
| </section> |
| <section id="boards-directory-structure"> |
| <h2><code class="docutils literal notranslate"><span class="pre">boards/</span></code> Directory Structure<a class="headerlink" href="#boards-directory-structure" title="Permalink to this heading"></a></h2> |
| <p>The <code class="docutils literal notranslate"><span class="pre">boards/</span></code> directory contains board specific configuration logic. Each |
| board must provide a subdirectory <code class="docutils literal notranslate"><span class="pre"><board></span></code> under <code class="docutils literal notranslate"><span class="pre">boards/</span></code> with the |
| following characteristics:</p> |
| <div class="highlight-none notranslate"><div class="highlight"><pre><span></span><board> |
| |-- include/ |
| | `-- (board-specific header files) |
| |-- src/ |
| | |-- Makefile |
| | `-- (board-specific source files) |
| |-- <config1-dir> |
| | |-- Make.defs |
| | `-- defconfig |
| |-- <config2-dir> |
| | |-- Make.defs |
| | `-- defconfig |
| ... |
| </pre></div> |
| </div> |
| </section> |
| <section id="summary-of-files"> |
| <h2>Summary of Files<a class="headerlink" href="#summary-of-files" title="Permalink to this heading"></a></h2> |
| <ul class="simple"> |
| <li><p><code class="docutils literal notranslate"><span class="pre">include/</span></code> – This directory contains board specific header files. This |
| directory will be linked as include/arch/board at configuration time and |
| can be included via #include <arch/board/header.h>``. These header file |
| can only be included by files in <code class="docutils literal notranslate"><span class="pre">arch/<arch>include/</span></code> and |
| <code class="docutils literal notranslate"><span class="pre">arch/<arch>/src</span></code></p></li> |
| <li><p><code class="docutils literal notranslate"><span class="pre">src/</span></code> – This directory contains board specific drivers. This |
| directory will be linked as <code class="docutils literal notranslate"><span class="pre">arch/<arch>/src/board</span></code> at configuration |
| time and will be integrated into the build system.</p></li> |
| <li><p><code class="docutils literal notranslate"><span class="pre">src/Makefile</span></code> – This makefile will be invoked to build the board specific |
| drivers. It must support the following targets: <code class="docutils literal notranslate"><span class="pre">libext$(LIBEXT)</span></code>, <code class="docutils literal notranslate"><span class="pre">clean</span></code>, |
| and <code class="docutils literal notranslate"><span class="pre">distclean</span></code>.</p></li> |
| </ul> |
| <p>A board may have various different configurations using these common source |
| files. Each board configuration is described by two files: Make.defs and |
| defconfig. Typically, each set of configuration files is retained in a |
| separate configuration sub-directory (<code class="docutils literal notranslate"><span class="pre"><config1-dir></span></code>, <code class="docutils literal notranslate"><span class="pre"><config2-dir></span></code>, .. |
| in the above diagram).</p> |
| <ul> |
| <li><p><code class="docutils literal notranslate"><span class="pre">Make.defs</span></code> – This makefile fragment provides architecture and |
| tool-specific build options. It will be included by all other |
| makefiles in the build (once it is installed). This make fragment |
| should define:</p> |
| <div class="highlight-none notranslate"><div class="highlight"><pre><span></span>Tools: CC, LD, AR, NM, OBJCOPY, OBJDUMP |
| Tool options: CFLAGS, LDFLAGS |
| </pre></div> |
| </div> |
| <p>When this makefile fragment runs, it will be passed TOPDIR which |
| is the path to the root directory of the build. This makefile |
| fragment should include:</p> |
| <div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$(TOPDIR)/.config : NuttX configuration |
| $(TOPDIR)/tools/Config.mk : Common definitions |
| </pre></div> |
| </div> |
| <p>Definitions in the <code class="docutils literal notranslate"><span class="pre">Make.defs</span></code> file probably depend on some of the |
| settings in the <code class="docutils literal notranslate"><span class="pre">.config</span></code> file. For example, the <code class="docutils literal notranslate"><span class="pre">CFLAGS</span></code> will most likely be |
| different if <code class="docutils literal notranslate"><span class="pre">CONFIG_DEBUG_FEATURES=y</span></code>.</p> |
| <p>The included <code class="docutils literal notranslate"><span class="pre">tools/Config.mk</span></code> file contains additional definitions that may |
| be overridden in the architecture-specific <code class="docutils literal notranslate"><span class="pre">Make.defs</span></code> file as necessary:</p> |
| <div class="highlight-none notranslate"><div class="highlight"><pre><span></span>COMPILE, ASSEMBLE, ARCHIVE, CLEAN, and MKDEP macros |
| </pre></div> |
| </div> |
| </li> |
| <li><p><code class="docutils literal notranslate"><span class="pre">defconfig</span></code> – This is a configuration file similar to the Linux |
| configuration file. In contains variable/value pairs like:</p> |
| <div class="highlight-none notranslate"><div class="highlight"><pre><span></span>CONFIG_VARIABLE=value |
| </pre></div> |
| </div> |
| <p>This configuration file will be used at build time:</p> |
| <blockquote> |
| <div><ol class="arabic simple"> |
| <li><p>as a makefile fragment included in other makefiles, and</p></li> |
| <li><p>to generate include/nuttx/config.h which is included by |
| most C files in the system.</p></li> |
| </ol> |
| </div></blockquote> |
| </li> |
| </ul> |
| </section> |
| <section id="configuration-variables"> |
| <h2>Configuration Variables<a class="headerlink" href="#configuration-variables" title="Permalink to this heading"></a></h2> |
| <p>At one time, this section provided a list of all NuttX configuration |
| variables. However, NuttX has since converted to use the kconfig-frontends |
| tools (See <a class="reference external" href="https://bitbucket.org/nuttx/tools/src/master/kconfig-frontends/">https://bitbucket.org/nuttx/tools/src/master/kconfig-frontends/</a>.) |
| Now, the NuttX configuration is determined by a self-documenting set of |
| Kconfig files.</p> |
| <p>The current NuttX configuration variables are also documented in separate, |
| auto-generated configuration variable document. That configuration variable |
| document is generated using the kconfig2html tool that can be found in the |
| nuttx/tools directory. That tool analyzes the NuttX Kconfig files and |
| generates an excruciatingly boring HTML document.</p> |
| <p>The latest boring configuration variable documentation can be regenerated at |
| any time using that tool or, more appropriately, the wrapper script at |
| nuttx/tools/mkconfigvars.sh. That script will generate the file |
| nuttx/Documentation/NuttXConfigVariables.html.</p> |
| </section> |
| <section id="supported-boards"> |
| <h2>Supported Boards<a class="headerlink" href="#supported-boards" title="Permalink to this heading"></a></h2> |
| <p>The list of supported boards can be found in <a class="reference internal" href="../platforms/index.html#platforms"><span class="std std-ref">Supported Platforms</span></a>.</p> |
| </section> |
| <section id="configuring-nuttx"> |
| <h2>Configuring NuttX<a class="headerlink" href="#configuring-nuttx" title="Permalink to this heading"></a></h2> |
| <p>Configuring NuttX requires only copying:</p> |
| <div class="highlight-none notranslate"><div class="highlight"><pre><span></span>boards/<arch>/<chip>/<board>/<config-dir>/Make.def to ${TOPDIR}/Make.defs |
| boards/<arch>/<chip>/<board>/<config-dir>/defconfig to ${TOPDIR}/.config |
| </pre></div> |
| </div> |
| <ul> |
| <li><p><code class="docutils literal notranslate"><span class="pre">tools/configure.sh</span></code></p> |
| <p>There is a script that automates these steps. The following steps will |
| accomplish the same configuration:</p> |
| <div class="highlight-none notranslate"><div class="highlight"><pre><span></span>tools/configure.sh <board>:<config-dir> |
| </pre></div> |
| </div> |
| <p>There is an alternative Windows batch file that can be used in the |
| windows native environment like:</p> |
| <div class="highlight-none notranslate"><div class="highlight"><pre><span></span>tools\configure.bat <board>:<config-dir> |
| </pre></div> |
| </div> |
| <p>See <a class="reference internal" href="tools/index.html"><span class="doc">/tools Host Tools</span></a> for more information about these scripts.</p> |
| <p>And if your application directory is not in the standard location (<code class="docutils literal notranslate"><span class="pre">../apps</span></code> |
| or <code class="docutils literal notranslate"><span class="pre">../apps-<version></span></code>), then you should also specify the location of the |
| application directory on the command line like:</p> |
| <div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cd tools |
| ./configure.sh -a <app-dir> <board>:<config-dir> |
| </pre></div> |
| </div> |
| </li> |
| </ul> |
| </section> |
| <section id="adding-a-new-board-configuration"> |
| <h2>Adding a New Board Configuration<a class="headerlink" href="#adding-a-new-board-configuration" title="Permalink to this heading"></a></h2> |
| <p>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 <code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">menuconfig</span></code>?</p> |
| <p>You will need modify the file <code class="docutils literal notranslate"><span class="pre">boards/Kconfig</span></code>. Let’s look at |
| the STM32F4-Discovery configuration in the <code class="docutils literal notranslate"><span class="pre">Kconfig</span></code> file and |
| see how we would add a new board directory to the configuration. |
| For this configuration let’s say that you new board resides in the |
| directory <code class="docutils literal notranslate"><span class="pre">boards/myarch/mychip/myboard</span></code>; It uses an MCU |
| selected with <code class="docutils literal notranslate"><span class="pre">CONFIG_ARCH_CHIP_MYMCU</span></code>; and you want the board |
| to be selected with <code class="docutils literal notranslate"><span class="pre">CONFIG_ARCH_BOARD_MYBOARD</span></code>. Then here is |
| how you can clone the STM32F4-Discovery configuration in |
| <code class="docutils literal notranslate"><span class="pre">boards/Kconfig</span></code> to support your new board configuration.</p> |
| <p>In <code class="docutils literal notranslate"><span class="pre">boards/Kconfig</span></code> for the stm32f4-discovery, you will see a |
| configuration definition like this:</p> |
| <p>The above selects the STM32F4-Discovery board. The <code class="docutils literal notranslate"><span class="pre">select</span></code> |
| lines say that the board has both LEDs and buttons and that the |
| board can generate interrupts from the button presses. You can |
| just copy the above configuration definition to a new location |
| (notice that they the configurations are in alphabetical order). |
| Then you should edit the configuration to support your board. The |
| final configuration definition might look something like:</p> |
| <p>Later in the <code class="docutils literal notranslate"><span class="pre">boards/Kconfig</span></code> file, you will see a long, long |
| string configuration with lots of defaults like this:</p> |
| <p>This logic will assign string value to a configuration variable |
| called <code class="docutils literal notranslate"><span class="pre">CONFIG_ARCH_BOARD</span></code> that will name the directory where |
| the board-specific files reside. In our case, these files reside |
| in <code class="docutils literal notranslate"><span class="pre">boards/myarch/mychip/myboard</span></code> and we add the following to |
| the long list of defaults (again in alphabetical order):</p> |
| <p>Now the build system knows where to find your board configuration!</p> |
| <p>And finally, add something like this near the bottom of |
| <code class="docutils literal notranslate"><span class="pre">boards/myarch/mychip/myboard</span></code>:</p> |
| <p>This includes additional, board-specific configuration variable |
| definitions in <code class="docutils literal notranslate"><span class="pre">boards/myarch/mychip/myboard/Kconfig</span></code>.</p> |
| </section> |
| <section id="building-symbol-tables"> |
| <h2>Building Symbol Tables<a class="headerlink" href="#building-symbol-tables" title="Permalink to this heading"></a></h2> |
| <p>Symbol tables are needed at several of the binfmt interfaces in order to bind |
| a module to the base code. These symbol tables can be tricky to create and |
| will probably have to be tailored for any specific application, balancing |
| the number of symbols and the size of the symbol table against the symbols |
| required by the applications.</p> |
| <p>The top-level System.map file is one good source of symbol information |
| (which, or course, was just generated from the top-level nuttx file |
| using the GNU ‘nm’ tool).</p> |
| <p>There are also common-separated value (CSV) values in the source try that |
| provide information about symbols. In particular:</p> |
| <div class="highlight-none notranslate"><div class="highlight"><pre><span></span>nuttx/syscall/syscall.csv - Describes the NuttX RTOS interface, and |
| nuttx/lib/libc.csv - Describes the NuttX C library interface. |
| </pre></div> |
| </div> |
| <p>There is a tool at nuttx/tools/mksymtab that will use these CSV files as |
| input to generate a generic symbol table. See <code class="docutils literal notranslate"><span class="pre">nuttx/tools/README.txt</span></code> for |
| more information about using the mksymtab tool.</p> |
| </section> |
| </section> |
| |
| |
| </div> |
| </div> |
| <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer"> |
| <a href="arch/index.html" class="btn btn-neutral float-left" title="Architecture-Specific Code" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a> |
| <a href="cmake.html" class="btn btn-neutral float-right" title="CMake Support" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a> |
| </div> |
| |
| <hr/> |
| |
| <div role="contentinfo"> |
| <p>© Copyright 2023, The Apache Software Foundation.</p> |
| </div> |
| |
| |
| |
| </footer> |
| </div> |
| </div> |
| </section> |
| </div> |
| <script> |
| jQuery(function () { |
| SphinxRtdTheme.Navigation.enable(true); |
| }); |
| </script> |
| |
| </body> |
| </html> |