Bem-vindo ao Rust Bare Metal 🩀

Este Ă© um curso independente de um dia sobre Rust bare-metal, destinado a pessoas que estĂŁo familiarizadas com o bĂĄsico do Rust (talvez por completar o curso Comprehensive Rust), e idealmente tambĂ©m tĂȘm alguma experiĂȘncia com programação bare-metal em alguma outra linguagem como C.

Hoje falaremos sobre Rust bare-metal: executando cĂłdigo Rust sem um SO abaixo de nĂłs. Isso serĂĄ dividido em vĂĄrias partes:

  • O que Ă© Rust no_std?
  • Escrevendo firmware para microcontroladores.
  • Escrevendo cĂłdigo de bootloader / kernel para processadores de aplicativos.
  • Alguns crates Ășteis para o desenvolvimento de Rust bare-metal.

Para a parte do microcontrolador do curso, usaremos o BBC micro:bit v2 como exemplo. É uma placa de desenvolvimento baseada no microcontrolador Nordic nRF51822 com alguns LEDs e botĂ”es, um acelerĂŽmetro e uma bĂșssola conectados por I2C e um depurador SWD embarcado.

Para começar, instale algumas ferramentas que precisaremos mais tarde. No gLinux ou 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

E dĂȘ aos usuĂĄrios do grupo plugdev acesso ao 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

No 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