Get in Touch
 Duration 14 hours

Course Outline

Initiating Embedded Rust Development

  • An overview of no_std, the core library, and the broader Rust embedded ecosystem.
  • Selecting appropriate targets and understanding target triples.
  • Configuring rustup, cargo, and necessary target toolchains.

Tooling, Build, and Debug Workflows

  • Utilizing cargo, cargo-embed, probe-run, and OpenOCD workflows.
  • Flashing and debugging processes using hardware probes like ST-Link and JLink.
  • Best practices for CI integration when building embedded Rust firmware.

Hardware Abstraction and Peripheral Interaction

  • Comprehending embedded-hal traits and standard driver patterns.
  • Working with Peripheral Access Crates (PACs) and device crates generated by svd2rust.
  • Developing and utilizing 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.
  • Exploring RTIC and other concurrency models suited for real-time applications.
  • Balancing heap versus stack usage, managing allocators, and avoiding dynamic allocation where necessary.

Error Handling, Testing, and Reliability

  • Applying effective error handling strategies in constrained environments.
  • Distinguishing between unit testing on the host and integration testing on hardware.
  • Strategies for fault analysis, logging, and post-mortem investigation.

Performance, Power, and Resource Optimization

  • Techniques for benchmarking, measurement, and optimizing critical code paths.
  • Methods for reducing code size and utilizing linker scripts effectively.
  • Implementing power management strategies and low-power design patterns.

Deployment, Security, and Ecosystem Best Practices

  • Securing boot processes, firmware signing, and establishing update strategies.
  • Addressing supply-chain security considerations and managing dependencies.
  • Creating a roadmap for migrating from C firmware to Rust and leveraging community resources.

Conclusion and Future Directions

Requirements

  • A solid grasp of core Rust concepts, including ownership, borrowing, and lifetimes.
  • Practical experience in writing non-trivial Rust programs (intermediate proficiency).
  • Knowledge of fundamental embedded systems concepts, such as memory-mapped I/O, interrupts, and peripheral management.

Target Audience

  • Embedded firmware engineers aiming to integrate Rust into their workflow.
  • Software engineers with existing Rust expertise looking to transition into low-level systems development.
  • Technical leaders assessing the viability of Rust for embedded product development.

Number of participants


Price per participant

Testimonials (1)

Upcoming Courses

Related Categories