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
Introduction to Embedded Rust
- Overview of no_std, core, and the broader embedded Rust ecosystem.
- Selecting a target and interpreting target triples.
- Setting up rustup, cargo, and specific target toolchains.
Tooling, Build, and Debugging Workflows
- Leveraging cargo, cargo-embed, probe-run, and OpenOCD workflows.
- Flashing and debugging using hardware probes like ST-Link or JLink.
- Considerations for CI pipelines when building embedded Rust firmware.
Hardware Abstraction and Peripheral Interaction
- Examining embedded-hal traits and common driver patterns.
- Utilising peripheral access crates (PACs) and device crates via svd2rust.
- Creating and implementing 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 other concurrency models suited for real-time environments.
- Managing heap versus stack usage, allocators, and avoiding dynamic allocation.
Error Handling, Testing, and Reliability
- Strategies for error handling in resource-constrained environments.
- Conducting unit tests on the host and integration tests on hardware.
- Performing fault analysis, logging, and post-mortem evaluations.
Performance, Power, and Resource Optimisation
- Techniques for benchmarking, measurement, and optimising critical code paths.
- Methods for reducing code size and utilising linker scripts.
- Implementing power management strategies and low-power design patterns.
Deployment, Security, and Ecosystem Best Practices
- Implementing secure boot, firmware signing, and update mechanisms.
- Addressing supply-chain security and dependency management.
- Planning the migration of C firmware to Rust and leveraging community resources.
Summary and Future Steps
Requirements
- Proficiency in core Rust concepts, including ownership, borrowing, and lifetimes.
- Practical experience in developing non-trivial Rust applications (intermediate level).
- Working knowledge of embedded systems principles, such as memory-mapped I/O, interrupts, and peripheral management.
Target Audience
- Embedded firmware engineers aiming to integrate Rust into their workflow.
- Software engineers with Rust experience looking to pivot towards low-level systems.
- Technical leaders 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.