1. 1. Introduction
    1. 1.1. Hardware
    2. 1.2. no_std
    3. 1.3. Tooling
    4. 1.4. Installation
      1. 1.4.1. Linux
      2. 1.4.2. MacOS
      3. 1.4.3. Windows
      4. 1.4.4. Verify Installation
  2. 2. Getting started
    1. 2.1. QEMU
    2. 2.2. Hardware
    3. 2.3. Memory-mapped Registers
    4. 2.4. Semihosting
    5. 2.5. Panicking
    6. 2.6. Exceptions
    7. 2.7. Interrupts
    8. 2.8. IO
  3. 3. Peripherals
    1. 3.1. A first attempt in Rust
    2. 3.2. The Borrow Checker
    3. 3.3. Singletons
  4. 4. Static Guarantees
    1. 4.1. Typestate Programming
    2. 4.2. Peripherals as State Machines
    3. 4.3. Design Contracts
    4. 4.4. Zero Cost Abstractions
  5. 5. Portability
  6. 6. Concurrency
  7. 7. Collections
  8. 8. Design Patterns
    1. 8.1. HALs
      1. 8.1.1. Checklist
      2. 8.1.2. Naming
      3. 8.1.3. Interoperability
      4. 8.1.4. Predictability
      5. 8.1.5. GPIO
  9. 9. Tips for embedded C developers
  10. 10. Interoperability
    1. 10.1. A little C with your Rust
    2. 10.2. A little Rust with your C
  11. 11. Unsorted topics
    1. 11.1. Optimizations: The speed size tradeoff
  12. Appendix A: Glossary

The Embedded Rust Book

Unsorted topics