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
Foundations of Embedded Rust
- Overview of the no_std, core, and broader embedded Rust ecosystem
- Selecting appropriate targets and interpreting target triples
- Configuring rustup, cargo, and specific target toolchains
Tooling, Build, & Debug Processes
- Integrating cargo, cargo-embed, probe-run, and OpenOCD workflows
- Flashing and debugging using hardware probes like ST-Link and JLink
- Addressing CI requirements for embedded Rust firmware builds
Hardware Abstraction and Peripheral Interaction
- Exploring embedded-hal traits and driver design patterns
- Utilizing peripheral access crates (PACs) and device crates (svd2rust)
- Creating and implementing HAL drivers and board support crates (BSCs)
Memory Safety, Concurrency, & Real-Time Performance
- Applying safe patterns for shared state and mutable references within interrupts
- Leveraging RTIC and alternative concurrency models for real-time systems
- Managing heap versus stack usage, allocators, and minimizing dynamic allocation
Error Management, Testing, & Reliability
- Implementing error handling strategies in constrained environments
- Conducting unit tests on the host and integration tests on hardware
- Performing fault analysis, logging, and post-mortem reviews
Performance, Power, & Resource Optimization
- Benchmarking, measuring, and refining hot paths for performance
- Applying code size reduction techniques and linker scripts
- Implementing power management strategies and low-power design patterns
Deployment, Security, & Ecosystem Standards
- Establishing secure boot, firmware signing, and update protocols
- Navigating supply-chain considerations and dependency management
- Planning the migration from C firmware to Rust and accessing community resources
Recap and Future Pathways
Requirements
- Solid grasp of fundamental Rust principles, including ownership, borrowing, and lifetimes
- Proven experience in developing complex Rust applications (intermediate level)
- Knowledge of embedded systems concepts such as memory-mapped I/O, interrupts, and peripheral interaction
Target Audience
- Embedded firmware engineers seeking to integrate Rust into their workflow
- Software engineers with a Rust background aiming to transition into low-level system development
- Technical leads assessing the suitability of Rust for embedded product development
Testimonials (1)
Being able to ask for advanced subjects even if there were not planned initially.