blob: d6634c411dc5bbdd017aa0a5a1b12af86a1cc742 [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="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Running &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 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/tabs.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="Configuring" href="configuring.html" />
<link rel="prev" title="Compiling" href="compiling.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>
</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 current"><a class="reference internal" href="index.html">Getting Started</a><ul class="current">
<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 current"><a class="current reference internal" href="#">Running</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#flashing">Flashing</a></li>
<li class="toctree-l3"><a class="reference internal" href="#access-nuttshell">Access NuttShell</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="configuring.html">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>
</ul>
</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"><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>
</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">Getting Started</a></li>
<li class="breadcrumb-item active">Running</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/quickstart/running.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="running">
<span id="id1"></span><h1>Running<a class="headerlink" href="#running" title="Permalink to this heading"></a></h1>
<p>In order to finally run NuttX on your board, you first have to flash the NuttX
binary. As an easy start, it is recommended that you choose a well supported board
which also integrates the debugger/programmer in the board itself exposed via USB
connector.</p>
<p>A good choice is a Nucleo or Discovery board from ST Microelectronics,
as there is a wide choice of supported boards for the STM32 architecture in NuttX.
Also, these boards expose an UART port over the USB connection which allows you
to interact with NuttX via the interactive console without any extra hardware.
For the purposes of this guide, we will use the Nucleo F103RB board.</p>
<section id="flashing">
<h2>Flashing<a class="headerlink" href="#flashing" title="Permalink to this heading"></a></h2>
<p>There are various tools you can use to flash the NuttX binary to your Nucleo
board. One common option is to use <code class="docutils literal notranslate"><span class="pre">openocd</span></code> which supports a large number
of programmers and target microcontrollers.</p>
<p>You should note that <code class="docutils literal notranslate"><span class="pre">openocd</span></code> project has not made stable releases for long
time and support for newer hardware will probably be only available in the
latest Git version, so it is actually recommended to install latest development
version.</p>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist"><button aria-controls="panel-0-SW5zdGFsbCBzdGFibGUgdmVyc2lvbiAoVWJ1bnR1KQ==" aria-selected="true" class="sphinx-tabs-tab code-tab group-tab" id="tab-0-SW5zdGFsbCBzdGFibGUgdmVyc2lvbiAoVWJ1bnR1KQ==" name="SW5zdGFsbCBzdGFibGUgdmVyc2lvbiAoVWJ1bnR1KQ==" role="tab" tabindex="0">Install stable version (Ubuntu)</button><button aria-controls="panel-0-0-0" aria-selected="false" class="sphinx-tabs-tab" id="tab-0-0-0" name="0-0" role="tab" tabindex="-1">Install latest version from source</button></div><div aria-labelledby="tab-0-SW5zdGFsbCBzdGFibGUgdmVyc2lvbiAoVWJ1bnR1KQ==" class="sphinx-tabs-panel code-tab group-tab" id="panel-0-SW5zdGFsbCBzdGFibGUgdmVyc2lvbiAoVWJ1bnR1KQ==" name="SW5zdGFsbCBzdGFibGUgdmVyc2lvbiAoVWJ1bnR1KQ==" role="tabpanel" tabindex="0"><div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>apt<span class="w"> </span>install<span class="w"> </span>openocd
</pre></div>
</div>
</div><div aria-labelledby="tab-0-0-0" class="sphinx-tabs-panel" hidden="true" id="panel-0-0-0" name="0-0" role="tabpanel" tabindex="0"><div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>git<span class="w"> </span>clone<span class="w"> </span>git://git.code.sf.net/p/openocd/code<span class="w"> </span>openocd
<span class="gp">$ </span><span class="nb">cd</span><span class="w"> </span>openocd
<span class="gp">$ </span>./bootstrap
<span class="gp">$ </span>./configure<span class="w"> </span>--prefix<span class="o">=</span>install/
<span class="gp">$ </span>make<span class="w"> </span>install
</pre></div>
</div>
<p>The resulting installation will be under <code class="docutils literal notranslate"><span class="pre">openocd/install</span></code>. You can add
<code class="docutils literal notranslate"><span class="pre">openocd/install/bin</span></code> to your <code class="docutils literal notranslate"><span class="pre">PATH</span></code>.</p>
</div></div>
<p>Now, to flash the binary to your board, connect the USB cable and do:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span><span class="nb">cd</span><span class="w"> </span>nuttx/
<span class="gp">$ </span>openocd<span class="w"> </span>-f<span class="w"> </span>interface/stlink-v2.cfg<span class="w"> </span>-f<span class="w"> </span>target/stm32f1x.cfg<span class="w"> </span>-c<span class="w"> </span><span class="s1">&#39;init&#39;</span><span class="w"> </span><span class="se">\</span>
<span class="w"> </span>-c<span class="w"> </span><span class="s1">&#39;program nuttx/nuttx.bin verify reset&#39;</span><span class="w"> </span>-c<span class="w"> </span><span class="s1">&#39;shutdown&#39;</span>
</pre></div>
</div>
</section>
<section id="access-nuttshell">
<h2>Access NuttShell<a class="headerlink" href="#access-nuttshell" title="Permalink to this heading"></a></h2>
<p>Once you flash your board, it will reset and offer a prompt over the serial
console. With the Nucleo board, you can simply open the terminal program
of your choice where you will see the <code class="docutils literal notranslate"><span class="pre">nsh&gt;</span></code> prompt (press <kbd class="kbd docutils literal notranslate">enter</kbd>
if you don’t see anything):</p>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist"><button aria-controls="panel-1-cGljb2NvbSAoQ0xJKQ==" aria-selected="true" class="sphinx-tabs-tab code-tab group-tab" id="tab-1-cGljb2NvbSAoQ0xJKQ==" name="cGljb2NvbSAoQ0xJKQ==" role="tab" tabindex="0">picocom (CLI)</button><button aria-controls="panel-1-Z3RrdGVybSAoR1VJKQ==" aria-selected="false" class="sphinx-tabs-tab code-tab group-tab" id="tab-1-Z3RrdGVybSAoR1VJKQ==" name="Z3RrdGVybSAoR1VJKQ==" role="tab" tabindex="-1">gtkterm (GUI)</button></div><div aria-labelledby="tab-1-cGljb2NvbSAoQ0xJKQ==" class="sphinx-tabs-panel code-tab group-tab" id="panel-1-cGljb2NvbSAoQ0xJKQ==" name="cGljb2NvbSAoQ0xJKQ==" role="tabpanel" tabindex="0"><div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>picocom<span class="w"> </span>-b<span class="w"> </span><span class="m">115200</span><span class="w"> </span>/dev/ttyUSB0
</pre></div>
</div>
</div><div aria-labelledby="tab-1-Z3RrdGVybSAoR1VJKQ==" class="sphinx-tabs-panel code-tab group-tab" hidden="true" id="panel-1-Z3RrdGVybSAoR1VJKQ==" name="Z3RrdGVybSAoR1VJKQ==" role="tabpanel" tabindex="0"><div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>gtkterm<span class="w"> </span>-s<span class="w"> </span><span class="m">115200</span><span class="w"> </span>-p<span class="w"> </span>/dev/ttyUSB0
</pre></div>
</div>
</div></div>
<div class="admonition tip">
<p class="admonition-title">Tip</p>
<p>You may have to add yourself to the <code class="docutils literal notranslate"><span class="pre">dialout</span></code> group on Linux to have permission
to access serial ports:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>gpasswd<span class="w"> </span>-a<span class="w"> </span>&lt;user&gt;<span class="w"> </span>dialout
</pre></div>
</div>
<p>Where <code class="docutils literal notranslate"><span class="pre">&lt;user&gt;</span></code> is your username. You will need to log out from your desktop
for the change to have effect.</p>
</div>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="compiling.html" class="btn btn-neutral float-left" title="Compiling" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="configuring.html" class="btn btn-neutral float-right" title="Configuring" 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>