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.
Duration 14 hours
Course Outline
Getting Started with Embedded Rust
- Overview of the no_std, core, and embedded Rust ecosystem
- Selecting a target and understanding target triples
- Configuring rustup, cargo, and specific target toolchains
Tooling, Build & Debug Workflow
- Utilizing cargo, cargo-embed, probe-run, and OpenOCD workflows
- Flashing and debugging via hardware probes (ST-Link, JLink)
- CI considerations for constructing embedded Rust firmware
Hardware Abstraction and Peripheral Access
- Exploring embedded-hal traits and driver design patterns
- Working with peripheral access crates (PACs) and device crates (svd2rust)
- Creating and utilizing HAL drivers and board support crates (BSCs)
Memory Safety, Concurrency & Real-Time
- Implementing safe patterns for shared state and mutable references within interrupts
- Applying RTIC and other concurrency models for real-time systems
- Managing heap vs. stack usage, allocators, and avoiding dynamic allocation
Error Handling, Testing & Reliability
- Adopting error handling patterns suitable for constrained environments
- Comparing host-based unit testing with hardware-based integration testing
- Conducting fault analysis, logging, and post-mortem strategies
Performance, Power & Resource Optimization
- Performing benchmarking, measurement, and optimization of critical paths
- Applying code size reduction techniques and linker scripts
- Implementing power management strategies and low-power design patterns
Deployment, Security & Ecosystem Best Practices
- Managing secure boot, firmware signing, and update strategies
- Addressing supply-chain considerations and dependency management
- Developing a roadmap for migrating C firmware to Rust and accessing community resources
Summary and Next Steps
Requirements
- A solid grasp of fundamental Rust concepts, including ownership, borrowing, and lifetimes
- Practical experience in writing non-trivial Rust programs (intermediate proficiency)
- Familiarity with embedded system concepts such as memory-mapped I/O, interrupts, and peripherals
Target Audience
- Embedded firmware engineers seeking to integrate Rust into their workflow
- Software engineers with Rust background aiming to transition into low-level systems development
- Technical leads assessing the viability of Rust for embedded product development
Testimonials (1)
Being able to ask for advanced subjects even if there were not planned initially.