blob: 136fbad8bd91bc111de8478e6255c43d3e5b5583 [file] [edit]
<!DOCTYPE HTML>
<html lang="en" class="light" dir="ltr">
<head>
<!-- sidebar iframe generated using mdBook
This is a frame, and not included directly in the page, to control the total size of the
book. The TOC contains an entry for each page, so if each page includes a copy of the TOC,
the total size of the page becomes O(n**2).
The frame is only used as a fallback when JS is turned off. When it's on, the sidebar is
instead added to the main page by `toc.js` instead. The JavaScript mode is better
because, when running in a `file:///` URL, the iframed page would not be Same-Origin as
the rest of the page, so the sidebar and the main page theme would fall out of sync.
-->
<meta charset="UTF-8">
<meta name="robots" content="noindex">
<!-- Custom HTML head -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#ffffff">
<link rel="stylesheet" href="css/variables-8adf115d.css">
<link rel="stylesheet" href="css/general-2459343d.css">
<link rel="stylesheet" href="css/chrome-ae938929.css">
<link rel="stylesheet" href="css/print-9e4910d8.css" media="print">
<!-- Fonts -->
<link rel="stylesheet" href="fonts/fonts-9644e21d.css">
<!-- Custom theme stylesheets -->
</head>
<body class="sidebar-iframe-inner">
<ol class="chapter"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="intro/index.html" target="_parent"><strong aria-hidden="true">1.</strong> Introduction</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="intro/hardware.html" target="_parent"><strong aria-hidden="true">1.1.</strong> Hardware</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="intro/no-std.html" target="_parent"><strong aria-hidden="true">1.2.</strong> no_std</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="intro/tooling.html" target="_parent"><strong aria-hidden="true">1.3.</strong> Tooling</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="intro/install.html" target="_parent"><strong aria-hidden="true">1.4.</strong> Installation</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="intro/install/linux.html" target="_parent"><strong aria-hidden="true">1.4.1.</strong> Linux</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="intro/install/macos.html" target="_parent"><strong aria-hidden="true">1.4.2.</strong> MacOS</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="intro/install/windows.html" target="_parent"><strong aria-hidden="true">1.4.3.</strong> Windows</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="intro/install/verify.html" target="_parent"><strong aria-hidden="true">1.4.4.</strong> Verify Installation</a></span></li></ol></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="start/index.html" target="_parent"><strong aria-hidden="true">2.</strong> Getting started</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="start/qemu.html" target="_parent"><strong aria-hidden="true">2.1.</strong> QEMU</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="start/hardware.html" target="_parent"><strong aria-hidden="true">2.2.</strong> Hardware</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="start/registers.html" target="_parent"><strong aria-hidden="true">2.3.</strong> Memory-mapped Registers</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="start/semihosting.html" target="_parent"><strong aria-hidden="true">2.4.</strong> Semihosting</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="start/panicking.html" target="_parent"><strong aria-hidden="true">2.5.</strong> Panicking</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="start/exceptions.html" target="_parent"><strong aria-hidden="true">2.6.</strong> Exceptions</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="start/interrupts.html" target="_parent"><strong aria-hidden="true">2.7.</strong> Interrupts</a></span></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="peripherals/index.html" target="_parent"><strong aria-hidden="true">3.</strong> Peripherals</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="peripherals/a-first-attempt.html" target="_parent"><strong aria-hidden="true">3.1.</strong> A first attempt in Rust</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="peripherals/borrowck.html" target="_parent"><strong aria-hidden="true">3.2.</strong> The Borrow Checker</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="peripherals/singletons.html" target="_parent"><strong aria-hidden="true">3.3.</strong> Singletons</a></span></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="static-guarantees/index.html" target="_parent"><strong aria-hidden="true">4.</strong> Static Guarantees</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="static-guarantees/typestate-programming.html" target="_parent"><strong aria-hidden="true">4.1.</strong> Typestate Programming</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="static-guarantees/state-machines.html" target="_parent"><strong aria-hidden="true">4.2.</strong> Peripherals as State Machines</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="static-guarantees/design-contracts.html" target="_parent"><strong aria-hidden="true">4.3.</strong> Design Contracts</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="static-guarantees/zero-cost-abstractions.html" target="_parent"><strong aria-hidden="true">4.4.</strong> Zero Cost Abstractions</a></span></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="portability/index.html" target="_parent"><strong aria-hidden="true">5.</strong> Portability</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="concurrency/index.html" target="_parent"><strong aria-hidden="true">6.</strong> Concurrency</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="collections/index.html" target="_parent"><strong aria-hidden="true">7.</strong> Collections</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design-patterns/index.html" target="_parent"><strong aria-hidden="true">8.</strong> Design Patterns</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design-patterns/hal/index.html" target="_parent"><strong aria-hidden="true">8.1.</strong> HALs</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design-patterns/hal/checklist.html" target="_parent"><strong aria-hidden="true">8.1.1.</strong> Checklist</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design-patterns/hal/naming.html" target="_parent"><strong aria-hidden="true">8.1.2.</strong> Naming</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design-patterns/hal/interoperability.html" target="_parent"><strong aria-hidden="true">8.1.3.</strong> Interoperability</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design-patterns/hal/predictability.html" target="_parent"><strong aria-hidden="true">8.1.4.</strong> Predictability</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design-patterns/hal/gpio.html" target="_parent"><strong aria-hidden="true">8.1.5.</strong> GPIO</a></span></li></ol></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="c-tips/index.html" target="_parent"><strong aria-hidden="true">9.</strong> Tips for embedded C developers</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="interoperability/index.html" target="_parent"><strong aria-hidden="true">10.</strong> Interoperability</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="interoperability/c-with-rust.html" target="_parent"><strong aria-hidden="true">10.1.</strong> A little C with your Rust</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="interoperability/rust-with-c.html" target="_parent"><strong aria-hidden="true">10.2.</strong> A little Rust with your C</a></span></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="unsorted/index.html" target="_parent"><strong aria-hidden="true">11.</strong> Unsorted topics</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="unsorted/speed-vs-size.html" target="_parent"><strong aria-hidden="true">11.1.</strong> Optimizations: The speed size tradeoff</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="unsorted/math.html" target="_parent"><strong aria-hidden="true">11.2.</strong> Performing Math Functionality</a></span></li></ol><li class="chapter-item expanded "><li class="spacer"></li></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="appendix/glossary.html" target="_parent">Appendix A: Glossary</a></span></li></ol>
</body>
</html>