blob: 94a10ba7b3c17dc57c1a9c064da790d5b1c8e7be [file] [log] [blame]
<!--
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="viewport" content="width=device-width, initial-scale=1.0">
<title>Configuring &mdash; NuttX latest documentation</title>
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/sphinx_tabs/semantic-ui-2.4.1/segment.min.css" type="text/css" />
<link rel="stylesheet" href="../_static/sphinx_tabs/semantic-ui-2.4.1/menu.min.css" type="text/css" />
<link rel="stylesheet" href="../_static/sphinx_tabs/semantic-ui-2.4.1/tab.min.css" type="text/css" />
<link rel="stylesheet" href="../_static/sphinx_tabs/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 type="text/javascript" id="documentation_options" data-url_root="../" 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/language_data.js"></script>
<script type="text/javascript" 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="Debugging" href="debugging.html" />
<link rel="prev" title="Running" href="running.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>
<option value="latest" selected="selected">latest</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="main navigation">
<p class="caption"><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="../introduction/inviolables.html">The Inviolable Principles of NuttX</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Getting Started</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="quickstart.html">Quickstart</a></li>
<li class="toctree-l2"><a class="reference internal" href="install.html">Installing</a></li>
<li class="toctree-l2"><a class="reference internal" href="compiling.html">Compiling</a></li>
<li class="toctree-l2"><a class="reference internal" href="running.html">Running</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Configuring</a></li>
<li class="toctree-l2"><a class="reference internal" href="debugging.html">Debugging</a></li>
<li class="toctree-l2"><a class="reference internal" href="organization.html">Directory Structure</a></li>
<li class="toctree-l2"><a class="reference internal" href="build_and_make.html">Build and Make Details</a></li>
</ul>
</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="../boards/index.html">Supported Boards</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="../guides/index.html">Guides</a></li>
<li class="toctree-l1"><a class="reference internal" href="../releases/index.html">Releases</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="../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="top navigation">
<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="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
<li><a href="index.html">Getting Started</a> &raquo;</li>
<li>Configuring</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/quickstart/configuring.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">
<div class="section" id="configuring">
<span id="id1"></span><h1>Configuring<a class="headerlink" href="#configuring" title="Permalink to this headline"></a></h1>
<p>Apache NuttX is a very configurable operating system. Nearly all features can be configured in or
out of the system. This makes it possible to compile a build tailored for your hardware and
application. It also makes configuring the system complex at times.</p>
<p>There is a configuration system that can be used on the commandline or in a GUI. I’ve found
the easiest way to configured Apache NuttX is to use the <code class="docutils literal notranslate"><span class="pre">menuconfig</span></code> system. This is used
via a terminal program and allows quick access to all of Apache NuttX’s features via a system of
menus.</p>
<p>The Apache NuttX configuration system uses Linux’s
<a class="reference external" href="https://www.kernel.org/doc/Documentation/kbuild/kconfig-language.txt">kconfig system</a> adapted for use with Apache
NuttX. Here’s info on Linux’s kconfig <a class="reference external" href="https://en.wikipedia.org/wiki/Menuconfig">menuconfig</a> system.</p>
<p>After you’ve configured your board (see <a class="reference internal" href="compiling.html#compiling"><span class="std std-ref">Compiling</span></a>), you can use the menuconfig system
to change the configuration. Once you’ve configured, you can compile to make a build that
has your configuration options selected.</p>
<ol class="arabic">
<li><p>Initialize Board Configuration</p>
<p>Here we’ll use the simulator since that’s the simplest to explain. You can do this with
any board and base configuration. Note here you should be supplying <cite>configure.sh</cite> the correct flag
for your build environment:</p>
<blockquote>
<div><div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>-l selects the Linux <span class="o">(</span>l<span class="o">)</span> host environment.
-m selects the macOS <span class="o">(</span>m<span class="o">)</span> host environment.
-c selects the Windows host and Cygwin <span class="o">(</span>c<span class="o">)</span> environment.
-g selects the Windows host and MinGW/MSYS environment.
-n selects the Windows host and Windows native <span class="o">(</span>n<span class="o">)</span> environment.
</pre></div>
</div>
</div></blockquote>
<p>Select the simulator configuration for a Linux host:</p>
<blockquote>
<div><div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ <span class="nb">cd</span> nuttx
$ make distclean <span class="c1"># make a clean start, clearing out old configurations</span>
$ ./tools/configure.sh -l sim:nsh
Copy files
Select <span class="nv">CONFIG_HOST_LINUX</span><span class="o">=</span>y
Refreshing...
</pre></div>
</div>
</div></blockquote>
</li>
<li><p>Make</p>
<blockquote>
<div><div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ make clean<span class="p">;</span> make
$ ./nuttx
login:
</pre></div>
</div>
</div></blockquote>
<p>From another terminal window, kill the simulator:</p>
<blockquote>
<div><div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ pkill nuttx
</pre></div>
</div>
</div></blockquote>
</li>
<li><p>Menu Configuration</p>
<p>Showing that <code class="docutils literal notranslate"><span class="pre">login:</span></code> is annyoing. Let’s use the <code class="docutils literal notranslate"><span class="pre">menuconfig</span></code> system to turn it off.</p>
<blockquote>
<div><div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ make menuconfig
</pre></div>
</div>
</div></blockquote>
<p>Here’s what you should see:</p>
<a class="reference internal image-reference" href="../_images/menuconfig.png"><img alt="Screenshot of menuconfig system main screen" class="align-center" src="../_images/menuconfig.png" style="width: 800px;" /></a>
<p><br/></p>
</li>
<li><p>Application Configuration</p>
<p>The NSH Login setting is under <code class="docutils literal notranslate"><span class="pre">Application</span> <span class="pre">Configuration</span> <span class="pre">&gt;</span> <span class="pre">NSH</span> <span class="pre">Library</span></code>. Use
the up and down arrows to navigate to <code class="docutils literal notranslate"><span class="pre">Application</span> <span class="pre">Configuration</span></code>; hit <code class="docutils literal notranslate"><span class="pre">&lt;return&gt;</span></code> to
select it. Now you’re in the <code class="docutils literal notranslate"><span class="pre">Application</span> <span class="pre">Configuration</span></code> menu. Use the arrows to go
down to <code class="docutils literal notranslate"><span class="pre">NSH</span> <span class="pre">Library</span></code> and select that. Now navigate down to <code class="docutils literal notranslate"><span class="pre">Console</span> <span class="pre">Login</span></code> and use
the spacebar to uncheck that setting (so that it has a blank space instead of a star in it).</p>
<p>Now let’s save. Use the right and left arrow keys to select the <code class="docutils literal notranslate"><span class="pre">Exit</span></code> menu item at the
bottom of the screen. Hit <code class="docutils literal notranslate"><span class="pre">&lt;return&gt;</span></code> to select it, hit <code class="docutils literal notranslate"><span class="pre">&lt;return&gt;</span></code> again, and again, finally
hitting <code class="docutils literal notranslate"><span class="pre">&lt;return&gt;</span></code> in the <code class="docutils literal notranslate"><span class="pre">Save</span> <span class="pre">Configuration</span></code> dialog box.</p>
</li>
<li><p>Make the New Configuration</p>
<blockquote>
<div><div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ make clean<span class="p">;</span> make
</pre></div>
</div>
</div></blockquote>
</li>
<li><p>Run</p>
<blockquote>
<div><div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ ./nuttx
NuttShell <span class="o">(</span>NSH<span class="o">)</span> NuttX-8.2
MOTD: <span class="nv">username</span><span class="o">=</span>admin <span class="nv">password</span><span class="o">=</span>Administrator
</pre></div>
</div>
</div></blockquote>
<p>Success!</p>
<p>If you find that message of the day (MOTD) annoying and want to turn that off, it’s
configured in <code class="docutils literal notranslate"><span class="pre">Application</span> <span class="pre">Configuration</span> <span class="pre">&gt;</span> <span class="pre">NSH</span> <span class="pre">Library</span> <span class="pre">&gt;&gt;</span> <span class="pre">Message</span> <span class="pre">of</span> <span class="pre">the</span> <span class="pre">Day</span> <span class="pre">(MOTD)</span></code>.</p>
</li>
</ol>
<hr class="docutils" />
<p>Next up is <a class="reference internal" href="debugging.html#debugging"><span class="std std-ref">Debugging</span></a>.</p>
</div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2020, The Apache Software Foundation
</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>