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
Introductory Steps for Embedded Rust
- An overview of the no_std, core, and broader embedded Rust ecosystem
- Selecting a target and interpreting target triples
- Configuring rustup, cargo, and the necessary target toolchains
Tooling, Build, and Debug Workflows
- Leveraging cargo, cargo-embed, probe-run, and OpenOCD workflows
- Flashing and debugging via hardware probes (ST-Link, JLink)
- Addressing CI considerations when building embedded Rust firmware
Hardware Abstraction and Peripheral Interaction
- Exploring embedded-hal traits and driver patterns
- Utilizing Peripheral Access Crates (PACs) and device crates (svd2rust)
- Creating and employing HAL drivers and Board Support Crates (BSCs)
Memory Safety, Concurrency, and Real-Time Systems
- Implementing safe patterns for shared state and mutable references within interrupts
- Applying RTIC and alternative concurrency models for real-time systems
- Managing heap versus stack usage, allocators, and avoiding dynamic allocation
Error Handling, Testing, and Reliability
- Developing error handling patterns for constrained environments
- Comparing host-based unit testing with hardware-based integration testing
- Conducting fault analysis, logging, and post-mortem strategies
Performance, Power, and Resource Optimization
- Benchmarking, measurement, and optimization of critical code paths
- Techniques for reducing code size and utilizing linker scripts
- Strategies for power management and low-power design patterns
Deployment, Security, and Ecosystem Best Practices
- Implementing secure boot, firmware signing, and update mechanisms
- Addressing supply-chain concerns and dependency management
- Outlining a roadmap for migrating C firmware to Rust and identifying community resources
Summary and Path Forward
Requirements
- A solid grasp of core Rust concepts, including ownership, borrowing, and lifetimes.
- Experience in developing non-trivial Rust programs (intermediate level).
- Familiarity with embedded system concepts such as memory-mapped I/O, interrupts, and peripherals.
Target Audience
- Embedded firmware engineers interested in adopting Rust.
- Software engineers with Rust experience looking to transition into low-level systems.
- Technical leads assessing Rust for embedded product development.
Testimonials (1)
Being able to ask for advanced subjects even if there were not planned initially.