1. Introduction
    1. Hardware
    2. no_std
    3. Tooling
    4. Installation
      1. Linux
      2. MacOS
      3. Windows
      4. Verify Installation
  2. Getting started
    1. QEMU
    2. Hardware
    3. Memory-mapped Registers
    4. Semihosting
    5. Panicking
    6. Exceptions
    7. Interrupts
    8. IO
  3. Peripherals
    1. A first attempt in Rust
    2. The Borrow Checker
    3. Singletons
  4. Static Guarantees
    1. Typestate Programming
    2. Peripherals as State Machines
    3. Design Contracts
    4. Zero Cost Abstractions
  5. Portability
  6. Concurrency
  7. Collections
  8. Design Patterns
    1. HALs
      1. Checklist
      2. Naming
      3. Interoperability
      4. Predictability
      5. GPIO
  9. Tips for embedded C developers