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 the no_std, core, and embedded Rust ecosystem
- Selecting a target and understanding target triples
- Configuring rustup, cargo, and target-specific toolchains
Tooling, Build, and Debugging Workflows
- Utilizing cargo, cargo-embed, probe-run, and OpenOCD workflows
- Flashing and debugging via hardware probes (ST-Link, JLink)
- Considering CI practices 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 (svd2rust)
- Creating and utilizing HAL drivers and Board Support Crates (BSCs)
Memory Safety, Concurrency, and Real-Time Processing
- Implementing safe patterns for shared state and mutable references in interrupts
- Exploring RTIC and other concurrency models for real-time systems
- Managing heap versus stack usage, allocators, and avoiding dynamic allocation
Error Handling, Testing, and Reliability
- Applying error handling patterns in constrained environments
- Conducting unit tests on the host and integration tests on hardware
- Analyzing faults, logging, and implementing post-mortem strategies
Performance, Power, and Resource Optimization
- Benchmarking, measuring, and optimizing critical code paths
- Techniques for reducing code size and managing linker scripts
- Strategies for power management and low-power design
Deployment, Security, and Ecosystem Best Practices
- Implementing secure boot, firmware signing, and update strategies
- Addressing supply-chain considerations and dependency management
- Planning the migration of C firmware to Rust and leveraging community resources
Summary and Next Steps
Requirements
- A solid grasp of core Rust concepts, including ownership, borrowing, and lifetimes.
- Experience in developing non-trivial Rust programs (intermediate level).
- Familiarity with embedded system concepts such as memory-mapped I/O, interrupts, and peripherals.
Target Audience
- Embedded firmware engineers seeking to adopt Rust.
- Software engineers with Rust experience transitioning into low-level systems.
- Technical leads assessing Rust for embedded product development.
Testimonials (1)
Being able to ask for advanced subjects even if there were not planned initially.