Get in Touch
 Duration 14 hours

Course Outline

Introduction to Embedded Rust

  • Exploring the no_std, core, and embedded Rust ecosystems.
  • Selecting targets and interpreting target triples.
  • Configuring rustup, cargo, and specific target toolchains.

Tooling, Build, and Debug Workflows

  • Utilizing cargo, cargo-embed, probe-run, and OpenOCD workflows.
  • Flashing and debugging processes with hardware probes (ST-Link, JLink).
  • Addressing CI considerations for building embedded Rust firmware.

Hardware Abstraction and Peripheral Interaction

  • Analyzing embedded-hal traits and driver design patterns.
  • Working with Peripheral Access Crates (PACs) and device crates (svd2rust).
  • Creating and integrating 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.
  • Applying RTIC and alternative concurrency models for real-time applications.
  • Managing heap versus stack usage, allocators, and strategies to avoid dynamic allocation.

Error Handling, Testing, and Reliability

  • Employing error handling patterns suitable for constrained environments.
  • Comparing unit testing on host systems versus integration testing on hardware.
  • Conducting fault analysis, logging, and post-mortem reviews.

Performance, Power, and Resource Optimization

  • Benchmarking, measuring, and optimizing critical code paths.
  • Applying code size reduction techniques and utilizing linker scripts.
  • Implementing power management strategies and low-power design patterns.

Deployment, Security, and Ecosystem Best Practices

  • Managing secure boot, firmware signing, and update strategies.
  • Considering supply-chain risks and dependency management.
  • Planning the migration from C firmware to Rust and leveraging community resources.

Wrap-Up and Future Directions

Requirements

  • A solid grasp of fundamental Rust concepts, including ownership, borrowing, and lifetimes.
  • Proficiency in developing complex Rust programs (intermediate level).
  • Knowledge of embedded system concepts such as memory-mapped I/O, interrupts, and peripherals.

Target Audience

  • Embedded firmware engineers aiming to adopt Rust in their workflows.
  • Software engineers with Rust experience looking to transition into low-level systems development.
  • Technical leads assessing the feasibility of Rust for embedded product development.

Number of participants


Price per participant

Testimonials (1)

Upcoming Courses

Related Categories