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
- Exploring the no_std, core, and embedded Rust ecosystems.
- Selecting targets and interpreting target triples.
- Configuring rustup, cargo, and specific target toolchains.
Tooling, Build, and Debug Workflows
- Utilizing cargo, cargo-embed, probe-run, and OpenOCD workflows.
- Flashing and debugging processes with hardware probes (ST-Link, JLink).
- Addressing CI considerations for building embedded Rust firmware.
Hardware Abstraction and Peripheral Interaction
- Analyzing embedded-hal traits and driver design patterns.
- Working with Peripheral Access Crates (PACs) and device crates (svd2rust).
- Creating and integrating 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 applications.
- Managing heap versus stack usage, allocators, and strategies to avoid dynamic allocation.
Error Handling, Testing, and Reliability
- Employing error handling patterns suitable for constrained environments.
- Comparing unit testing on host systems versus integration testing on hardware.
- Conducting fault analysis, logging, and post-mortem reviews.
Performance, Power, and Resource Optimization
- Benchmarking, measuring, and optimizing critical code paths.
- Applying code size reduction techniques and utilizing linker scripts.
- Implementing power management strategies and low-power design patterns.
Deployment, Security, and Ecosystem Best Practices
- Managing secure boot, firmware signing, and update strategies.
- Considering supply-chain risks and dependency management.
- Planning the migration from C firmware to Rust and leveraging community resources.
Wrap-Up and Future Directions
Requirements
- A solid grasp of fundamental Rust concepts, including ownership, borrowing, and lifetimes.
- Proficiency in developing complex Rust programs (intermediate level).
- Knowledge of embedded system concepts such as memory-mapped I/O, interrupts, and peripherals.
Target Audience
- Embedded firmware engineers aiming to adopt Rust in their workflows.
- Software engineers with Rust experience looking to transition into low-level systems development.
- Technical leads assessing the feasibility of Rust for embedded product development.
Testimonials (1)
Being able to ask for advanced subjects even if there were not planned initially.