blob: c640d4a9ae662561df7c84aaffe51077c1210dd7 [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>Mynewt FAQ - Bootloader and Firmware Upgrade &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="Mynewt FAQ" href="index.html"/>
<link rel="next" title="Mynewt FAQ - Drivers and Modules" href="modules_faq.html"/>
<link rel="prev" title="Mynewt FAQ - Bluetooth" href="bluetooth_faq.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">Mynewt FAQ</a> /
Mynewt FAQ - Bootloader and Firmware Upgrade
<div class="sourcelink">
<a href="https://github.com/apache/mynewt-documentation/edit/master/docs/mynewt_faq/boot_faq.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" selected="selected" >
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" >
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"><a class="reference internal" href="../newt/index.html">Newt Tool Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../newtmgr/index.html">Newt Manager Guide</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Mynewt FAQ</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="admin_faq.html">Administrative</a></li>
<li class="toctree-l2"><a class="reference internal" href="bluetooth_faq.html">Bluetooth</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Bootloader and Firmware Upgrade</a></li>
<li class="toctree-l2"><a class="reference internal" href="modules_faq.html">Drivers and Modules</a></li>
<li class="toctree-l2"><a class="reference internal" href="fs_faq.html">File System</a></li>
<li class="toctree-l2"><a class="reference internal" href="hardware_faq.html">Hardware-Specific</a></li>
<li class="toctree-l2"><a class="reference internal" href="syntax_faq.html">Mynewt Syntax and Semantics</a></li>
<li class="toctree-l2"><a class="reference internal" href="nfc_faq.html">NFC</a></li>
<li class="toctree-l2"><a class="reference internal" href="newt_faq.html">Newt</a></li>
<li class="toctree-l2"><a class="reference internal" href="newtmgr_faq.html">Newt Manager</a></li>
<li class="toctree-l2"><a class="reference internal" href="port_faq.html">Porting Mynewt</a></li>
<li class="toctree-l2"><a class="reference internal" href="troubleshoot_faq.html">Troubleshooting</a></li>
</ul>
</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.8.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="mynewt-faq-bootloader-and-firmware-upgrade">
<h1>Mynewt FAQ - Bootloader and Firmware Upgrade<a class="headerlink" href="#mynewt-faq-bootloader-and-firmware-upgrade" title="Permalink to this headline"></a></h1>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><p><a class="reference internal" href="#firmware-upgrade-capability" id="id1">Firmware Upgrade Capability</a></p></li>
<li><p><a class="reference internal" href="#bootloader-documentation" id="id2">Bootloader Documentation</a></p></li>
<li><p><a class="reference internal" href="#mcuboot-vs-mynewt-bootloader" id="id3">MCUboot vs. Mynewt Bootloader</a></p></li>
<li><p><a class="reference internal" href="#boot-serial-vs-bootutil" id="id4"><code class="docutils literal notranslate"><span class="pre">boot_serial</span></code> vs. <code class="docutils literal notranslate"><span class="pre">bootutil</span></code></a></p></li>
</ul>
</div>
<div class="section" id="firmware-upgrade-capability">
<h2><a class="toc-backref" href="#id1">Firmware Upgrade Capability</a><a class="headerlink" href="#firmware-upgrade-capability" title="Permalink to this headline"></a></h2>
<p><strong>Q</strong>: I wanted to check if the stack provides firmware upgrade capability and if so, is there an example you can
provide on how it is being done?</p>
<p><strong>A</strong>: The <code class="docutils literal notranslate"><span class="pre">newtmgr</span></code> tool is used to upgrade Mynewt devices. <code class="docutils literal notranslate"><span class="pre">newtmgr</span></code> is a command line tool, but there are
other client libraries available. There is some information listed under the “Image Upgrade” header in the
<a class="reference internal" href="../os/modules/split/split.html"><span class="doc">Split Image documentation</span></a>.</p>
</div>
<div class="section" id="bootloader-documentation">
<h2><a class="toc-backref" href="#id2">Bootloader Documentation</a><a class="headerlink" href="#bootloader-documentation" title="Permalink to this headline"></a></h2>
<p><strong>Q</strong>: Is there any documentation on using the bootloader? It sounds like it has baked-in support for serial loading,
but I can’t find any details on serial protocol, or how to do a serial boot load. I assume we set a <code class="docutils literal notranslate"><span class="pre">GPREGRET</span></code>
flag that tells the bootloader to expect to be flashed by serial, then it handles the rest. Is that true?</p>
<p><strong>A</strong>: The serial bootloader would inspect a GPIO to see whether to wait for image upload commands or not. The protocol
is the same newtmgr protocol we use for usual image uploads. For some the state reporting is simplified (omitted), and
image upload goes to slot 0 instead of slot 1. The serial bootloading is built into newtmgr. For more information, refer
to the documentation on the <a class="reference internal" href="../os/modules/bootloader/bootloader.html"><span class="doc">Mynewt bootloader</span></a>.</p>
</div>
<div class="section" id="mcuboot-vs-mynewt-bootloader">
<h2><a class="toc-backref" href="#id3">MCUboot vs. Mynewt Bootloader</a><a class="headerlink" href="#mcuboot-vs-mynewt-bootloader" title="Permalink to this headline"></a></h2>
<p><strong>Q</strong>: Is there any major difference between MCUboot and the Mynewt bootloader?</p>
<p><strong>A</strong>: They use different formats. The header is different as well, since you need to pass an extra flag
(e.g. -2 to newt for <code class="docutils literal notranslate"><span class="pre">create-image</span></code> for MCUboot). Visit the MCUboot page for more documentation.</p>
</div>
<div class="section" id="boot-serial-vs-bootutil">
<h2><a class="toc-backref" href="#id4"><code class="docutils literal notranslate"><span class="pre">boot_serial</span></code> vs. <code class="docutils literal notranslate"><span class="pre">bootutil</span></code></a><a class="headerlink" href="#boot-serial-vs-bootutil" title="Permalink to this headline"></a></h2>
<p><strong>Q</strong>: What is the difference between <code class="docutils literal notranslate"><span class="pre">boot_serial</span></code> and <code class="docutils literal notranslate"><span class="pre">bootutil</span></code>?</p>
<p><strong>A</strong>: <code class="docutils literal notranslate"><span class="pre">boot_serial</span></code> is used only for downloading images over the serial port. If you are using newtmgr to upload
image over serial, it is handled in <code class="docutils literal notranslate"><span class="pre">boot_serial</span></code>. All other bootloader code is in <code class="docutils literal notranslate"><span class="pre">bootutil</span></code>.</p>
</div>
</div>
</div>
</div>
<div class="rst-footer-buttons row" role="navigation" aria-label="footer navigation">
<a href="modules_faq.html" class="btn btn-neutral float-right" title="Mynewt FAQ - Drivers and Modules" accesskey="n">Next: Mynewt FAQ - Drivers and Modules <span class="fa fa-arrow-circle-right"></span></a>
<a href="bluetooth_faq.html" class="btn btn-neutral" title="Mynewt FAQ - Bluetooth" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous: Mynewt FAQ - Bluetooth</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>