به Bare Metal Rust خوش آمدید
این یک دوره مستقل یک روزه در مورد bare-metal Rust است که با هدف افرادی که با اصول Rust آشنا هستند (شاید از اتمام دوره جامع Rust) و در حالت ایده آل نیز تجربه برنامهنویسی bare-metal به زبان دیگری را دارند، مانند C میباشد.
امروز ما در مورد'bare-metal' Rust صحبت خواهیم کرد: اجرای کد Rust بدون سیستمعامل در ادامه به چند بخش تقسیم خواهد شد:
- این
no_std
Rust چیست؟ - نوشتنfirmware برای میکروکنترلرها.
- نوشتن کد bootloader / kernel برای پردازندههای برنامه.
- برخی از crateهای مفید برای توسعه bare-metal Rust.
برای بخش میکروکنترلر دوره ما از BBC micro:bit v2 به عنوان مثال استفاده خواهیم کرد. این یک برد توسعه مبتنی بر میکروکنترلر Nordic nRF52833 با چند LED و دکمه، شتابسنج و قطبنما متصل به I2C و یک دیباگر SWD روی برد است.
برای شروع، ابزارهایی را که بعداً به آنها نیاز خواهیم داشت نصب کنید. در لینوکس یا دبیان:
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
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/probe-rs/probe-rs/releases/latest/download/probe-rs-tools-installer.sh | sh
و به کاربران گروه plugdev
اجازه دسترسی به برنامهنویس micro:bit را بدهید:
echo 'SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0d28", MODE="0660", GROUP="logindev", TAG+="uaccess"' |\
sudo tee /etc/udev/rules.d/50-microbit.rules
sudo udevadm control --reload-rules
در 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
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/probe-rs/probe-rs/releases/latest/download/probe-rs-tools-installer.sh | sh