4 पॉइंट द्वारा GN⁺ 2026-01-10 | 2 टिप्पणियां | WhatsApp पर शेयर करें
  • सुरक्षित और कुशल embedded applications को तेज़ी से विकसित करने के लिए डिज़ाइन किया गया next-generation framework
  • runtime या garbage collector के बिना compile-time memory और thread safety सुनिश्चित करता है, और RTOS के बिना भी multitasking करता है
  • HAL, networking, Bluetooth, USB, bootloader जैसी प्रमुख क्षमताएँ शामिल हैं और विभिन्न microcontroller को support करता है
  • low-power design और priority-based executor के साथ real-time processing और battery life दोनों को ध्यान में रखता है
  • Rust ecosystem के साथ जुड़ा हुआ async embedded development का प्रमुख platform बन चुका है

Embassy का अवलोकन

  • Embassy, Rust और async features का उपयोग करके embedded applications को सुरक्षित और कुशल तरीके से लिखने के लिए बनाया गया next-generation framework है
    • यह runtime, garbage collector और operating system के बिना चलता है
    • compile-time पर memory और thread safety सुनिश्चित करता है

Rust + async आधारित संरचना

  • Rust के async/await features के माध्यम से embedded environment में कुशल multitasking लागू करता है
    • tasks compile-time पर state machine में बदले जाते हैं और cooperative तरीके से चलते हैं
    • dynamic memory allocation की आवश्यकता नहीं, एक single stack पर चलता है
    • RTOS के context switching के बिना भी अधिक तेज़ और छोटा code size हासिल करता है
  • लिंक किए गए सामग्री में RTOS की तुलना में performance advantage का उल्लेख है

मुख्य घटक (Batteries Included)

  • hardware abstraction layer (HAL)
    • सुरक्षित Rust API के साथ hardware functions को नियंत्रित करता है
    • मुख्य supported targets: STM32, nRF, RP2040, MSPM0, ESP32, CH32, PolarFire SoC, PY32
  • time management (embassy-time)
    • globally usable Instant, Duration, Timer types प्रदान करता है, overflow नहीं होता
  • real-time और low-power support
    • कई executors बनाकर priority-based task execution संभव
    • idle होने पर core को अपने आप power-save mode में डालता है, interrupt-based wakeup
  • networking (embassy-net)
    • Ethernet, IP, TCP, UDP, ICMP, DHCP support
    • async structure के कारण timeout management और multiple connection handling सरल होता है
  • Bluetooth
    • trouble, nrf-softdevice, embassy-stm32-wpan आदि कई BLE stacks को support
  • LoRa, USB, Bootloader
    • lora-rs के साथ LoRaWAN stack support
    • embassy-usb USB CDC, HID class implementation देता है
    • embassy-boot power failure की स्थिति में भी सुरक्षित firmware update support करता है

तकनीकी विनिर्देश और लाइसेंस

  • minimum supported Rust version (MSRV) : 1.75 या उससे ऊपर
  • license: Apache-2.0 या MIT में से चुन सकते हैं
  • project name “** EMBedded ASYnc**” का संक्षिप्त रूप है

2 टिप्पणियां

 
GN⁺ 2026-01-10
Hacker News की राय
  • मैं Embassy प्रोजेक्ट का बहुत बड़ा प्रशंसक हूँ। यह दिखाने का एकदम सही उदाहरण है कि async Rust इतना शानदार क्यों है
    यह heap के बिना चलता है, और low-cost abstraction के साथ single-core chips पर भी concurrency संभव बनाता है। RTOS की जटिलता भी नहीं है
    Embassy टीम का इतना आगे बढ़ जाना सच में हैरान करने वाला है।
    साथ ही, Embassy-net के लिए HTTP client reqwless की भी सिफारिश करता हूँ। यह HTTPS भी सपोर्ट करता है
    पहले मुझे नहीं लगता था कि Rust embedded, C/C++ से बेहतर है, लेकिन अब मैं MCU खरीदने का फैसला Rust support के आधार पर करने लगा हूँ

    • इसे आज़माने के लिए आप कौन-सा MCU development kit recommend करेंगे, यह जानना चाहता हूँ
    • HAL में type safety लाने वाली बात सच में बहुत अच्छी है। यह इस क्षेत्र में नए आने वालों के लिए cushion जैसा काम करती है
      लेकिन अभी भी मुझे ठीक से समझ नहीं आता कि watchdog क्या होता है
  • मुझे Embassy सबसे ज़्यादा application pattern layer पर पसंद आ रहा है
    इसकी संरचना ऐसी है कि लंबे समय तक चलने वाले device tasks, timing और coordination को छोटे async API के पीछे छिपा देते हैं
    उदाहरण के लिए loop { let btn = ir.wait_for_press().await; } जैसे code में compiler अपने-आप state machine बना देता है
    मुझे लगता है कि यह style async + no-std का natural outcome है
    HAL या executor से ज़्यादा, ऐसी application structure पर और चर्चा होनी चाहिए
    Brad Gibson के साथ लिखे मुफ़्त लेख में भी यही विचार हैं
    और, इन patterns को प्रयोग और document करने के लिए मैंने device-kit repository भी खोली है। ऐसे ही प्रयास करने वाले दूसरे repos के बारे में भी जानना चाहूँगा

    • यह सिर्फ high-level logic के लिए नहीं, बल्कि low-level firmware के लिए भी उपयोगी है
      जब पहले NIC firmware को state machine के रूप में लिखता था, तब अगर Rust का async जैसा कुछ होता तो बहुत अच्छा होता
      C में भी coroutine जैसा कुछ नकल किया जा सकता है, लेकिन वह बहुत hacky होता है
      उस समय हमें लगता था कि RTOS threads महंगे हैं, लेकिन अब सोचता हूँ तो ज़रूरी नहीं कि हमेशा ऐसा ही रहा हो
      802.11 जैसे protocol handling में भी अगर async होता, तो code काफ़ी छोटा और सरल होता
  • मुझे Embassy सच में बहुत पसंद है
    Bare metal C और FreeRTOS से आने के बाद, ऐसा लगता है कि आखिर embedded के लिए भी एक modern toolchain आ गई है
    खासकर आसपास का ecosystem शानदार है — probe-rs + cargo run integration, defmt logging, embedded_hal, stm32-rs आदि
    RTIC भी इस्तेमाल किया है, लेकिन async syntax की ergonomic usability की वजह से आखिर Embassy पर टिक गया
    यह देखकर हैरानी हुई कि macOS पर भी यह सीधे build और run हो गया। पहले हमेशा Linux चाहिए होता था, अब M-series chips पर भी सीधे संभव है
    shared peripheral access की concept समझने में थोड़ा समय लगा, लेकिन compile time पर lock rules enforce होने से bugs लगभग नहीं के बराबर हैं
    USB और networking stack की quality भी बहुत ऊँची है। मैं PLDM over USB और Ethernet TCP stack इस्तेमाल कर रहा हूँ, और यह पूरी तरह सही चल रहा है
    कमी बस यह है कि जो लोग मौजूदा vendor examples के आदी हैं, उन्हें onboard करना मुश्किल होता है, और अगर vendor को Rust नहीं आता तो debugging में साथ काम करना कठिन हो जाता है
    फिर भी STM ecosystem में हो तो मैं इसे ज़ोरदार तरीके से recommend करूँगा

    • जब पहले Embassy build किया था, तो यह देखकर हैरानी हुई कि 100 से ज़्यादा dependencies खींच लाया। hobby projects के लिए ठीक है, लेकिन industrial use के लिए अभी दूर लगता है
    • मैं सोच रहा था कि क्या यह ESP32 जैसे multi-core को भी support करता है, और लगता है कि दूसरा executor इस्तेमाल करके और embassy_sync से communication करके यह संभव है
  • Embassy और async Rust पिछले 10 सालों में embedded दुनिया में हुई सबसे बड़ी innovation हैं
    C-आधारित RTOS का concept अच्छा है, लेकिन असल में इस्तेमाल करना तकलीफ़देह होता है। Embassy जैसा lightweight framework एक स्वाभाविक विकास है
    Embassy को लगभग एक real-time OS भी माना जा सकता है। अधिक जानकारी के लिए यह लेख देखें

  • मैं Glicol को no-std में फिर से लिख रहा हूँ, और embassy-rs + 2350 का combination कमाल का है
    अगर आप 2026 में embedded development शुरू करने की योजना बना रहे हैं, तो मैं इस stack की ज़ोरदार सिफारिश करूँगा

  • थोड़ा विषय से हटकर है, लेकिन अगर embedded development पहली बार शुरू करना हो तो क्या अच्छा रहेगा, यह जानना चाहता हूँ
    10 साल से ज़्यादा समय तक सिर्फ web development किया है और अभी Rust की किताब पढ़ रहा हूँ। Raspberry Pi ऑर्डर किया है, लेकिन क्या इसे सच में embedded कहा जा सकता है?

    • Raspberry Pi की बजाय ST Nucleo board recommend करूँगा। इसमें SWD programmer built-in होता है, इसलिए flashing और debugging आसान होती है
      USB port वाला NUCLEO-F767ZI जैसा मॉडल अच्छा है
    • मैंने ESP32-C6 Touch LCD $25 में खरीदा, और यह लगभग strap-less Fitbit जैसा है
      इसमें Wi-Fi, BLE, और 6-axis sensor तक हैं, और C demo भी तुरंत चल जाता है। LVGL भी शानदार है
      Rust अभी तक इसमें नहीं आज़माया, लेकिन यह RISC-V आधारित है, इसलिए दिलचस्प है। Elecrow या Makerfabs भी beginners के लिए अच्छे हैं
    • मैं सलाह दूँगा कि RP2040 वाला board और electronics starter kit लेकर सीधे coding शुरू करें
      Rust में rp-hal शुरुआत के लिए अच्छा है, और Embassy थोड़ा बाद में आज़माना बेहतर रहेगा
    • Raspberry Pi से भी GPIO संभाले जा सकते हैं, इसलिए embedded की समझ बनाने के लिए यह अच्छा है
      अगर आप थोड़ा और bare metal के करीब जाना चाहते हैं, तो ESP32 board recommend करूँगा। यह सस्ता है, और battery charger या display वाले कई form factors में मिलता है
  • मैं Embassy से LoRa relay बना रहा हूँ, जिसे Bitchat app (nrf52 आधारित) में इस्तेमाल कर रहा हूँ
    ज़्यादातर चीज़ें बहुत smoothly चलती हैं, और panic की समस्या Nordic SoftDevice की तरफ थी

    • क्या Bitchat BLE-आधारित नहीं है? क्या आपने LoRa protocol सीधे implement किया है, या Meshtastic जैसी किसी चीज़ को bridge किया है?
  • मैं Embassy से Spark modeling guitar amp pedal controller बना रहा था
    BLE के ज़रिए amp को control करता है, और Rust BLE stack का पूरी तरह open source होना दिलचस्प लगा
    लेकिन यह अभी शुरुआती चरण में है, इसलिए API अक्सर बदलती रहती थी और Cargo में git revision pin करना पड़ता था
    फिर भी इस प्रोजेक्ट का भविष्य उम्मीद जगाता है

  • Microsoft भी Embassy का इस्तेमाल EC(Embedded Controller) के लिए कर रहा है
    अधिक जानकारी के लिए Open Device Partnership देखें

  • Ariel OS Embassy के ऊपर बना एक operating system है। यह भी देखने लायक है

    • यह Embassy से स्वतंत्र है, लेकिन अगर आप preemptive multitasking ढूँढ रहे हैं, तो Xous भी देख सकते हैं
 
pmnxis 2026-01-11

मैंने embassy-rs का इस्तेमाल करके STM32G030C8T6 के साथ प्रोडक्ट डेवलपमेंट से लेकर मास प्रोडक्शन तक किया है, और इस्तेमाल करते हुए कुछ कमियां दिखीं।
जब किसी non-standard HAL तक पहुंचना होता है, तब आखिरकार RTIC framework में इस्तेमाल होने वाले तरीके की जरूरत पड़ती है।
async की वजह से memory के inefficient होने की संभावना ज्यादा रहती है, इसलिए सावधान रहना पड़ता है।
flash memory 32KB या उससे कम वाले environment में डेवलपमेंट करना काफी सीमित हो जाता है। (log + debug symbol आदि)
NRF/STM/ESP/RP से बाहर के ecosystem में डेवलपमेंट करना चाहें, तो यह व्यवहारिक रूप से बहुत मुश्किल है।
embassy-rs के जरिए Rust embedded को आजमाना अच्छा है, लेकिन बाद में mass production या करियर के लिहाज से सुधार करना चाहें, तो RTIC को थोड़ा और गहराई से देखना बेहतर होगा।
दूसरी ओर, इसकी पहुंच आसान होने की वजह से यह एक तरह का advanced Rust Arduino बन जाता है, और चिंता यह है कि कहीं यही बात ज्यादा कठिन डेवलपमेंट के समय उलझन भरी स्थिति पैदा न कर दे.