Get in Touch
 Duration 14 hours

Course Outline

Introduction to Embedded Rust

  • Overview of no_std, core, and the broader embedded Rust ecosystem.
  • Selecting a target and interpreting target triples.
  • Setting up rustup, cargo, and specific target toolchains.

Tooling, Build, and Debugging Workflows

  • Leveraging cargo, cargo-embed, probe-run, and OpenOCD workflows.
  • Flashing and debugging using hardware probes like ST-Link or JLink.
  • Considerations for CI pipelines when building embedded Rust firmware.

Hardware Abstraction and Peripheral Interaction

  • Examining embedded-hal traits and common driver patterns.
  • Utilising peripheral access crates (PACs) and device crates via 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 within interrupts.
  • Applying RTIC and other concurrency models suited for real-time environments.
  • Managing heap versus stack usage, allocators, and avoiding dynamic allocation.

Error Handling, Testing, and Reliability

  • Strategies for error handling in resource-constrained environments.
  • Conducting unit tests on the host and integration tests on hardware.
  • Performing fault analysis, logging, and post-mortem evaluations.

Performance, Power, and Resource Optimisation

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

Deployment, Security, and Ecosystem Best Practices

  • Implementing secure boot, firmware signing, and update mechanisms.
  • Addressing supply-chain security and dependency management.
  • Planning the migration of C firmware to Rust and leveraging community resources.

Summary and Future Steps

Requirements

  • Proficiency in core Rust concepts, including ownership, borrowing, and lifetimes.
  • Practical experience in developing non-trivial Rust applications (intermediate level).
  • Working knowledge of embedded systems principles, 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 Rust experience looking to pivot towards low-level systems.
  • Technical leaders assessing the viability of Rust for embedded product development.

Number of participants


Price per participant

Testimonials (1)

Provisional Upcoming Courses (Require 5+ participants)

Related Categories