- Güvenli ve verimli gömülü uygulamaların hızla geliştirilebilmesi için tasarlanmış yeni nesil framework
- Runtime veya garbage collector olmadan derleme zamanında bellek ve thread güvenliği sağlar; RTOS olmadan da çoklu görev yürütebilir
- HAL, ağ iletişimi, Bluetooth, USB, bootloader gibi temel özellikleri içerir ve çeşitli mikrodenetleyicileri destekler
- Düşük güç tüketimli tasarım ve öncelik tabanlı executor ile hem gerçek zamanlı işleme hem de pil ömrünü gözetir
- Rust ekosistemiyle birleşen asenkron gömülü geliştirme için önde gelen platformlardan biri haline gelmiştir
Embassy'ye genel bakış
- Embassy, Rust ve async özelliklerini kullanarak gömülü uygulamaların güvenli ve verimli biçimde yazılmasını sağlayan yeni nesil bir frameworktür
- Runtime, garbage collector ve işletim sistemi olmadan çalışır
- Derleme zamanında bellek ve thread güvenliği sağlar
Rust + async tabanlı mimari
- Rust'ın async/await özelliği sayesinde gömülü ortamlarda verimli çoklu görev gerçekleştirir
- Task'lar derleme zamanında durum makinesi (state machine) biçimine dönüştürülür ve iş birliğine dayalı olarak çalıştırılır
- Dinamik bellek tahsisine gerek yoktur, tek bir stack üzerinde çalışır
- RTOS'un context switching mekanizması olmadan da daha yüksek hız ve daha küçük kod boyutu elde edilir
- Bağlantı verilen kaynaklarda RTOS'a kıyasla performans üstünlüğünden söz ediliyor
Başlıca bileşenler (Batteries Included)
- Donanım soyutlama katmanı (HAL)
- Donanım işlevleri güvenli Rust API'leriyle kontrol edilir
- Başlıca desteklenen hedefler: STM32, nRF, RP2040, MSPM0, ESP32, CH32, PolarFire SoC, PY32
- Zaman yönetimi (embassy-time)
- Global olarak kullanılabilen Instant, Duration, Timer tipleri sunar; overflow yoktur
- Gerçek zamanlı ve düşük güç desteği
- Birden fazla executor oluşturularak öncelik tabanlı task çalıştırma mümkündür
- Boşta kaldığında çekirdeği otomatik olarak güç tasarrufu moduna geçirir, interrupt tabanlı wake-up sağlar
- Ağ iletişimi (embassy-net)
- Ethernet, IP, TCP, UDP, ICMP, DHCP desteği sunar
- Asenkron yapı sayesinde timeout yönetimi ve çoklu bağlantı işleme sadeleşir
- Bluetooth
trouble, nrf-softdevice, embassy-stm32-wpan gibi çeşitli BLE stack'lerini destekler
- LoRa, USB, Bootloader
lora-rs ile LoRaWAN stack desteği sunar
embassy-usb, USB CDC ve HID sınıflarını uygular
embassy-boot, güç kesintisi durumunda da güvenli firmware güncellemesini destekler
Teknik özellikler ve lisans
- Minimum desteklenen Rust sürümü (MSRV): 1.75 ve üzeri
- Lisans: Apache-2.0 veya MIT seçenekleri
- Proje adı, “** EMBedded ASYnc**” ifadesinin kısaltmasıdır
2 yorum
embassy-rskullanarak STM32G030C8T6 ile ürün geliştirip seri üretime kadar gittim; kullanırken birkaç dezavantajı olduğunu gördüm.Yaygın olmayan bir HAL'e erişmek gerektiğinde, sonuçta RTIC framework'ünü kullanırkenki yaklaşıma ihtiyaç duyuluyor.
asyncnedeniyle belleğin verimsiz kullanılma ihtimali yüksek olduğu için dikkatli olmak gerekiyor.Flash belleğin 32KB ve altında olduğu ortamlarda geliştirme yapmak oldukça kısıtlayıcı. (
log+ debug symbol vb.)NRF/STM/ESP/RP dışındaki ekosistemlerde geliştirme yapmak istediğinizde iş pratikte çok zorlaşıyor.
embassy-rsile Rust embedded dünyasını tatmak güzel ama ileride seri üretim ya da kariyer açısından gelişmek istiyorsanız RTIC'e de biraz daha bakmak daha iyi olabilir gibi görünüyor.Öte yandan, erişilebilirliğinin yüksek olması nedeniyle adeta gelişmiş bir Rust Arduino'suna dönüşmesinin, daha zorlayıcı geliştirmeler yapılırken tersine sıkıntılı durumlar yaratabilecek bir soruna yol açmasından endişe ediyorum.
Hacker News yorumları
Ben Embassy projesinin büyük bir hayranıyım. Bu, async Rust'ın neden bu kadar harika olduğunu gösteren mükemmel bir örnek
Heap olmadan çalışıyor ve düşük maliyetli soyutlamalar ile tek çekirdekli çiplerde bile eşzamanlı yürütme sağlıyor. RTOS karmaşası da yok
Embassy ekibinin bu kadar büyümüş olması gerçekten şaşırtıcı
Ayrıca Embassy-net için HTTP istemcisi olan reqwless'i tavsiye ederim. HTTPS de destekliyor
Eskiden Rust embedded'in C/C++'tan daha iyi olduğunu düşünmüyordum ama artık MCU satın alma kararlarını Rust desteğine göre veriyorum
Ama watchdog'un ne olduğunu hâlâ tam olarak bilmiyorum
Embassy'den en çok uygulama deseni katmanında keyif alıyorum
Zamanlama ve koordinasyonu küçük async API'lerin arkasına gizleyen, uzun ömürlü aygıt görevlerinden oluşan bir yapı söz konusu
Örneğin
loop { let btn = ir.wait_for_press().await; }gibi bir kodda derleyici durumu otomatik olarak bir state machine'e dönüştürüyorBence bu tarz, async + no-std'nin doğal bir sonucu
HAL veya executor'dan ziyade, bu tür uygulama yapıları hakkında daha çok tartışma görmek isterdim
Brad Gibson ile birlikte yazdığım ücretsiz yazı da bu fikirleri ele alıyor
Ayrıca bu desenleri denemek ve belgelemek için device-kit deposunu açtım. Benzer şeyler yapan başka depolar da bilmek isterim
Eskiden NIC firmware'ini state machine olarak yazdığım günlerde, Rust async gibi bir şey olsaydı gerçekten harika olurdu
C'de de coroutine benzeri yapılar taklit edilebilir ama fazlasıyla hacky oluyor
O zamanlar RTOS thread'lerinin pahalı olduğuna inanıyordum ama şimdi dönüp bakınca bunun mutlaka doğru olmadığını düşünüyorum
802.11 gibi protokolleri işlerken de async olsaydı kod çok daha küçük ve basit olurdu
Embassy'yi gerçekten seviyorum
Bare metal C ve FreeRTOS'tan geldim; sonunda embedded dünyasında da modern bir toolchain varmış gibi hissettiriyor
Özellikle çevresindeki ekosistem harika — probe-rs + cargo run entegrasyonu, defmt logging, embedded_hal, stm32-rs vb.
RTIC de kullandım ama async sözdiziminin ergonomisi yüzünden Embassy'de kaldım
macOS'ta da doğrudan derlenip çalışması beni şaşırttı. Eskiden hep Linux kullanmak zorundaydım ama artık M serisi çiplerde doğrudan mümkün
Çevre birimi erişimini paylaşma kavramını anlamam biraz zaman aldı ama derleme zamanında kilit kuralları zorlandığı için neredeyse hiç bug olmuyor
USB ve ağ yığınlarının kalitesi de çok yüksek. PLDM over USB ve Ethernet TCP yığını kullanıyorum, kusursuz çalışıyorlar
Dezavantaj olarak, mevcut vendor örneklerine alışkın kişileri sisteme alıştırmak zor ve vendor Rust bilmiyorsa hata ayıklamada birlikte çalışmak güçleşiyor
Yine de STM ekosistemindeyseniz kesinlikle tavsiye ederim
embassy_syncile iletişim kuruluyorEmbassy ve async Rust, son 10 yılda embedded dünyasında yaşanan en büyük yenilik
C tabanlı RTOS'lar kavramsal olarak iyi ama pratikte kullanmaları acı verici. Embassy gibi hafif bir framework bunun doğal evrimi
Aslında Embassy'yi fiilen bir gerçek zamanlı işletim sistemi olarak da görebilirsiniz. Ayrıntılar için bu yazıya bakın
Glicol'u no-std olarak yeniden yazıyorum ve embassy-rs + 2350 kombinasyonu müthiş
2026'da embedded geliştirmeye başlamayı planlıyorsanız bu yığını kuvvetle tavsiye ederim
Biraz konu dışı ama embedded geliştirmeye ilk kez başlamak için en iyi yolun ne olduğunu merak ediyorum
10 yılı aşkın süredir sadece web geliştirme yaptım ve şu anda Rust kitabı çalışıyorum. Raspberry Pi sipariş ettim; bu gerçekten embedded sayılır mı?
USB portu olan NUCLEO-F767ZI gibi bir model iyi olur
Wi‑Fi, BLE ve 6 eksenli sensör var; C demoları da hemen çalışıyor. LVGL de harika
Rust'ı henüz denemedim ama RISC-V tabanlı olması ilginç. Elecrow veya Makerfabs da yeni başlayanlar için iyi
Rust için rp-hal başlangıç açısından iyi; Embassy'yi ise biraz daha sonra denemek mantıklı olabilir
Biraz daha bare metal tarafa yaklaşmak istiyorsanız ESP32 kartlarını tavsiye ederim. Ucuzlar ve pil şarj cihazı ya da ekran içeren çeşitli form faktörlerine sahipler
Embassy ile LoRa rölesi yaptım ve bunu Bitchat uygulamasında (nrf52 tabanlı) kullanıyorum
Büyük ölçüde çok sorunsuz çalışıyor; yaşadığım panic'ler Nordic SoftDevice tarafındaki sorunlardı
Embassy ile Spark modelleme gitar amfi pedal denetleyicisi yapıyordum
BLE üzerinden amfiyi kontrol ediyor ve Rust BLE yığınının tamamen açık kaynak olması ilgimi çekiyordu
Ancak hâlâ erken aşamada olduğu için API sık sık değişiyor ve Cargo'da git revision sabitlemek zorunda kaldım
Yine de projenin geleceği umut verici
Microsoft da Embassy'yi EC (Embedded Controller) için kullanıyor
Ayrıntılar için Open Device Partnership sayfasına bakabilirsiniz
Ariel OS, Embassy üzerine inşa edilmiş bir işletim sistemi. Bakmaya değer