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
Getting Started with Embedded Rust
- An overview of no_std, core, and the broader embedded Rust ecosystem
- Target selection and comprehension of target triples
- Configuring rustup, cargo, and specific target toolchains
Tooling, Build & Debug Workflow
- Utilizing cargo, cargo-embed, probe-run, and OpenOCD workflows
- Flashing and debugging processes using hardware probes like ST-Link and JLink
- Addressing CI considerations when building embedded Rust firmware
Hardware Abstraction and Peripheral Access
- Analyzing embedded-hal traits and standard driver patterns
- Examining Peripheral Access Crates (PACs) and device crates generated by svd2rust
- Creating 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
- Exploring RTIC and alternative concurrency models suited for real-time systems
- Comparing heap versus stack usage, managing allocators, and minimizing dynamic allocation
Error Handling, Testing & Reliability
- Developing error handling strategies tailored for constrained environments
- Conducting unit testing on the host compared to integration testing on hardware
- Performing fault analysis, implementing logging, and establishing post-mortem strategies
Performance, Power & Resource Optimization
- Executing benchmarking, measurements, and optimization of critical code paths
- Applying code size reduction techniques and optimizing linker scripts
- Implementing power management strategies and low-power design patterns
Deployment, Security & Ecosystem Best Practices
- Integrating secure boot, firmware signing, and update strategies
- Evaluating supply-chain risks and managing dependencies effectively
- Defining a roadmap for migrating C firmware to Rust and leveraging community resources
Summary and Next Steps
Requirements
- Proficiency in core Rust concepts, including ownership, borrowing, and lifetimes
- Practical experience in developing complex Rust applications (intermediate level)
- Familiarity with embedded system principles such as memory-mapped I/O, interrupts, and peripherals
Audience
- Embedded firmware engineers seeking to integrate Rust into their workflow
- Software engineers with Rust background transitioning into low-level systems development
- Technical leaders assessing the suitability of Rust for embedded product strategies
Testimonials (1)
Being able to ask for advanced subjects even if there were not planned initially.