Get in Touch
 Duration 14 hours

Course Outline

Introduction to Embedded Rust

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

Tooling, Building, and 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.
  • Considering CI/CD implications for building embedded Rust firmware.

Hardware Abstraction and Peripheral Interaction

  • Examining embedded-hal traits and common driver design patterns.
  • Working with Peripheral Access Crates (PACs) and device crates (svd2rust).
  • Developing and utilizing Hardware Abstraction Layer (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.
  • Utilizing RTIC and other concurrency models suitable for real-time applications.
  • Managing heap versus stack usage, allocators, and strategies to avoid dynamic allocation.

Error Handling, Testing, and Reliability

  • Adopting error handling patterns suited to constrained environments.
  • Differentiating between host-based unit testing and hardware-based integration testing.
  • Conducting fault analysis, logging, and post-mortem investigations.

Performance, Power Consumption, and Resource Optimization

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

Deployment, Security, and Ecosystem Best Practices

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

Conclusion and Future Steps

Requirements

  • A solid grasp of fundamental Rust concepts, including ownership, borrowing, and lifetimes.
  • Practical experience in writing non-trivial Rust applications (intermediate level).
  • Familiarity with embedded systems concepts such as memory-mapped I/O, interrupts, and peripherals.

Intended Audience

  • Embedded firmware engineers seeking to integrate Rust into their workflow.
  • Software engineers with Rust experience looking 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