irfo
Moderatör
- Katılım
- 7 Ocak 2026
- Mesajlar
- 290
- Tepkime puanı
- 2
- Puanları
- 18
Rust, "Embedded" (Gömülü Sistemler) dünyasında C ve C++'ın en güçlü alternatifi haline gelmiştir. Mikrodenetleyici seviyesinde sıfır maliyetli soyutlamalar (zero-cost abstractions) sunması ve hafıza güvenliğini (memory safety) donanım üzerinde de koruması, onu kritik sistemler için vazgeçilmez kılar.
Rust
Rust
1. No_Std Dünyası: Standart Kütüphanesiz Yaşam
Mikrodenetleyicilerde genellikle bir işletim sistemi (Windows, Linux) yoktur. Bu yüzden Rust'ın dosya sistemi, ağ ve heap yönetimi gibi özellikler içeren standart kütüphanesini (std) kullanamayız. Bunun yerine sadece çekirdek kütüphaneyi kullanan #![no_std] moduna geçeriz.Rust
Kod:
#![no_std] // Standart kütüphaneyi devre dışı bırakır
#![no_main] // Normal 'main' fonksiyonu yerine özel giriş noktası kullanır
use panic_halt as _; // Panik durumunda sistemi durdurur
#[riscv_rt::entry] // İşlemciye göre değişen giriş noktası
fn main() -> ! {
loop {
// Sonsuz döngü (Gömülü sistemlerin kalbi)
}
}
2. PAC ve HAL Katmanları
Gömülü Rust ekosistemi, donanıma erişimi üç temel katmanda organize eder:- PAC (Peripheral Access Crate): İşlemcinin register'larına (yazmaç) doğrudan erişim sağlar. Otomatik üretilir ve "unsafe" işlemlerle doludur.
- HAL (Hardware Abstraction Layer): PAC üzerine inşa edilen güvenli bir katmandır. GPIO, I2C, SPI gibi protokolleri "Rust tarzı" (safe) kullanmanızı sağlar.
- Board Crate: Spesifik bir geliştirme kartı (örneğin Arduino Nano, STM32 BluePill) için özelleştirilmiş kütüphanedir.
3. Embedded HAL ve Tip Güvenliği
Rust'ın en büyük gücü, donanım hatalarını derleme zamanında yakalamasıdır. Örneğin, bir pini "çıkış" (Output) olarak ayarlamadıysanız, ona veri göndermeye çalışan kod derlenmez. Buna "Typestate Programming" denir.Rust
Kod:
let gpio = dp.GPIOA.split();
let mut led = gpio.pa5.into_push_pull_output(); // Pin artık 'Output' tipinde
led.set_high().unwrap(); // Sadece Output tipindekiler bu metodu çağırabilir
4. Araç Seti: Geliştirme İçin Gerekenler
Gömülü sistemler için kod derlemek ve karta yüklemek için özel araçlar kullanılır:targetekleme:rustup target add thumbv7em-none-eabihf(İşlemci mimarisine uygun hedef).cargo-embed/probe-rs: Kodu karta yüklemek (flash) ve hata ayıklamak (debug) için kullanılır.flip-link: Stack overflow hatalarına karşı donanım seviyesinde koruma sağlar.
5. Neden Embedded Rust?
| Avantaj | Açıklama |
| Bellek Güvenliği | Pointer hataları ve buffer overflow (tampon taşması) tarihe karışır. |
| Modern Araçlar | cargo sayesinde bağımlılık yönetimi ve test yazımı C dünyasından çok daha kolaydır. |
| Yüksek Seviyeli Sözdizimi | Iterator, Option, Result gibi yapıları donanım üzerinde kullanabilirsiniz. |
| Eşzamanlılık (Concurrency) | RTIC (Real-Time Interrupt-driven Concurrency) ile kesme (interrupt) tabanlı sistemler veri yarışsız yönetilir. |