Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
Course Outline
Introduction to Embedded Rust
- Overview of no_std, core, and the broader embedded Rust ecosystem
- Selecting a target architecture and understanding target triples
- Configuring rustup, cargo, and specific target toolchains
Tooling, Build & Debugging Workflow
- Leveraging cargo, cargo-embed, probe-run, and OpenOCD workflows
- Flashing and debugging using hardware probes (ST-Link, JLink)
- Considerations for Continuous Integration (CI) when building embedded Rust firmware
Hardware Abstraction and Peripheral Access
- Exploring embedded-hal traits and driver implementation patterns
- Utilizing Peripheral Access Crates (PACs) and device crates via svd2rust
- Developing and utilizing HAL drivers and board support crates (BSCs)
Memory Safety, Concurrency & Real-Time Systems
- Safe patterns for managing shared state and mutable references within interrupts
- Employing RTIC and alternative concurrency models for real-time applications
- Balancing heap versus stack usage, allocators, and strategies to avoid dynamic allocation
Error Handling, Testing & Reliability
- Implementing error handling patterns suited for constrained environments
- Conducting unit tests on the host and integration tests on actual hardware
- Performing fault analysis, logging, and post-mortem strategy development
Performance, Power & Resource Optimization
- Benchmarking, measurement, and optimizing critical code paths
- Techniques for reducing code size and managing linker scripts
- Strategies for power management and low-power design patterns
Deployment, Security & Ecosystem Best Practices
- Secure boot mechanisms, firmware signing, and update strategies
- Addressing supply-chain considerations and dependency management
- Mapping the roadmap for migrating C firmware to Rust and utilizing community resources
Summary and Future Steps
Requirements
- A solid grasp of fundamental Rust concepts, including ownership, borrowing, and lifetimes.
- Proven experience developing non-trivial Rust applications (intermediate proficiency).
- Familiarity with embedded systems concepts such as memory-mapped I/O, interrupts, and peripheral management.
Target Audience
- Embedded firmware engineers seeking to integrate Rust into their workflow.
- Software engineers with existing Rust experience aiming to transition into low-level system development.
- Technical leads assessing Rust as a solution for embedded product development.
14 Hours
Testimonials (1)
Being able to ask for advanced subjects even if there were not planned initially.