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.
Course Outline
Getting Started with Embedded Rust
- Overview of the no_std, core, and broader embedded Rust ecosystem.
- Choosing a target architecture and understanding target triples.
- Setting up rustup, cargo, and target-specific toolchains.
Tooling, Build & Debug Workflow
- Utilizing workflows with cargo, cargo-embed, probe-run, and OpenOCD.
- Flashing and debugging processes using hardware probes such as ST-Link and JLink.
- Continuous Integration (CI) considerations for building embedded Rust firmware.
Hardware Abstraction and Peripheral Access
- Understanding embedded-hal traits and driver patterns.
- Working with Peripheral Access Crates (PACs) and device crates generated via svd2rust.
- Writing and utilizing HAL drivers and Board Support Crates (BSCs).
Memory Safety, Concurrency & Real-Time
- Implementing safe patterns for shared state and mutable references within interrupts.
- Employing RTIC and other concurrency models suitable for real-time systems.
- Managing heap versus stack usage, selecting allocators, and avoiding dynamic allocation.
Error Handling, Testing & Reliability
- Error handling patterns tailored for constrained environments.
- Conducting unit testing on the host machine versus integration testing on hardware.
- Fault analysis, logging mechanisms, and post-mortem strategies.
Performance, Power & Resource Optimization
- Benchmarking, measurement, and optimization of critical code paths.
- Techniques for reducing code size and managing linker scripts.
- Power management strategies and design patterns for low-power operation.
Deployment, Security & Ecosystem Best Practices
- Secure boot implementation, firmware signing, and update strategies.
- Supply-chain considerations and dependency management.
- Roadmap for migrating C firmware to Rust and available community resources.
Summary and Next Steps
Requirements
- A solid grasp of core Rust concepts, including ownership, borrowing, and lifetimes.
- Practical experience in writing non-trivial Rust programs (demonstrating intermediate proficiency).
- 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 expertise who are transitioning to low-level systems.
- Technical leads evaluating Rust for use in embedded product development.
14 Hours
Testimonials (1)
Being able to ask for advanced subjects even if there were not planned initially.