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