- Introduction
- Rust Fundamentals
- 1. Fizzbuzz
- 1.1. Fizzbuzz Cheat-Sheet
- 2. Fizzbuzz with match
- 3. Rust Latin
- 4. URLs, match, result
- 5. Calculator
- 6. Iterators
- 7. SimpleDB
- 7.1. Knowledge
- 7.2. Step-by-Step Solution
- 8. Green and Yellow game
- Applied Rust
- 9. Shapes
- 10. TCP Echo Server
- 10.1. Share data between connections
- 11. Connected Mailbox
- 12. Multithreaded mailbox
- Self-check Project
- 13. Self-check project
- Advanced Rust
- 14. Async TCP Chat Server
- 14.1. Specification and Getting started
- 14.2. Writing an Accept Loop
- 14.3. Receiving Messages
- 14.4. Sending Messages
- 14.5. A broker as a connection point
- 14.6. Glueing all together
- 14.7. Clean Shutdown
- 14.8. Handling Disconnection
- 14.9. Final Server Code
- 14.10. Implementing a Client
- 15. Verifying Data Structures with Kani
- 16. Building a Linux Kernel Driver using Rust
- Rust for Microcontrollers
- 17. Preparation
- 17.1. Code Organization
- 17.2. Hardware
- 17.3. Software Tools
- 18. References and Resources
- 18.1. Tooltips
- 19. Troubleshooting
- 19.1. cargo-size is not working
- 19.2. Rust analyzer is not working
- 19.3. cargo build fails to link
- 19.4. Dongle USB functionality is not working
- 19.5. cargo run errors
- 19.6. no probe was found error
- 19.7. location info is incomplete error
- 20. nRF52 Radio Exercise
- 20.1. Parts of an Embedded Program
- 20.2. Building an Embedded Program
- 20.3. Binary Size
- 20.4. Running the Program
- 20.5. Panicking
- 20.6. Using a Hardware Abstraction Layer
- 20.7. Timers and Time
- 20.8. nRF52840 Dongle
- 20.9. Radio Out
- 20.9.1. Radio Setup
- 20.9.2. Messages
- 20.9.3. Link Quality Indicator (LQI)
- 20.10. Radio In
- 20.11. Radio Puzzle
- 20.12. Radio Puzzle Help
- 20.13. Next Steps
- 20.13.1. Alternative containers
- 20.13.2. Collision avoidance
- 20.13.3. Interrupt handling
- 20.13.4. Starting a Project from Scratch
- 21. nRF52 HAL Exercise
- 21.1. Adding Buttons
- 22. nRF52 USB Exercise
- 22.1. Listing USB Devices
- 22.2. Hello, world!
- 22.3. Checking the API documentation
- 22.4. RTIC hello
- 22.5. Dealing with Registers
- 22.6. Event Handling
- 22.7. Task State
- 22.8. USB Enumeration
- 22.9. USB-1: Dealing with USB Events
- 22.10. USB Endpoints
- 22.11. USB Control Transfers
- 22.12. USB-2: SETUP Stage
- 22.13. USB Device Descriptors
- 22.14. USB-3: DATA Stage
- 22.15. USB Configuration Descriptors
- 22.16. USB-4: Supporting more Standard Requests
- 22.17. USB-5: Getting it Configured
- 22.18. USB-5: Idle State
- 22.19. Next Steps
- 22.20. Extra Info
- 22.20.1. The USB Specification
- 22.20.2. DMA
- 22.20.3. SET_CONFIGURATION (Linux & macOS)
- 22.20.4. USB Interfaces
- 22.20.5. USB Interface descriptor
- 22.20.6. USB Endpoint descriptor
- 22.20.7. Inspecting the Descriptors
- 22.20.8. Stack Overflow Protection
- Rust for Real-Time Systems
- 23. Working without std
- 23.1. Replacing println!
- 24. Bare-Metal Firmware on Cortex-R52
- 24.1. UART Driver