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
Initiating Embedded Rust Development
- An overview of no_std, the core library, and the broader Rust embedded ecosystem.
- Selecting appropriate targets and understanding target triples.
- Configuring rustup, cargo, and necessary target toolchains.
Tooling, Build, and Debug Workflows
- Utilizing cargo, cargo-embed, probe-run, and OpenOCD workflows.
- Flashing and debugging processes using hardware probes like ST-Link and JLink.
- Best practices for CI integration when building embedded Rust firmware.
Hardware Abstraction and Peripheral Interaction
- Comprehending embedded-hal traits and standard driver patterns.
- Working with Peripheral Access Crates (PACs) and device crates generated by svd2rust.
- Developing and utilizing 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.
- Exploring RTIC and other concurrency models suited for real-time applications.
- Balancing heap versus stack usage, managing allocators, and avoiding dynamic allocation where necessary.
Error Handling, Testing, and Reliability
- Applying effective error handling strategies in constrained environments.
- Distinguishing between unit testing on the host and integration testing on hardware.
- Strategies for fault analysis, logging, and post-mortem investigation.
Performance, Power, and Resource Optimization
- Techniques for benchmarking, measurement, and optimizing critical code paths.
- Methods for reducing code size and utilizing linker scripts effectively.
- Implementing power management strategies and low-power design patterns.
Deployment, Security, and Ecosystem Best Practices
- Securing boot processes, firmware signing, and establishing update strategies.
- Addressing supply-chain security considerations and managing dependencies.
- Creating a roadmap for migrating from C firmware to Rust and leveraging community resources.
Conclusion and Future Directions
Requirements
- A solid grasp of core Rust concepts, including ownership, borrowing, and lifetimes.
- Practical experience in writing non-trivial Rust programs (intermediate proficiency).
- Knowledge of fundamental embedded systems concepts, 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 existing Rust expertise looking to transition into low-level systems development.
- 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.