Te damos la bienvenida a Bare Metal Rust

Este es un curso independiente de un día sobre Rust bare-metal, dirigido a personas que están familiarizadas con los conceptos básicos de Rust (tal vez después de completar el curso Comprehensive Rust). Lo ideal sería que también tuvieran experiencia con la programación bare-metal en otros lenguajes, como C.

Hoy vamos a hablar de Rust “bare-metal”: ejecutar código de Rust sin un sistema operativo. Se dividirá en varias partes:

  • ¿Qué es no_std en Rust?
  • Escribir firmware para microcontroladores.
  • Escribir código bootloader o kernel para procesadores de aplicaciones.
  • Algunos crates útiles para el desarrollo de Rust bare-metal.

En la parte del curso dedicada a los microcontroladores, utilizaremos la versión 2 de BBC micro:bit como ejemplo. Es una placa de desarrollo basada en el microcontrolador Nordic nRF51822 con algunos LED y botones, un acelerómetro y una brújula conectados mediante I2C y un depurador SWD integrado.

Para empezar, instala algunas de las herramientas que necesitarás más adelante. En gLinux o Debian:

sudo apt install gcc-aarch64-linux-gnu gdb-multiarch libudev-dev picocom pkg-config qemu-system-arm
rustup update
rustup target add aarch64-unknown-none thumbv7em-none-eabihf
rustup component add llvm-tools-preview
cargo install cargo-binutils cargo-embed

Permite a los usuarios del grupo plugdev acceder al programador micro:bit:

echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="0d28", MODE="0664", GROUP="plugdev"' |\
  sudo tee /etc/udev/rules.d/50-microbit.rules
sudo udevadm control --reload-rules

En MacOS:

xcode-select --install
brew install gdb picocom qemu
brew install --cask gcc-aarch64-embedded
rustup update
rustup target add aarch64-unknown-none thumbv7em-none-eabihf
rustup component add llvm-tools-preview
cargo install cargo-binutils cargo-embed