Get in Touch
 Duration 14 hours

Course Outline

Introduction to Embedded Rust

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

Tooling, Building & 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.
  • Addressing CI considerations for building embedded Rust firmware.

Hardware Abstraction & Peripheral Interaction

  • Exploring embedded-hal traits and established driver patterns.
  • Utilizing Peripheral Access Crates (PACs) and device crates generated via svd2rust.
  • Creating and utilizing HAL drivers and Board Support Crates (BSCs).

Memory Safety, Concurrency & Real-Time Processing

  • Implementing safe patterns for shared state and mutable references within interrupts.
  • Applying RTIC and other concurrency models for real-time systems.
  • Managing heap versus stack usage, allocators, and avoiding dynamic allocation.

Error Handling, Testing & Reliability

  • Developing error handling strategies suitable for constrained environments.
  • Conducting unit tests on the host versus integration tests on target hardware.
  • Performing fault analysis, logging, and post-mortem investigations.

Performance, Power & Resource Optimization

  • Benchmarking, measuring, and optimizing critical code paths.
  • Reducing code size through effective techniques and linker scripts.
  • Implementing power management strategies and low-power design patterns.

Deployment, Security & Ecosystem Best Practices

  • Ensuring secure boot, firmware signing, and robust update strategies.
  • Addressing supply-chain risks and managing dependencies effectively.
  • Outlining a roadmap for migrating C firmware to Rust and utilizing community resources.

Conclusion & Future Directions

Requirements

  • A solid grasp of fundamental Rust principles, including ownership, borrowing, and lifetimes.
  • Proven experience in developing complex Rust applications (intermediate proficiency).
  • Knowledge of embedded systems concepts such as memory-mapped I/O, interrupts, and peripherals.

Target Audience

  • Embedded firmware engineers interested in integrating Rust into their workflow.
  • Software engineers with Rust expertise seeking to transition into low-level systems development.
  • Technical leads assessing the viability of Rust for embedded product development.

Number of participants


Price per participant

Testimonials (1)

Upcoming Courses

Related Categories