blob: bf44fe7478a8915b1e2d425bdc163fb76c40d374 [file] [log] [blame]
<!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">
<title>newt mfg &mdash; Apache Mynewt latest documentation</title>
<link rel="shortcut icon" href="../../_static/mynewt-logo-only-newt32x32.png"/>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/sphinx_theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/bootstrap-3.0.3.min.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/v2.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/custom.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/restructuredtext.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/overrides.css" type="text/css" />
<link rel="index" title="Index"
href="../../genindex.html"/>
<link rel="search" title="Search" href="../../search.html"/>
<link rel="top" title="Apache Mynewt latest documentation" href="../../index.html"/>
<link rel="up" title="Command Structure" href="../newt_ops.html"/>
<link rel="next" title="newt new" href="newt_new.html"/>
<link rel="prev" title="newt load" href="newt_load.html"/>
<script src="../../_static/js/modernizr.min.js"></script>
<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="not-front page-documentation" role="document" >
<div id="wrapper">
<div class="container">
<div id="banner" class="row v2-main-banner">
<a class="logo-cell" href="/">
<img class="logo" src="../../_static/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.11.0, Apache NimBLE 1.6.0 </a> released September 7, 2023)
</div>
</div>
</div>
</div>
<header>
<nav id="navbar" class="navbar navbar-inverse" 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>
<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>
<a href="/about/">About</a>
</li>
<li>
<a href="/talks/">Talks</a>
</li>
<li class="active">
<a href="/documentation/">Documentation</a>
</li>
<li>
<a href="/download/">Download</a>
</li>
<li>
<a href="/community/">Community</a>
</li>
<li>
<a href="/events/">Events</a>
</li>
</ul>
<!-- Search, Navigation and Repo links -->
<ul class="nav navbar-nav navbar-right">
</ul>
</div>
</div>
</nav>
</header>
<!-- STARTS MAIN CONTENT -->
<div id="main-content">
<div id="breadcrumb">
<div class="container">
<a href="/documentation/">Docs</a> /
<a href="../index.html">Newt Tool Guide</a> /
<a href="../newt_ops.html">Command Structure</a> /
newt mfg
<div class="sourcelink">
<a href="https://github.com/apache/mynewt-newt/edit/master/docs/command_list/newt_mfg.rst" class="icon icon-github"
rel="nofollow"> Edit on GitHub</a>
</div>
</div>
</div>
<!-- STARTS CONTAINER -->
<div class="container">
<!-- STARTS .content -->
<div id="content" class="row">
<!-- STARTS .container-sidebar -->
<div class="container-sidebar col-xs-12 col-sm-3">
<div id="docSidebar" class="sticky-container">
<div role="search" class="sphinx-search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search documentation" class="search-documentation" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
<!-- Note: only works when deployed -->
<select class="form-control" onchange="if (this.value) window.location.href=this.value">
<option value="/latest" selected>
Version: latest
</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" selected="selected" >
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" >
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>
<div class="region region-sidebar">
<div class="docs-menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/index.html">Setup &amp; Get Started</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../concepts.html">Concepts</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../tutorials/tutorials.html">Tutorials</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../external_links.html">Third-party Resources</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../os/os_user_guide.html">OS User Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../network/index.html">BLE User Guide</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Newt Tool Guide</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../newt_operation.html">Theory of Operations</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="../newt_ops.html">Command Structure</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="newt_build.html">newt build</a></li>
<li class="toctree-l3"><a class="reference internal" href="newt_clean.html">newt clean</a></li>
<li class="toctree-l3"><a class="reference internal" href="newt_complete.html">newt complete</a></li>
<li class="toctree-l3"><a class="reference internal" href="newt_create_image.html">newt create-image</a></li>
<li class="toctree-l3"><a class="reference internal" href="newt_debug.html">newt debug</a></li>
<li class="toctree-l3"><a class="reference internal" href="newt_help.html">newt help</a></li>
<li class="toctree-l3"><a class="reference internal" href="newt_info.html">newt info</a></li>
<li class="toctree-l3"><a class="reference internal" href="newt_install.html">newt install</a></li>
<li class="toctree-l3"><a class="reference internal" href="newt_load.html">newt load</a></li>
<li class="toctree-l3 current"><a class="current reference internal" href="#">newt mfg</a></li>
<li class="toctree-l3"><a class="reference internal" href="newt_new.html">newt new</a></li>
<li class="toctree-l3"><a class="reference internal" href="newt_pkg.html">newt pkg</a></li>
<li class="toctree-l3"><a class="reference internal" href="newt_resign_image.html">newt resign-image</a></li>
<li class="toctree-l3"><a class="reference internal" href="newt_run.html">newt run</a></li>
<li class="toctree-l3"><a class="reference internal" href="newt_size.html">newt size</a></li>
<li class="toctree-l3"><a class="reference internal" href="newt_sync.html">newt sync</a></li>
<li class="toctree-l3"><a class="reference internal" href="newt_target.html">newt target</a></li>
<li class="toctree-l3"><a class="reference internal" href="newt_test.html">newt test</a></li>
<li class="toctree-l3"><a class="reference internal" href="newt_upgrade.html">newt upgrade</a></li>
<li class="toctree-l3"><a class="reference internal" href="newt_vals.html">newt vals</a></li>
<li class="toctree-l3"><a class="reference internal" href="newt_version.html">newt version</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../install/index.html">Install</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../newtmgr/index.html">Newt Manager Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../mynewt_faq/index.html">Mynewt FAQ</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../misc/index.html">Appendix</a></li>
</ul>
</div>
</div>
</div>
<!-- ENDS STICKY CONTAINER -->
</div>
<!-- ENDS .container-sidebar -->
<div class="col-xs-12 col-sm-9">
<div class="alert alert-warning">
<p>
Version 1.7.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>
<div class="">
<div class="rst-content">
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="newt-mfg">
<h1>newt mfg<a class="headerlink" href="#newt-mfg" title="Permalink to this headline">ΒΆ</a></h1>
<p>Commands to create, build, and upload manufacturing image.</p>
<div class="section" id="usage">
<h2>Usage:<a class="headerlink" href="#usage" title="Permalink to this headline">ΒΆ</a></h2>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">newt mfg [flags]</span>
<span class="go">newt mfg [command]</span>
</pre></div>
</div>
</div>
<div class="section" id="available-commands">
<h2>Available Commands:<a class="headerlink" href="#available-commands" title="Permalink to this headline">ΒΆ</a></h2>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">create Create a manufacturing flash image</span>
<span class="go">deploy Build and upload a manufacturing image (build + load)</span>
<span class="go">load Load a manufacturing flash image onto a device</span>
</pre></div>
</div>
</div>
<div class="section" id="global-flags">
<h2>Global Flags:<a class="headerlink" href="#global-flags" title="Permalink to this headline">ΒΆ</a></h2>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">-h, --help Help for newt commands</span>
<span class="go">-j, --jobs int Number of concurrent build jobs (default 8)</span>
<span class="go">-l, --loglevel string Log level (default &quot;WARN&quot;)</span>
<span class="go">-o, --outfile string Filename to tee output to</span>
<span class="go">-q, --quiet Be quiet; only display error output</span>
<span class="go">-s, --silent Be silent; don&#39;t output anything</span>
<span class="go">-v, --verbose Enable verbose output when executing commands</span>
</pre></div>
</div>
</div>
<div class="section" id="description">
<h2>Description<a class="headerlink" href="#description" title="Permalink to this headline">ΒΆ</a></h2>
<table class="docutils align-default">
<colgroup>
<col style="width: 2%" />
<col style="width: 98%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Sub-command</p></th>
<th class="head"><p>Explanation</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>create</p></td>
<td><p>A manufacturing image specifies 1) a boot loader target, and 2) one or more image targets. Assuming the manufacturing entity has been created and defined in the <code class="docutils literal notranslate"><span class="pre">mfgs/&lt;mfg</span> <span class="pre">image</span> <span class="pre">name&gt;/</span></code> package (see Examples below), this command collects the manufacturing related files in the newly created <code class="docutils literal notranslate"><span class="pre">bin/mfgs/&lt;mfg</span> <span class="pre">image</span> <span class="pre">name&gt;</span></code> directory. The collection includes the image file, the hex file, and the manifests with the image build time, version, manufacturing package build time, image ID (or hash) etc. It is essentially a snapshot of the image data and metadata uploaded to the device flash at manufacturing time. Note that the command expects the targets and images to have already been built using <code class="docutils literal notranslate"><span class="pre">newt</span> <span class="pre">build</span></code> and <code class="docutils literal notranslate"><span class="pre">newt</span> <span class="pre">create-image</span></code> commands.</p></td>
</tr>
<tr class="row-odd"><td><p>deploy</p></td>
<td><p>A combination of build and load commands to put together and upload manufacturing image on to the device.</p></td>
</tr>
<tr class="row-even"><td><p>load</p></td>
<td><p>Loads the manufacturing package onto to the flash of the connected device.</p></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="examples">
<h2>Examples<a class="headerlink" href="#examples" title="Permalink to this headline">ΒΆ</a></h2>
<p>Suppose you have created two targets (one for the bootloader and one for the <code class="docutils literal notranslate"><span class="pre">blinky</span></code> app).</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>newt<span class="w"> </span>target<span class="w"> </span>show
<span class="go">targets/my_blinky_sim</span>
<span class="go"> app=apps/blinky</span>
<span class="go"> bsp=@apache-mynewt-core/hw/bsp/native</span>
<span class="go"> build_profile=debug</span>
<span class="go">targets/rb_blinky</span>
<span class="go"> app=apps/blinky</span>
<span class="go"> bsp=@apache-mynewt-core/hw/bsp/rb-nano2</span>
<span class="go"> build_profile=debug</span>
<span class="go">targets/rb_boot</span>
<span class="go"> app=@apache-mynewt-core/apps/boot</span>
<span class="go"> bsp=@apache-mynewt-core/hw/bsp/rb-nano2</span>
<span class="go"> build_profile=optimized</span>
</pre></div>
</div>
<p>Create the directory to hold the mfg packages.</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>mkdir<span class="w"> </span>-p<span class="w"> </span>mfgs/rb_blinky_rsa
</pre></div>
</div>
<p>The <code class="docutils literal notranslate"><span class="pre">rb_blinky_rsa</span></code> package needs a pkg.yml file. In addition it is needs a mfg.yml file to specify the two constituent targets. An example of each file is shown below.</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>more<span class="w"> </span>mfgs/rb_blinky_rsa/pkg.yml
<span class="go">pkg.name: &quot;mfgs/rb_blinky_rsa&quot;</span>
<span class="go">pkg.type: &quot;mfg&quot;</span>
<span class="go">pkg.description:</span>
<span class="go">pkg.author:</span>
<span class="go">pkg.homepage:</span>
</pre></div>
</div>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>more<span class="w"> </span>mfgs/rb_blinky_rsa/mfg.yml
<span class="go">mfg.bootloader: &#39;targets/rb_boot&#39;</span>
<span class="go">mfg.images:</span>
<span class="go"> - &#39;targets/rb_blinky&#39;</span>
</pre></div>
</div>
<p>Build the bootloader and app images.</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>newt<span class="w"> </span>build<span class="w"> </span>rb_boot
<span class="gp">$ </span>newt<span class="w"> </span>create-image<span class="w"> </span>rb_blinky<span class="w"> </span><span class="m">0</span>.0.1
</pre></div>
</div>
<p>Run the <code class="docutils literal notranslate"><span class="pre">newt</span> <span class="pre">mfg</span> <span class="pre">create</span></code> command to collect all the manufacturing snapshot files.</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>newt<span class="w"> </span>mfg<span class="w"> </span>create<span class="w"> </span>rb_blinky_rsa<span class="w"> </span><span class="m">0</span>.0.1
<span class="go">Creating a manufacturing image from the following files:</span>
<span class="go">&lt;snip&gt;</span>
<span class="go">Generated the following files:</span>
<span class="go">&lt;snip&gt;</span>
</pre></div>
</div>
</div>
</div>
</div>
</div>
<div class="rst-footer-buttons row" role="navigation" aria-label="footer navigation">
<a href="newt_new.html" class="btn btn-neutral float-right" title="newt new" accesskey="n">Next: newt new <span class="fa fa-arrow-circle-right"></span></a>
<a href="newt_load.html" class="btn btn-neutral" title="newt load" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous: newt load</a>
</div>
</div>
</div>
</div>
<!-- ENDS CONTENT SECTION -->
</div>
<!-- ENDS .content -->
</div>
</div>
<footer>
<div class="container">
<div 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">
<img src="../../_static/img/asf_logo_wide_small.png" alt="Apache" title="Apache">
<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>
<a href="">
<img src="../../_static/img/add_to_slack.png" alt="Slack Icon" title="Join our Slack Community" />
</a>
</div>
</div>
</div>
</div>
</footer>
</div>
<!-- ENDS #wrapper -->
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../../',
VERSION:'latest',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: '.txt',
LINK_SUFFIX: '.html'
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/bootstrap-3.0.3.min.js"></script>
<script type="text/javascript" src="../../_static/js/affix.js"></script>
<script type="text/javascript" src="../../_static/js/main.js"></script>
</body>
</html>