blob: 0feb2101501dfd22b697d7b7411f370fd969ca84 [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>System &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"/>
<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> /
System
<div class="sourcelink">
<a href="https://github.com/apache/mynewt-core/edit/master/docs/os/modules/hal/hal_system/hal_sys.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>
<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_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"><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="system">
<h1>System<a class="headerlink" href="#system" title="Permalink to this headline"></a></h1>
<p>A hardware independent interface for starting and resetting the system.</p>
<div class="section" id="description">
<h2>Description<a class="headerlink" href="#description" title="Permalink to this headline"></a></h2>
<p>The API allows the user to detect whether a debugger is connected,
sissue a soft reset, and enumerate the reset causes. The functions are
implemented in the MCU specific directories e.g. <code class="docutils literal notranslate"><span class="pre">hal_reset_cause.c</span></code>,
<code class="docutils literal notranslate"><span class="pre">hal_system.c</span></code>, and <code class="docutils literal notranslate"><span class="pre">hal_system_start.c</span></code> in
<code class="docutils literal notranslate"><span class="pre">/hw/mcu/nordic/nrf52xxx/src/</span></code> directory for Nordic nRF52 series of
chips.</p>
</div>
<div class="section" id="api">
<h2>API<a class="headerlink" href="#api" title="Permalink to this headline"></a></h2>
<dl class="c enum">
<dt id="c.hal_reset_reason">
<span class="target" id="group___h_a_l_system_1ga09b5ea025a6a638b45a7276b1e572924"></span><em class="property"><span class="pre">enum</span> </em><code class="sig-name descname"><span class="pre">hal_reset_reason</span></code><a class="headerlink" href="#c.hal_reset_reason" title="Permalink to this definition"></a><br /></dt>
<dd><p>Reboot reason. </p>
<p><em>Values:</em></p>
<dl class="c enumerator">
<dt id="c.hal_reset_reason.HAL_RESET_POR">
<span class="target" id="group___h_a_l_system_1gga09b5ea025a6a638b45a7276b1e572924a0f0d1b68f623da5384b142a5ffef142a"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">HAL_RESET_POR</span></code><a class="headerlink" href="#c.hal_reset_reason.HAL_RESET_POR" title="Permalink to this definition"></a><br /></dt>
<dd><p>Power on Reset. </p>
</dd></dl>
<dl class="c enumerator">
<dt id="c.hal_reset_reason.HAL_RESET_PIN">
<span class="target" id="group___h_a_l_system_1gga09b5ea025a6a638b45a7276b1e572924a8d2581c07d1dfde7244d5b09ecfdd1ce"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">HAL_RESET_PIN</span></code><a class="headerlink" href="#c.hal_reset_reason.HAL_RESET_PIN" title="Permalink to this definition"></a><br /></dt>
<dd><p>Caused by Reset Pin. </p>
</dd></dl>
<dl class="c enumerator">
<dt id="c.hal_reset_reason.HAL_RESET_WATCHDOG">
<span class="target" id="group___h_a_l_system_1gga09b5ea025a6a638b45a7276b1e572924a69a2e98907a3824bd58513a162940a84"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">HAL_RESET_WATCHDOG</span></code><a class="headerlink" href="#c.hal_reset_reason.HAL_RESET_WATCHDOG" title="Permalink to this definition"></a><br /></dt>
<dd><p>Caused by Watchdog. </p>
</dd></dl>
<dl class="c enumerator">
<dt id="c.hal_reset_reason.HAL_RESET_SOFT">
<span class="target" id="group___h_a_l_system_1gga09b5ea025a6a638b45a7276b1e572924abb5acfff3c2b181ad87a781918ca5526"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">HAL_RESET_SOFT</span></code><a class="headerlink" href="#c.hal_reset_reason.HAL_RESET_SOFT" title="Permalink to this definition"></a><br /></dt>
<dd><p>Soft reset, either system reset or crash. </p>
</dd></dl>
<dl class="c enumerator">
<dt id="c.hal_reset_reason.HAL_RESET_BROWNOUT">
<span class="target" id="group___h_a_l_system_1gga09b5ea025a6a638b45a7276b1e572924a54dd29c8d0eb2b272bde3294a2e48a3c"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">HAL_RESET_BROWNOUT</span></code><a class="headerlink" href="#c.hal_reset_reason.HAL_RESET_BROWNOUT" title="Permalink to this definition"></a><br /></dt>
<dd><p>Low supply voltage. </p>
</dd></dl>
<dl class="c enumerator">
<dt id="c.hal_reset_reason.HAL_RESET_REQUESTED">
<span class="target" id="group___h_a_l_system_1gga09b5ea025a6a638b45a7276b1e572924abf3b4b4329a9afc456c43f9ceb227dd3"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">HAL_RESET_REQUESTED</span></code><a class="headerlink" href="#c.hal_reset_reason.HAL_RESET_REQUESTED" title="Permalink to this definition"></a><br /></dt>
<dd><p>Restart due to user request. </p>
</dd></dl>
<dl class="c enumerator">
<dt id="c.hal_reset_reason.HAL_RESET_SYS_OFF_INT">
<span class="target" id="group___h_a_l_system_1gga09b5ea025a6a638b45a7276b1e572924ae0db49386dd85a656183ade38b5a12a9"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">HAL_RESET_SYS_OFF_INT</span></code><a class="headerlink" href="#c.hal_reset_reason.HAL_RESET_SYS_OFF_INT" title="Permalink to this definition"></a><br /></dt>
<dd><p>System Off, wakeup on external interrupt. </p>
</dd></dl>
</dd></dl>
<dl class="c function">
<dt>
<span class="target" id="group___h_a_l_system_1ga298b06e8955f8c64886e851dffe2dd96"></span><code class="sig-name descname"><span class="pre">void</span> <span class="pre">hal_system_reset</span> <span class="pre">(void)</span> <span class="pre">__attribute((noreturn))</span></code></dt>
<dd><p>System reset. </p>
</dd></dl>
<dl class="c function">
<dt>
<span class="target" id="group___h_a_l_system_1ga0edf69888576dcebf13be54592322286"></span><code class="sig-name descname"><span class="pre">void</span> <span class="pre">hal_system_start</span> <span class="pre">(void</span> <span class="pre">*img_start)</span> <span class="pre">__attribute((noreturn))</span></code></dt>
<dd><p>Called by bootloader to start loaded program. </p>
</dd></dl>
<dl class="c function">
<dt>
<span class="target" id="group___h_a_l_system_1ga98fc967d38f29dd2c1388ccdf13f0fe5"></span><code class="sig-name descname"><span class="pre">void</span> <span class="pre">hal_system_restart</span> <span class="pre">(void</span> <span class="pre">*img_start)</span> <span class="pre">__attribute((noreturn))</span></code></dt>
<dd><p>Called by split app loader to start the app program. </p>
</dd></dl>
<dl class="c function">
<dt id="c.hal_debugger_connected">
<span class="target" id="group___h_a_l_system_1gad043ab91f977ec307638f6ecc309dfdb"></span><span class="pre">int</span> <code class="sig-name descname"><span class="pre">hal_debugger_connected</span></code><span class="sig-paren">(</span><span class="pre">void</span><span class="sig-paren">)</span><a class="headerlink" href="#c.hal_debugger_connected" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns non-zero if there is a HW debugger attached. </p>
</dd></dl>
<dl class="c function">
<dt id="c.hal_reset_cause">
<span class="target" id="group___h_a_l_system_1gaa5c34b0ed27b5b987eac78702c671854"></span><em class="property"><span class="pre">enum</span></em> <a class="reference internal" href="#c.hal_reset_reason" title="hal_reset_reason"><span class="pre">hal_reset_reason</span></a> <code class="sig-name descname"><span class="pre">hal_reset_cause</span></code><span class="sig-paren">(</span><span class="pre">void</span><span class="sig-paren">)</span><a class="headerlink" href="#c.hal_reset_cause" title="Permalink to this definition"></a><br /></dt>
<dd><p>Return the reboot reason. </p>
<p><dl class="simple">
<dt><strong>Return</strong></dt><dd><p>A reboot reason </p>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c function">
<dt id="c.hal_reset_cause_str">
<span class="target" id="group___h_a_l_system_1ga3a5baa89a77180b7b72185134e3c2cf1"></span><em class="property"><span class="pre">const</span></em> <span class="pre">char</span> <span class="pre">*</span><code class="sig-name descname"><span class="pre">hal_reset_cause_str</span></code><span class="sig-paren">(</span><span class="pre">void</span><span class="sig-paren">)</span><a class="headerlink" href="#c.hal_reset_cause_str" title="Permalink to this definition"></a><br /></dt>
<dd><p>Return the reboot reason as a string. </p>
<p><dl class="simple">
<dt><strong>Return</strong></dt><dd><p>String describing previous reset reason </p>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c function">
<dt id="c.hal_system_clock_start">
<span class="target" id="group___h_a_l_system_1ga40d3f16e48773bf0c4cfa7b79b31b6f8"></span><span class="pre">void</span> <code class="sig-name descname"><span class="pre">hal_system_clock_start</span></code><span class="sig-paren">(</span><span class="pre">void</span><span class="sig-paren">)</span><a class="headerlink" href="#c.hal_system_clock_start" title="Permalink to this definition"></a><br /></dt>
<dd><p>Starts clocks needed by system. </p>
</dd></dl>
<dl class="c function">
<dt id="c.hal_system_reset_cb">
<span class="target" id="group___h_a_l_system_1ga210966833f4ac91398f350456f80ee06"></span><span class="pre">void</span> <code class="sig-name descname"><span class="pre">hal_system_reset_cb</span></code><span class="sig-paren">(</span><span class="pre">void</span><span class="sig-paren">)</span><a class="headerlink" href="#c.hal_system_reset_cb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Reset callback to be called before an reset happens inside <a class="reference internal" href="#group___h_a_l_system_1ga298b06e8955f8c64886e851dffe2dd96"><span class="std std-ref">hal_system_reset()</span></a> </p>
</dd></dl>
</div>
</div>
</div>
</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>