1. 1. Preparations
    1. 1.1. Checking the Hardware
    2. 1.2. Installation Instructions
  2. 2. Tooling check
  3. 3. Beginner Workbook
    1. 3.1. Parts of an Embedded Program
    2. 3.2. Building an Embedded Program
    3. 3.3. Binary Size
    4. 3.4. Running the Program
    5. 3.5. Panicking
    6. 3.6. Using a Hardware Abstraction Layer
    7. 3.7. Timers and Time
    8. 3.8. nRF52840 Dongle
    9. 3.9. Radio Out
      1. 3.9.1. Radio Setup
      2. 3.9.2. Messages
      3. 3.9.3. Link Quality Indicator (LQI)
    10. 3.10. Radio In
    11. 3.11. Radio Puzzle
    12. 3.12. Radio Puzzle Help
    13. 3.13. Next Steps
      1. 3.13.1. Collision avoidance
      2. 3.13.2. Interrupt handling
      3. 3.13.3. Starting a Project from Scratch
  4. 4. Advanced Workbook
    1. 4.1. Code Organization
    2. 4.2. Listing USB Devices
    3. 4.3. Hello, world!
    4. 4.4. Checking the API documentation
    5. 4.5. RTIC hello
    6. 4.6. Dealing with Registers
    7. 4.7. Event Handling
    8. 4.8. Task State
    9. 4.9. USB Enumeration
    10. 4.10. USB-1: Dealing with USB Events
    11. 4.11. USB Endpoints
    12. 4.12. Control Transfers
    13. 4.13. USB-2: SETUP Stage
    14. 4.14. Device Descriptor
    15. 4.15. USB-3: DATA Stage
    16. 4.16. DMA
    17. 4.17. USB-4: Supporting more Standard Requests
    18. 4.18. Error Handling
    19. 4.19. Updating Device State
    20. 4.20. Dealing with Unknown Requests
    21. 4.21. SET_ADDRESS
    22. 4.22. Handling GET_DESCRIPTOR Configuration Requests
      1. 4.22.1. Configuration descriptor
      2. 4.22.2. Interfaces
      3. 4.22.3. Interface descriptor
      4. 4.22.4. Endpoint descriptor
      5. 4.22.5. Response
    23. 4.23. SET_CONFIGURATION (Linux & Mac OS)
    24. 4.24. Idle State
    25. 4.25. Inspecting the Descriptors
    26. 4.26. Getting it Configured
    27. 4.27. Next Steps
      1. 4.27.1. Stack Overflow Protection
  5. 5. References and Resources
    1. 5.1. Tooltips
  6. 6. Troubleshooting
    1. 6.1. cargo-size is not working
    2. 6.2. cargo-flash is not working
    3. 6.3. Rust analyzer is not working
    4. 6.4. cargo-build fails to link
    5. 6.5. dongle-flash is not working
    6. 6.6. Dongle USB functionality is not working
    7. 6.7. cargo run errors
    8. 6.8. no probe was found error
    9. 6.9. location info is incomplete error
    10. 6.10. DEPRECATED - nrfutil setup
  7. 7. Appendix
    1. 7.1. Using GDB

Workbook for Embedded Workshops

dongle-flash is not working