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