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
Initiating Embedded Rust Development
- An introduction to no_std, the core library, and the broader Rust embedded ecosystem.
- Selecting appropriate targets and interpreting target triples.
- Configuring rustup, cargo, and the necessary target toolchains.
Tooling, Build, and Debugging Workflows
- Leveraging cargo, cargo-embed, probe-run, and OpenOCD for streamlined processes.
- Executing flashing and debugging tasks using hardware probes like ST-Link and JLink.
- Integrating CI best practices for building embedded Rust firmware.
Hardware Abstraction and Peripheral Interaction
- Exploring embedded-hal traits and standard driver patterns.
- Utilizing Peripheral Access Crates (PACs) and device crates generated by svd2rust.
- Creating and implementing HAL drivers and Board Support Crates (BSCs).
Memory Safety, Concurrency, and Real-Time Systems
- Implementing safe patterns for shared state and mutable references during interrupts.
- Adopting RTIC and other concurrency models suited for real-time applications.
- Optimizing heap versus stack usage, managing allocators, and minimizing dynamic allocation.
Error Handling, Testing, and Reliability
- Applying effective error handling strategies in resource-constrained settings.
- Conducting unit tests on the host and integration tests on actual hardware.
- Performing fault analysis, logging, and implementing post-mortem strategies.
Performance, Power, and Resource Optimization
- Carrying out benchmarking, measurement, and optimization of critical code paths.
- Employing code size reduction techniques and utilizing linker scripts.
- Implementing power management strategies and low-power design patterns.
Deployment, Security, and Ecosystem Best Practices
- Establishing secure boot, firmware signing, and update mechanisms.
- Addressing supply-chain considerations and effective dependency management.
- Planning the migration of C firmware to Rust and exploring community resources.
Conclusions and Future Steps
Requirements
- A solid grasp of fundamental Rust concepts, including ownership, borrowing, and lifetimes.
- Practical experience in developing non-trivial Rust applications (intermediate proficiency).
- Knowledge of embedded system principles such as memory-mapped I/O, interrupts, and peripheral management.
Target Audience
- Embedded firmware professionals seeking to integrate Rust into their workflow.
- Software engineers with Rust expertise who are transitioning into low-level systems development.
- Technical leaders assessing Rust for embedded product development projects.
Testimonials (1)
Being able to ask for advanced subjects even if there were not planned initially.