blob: 3c00f4fad4c9bec88d5bff2c653504f0295cb719 [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 - Drivers and Modules &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 - File System" href="fs_faq.html"/>
<link rel="prev" title="Mynewt FAQ - Bootloader and Firmware Upgrade" href="boot_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 - Drivers and Modules
<div class="sourcelink">
<a href="https://github.com/apache/mynewt-documentation/edit/master/docs/mynewt_faq/modules_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" selected="selected" >
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" >
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"><a class="reference internal" href="boot_faq.html">Bootloader and Firmware Upgrade</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">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.10.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-drivers-and-modules">
<h1>Mynewt FAQ - Drivers and Modules<a class="headerlink" href="#mynewt-faq-drivers-and-modules" title="Permalink to this headline"></a></h1>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><p><a class="reference internal" href="#drivers-in-mynewt" id="id1">Drivers in Mynewt</a></p></li>
<li><p><a class="reference internal" href="#module-argument-in-mynewt-logging-library" id="id2">Module Argument in Mynewt Logging Library</a></p></li>
<li><p><a class="reference internal" href="#log-name-vs-module-number" id="id3">Log Name vs. Module Number</a></p></li>
</ul>
</div>
<div class="section" id="drivers-in-mynewt">
<h2><a class="toc-backref" href="#id1">Drivers in Mynewt</a><a class="headerlink" href="#drivers-in-mynewt" title="Permalink to this headline"></a></h2>
<p><strong>Q</strong>: Is this a correct assumption about Mynewt, that if there exists no driver implementation for a specific SoC,
in <code class="docutils literal notranslate"><span class="pre">hw/drivers/</span></code>, then it is not supported. For instance, there exists a flash driver for <code class="docutils literal notranslate"><span class="pre">at45db</span></code>, this implies
that the Nordic nRF52 SoC is not supported at the moment?</p>
<p><strong>A</strong>: <code class="docutils literal notranslate"><span class="pre">at45db</span></code> is SPI, and any SPI would work. You send SPI configuration info when initializing. SPI drivers are below
the <code class="docutils literal notranslate"><span class="pre">hw/mcu/</span></code> tree. <code class="docutils literal notranslate"><span class="pre">hw/drivers/pwm</span></code> and <code class="docutils literal notranslate"><span class="pre">hw/drivers/adc</span></code> are SoC specific. In general, drivers are for peripherals
that aren’t universally supported. Features that all (or nearly all) MCUs support are implemented in the HAL. For example,
internal flash support is a HAL feature. Visit the <a class="reference internal" href="../os/modules/hal/hal.html"><span class="doc">HAL Documentation</span></a> for more information.</p>
</div>
<div class="section" id="module-argument-in-mynewt-logging-library">
<h2><a class="toc-backref" href="#id2">Module Argument in Mynewt Logging Library</a><a class="headerlink" href="#module-argument-in-mynewt-logging-library" title="Permalink to this headline"></a></h2>
<p><strong>Q</strong>: Can you tell me what the purpose of the module argument is in the Mynewt logging library? It looks like it just
takes an <code class="docutils literal notranslate"><span class="pre">int</span></code>. Is this just to assign an integer ID for each module that logs?</p>
<p><strong>A</strong>: It is just an integer which accompanies each log entry. It provides context for each log entry, and it allows a
client to filter messages based on module (e.g. “give me all the file system log entries”).</p>
</div>
<div class="section" id="log-name-vs-module-number">
<h2><a class="toc-backref" href="#id3">Log Name vs. Module Number</a><a class="headerlink" href="#log-name-vs-module-number" title="Permalink to this headline"></a></h2>
<p><strong>Q</strong>: So, what is the conceptual difference between a log name, and a module number? It seems like a log type would be
assigned the same name as the module that is using it, and that the module number is just a numerical ID for the module.
Basically, I don’t understand what the purpose of storing the name into the log type is, and passing the module number
in as part of <code class="docutils literal notranslate"><span class="pre">LOG_&lt;LEVEL&gt;</span></code> macro.</p>
<p><strong>A</strong>: A log just represents a medium or region of storage (e.g., “console”, or “flash circular buffer in 12kB of flash,
starting at 0x0007d000”). Many parts of the system can write to the same log, so you may end up with Bluetooth, file
system, and kernel scheduler entries all in the same log. The module ID distinguishes these entries from one another.
You can control level per module, so you can say, “give me all bluetooth warnings, but only give me system level errors”.</p>
<p><strong>Q</strong>: Okay, so for something like console logging, we would likely register one log for the entire application, and give
each module an ID?</p>
<p><strong>A</strong>: I think the thought is that would be the debug log, and during development you could pipe that to console. In production,
that might go in the spare image slot. I’m not sure if we support it yet, but we should make sure the log can write to multiple
handlers at the same time.</p>
</div>
</div>
</div>
</div>
<div class="rst-footer-buttons row" role="navigation" aria-label="footer navigation">
<a href="fs_faq.html" class="btn btn-neutral float-right" title="Mynewt FAQ - File System" accesskey="n">Next: Mynewt FAQ - File System <span class="fa fa-arrow-circle-right"></span></a>
<a href="boot_faq.html" class="btn btn-neutral" title="Mynewt FAQ - Bootloader and Firmware Upgrade" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous: Mynewt FAQ - Bootloader and Firmware Upgrade</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>