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
- An overview of the no_std environment, the core library, and the broader Rust embedded ecosystem.
- Selecting appropriate targets and understanding target triples.
- Configuring rustup, cargo, and specific target toolchains.
Tooling, Building, and Debugging Workflows
- Leveraging cargo, cargo-embed, probe-run, and OpenOCD for efficient workflows.
- Flashing and debugging using hardware probes such as ST-Link and JLink.
- Considering CI/CD implications for building embedded Rust firmware.
Hardware Abstraction and Peripheral Interaction
- Examining embedded-hal traits and common driver design patterns.
- Working with Peripheral Access Crates (PACs) and device crates (svd2rust).
- Developing and utilizing Hardware Abstraction Layer (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.
- Utilizing RTIC and other concurrency models suitable for real-time applications.
- Managing heap versus stack usage, allocators, and strategies to avoid dynamic allocation.
Error Handling, Testing, and Reliability
- Adopting error handling patterns suited to constrained environments.
- Differentiating between host-based unit testing and hardware-based integration testing.
- Conducting fault analysis, logging, and post-mortem investigations.
Performance, Power Consumption, and Resource Optimization
- Benchmarking, measuring, and optimizing critical code paths.
- Applying code size reduction techniques and managing linker scripts.
- Implementing power management strategies and low-power design principles.
Deployment, Security, and Ecosystem Best Practices
- Establishing secure boot processes, firmware signing, and update mechanisms.
- Addressing supply-chain security and dependency management.
- Planning the migration of C firmware to Rust and leveraging community resources.
Conclusion and Future Steps
Requirements
- A solid grasp of fundamental Rust concepts, including ownership, borrowing, and lifetimes.
- Practical experience in writing non-trivial Rust applications (intermediate level).
- Familiarity with embedded systems concepts such as memory-mapped I/O, interrupts, and peripherals.
Intended Audience
- Embedded firmware engineers seeking to integrate Rust into their workflow.
- Software engineers with Rust experience looking to transition into low-level systems development.
- Technical leads 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.