- Framework generasi berikutnya yang dirancang untuk memungkinkan pengembangan aplikasi embedded yang aman dan efisien dengan cepat
- Menjamin keamanan memori dan thread pada waktu kompilasi tanpa runtime atau garbage collector, serta menjalankan multitasking tanpa RTOS
- Mendukung beragam mikrokontroler dengan menyertakan fitur utama seperti HAL, jaringan, Bluetooth, USB, dan bootloader
- Dengan desain hemat daya dan executor berbasis prioritas, mempertimbangkan pemrosesan real-time sekaligus daya tahan baterai
- Telah memantapkan posisinya sebagai platform utama untuk pengembangan embedded asinkron yang terintegrasi dengan ekosistem Rust
Ikhtisar Embassy
- Embassy adalah framework generasi berikutnya yang memungkinkan penulisan aplikasi embedded yang aman dan efisien dengan memanfaatkan Rust dan fitur async
- Berjalan tanpa runtime, garbage collector, atau sistem operasi
- Menjamin keamanan memori dan thread pada waktu kompilasi
Arsitektur berbasis Rust + async
- Mengimplementasikan multitasking yang efisien di lingkungan embedded melalui fitur async/await milik Rust
- Task diubah menjadi state machine pada waktu kompilasi dan dijalankan secara kooperatif
- Tidak memerlukan alokasi memori dinamis, berjalan di atas satu stack
- Mencapai kode yang lebih cepat dan lebih kecil bahkan tanpa context switching RTOS
- Materi yang ditautkan menyebutkan keunggulan performa dibanding RTOS
Komponen utama (Batteries Included)
- Hardware abstraction layer (HAL)
- Mengontrol fungsi hardware melalui API Rust yang aman
- Target dukungan utama: STM32, nRF, RP2040, MSPM0, ESP32, CH32, PolarFire SoC, PY32
- Manajemen waktu (embassy-time)
- Menyediakan tipe Instant, Duration, Timer yang dapat digunakan secara global, tanpa overflow
- Dukungan real-time dan hemat daya
- Dapat membuat beberapa executor untuk menjalankan task berbasis prioritas
- Saat idle, core otomatis masuk ke mode hemat daya, dengan wake-up berbasis interupsi
- Jaringan (embassy-net)
- Mendukung Ethernet, IP, TCP, UDP, ICMP, DHCP
- Struktur asinkron menyederhanakan pengelolaan timeout dan penanganan banyak koneksi
- Bluetooth
- Mendukung berbagai stack BLE seperti
trouble, nrf-softdevice, embassy-stm32-wpan
- LoRa, USB, Bootloader
- Mendukung stack LoRaWAN melalui
lora-rs
embassy-usb mengimplementasikan kelas USB CDC dan HID
embassy-boot mendukung pembaruan firmware yang aman bahkan saat terjadi gangguan daya
Spesifikasi teknis dan lisensi
- Versi Rust minimum yang didukung (MSRV): 1.75 atau lebih baru
- Lisensi: dapat memilih Apache-2.0 atau MIT
- Nama proyek merupakan singkatan dari “EMBedded ASYnc”
2 komentar
Saya pernah memakai embassy-rs untuk mengembangkan produk dengan STM32G030C8T6 sampai tahap produksi massal, dan ada beberapa kekurangan yang saya rasakan saat menggunakannya.
Saat perlu mengakses HAL yang tidak umum, pada akhirnya tetap dibutuhkan pendekatan seperti yang dipakai di framework RTIC.
Karena
async, ada kemungkinan memori menjadi tidak efisien sehingga perlu berhati-hati.Untuk pengembangan di lingkungan dengan memori flash 32KB atau kurang, ini sangat membatasi. (
log+debug symbol dll.)Kalau ingin mengembangkan di ekosistem di luar NRF/STM/ESP/RP, pada praktiknya ini sangat sulit.
Mencicipi Rust embedded dengan embassy-rs itu bagus, tetapi jika nantinya ingin perbaikan dari sisi produksi massal maupun karier, sepertinya lebih baik juga mencoba RTIC lebih jauh.
Di sisi lain, ada kekhawatiran bahwa karena ia menjadi semacam advanced Rust Arduino dan mudah diakses, hal itu justru bisa menimbulkan situasi yang menyulitkan saat melakukan pengembangan yang tingkat kesulitannya lebih tinggi.
Opini Hacker News
Saya penggemar besar proyek Embassy. Ini contoh sempurna yang menunjukkan kenapa async Rust begitu hebat
Bisa berjalan tanpa heap, dan dengan abstraksi berbiaya rendah memungkinkan eksekusi konkuren bahkan di chip single-core. Juga tanpa kerumitan RTOS
Sungguh mengejutkan melihat tim Embassy bisa berkembang sejauh ini.
Saya juga merekomendasikan reqwless, klien HTTP untuk Embassy-net. Bahkan mendukung HTTPS
Dulu saya tidak menganggap Rust embedded lebih baik daripada C/C++, tapi sekarang saya menilai keputusan membeli MCU berdasarkan dukungan Rust
Meski begitu, saya masih belum benar-benar paham apa itu watchdog
Hal yang paling saya nikmati dari Embassy ada di lapisan pola aplikasi
Strukturnya adalah task perangkat berumur panjang yang menyembunyikan timing dan koordinasi di balik API async kecil
Misalnya pada kode seperti
loop { let btn = ir.wait_for_press().await; }, compiler otomatis membuat state machine untuknyaSaya rasa gaya seperti ini adalah hasil alami dari async + no-std
Saya berharap ada lebih banyak diskusi tentang struktur aplikasi seperti ini, bukan hanya HAL atau executor
Ide ini juga dibahas dalam tulisan gratis yang saya tulis bersama Brad Gibson
Saya juga membuka repo device-kit untuk bereksperimen dan mendokumentasikan pola seperti ini. Saya ingin tahu repo lain yang mencoba hal serupa
Dulu saat menulis firmware NIC sebagai state machine, akan sangat menyenangkan kalau ada sesuatu seperti async di Rust
Di C kita memang bisa meniru coroutine, tapi terlalu hacky
Waktu itu saya percaya thread RTOS mahal, tapi sekarang kalau dipikir-pikir belum tentu begitu
Bahkan untuk penanganan protokol seperti 802.11, kalau ada async kode pasti akan jauh lebih kecil dan sederhana
Saya sangat menyukai Embassy
Saya pindah dari bare metal C dan FreeRTOS, dan rasanya akhirnya embedded punya toolchain modern
Ekosistem di sekitarnya juga luar biasa — integrasi probe-rs + cargo run, logging defmt, embedded_hal, stm32-rs, dan lain-lain
Saya juga pernah memakai RTIC, tapi akhirnya menetap di Embassy karena ergonomi sintaks async
Saya juga kaget karena bisa langsung build dan jalan di macOS. Dulu saya selalu harus pakai Linux, tapi sekarang bisa langsung di chip M
Butuh sedikit waktu untuk memahami konsep berbagi akses periferal, tetapi karena aturan lock dipaksakan saat compile time, bug hampir tidak ada
Kualitas stack USB dan networking-nya juga sangat tinggi. Saya memakai PLDM over USB dan stack Ethernet TCP, dan semuanya bekerja sempurna
Kekurangannya, onboarding orang yang terbiasa dengan contoh vendor lama cukup sulit, dan kalau vendor tidak paham Rust, kolaborasi debugging jadi susah
Meski begitu, untuk ekosistem STM saya sangat merekomendasikannya
embassy_syncEmbassy dan async Rust adalah inovasi terbesar yang terjadi di dunia embedded dalam 10 tahun terakhir
RTOS berbasis C itu bagus secara konsep, tapi menyakitkan untuk dipakai dalam praktik. Framework ringan seperti Embassy adalah evolusi yang alami
Embassy pada dasarnya juga bisa dilihat sebagai real-time OS. Untuk detail lebih lanjut, lihat tulisan ini
Saya sedang menulis ulang Glicol ke no-std, dan kombinasi embassy-rs + 2350 adalah yang terbaik
Kalau Anda berencana mulai pengembangan embedded pada 2026, saya sangat merekomendasikan stack ini
Sedikit keluar topik, tapi saya penasaran apa yang bagus untuk mulai belajar pengembangan embedded
Setelah lebih dari 10 tahun hanya mengerjakan web development, saya sedang belajar dari buku Rust. Saya sudah memesan Raspberry Pi, tapi apakah itu benar-benar bisa disebut embedded?
Model seperti NUCLEO-F767ZI yang punya port USB itu bagus
Ada Wi-Fi, BLE, sensor 6-axis, dan demo C-nya langsung jalan. LVGL juga sangat bagus
Saya belum mencobanya dengan Rust, tapi karena berbasis RISC-V jadi menarik. Elecrow atau Makerfabs juga bagus untuk pemula
Untuk Rust, rp-hal bagus untuk pemula, dan Embassy bisa dicoba sedikit belakangan
Kalau ingin lebih dekat ke bare metal, saya merekomendasikan board ESP32. Murah, dan tersedia dalam banyak form factor dengan charger baterai atau layar bawaan
Saya membuat relay LoRa dengan Embassy dan memakainya di aplikasi Bitchat (berbasis nrf52)
Sebagian besar berjalan sangat mulus, dan panic yang muncul ternyata masalah di sisi Nordic SoftDevice
Saya sedang membuat controller pedal amp gitar modeling Spark dengan Embassy
Amp-nya dikendalikan lewat BLE, dan menarik karena stack BLE Rust-nya sepenuhnya open source
Namun ini masih tahap awal, jadi API sering berubah dan saya harus mengunci revisi git di Cargo
Meski begitu, masa depan proyek ini menjanjikan
Microsoft juga memakai Embassy untuk EC (Embedded Controller)
Untuk detailnya, lihat Open Device Partnership
Ariel OS adalah sistem operasi yang dibangun di atas Embassy. Layak dilihat