blob: da9085e8f90389450485a830d728ae54b67e1776 [file] [log] [blame]
<!--
Documentation/_templates/layout.html
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership. The
ASF licenses this file to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance with the
License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
-->
<!DOCTYPE html>
<html class="writer-html5" lang="en">
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Implementation Details &mdash; NuttX latest documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css" />
<link rel="stylesheet" type="text/css" href="../_static/copybutton.css" />
<link rel="stylesheet" type="text/css" href="../_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css" />
<link rel="stylesheet" type="text/css" href="../_static/custom.css" />
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<script src="../_static/jquery.js"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js"></script>
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/sphinx_highlight.js"></script>
<script src="../_static/clipboard.min.js"></script>
<script src="../_static/copybutton.js"></script>
<script src="../_static/design-tabs.js"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="OS Drivers Design" href="drivers_design.html" />
<link rel="prev" title="zerocross Zero Crossing Device" href="../applications/examples/zerocross/index.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home"> NuttX
</a>
<!-- this version selector is quite ugly, should be probably replaced by something
more modern -->
<div class="version-selector">
<select onchange="javascript:location.href = this.value;">
<option value="../../latest" selected="selected">latest</option>
<option value="../../10.0.0" >10.0.0</option>
<option value="../../10.0.1" >10.0.1</option>
<option value="../../10.1.0" >10.1.0</option>
<option value="../../10.2.0" >10.2.0</option>
<option value="../../10.3.0" >10.3.0</option>
<option value="../../11.0.0" >11.0.0</option>
<option value="../../12.0.0" >12.0.0</option>
<option value="../../12.1.0" >12.1.0</option>
<option value="../../12.2.0" >12.2.0</option>
<option value="../../12.2.1" >12.2.1</option>
<option value="../../12.3.0" >12.3.0</option>
<option value="../../12.4.0" >12.4.0</option>
<option value="../../12.5.0" >12.5.0</option>
<option value="../../12.5.1" >12.5.1</option>
<option value="../../12.6.0" >12.6.0</option>
<option value="../../12.7.0" >12.7.0</option>
<option value="../../12.8.0" >12.8.0</option>
<option value="../../12.9.0" >12.9.0</option>
<option value="../../12.10.0" >12.10.0</option>
<option value="../../12.11.0" >12.11.0</option>
</select>
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Table of Contents</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../index.html">Home</a></li>
<li class="toctree-l1"><a class="reference internal" href="../introduction/index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../quickstart/index.html">Getting Started</a></li>
<li class="toctree-l1"><a class="reference internal" href="../contributing/index.html">Contributing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../introduction/inviolables.html">The Inviolable Principles of NuttX</a></li>
<li class="toctree-l1"><a class="reference internal" href="../platforms/index.html">Supported Platforms</a></li>
<li class="toctree-l1"><a class="reference internal" href="../components/index.html">OS Components</a></li>
<li class="toctree-l1"><a class="reference internal" href="../applications/index.html">Applications</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Implementation Details</a><ul>
<li class="toctree-l2"><a class="reference internal" href="drivers_design.html">OS Drivers Design</a></li>
<li class="toctree-l2"><a class="reference internal" href="device_drivers.html">Device Drivers</a></li>
<li class="toctree-l2"><a class="reference internal" href="processes_vs_tasks.html">Linux Processes vs NuttX Tasks</a></li>
<li class="toctree-l2"><a class="reference internal" href="critical_sections.html">Critical Sections</a></li>
<li class="toctree-l2"><a class="reference internal" href="interrupt_controls.html">Per-Thread Interrupt Controls</a></li>
<li class="toctree-l2"><a class="reference internal" href="preemption_latency.html">Effects of Disabling Interrupts or Pre-Emption on Response Latency</a></li>
<li class="toctree-l2"><a class="reference internal" href="bottomhalf_interrupt.html">Bottom-Half Interrupt Handlers</a></li>
<li class="toctree-l2"><a class="reference internal" href="simulation.html">The NuttX Simulation</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../reference/index.html">API Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">FAQ</a></li>
<li class="toctree-l1"><a class="reference internal" href="../debugging/index.html">Debugging</a></li>
<li class="toctree-l1"><a class="reference internal" href="../guides/index.html">Guides</a></li>
<li class="toctree-l1"><a class="reference internal" href="../glossary.html">Glossary</a></li>
<li class="toctree-l1"><a class="reference internal" href="../logos/index.html">NuttX Logos</a></li>
<li class="toctree-l1"><a class="reference internal" href="../_tags/tagsindex.html">Tags</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">NuttX</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item active">Implementation Details</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/apache/nuttx/blob/master/Documentation/implementation/index.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="implementation-details">
<h1>Implementation Details<a class="headerlink" href="#implementation-details" title="Permalink to this heading"></a></h1>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="drivers_design.html">OS Drivers Design</a><ul>
<li class="toctree-l2"><a class="reference internal" href="drivers_design.html#character-and-block-drivers">Character and Block Drivers</a></li>
<li class="toctree-l2"><a class="reference internal" href="drivers_design.html#mtd-drivers">MTD Drivers</a></li>
<li class="toctree-l2"><a class="reference internal" href="drivers_design.html#monolithic-drivers">Monolithic Drivers</a></li>
<li class="toctree-l2"><a class="reference internal" href="drivers_design.html#upper-half-and-lower-half-drivers">Upper Half and Lower Half Drivers</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="device_drivers.html">Device Drivers</a><ul>
<li class="toctree-l2"><a class="reference internal" href="device_drivers.html#standard-device-drivers">Standard Device Drivers</a></li>
<li class="toctree-l2"><a class="reference internal" href="device_drivers.html#bus-drivers">Bus Drivers</a></li>
<li class="toctree-l2"><a class="reference internal" href="device_drivers.html#test-drivers">Test Drivers</a></li>
<li class="toctree-l2"><a class="reference internal" href="device_drivers.html#user-space-drivers">User Space Drivers</a></li>
<li class="toctree-l2"><a class="reference internal" href="device_drivers.html#communication-devices">Communication Devices</a></li>
<li class="toctree-l2"><a class="reference internal" href="device_drivers.html#i-o-expander">I/O Expander</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="processes_vs_tasks.html">Linux Processes vs NuttX Tasks</a><ul>
<li class="toctree-l2"><a class="reference internal" href="processes_vs_tasks.html#nuttx-build-types">NuttX Build Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="processes_vs_tasks.html#initialization-of-global-variables">Initialization of Global Variables</a></li>
<li class="toctree-l2"><a class="reference internal" href="processes_vs_tasks.html#global-variables-and-multiple-task-copies">Global Variables and Multiple Task Copies</a></li>
<li class="toctree-l2"><a class="reference internal" href="processes_vs_tasks.html#memory-clean-up">Memory Clean-Up</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="critical_sections.html">Critical Sections</a><ul>
<li class="toctree-l2"><a class="reference internal" href="critical_sections.html#types-and-effects-of-critical-sections">Types and Effects of Critical Sections</a></li>
<li class="toctree-l2"><a class="reference internal" href="critical_sections.html#single-cpu-critical-sections">Single CPU Critical Sections</a></li>
<li class="toctree-l2"><a class="reference internal" href="critical_sections.html#smp-critical-sections">SMP Critical Sections</a></li>
<li class="toctree-l2"><a class="reference internal" href="critical_sections.html#the-critical-section-monitor">The Critical Section Monitor</a></li>
<li class="toctree-l2"><a class="reference internal" href="critical_sections.html#irq-monitor-and-worst-case-response-time">IRQ Monitor and Worst Case Response Time</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="interrupt_controls.html">Per-Thread Interrupt Controls</a></li>
<li class="toctree-l1"><a class="reference internal" href="preemption_latency.html">Effects of Disabling Interrupts or Pre-Emption on Response Latency</a><ul>
<li class="toctree-l2"><a class="reference internal" href="preemption_latency.html#rate-monotonic-scheduling">Rate Monotonic Scheduling</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="bottomhalf_interrupt.html">Bottom-Half Interrupt Handlers</a><ul>
<li class="toctree-l2"><a class="reference internal" href="bottomhalf_interrupt.html#rtos-interrupts">RTOS Interrupts</a></li>
<li class="toctree-l2"><a class="reference internal" href="bottomhalf_interrupt.html#extending-interrupt-processing">Extending interrupt processing</a></li>
<li class="toctree-l2"><a class="reference internal" href="bottomhalf_interrupt.html#high-priority-work-queue">High Priority Work Queue</a></li>
<li class="toctree-l2"><a class="reference internal" href="bottomhalf_interrupt.html#setting-up-bottom-half-interrupt-processing">Setting Up Bottom Half Interrupt Processing</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="simulation.html">The NuttX Simulation</a><ul>
<li class="toctree-l2"><a class="reference internal" href="simulation.html#how-the-simulator-is-built">How the Simulator is Built</a></li>
<li class="toctree-l2"><a class="reference internal" href="simulation.html#the-nuttx-rel-blob">The nuttx.rel Blob</a></li>
<li class="toctree-l2"><a class="reference internal" href="simulation.html#the-hostobj-blob">The $(HOSTOBJ) Blob</a></li>
<li class="toctree-l2"><a class="reference internal" href="simulation.html#accessing-host-devices-using-fifos">Accessing Host Devices Using FIFOs?</a></li>
<li class="toctree-l2"><a class="reference internal" href="simulation.html#toward-a-general-design">Toward a General Design</a></li>
<li class="toctree-l2"><a class="reference internal" href="simulation.html#what-is-wrong-with-that">What is Wrong With That?</a></li>
<li class="toctree-l2"><a class="reference internal" href="simulation.html#simulated-interrupts">Simulated Interrupts</a></li>
<li class="toctree-l2"><a class="reference internal" href="simulation.html#supported-devices">Supported Devices</a></li>
</ul>
</li>
</ul>
</div>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="../applications/examples/zerocross/index.html" class="btn btn-neutral float-left" title="zerocross Zero Crossing Device" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="drivers_design.html" class="btn btn-neutral float-right" title="OS Drivers Design" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2023, The Apache Software Foundation.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>