Get in Touch
 Duration 14 hours

Course Outline

Introduction to Embedded Rust

  • Exploration of the no_std, core, and broader embedded Rust ecosystem.
  • Selecting appropriate targets and comprehending target triples.
  • Configuring rustup, cargo, and the necessary target toolchains.

Tooling, Build, and Debug Workflows

  • Leveraging cargo, cargo-embed, probe-run, and OpenOCD for efficient workflows.
  • Executing flashing and debugging tasks using hardware probes such as ST-Link and JLink.
  • Addressing CI requirements for building embedded Rust firmware.

Hardware Abstraction and Peripheral Interaction

  • Analyzing embedded-hal traits and standard driver patterns.
  • Utilizing Peripheral Access Crates (PACs) and device crates via svd2rust.
  • Creating and deploying HAL drivers and board support crates (BSCs).

Memory Safety, Concurrency, and Real-Time Performance

  • Implementing safe patterns for managing shared state and mutable references within interrupts.
  • Applying RTIC and alternative concurrency models for real-time systems.
  • Evaluating heap versus stack usage, allocators, and strategies to avoid dynamic allocation.

Error Handling, Testing, and System Reliability

  • Adopting error handling strategies suited for constrained environments.
  • Comparing unit testing on host systems with integration testing on hardware.
  • Conducting fault analysis, logging, and developing post-mortem review strategies.

Performance, Power, and Resource Optimization

  • Performing benchmarking, measurement, and optimization of critical code paths.
  • Reducing code size through linker scripts and other techniques.
  • Implementing power management strategies and low-power design principles.

Deployment, Security, and Ecosystem Standards

  • Managing secure boot, firmware signing, and update mechanisms.
  • Considering supply-chain security and dependency management practices.
  • Planning the migration of C firmware to Rust and utilizing community resources.

Summary and Path Forward

Requirements

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

Target Audience

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

Testimonials (1)

Related Categories