Introduction to Rust programming on bare metal hardware by Mike Kefeder - Rust Zürisee March 2023

Mike Kefeder

Discover the world of Rust programming on bare metal hardware, from microcontrollers to concurrent code, with an introduction to libraries, debugging, and build tools.

Key takeaways
  • The speaker introduces the topic of bare metal programming with Rust and its potential applications on microcontrollers.
  • He uses the Raspberry Pi Pico as an example of a microcontroller that can be programmed in Rust.
  • Rust provides a safe way to access hardware without using C’s malloc and free functions.
  • The speaker uses the HAL (Hardware Abstraction Layer) and PAC (Peripheral Access Crate) libraries to interact with the hardware.
  • He explains that Rust’s ownership system and borrow checker can help prevent common errors in embedded programming.
  • The speaker discusses the importance of a BSP (Board Support Package) and how it provides a abstraction layer between the hardware and the software.
  • He explains that the BSP can provide further abstractions to make it easier to access complex hardware.
  • The speaker introduces the ARTIK library, which provides a way to interact with the hardware and perform tasks such as flashing and debugging.
  • He explains that the ARTIK library is designed to be used with the PAC library and provides a way to create a safe and efficient way to interact with the hardware.
  • The speaker discusses the importance of using a debugger and how it can help with debugging and troubleshooting.
  • He explains that Rust provides a way to debug and inspect the code at the assembly level.
  • The speaker introduces the concept of async tasks and how they can be used to create concurrent code on a microcontroller.
  • He explains that the async task system can help improve the performance and responsiveness of the code.
  • The speaker discusses the limitations of Rust’s memory model and how it can affect its ability to handle certain architectures.
  • He explains that Rust’s safety guarantees can make it difficult to implement certain optimizations.
  • The speaker provides a list of resources and libraries that can be used for embedded programming with Rust.
  • He explains that the Rust Embedded community is actively working on improving the ecosystem and providing more libraries and tools.
  • The speaker provides a brief overview of the Cargo build tool and how it can be used to build and deploy Rust code on a microcontroller.
  • He explains that Cargo provides a way to manage dependencies and build a project in a consistent and reproducible way.
  • The speaker discusses the importance of using a config.toml file to configure the build process and provides an example of how it can be used.
  • He explains that the config.toml file can be used to define the build settings and dependencies for a project.