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

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.