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 broader embedded Rust ecosystem.
- Selecting appropriate targets and interpreting target triples.
- Configuring rustup, cargo, and specific target toolchains.
Tooling, Build, and Debugging Workflows
- Utilizing cargo, cargo-embed, probe-run, and OpenOCD integration workflows.
- Performing flashing and debugging using hardware probes (e.g., ST-Link, JLink).
- Addressing Continuous Integration (CI) requirements for embedded Rust firmware builds.
Hardware Abstraction and Peripheral Access
- Exploring embedded-hal traits and established driver patterns.
- Working with Peripheral Access Crates (PACs) and device crates (svd2rust).
- Creating and utilizing Hardware Abstraction Layer (HAL) drivers and Board Support Crates (BSCs).
Memory Safety, Concurrency, and Real-Time Operations
- Implementing safe patterns for shared state and mutable references within interrupts.
- Employing RTIC and alternative concurrency models for real-time system stability.
- Managing heap versus stack usage, allocators, and minimizing dynamic allocation.
Error Handling, Testing, and Reliability
- Applying effective error handling strategies in resource-constrained environments.
- Conducting host-based unit testing versus hardware integration testing.
- Analyzing faults, implementing logging, and defining post-mortem review strategies.
Performance, Power Efficiency, and Resource Optimization
- Executing benchmarks, measuring performance, and optimizing critical code paths.
- Reducing code size through optimization techniques and linker script configuration.
- Strategizing power management and adopting low-power design patterns.
Deployment, Security, and Ecosystem Best Practices
- Implementing secure boot, firmware signing, and over-the-air update strategies.
- Considering supply chain security and managing dependencies effectively.
- Planning the migration from C firmware to Rust and leveraging community resources.
Conclusion and Future Steps
Requirements
- Solid grasp of fundamental Rust concepts, including ownership, borrowing, and lifetimes.
- Demonstrated experience in developing complex Rust applications (intermediate proficiency).
- Knowledge of embedded systems principles, such as memory-mapped I/O, interrupts, and peripheral handling.
Target Audience
- Embedded firmware engineers aiming to integrate Rust into their workflow.
- Software engineers with Rust expertise looking to transition into low-level systems development.
- Technical leaders 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.