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
- Exploration of the no_std, core, and broader embedded Rust ecosystem
- Selecting target architectures and interpreting target triples
- Configuring rustup, cargo, and specific target toolchains
Tooling, Build, and Debugging Processes
- Utilizing cargo, cargo-embed, probe-run, and OpenOCD workflows
- Flashing and debugging via hardware probes (ST-Link, JLink)
- Addressing CI/CD 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 via svd2rust
- Creating and utilizing HAL drivers and Board Support Packages (BSPs)
Memory Safety, Concurrency, and Real-Time Systems
- Implementing safe patterns for shared state and mutable references within interrupts
- Applying RTIC and other concurrency models for real-time applications
- Managing heap versus stack usage, allocators, and minimizing dynamic allocation
Error Management, Testing, and Reliability
- Applying error handling strategies in constrained environments
- Conducting unit tests on the host and integration tests on hardware
- Performing fault analysis, logging, and post-mortem reviews
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 patterns
Deployment, Security, and Ecosystem Best Practices
- Implementing secure boot, firmware signing, and update mechanisms
- Considering supply-chain security and dependency management
- Planning the migration of C firmware to Rust and utilizing community resources
Conclusion and Further Steps
Requirements
- A solid grasp of fundamental Rust concepts, including ownership, borrowing, and lifetimes
- Proficiency in writing complex Rust applications (intermediate level)
- Knowledge of embedded systems concepts such as memory-mapped I/O, interrupts, and peripherals
Target Audience
- Embedded firmware engineers seeking to integrate Rust into their workflow
- Software developers with Rust experience aiming to transition into low-level systems
- Technical leaders assessing the suitability of Rust for embedded product development
Testimonials (1)
Being able to ask for advanced subjects even if there were not planned initially.