<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        
        
        <!-- This is broken by doc revisioning.
         -->
        <link rel="shortcut icon" href="../../img/favicon.ico">

        <title>toc - Apache Mynewt</title>

        <link href="../../css/bootstrap-3.0.3.min.css" rel="stylesheet">
        <link rel="stylesheet" href="../../css/highlight.css">
        <link href="../../css/base.css" rel="stylesheet">
        <link href="../../css/custom.css" rel="stylesheet">
        <link href="../../css/v2.css" rel="stylesheet">
        <link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet">
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">

        <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
        <!--[if lt IE 9]>
            <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
            <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
        <![endif]-->

        
            <script>
            (function(i, s, o, g, r, a, m) {
    i["GoogleAnalyticsObject"] = r;
    (i[r] =
        i[r] ||
        function() {
            (i[r].q = i[r].q || []).push(arguments);
        }),
        (i[r].l = 1 * new Date());
    (a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]);
    a.async = 1;
    a.src = g;
    m.parentNode.insertBefore(a, m);
})(window, document, "script", "//www.google-analytics.com/analytics.js", "ga");

ga("create", "UA-72162311-1", "auto");
ga("send", "pageview");
</script>
        
    </head>


    <body class="toc">


        <div class="container">
    <div class="row v2-main-banner">
        <a class="logo-cell" href="/">
            <img class="logo" src="/img/logo.png">
        </a>
        <div class="tagline-cell">
            <h4 class="tagline">An OS to build, deploy and securely manage billions of devices</h4>
        </div>
        <div class="news-cell">
            <div class="well">
                <h4>Latest News:</h4> <a href="/download">Apache Mynewt 1.12.0, Apache NimBLE 1.7.0 </a> released (April 4, 2024)
            </div>
        </div>
    </div>
</div>

        






<nav id="navbar" class="navbar navbar-inverse affix-top" data-spy="affix" data-offset-top="150" role="navigation">
    <div class="container">
        <!-- Collapsed navigation -->
        <div class="navbar-header">
            <!-- Expander button -->
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>

        </div>

        <!-- Expanded navigation -->
        <div class="navbar-collapse collapse">
            <!-- Main navigation -->
            <ul class="nav navbar-nav navbar-right">
                <li 
  class=""
>
                    <a href="/"><i class="fa fa-home" style="font-size: larger;"></i></a>
                </li>
                <li 
  class="important"
>
                    <a href="/quick-start/">Quick Start</a>
                </li>
                <li 
  class=""
>
                    <a href="/about/">About</a>
                </li>
                <li 
  class=""
>
                    <a href="/talks/">Talks</a>
                </li>
                <li 
  class="active"
>
                    <a href="/documentation/">Documentation</a>
                </li>
                <li 
  class=""
>
                    <a href="/download/">Download</a>
                </li>
                <li 
  class=""
>
                    <a href="/community/">Community</a>
                </li>
                <li 
  class=""
>
                    <a href="/events/">Events</a>
                </li>
            </ul>

        </div>
    </div>
</nav>

        

        <div class="container">
            
                <div class="row">
                    <div class="col-md-3 v2-sidebar sidebar-container"><div id="docSidebar" class="hidden-print" role="complementary">
    <div class="top">
        <div role="search">
            <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
                <div class="form-group">
                    <input type="text" name="q" class="form-control" placeholder="Search documentation" />
                </div>
            </form>
        </div>
    </div>
    <ul class="toc-nav">
      <li class="doc-version"><select class="form-control" onchange="if (this.value) window.location.href=this.value">
  <option value="/latest">
    Version: master
  </option>
  <option value="/v1_12_0/" >
    Version: 1.12.0
  </option>
  <option value="/v1_11_0/" >
    Version: 1.11.0
  </option>
  <option value="/v1_10_0/" >
    Version: 1.10.0
  </option>
  <option value="/v1_9_0/" >
    Version: 1.9.0
  </option>
    <option value="/v1_8_0/" >
    Version: 1.8.0
  </option>
  <option value="/v1_7_0/" >
    Version: 1.7.0
  </option>
  <option value="/v1_6_0/" >
    Version: 1.6.0
  </option>
  <option value="/v1_5_0/" >
    Version: 1.5.0
  </option>
  <option value="/v1_4_0/" >
    Version: 1.4.0
  </option>
  <option value="/v1_3_0/os/introduction" >
    Version: 1.3.0
  </option>
  <option value="/v1_2_0/os/introduction" >
    Version: 1.2.0
  </option>
  <option value="/v1_1_0/os/introduction" selected="selected" >
    Version: 1.1.0
  </option>
  <option value="/v1_0_0/os/introduction" >
    Version: 1.0.0
  </option>
  <option value="/v0_9_0/os/introduction" >
    Version: 0.9.0
  </option>
</select></li>
      
        
      
        
      
        
      
        
      
        
      
        
      
        
      
        
      
        
          
  
  
    <li ><a href="../../os/introduction/">Mynewt Documentation</a>
  
  
    <ul>
          
              
          
              
                
  
  
    <li ><a href="../../os/get_started/get_started/">Basic Setup</a>
  
  
    </li>

              
          
              
                
  <li >
    <a href="../../os/get_started/vocabulary/">Concepts</a>
  </li>

              
          
              
                
  
  
    <li ><a href="../../os/tutorials/tutorials/">Tutorials</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../os/os_user_guide/">OS User Guide</a>
  
  
    </li>

              
          
              
                
  
  
    <li><a href="
  ../../network/ble/ble_intro/
">BLE User Guide</a>
  
  
    </li>

              
          
              
                
  
  
    <li class="active"><a href="./">Newt Tool Guide</a>
  
  
    <ul>
          
              
          
              
                
  <li >
    <a href="../newt_operation/">Newt Theory of Ops</a>
  </li>

              
          
              
                
  
  
    <li ><a href="../newt_ops/">Command Guide</a>
  
  
    </li>

              
          
    </ul>
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../newtmgr/overview/">Newt Manager Guide</a>
  
  
    </li>

              
          
              
                
  <li >
    <a href="../../known_issues/">Known Issues</a>
  </li>

              
          
    </ul>
  
    </li>

        
      
        
          
  
  
    <li><a href="
  ../../faq/go_env/
">Appendix</a>
  
  
    </li>

        
      
    </ul>
</div></div>

                    <div class="col-md-9" role="main">
                        <div class="doc-header">
                            <div role="navigation" aria-label="breadcrumbs navigation">
  <ul class="wy-breadcrumbs">
    <li><a href="/documentation/">Docs</a></li>
    
    
        
          <li>&raquo; Newt Tool Guide</li>
        
      
        
          <li>&raquo; <a href="os/introduction/">Mynewt Documentation</a></li>
        
      
      
    
    
      <li class="wy-breadcrumbs-aside">
        
          <a href="https://github.com/apache/mynewt-site/blob/master/docs/newt/newt_intro.md"
            class="icon icon-github"> Edit on GitHub</a>
        
      </li>
    
  </ul>
</div>
                        </div>
                        
                          
                        
                          
                        
                          
                        
                          
                            <div class="alert alert-warning">
                                <p>
                                    Version 1.1.0 is not the most recent version of the Apache Mynewt
                                    documentation. Click <a href="/latest">here</a> to read the latest
                                    version.
                                </p>
                            </div>
                          
                        
                        
                            <h2 id="newt-tool">Newt Tool</h2>
<h3 id="introduction">Introduction</h3>
<p>Newt is a smart build and package management system for embedded contexts.  It is a single tool that accomplishes both the following goals:</p>
<ul>
<li>source package management </li>
<li>build, debug and install.</li>
</ul>
<h3 id="rationale">Rationale</h3>
<p>In order for the Mynewt operating system to work well for constrained environments across the many different types of microcontroller applications (from doorbells to medical devices to power grids), a system is needed that lets you select which packages to install and which packages to build.</p>
<p>The build systems for embedded devices are often fairly complicated and not well served for this purpose.  For example, autoconf is designed for detecting system compatibility issues but not well suited when it comes to tasks like:</p>
<ul>
<li>Building for multiple targets</li>
<li>Deciding what to build in and what not to build in</li>
<li>Managing dependencies between components</li>
</ul>
<p>Fortunately, solutions addressing these very issues can be found in source package management systems in higher level languages such as Javascript 
(Node), Go, PHP and Ruby.  We decided to fuse their source management 
systems with a make system built for embedded systems and create Newt.</p>
<h3 id="build-system">Build System</h3>
<p>A good build system must allow the user to take a few common steps while developing embedded applications:</p>
<ul>
<li>Generate full flash images</li>
<li>Download debug images to a target board using a debugger</li>
<li>Conditionally compile libraries &amp; code based upon build settings</li>
</ul>
<p>Newt can read a directory tree, build a dependency tree, and emit the right build artifacts.  An example newt source tree is in mynewt-blinky/develop:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ tree -L 3 
.
├── DISCLAIMER
├── LICENSE
├── NOTICE
├── README.md
<span style="background-color: #ffffcc">├── apps
</span>│   └── blinky
│       ├── pkg.yml
│       └── src
├── project.yml
<span style="background-color: #ffffcc">└── targets
</span>     ├── my_blinky_sim
     │   ├── pkg.yml
     │   └── target.yml
     └── unittest
         ├── pkg.yml
         └── target.yml

6 directories, 10 files
</code></pre></div>

<p><br></p>
<p>When Newt sees a directory tree that contains a "project.yml" file, it is smart enough to recognize it as the base directory of a project, and 
automatically builds a package tree. It also recognizes two important package directories in the package tree - "apps" and "targets". More on these directories in <a href="../newt_operation/">Newt Theory of Ops</a>.</p>
<p>When Newt builds a target, it recursively resolves all package dependencies, and generates artifacts that are placed in the bin/targets/&lt;target-name&gt;/app/apps/&lt;app-name&gt; directory, where the bin directory is under the project base directory, <code>target-name</code> is the name of the target, and <code>app-name</code> is the name of the application. For our example <code>my_blinky_sim</code> is the name of the target and <code>blinky</code> is the name of the application. The <code>blinky.elf</code> executable is stored in the bin/targets/my_blinky_sim/app/apps/blinky directory as shown in the source tree:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>tree -L 6 bin/
bin/
└── targets
    ├── my_blinky_sim
    │   ├── app
    │   │   ├── apps
    │   │   │   └── blinky
    │   │   │       ├── apps
    │   │   │       ├── apps_blinky.a
    │   │   │       ├── apps_blinky.a.cmd
    │   │   │       ├── blinky.elf
    │   │   │       ├── blinky.elf.cmd
    │   │   │       ├── blinky.elf.dSYM
    │   │   │       ├── blinky.elf.lst
    │   │   │       └── manifest.json
    │   │   ├── hw
    │   │   │   ├── bsp
    │   │   │   │   └── native
    │   │   │   ├── drivers
    │   │   │   │   └── uart
    │   │   │   ├── hal
    │   │   │   │   ├── hw_hal.a
    │   │   │   │   ├── hw_hal.a.cmd
    │   │   │   │   └── repos

&lt;snip&gt;
</code></pre></div>

<p><br></p>
<h3 id="more-operations-using-newt">More operations using Newt</h3>
<p>Once a target has been built, Newt allows additional operations on the target.  </p>
<ul>
<li><strong>load</strong>: Download built target to board</li>
<li><strong>debug</strong>: Open debugger session to target</li>
<li><strong>size</strong>: Get size of target components</li>
<li><strong>create-image</strong>: Add image header to the binary image</li>
<li><strong>run</strong>: Build, create image, load, and finally open a debug session with the target</li>
<li><strong>target</strong>: Create, delete, configure, and query a target</li>
</ul>
<p>For more details on how Newt works, go to <a href="../newt_operation/">Newt - Theory of Operations</a>.</p>
<p><br></p>
<h3 id="source-management-and-repositories">Source Management and Repositories</h3>
<p>The other major element of the Newt tool is the ability to create reusable source distributions from a collection of code. <strong>A project can be a reusable container of source code.</strong> In other words, projects can be versioned and redistributed, not packages. A project bundles together packages that are typically needed to work together in a product e.g. RTOS core, filesystem APIs, and networking stack.</p>
<p>A project that has been made redistributable is known as a <strong>repository</strong>. 
Repositories can be added to your local project by adding them into your project.yml file.  Here is an example of the blinky project's yml file which relies on apache-mynewt-core:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ more project.yml
&lt;snip&gt;
project.repositories:
     - apache-mynewt-core

# Use github&#39;s distribution mechanism for core ASF libraries.
# This provides mirroring automatically for us.
#
repository.apache-mynewt-core:
     type: github
     vers: 1-latest
     user: apache
     repo: incubator-mynewt-core
</code></pre></div>

<p><br></p>
<p>When you specify this repository in the blinky's project file, you can then use the Newt tool to install dependencies:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ newt install
Downloading repository description for apache-mynewt-core... success!
Downloading repository incubator-mynewt-core (branch: develop) at 
https://github.com/apache/incubator-mynewt-core.git
Cloning into 
&#39;/var/folders/7l/7b3w9m4n2mg3sqmgw2q1b9p80000gn/T/newt-repo814721459&#39;...
remote: Counting objects: 17601, done.
remote: Compressing objects: 100% (300/300), done.
remote: Total 17601 (delta 142), reused 0 (delta 0), pack-reused 17284
Receiving objects: 100% (17601/17601), 6.09 MiB | 3.17 MiB/s, done.
Resolving deltas: 100% (10347/10347), done.
Checking connectivity... done.
Repos successfully installed
</code></pre></div>

<p><br></p>
<p>Newt will install this repository in the <project>/repos directory.  In the case of blinky, the directory structure ends up looking like:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ tree -L 2
.
├── DISCLAIMER
├── LICENSE
├── NOTICE
├── README.md
├── apps
│   └── blinky
├── project.state
├── project.yml
├── repos
│   └── apache-mynewt-core
└── targets
     ├── my_blinky_sim
     └── unittest
</code></pre></div>

<p><br></p>
<p>In order to reference the installed repositories in packages, the "@" notation should be specified in the repository specifier.  As an example, the apps/blinky application has the following dependencies in its pkg.yml file. This tells the build system to look in the base directory of repos/apache-mynewt-core for the <code>kernel/os</code>, <code>hw/hal</code>, and <code>sys/console/full</code> packages.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ more apps/blinky/pkg.yml
&lt;snip&gt;
pkg.deps:
     - &quot;@apache-mynewt-core/kernel/os&quot;
     - &quot;@apache-mynewt-core/hw/hal&quot;
     - &quot;@apache-mynewt-core/sys/console/full&quot;
</code></pre></div>

<p><br></p>
<p>Newt has the ability to autocomplete within <code>bash</code>.  The following instructions allow MAC users to enable autocomplete within <code>bash</code>.</p>
<ol>
<li>Install the autocomplete tools for bash via <code>brew install bash-completion</code></li>
<li>Tell your shell to use newt for autocompletion of newt via <code>complete -C "newt complete" newt</code>.  You can add this to your .bashrc or other init file to have it automatically set for all bash shells.</li>
</ol>
<p>Notes:</p>
<ol>
<li>Autocomplete will give you flag hints, but only if you type a '-'.  </li>
<li>Autocomplete will not give you completion hints for the flag arguments (those optional things after the flag like <code>-l DEBUG</code>)</li>
<li>Autocomplete uses newt to parse the project to find targets and libs.</li>
</ol>
                        
                        <div class="row">
                            



<ul class="nav nav-pills" style="margin-bottom: 10px">
    <li>
    
    </li>
    <li class="pull-right">
    
    </li>
</ul>
                        </div>
                        <footer class="row">
    <div class="col-xs-12">
        
            <p class="copyright">Apache Mynewt is available under Apache License, version 2.0.</p>
        
    </div>
    <div class="col-xs-12">
        <div class="logos">
            <a href="https://www.apache.org/">
                <img src="/img/asf_logo_wide_small.png" alt="Apache" title="Apache">
            </a>
            <p>
                Copyright © 2015-2021 The Apache Software Foundation.<br>
                <small class="footnote">
                    Apache Mynewt, Mynewt, Apache, the Apache feather logo, and the Apache Mynewt
                    project logo are either registered trademarks or trademarks of the Apache
                    Software Foundation in the United States and other countries.
                </small>
            </p>
            <a href="">
                <img src="https://www.countit.com/images/add_to_slack.png" alt="Slack Icon" title="Join our Slack Community" />
            </a>
        </div>
    </div>
    <a href="https://www.apache.org/licenses/">
        <button class="button-footer-asf">
            License
        </button>
    </a>
    <a href="https://www.apache.org/foundation/sponsorship.html">
        <button class="button-footer-asf">
            Sponsorship
        </button>
    </a>
    <a href="https://www.apache.org/foundation/thanks.html">
        <button class="button-footer-asf">
            Thanks
        </button>
    </a>
    <a href="https://www.apache.org/security/">
        <button class="button-footer-asf">
            Security
        </button>
    </a>
    <a href="https://apache.org/events/current-event">
        <button class="button-footer-asf">
            ASF Events
        </button>
    </a>
</footer>
                    </div>
                </div>
            
            
        </div>

        <script src="../../js/jquery-1.10.2.min.js"></script>
        <script src="../../js/bootstrap-3.0.3.min.js"></script>
        <script src="../../js/highlight.pack.js"></script>
        <script src="../../js/base.js"></script>
        <script src="../../js/custom.js"></script>
            <script src="search/main.js"></script>

    </body>
</html>