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
- An overview of the no_std, core, and embedded Rust ecosystem.
- Selecting a target and comprehending target triples.
- Configuring rustup, cargo, and target-specific toolchains.
Tooling, Build & Debug Workflow
- Utilising workflows with cargo, cargo-embed, probe-run, and OpenOCD.
- Flashing and debugging using hardware probes (ST-Link, JLink).
- Addressing CI considerations for building embedded Rust firmware.
Hardware Abstraction and Peripheral Access
- Understanding embedded-hal traits and driver patterns.
- Peripheral access crates (PACs) and device crates (svd2rust).
- Creating and utilising HAL drivers and board support crates (BSCs).
Memory Safety, Concurrency & Real-Time
- Safe patterns for managing shared state and mutable references within interrupts.
- Exploring RTIC and other concurrency models suited for real-time systems.
- Managing heap versus stack usage, allocators, and avoiding dynamic allocation.
Error Handling, Testing & Reliability
- Implementing error handling patterns in constrained environments.
- Conducting unit testing on the host versus integration testing on hardware.
- Fault analysis, logging, and post-mortem strategies.
Performance, Power & Resource Optimization
- Benchmarking, measuring, and optimising hot paths.
- Techniques for code size reduction and linker scripts.
- Power management strategies and low-power design patterns.
Deployment, Security & Ecosystem Best Practices
- Secure boot, firmware signing, and update strategies.
- Supply-chain considerations and dependency management.
- A roadmap for migrating C firmware to Rust, including community resources.
Summary and Next Steps
Requirements
- A solid grasp of core Rust concepts, including ownership, borrowing, and lifetimes.
- Experience in writing non-trivial Rust programs (intermediate level).
- Familiarity with embedded systems concepts such as memory-mapped I/O, interrupts, and peripherals.
Audience
- Embedded firmware engineers seeking to adopt 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.