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
- An overview of no_std, the core library, and the broader embedded Rust ecosystem.
- Selecting appropriate targets and understanding target triples.
- Configuring rustup, cargo, and specific target toolchains.
Tooling, Building & Debugging Workflows
- Leveraging cargo, cargo-embed, probe-run, and OpenOCD for efficient workflows.
- Flashing and debugging using hardware probes such as ST-Link and JLink.
- Addressing CI considerations for building embedded Rust firmware.
Hardware Abstraction & Peripheral Interaction
- Exploring embedded-hal traits and established driver patterns.
- Utilizing Peripheral Access Crates (PACs) and device crates generated via svd2rust.
- Creating and utilizing HAL drivers and Board Support Crates (BSCs).
Memory Safety, Concurrency & Real-Time Processing
- Implementing safe patterns for shared state and mutable references within interrupts.
- Applying RTIC and other concurrency models for real-time systems.
- Managing heap versus stack usage, allocators, and avoiding dynamic allocation.
Error Handling, Testing & Reliability
- Developing error handling strategies suitable for constrained environments.
- Conducting unit tests on the host versus integration tests on target hardware.
- Performing fault analysis, logging, and post-mortem investigations.
Performance, Power & Resource Optimization
- Benchmarking, measuring, and optimizing critical code paths.
- Reducing code size through effective techniques and linker scripts.
- Implementing power management strategies and low-power design patterns.
Deployment, Security & Ecosystem Best Practices
- Ensuring secure boot, firmware signing, and robust update strategies.
- Addressing supply-chain risks and managing dependencies effectively.
- Outlining a roadmap for migrating C firmware to Rust and utilizing community resources.
Conclusion & Future Directions
Requirements
- A solid grasp of fundamental Rust principles, including ownership, borrowing, and lifetimes.
- Proven experience in developing complex Rust applications (intermediate proficiency).
- Knowledge of embedded systems concepts such as memory-mapped I/O, interrupts, and peripherals.
Target Audience
- Embedded firmware engineers interested in integrating Rust into their workflow.
- Software engineers with Rust expertise seeking 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.