# Embassy - Rust와 async 기반의 현대적 임베디드 프레임워크

> Clean Markdown view of GeekNews topic #25698. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=25698](https://news.hada.io/topic?id=25698)
- GeekNews Markdown: [https://news.hada.io/topic/25698.md](https://news.hada.io/topic/25698.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2026-01-10T05:33:16+09:00
- Updated: 2026-01-10T05:33:16+09:00
- Original source: [github.com/embassy-rs](https://github.com/embassy-rs/embassy)
- Points: 4
- Comments: 2

## Topic Body

- 안전하고 효율적인 임베디드 애플리케이션을 빠르게 개발할 수 있도록 설계된 **차세대 프레임워크**  
- 런타임이나 가비지 컬렉터 없이 **컴파일 타임 메모리·스레드 안전성**을 확보하며, **RTOS 없이도 멀티태스킹**을 수행  
- **HAL, 네트워킹, Bluetooth, USB, 부트로더** 등 주요 기능을 포함해 다양한 마이크로컨트롤러를 지원  
- **저전력 설계**와 **우선순위 기반 실행기(executor)** 로 실시간 처리와 배터리 수명을 모두 고려  
- Rust 생태계와 결합된 **비동기 임베디드 개발의 대표 플랫폼**으로 자리잡고 있음  
  
---  
  
### Embassy 개요  
- Embassy는 **Rust와 async 기능**을 이용해 임베디드 애플리케이션을 안전하고 효율적으로 작성할 수 있는 **차세대 프레임워크**  
  - 런타임, 가비지 컬렉터, 운영체제 없이 동작  
  - 컴파일 타임에 **메모리 및 스레드 안전성**을 확보  
  
### Rust + async 기반 구조  
- Rust의 **async/await** 기능을 통해 임베디드 환경에서 효율적인 **멀티태스킹** 구현  
  - 태스크는 컴파일 타임에 **상태 머신(state machine)** 으로 변환되어 협력적으로 실행  
  - **동적 메모리 할당 불필요**, 단일 스택에서 실행  
  - **RTOS의 컨텍스트 스위칭 없이도** 더 빠르고 작은 코드 크기 달성  
- 링크된 자료에서 RTOS 대비 성능 우위를 언급함  
  
### 주요 구성 요소 (Batteries Included)  
- **하드웨어 추상화 계층(HAL)**  
  - 안전한 Rust API로 하드웨어 기능을 제어  
  - 주요 지원 대상: **STM32, nRF, RP2040, MSPM0, ESP32, CH32, PolarFire SoC, PY32**  
- **시간 관리(embassy-time)**  
  - 전역적으로 사용 가능한 **Instant, Duration, Timer** 타입 제공, 오버플로우 없음  
- **실시간 및 저전력 지원**  
  - 여러 실행기(executor)를 생성해 **우선순위 기반 태스크 실행** 가능  
  - 유휴 시 코어를 자동으로 절전 모드로 전환, **인터럽트 기반 웨이크업**  
- **네트워킹(embassy-net)**  
  - **Ethernet, IP, TCP, UDP, ICMP, DHCP** 지원  
  - 비동기 구조로 **타임아웃 관리 및 다중 연결 처리** 단순화  
- **Bluetooth**  
  - `trouble`, `nrf-softdevice`, `embassy-stm32-wpan` 등 다양한 BLE 스택 지원  
- **LoRa, USB, Bootloader**  
  - `lora-rs`로 LoRaWAN 스택 지원  
  - `embassy-usb`는 **USB CDC, HID 클래스** 구현  
  - `embassy-boot`는 **전원 장애에도 안전한 펌웨어 업데이트** 지원  
  
### 기술 사양 및 라이선스  
- **최소 지원 Rust 버전(MSRV)** : 1.75 이상  
- **라이선스**: Apache-2.0 또는 MIT 중 선택 가능  
- **프로젝트 이름**은 “** EMBedded ASYnc**”의 약자

## Comments



### Comment 49017

- Author: pmnxis
- Created: 2026-01-11T13:59:45+09:00
- Points: 2

embassy-rs 를 사용하여 STM32G030C8T6 으로 제품 개발 양산까지 해봤는데 쓰면서 단점은 몇 있습니다.  
보편적이지 않은 hal 에 접근할때는 결국 RTIC 프레임워크 쓰던 접근이 필요합니다.  
async 때문에 메모리 비효율적으로 될 가능성이 크기에 조심해야합니다.  
플래시 메모리가 32KB 이하인 환경에서 개발하기에는 매우 제약적입니다. (log+debug symbol etc)  
NRF/STM/ESP/RP 를 벗어난 생태계에서 개발을 하고자할때 사실상 매우 어렵습니다.  
embassy-rs로 rust embedded를 맛보는 것은 좋지만 차후 양산, 커리어적으로 개선을 원한다면 RTIC을 좀더 맛보는게 좋을 것 같습니다.  
한편으로는 advanced rust arduino가 되어 접근성이 좋은것이 오히려 난이도있는 개발을 할때에 난감한 상황을 주는 문제가 발생하지 않을까 우려가 있습니다.

### Comment 48979

- Author: neo
- Created: 2026-01-10T05:33:16+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=46547740) 
- 나는 **Embassy 프로젝트**의 큰 팬임. 이건 async Rust가 왜 대단한지를 보여주는 완벽한 예시임  
  힙 없이 동작하고, **저비용 추상화**로 단일 코어 칩에서도 동시 실행이 가능함. RTOS의 복잡함도 없음  
  Embassy 팀이 이만큼 성장한 게 정말 놀라움.  
  또, Embassy-net용 HTTP 클라이언트인 [reqwless](https://github.com/drogue-iot/reqwless)를 추천함. HTTPS까지 지원함  
  예전엔 Rust embedded가 C/C++보다 낫다고 생각하지 않았지만, 이제는 MCU 구매 결정을 Rust 지원 여부로 판단하게 됨
  - 이걸 테스트해보려면 어떤 **MCU 개발 키트**를 추천하는지 궁금함
  - HAL에 타입 안정성을 가져다주는 점이 정말 좋음. 이 분야에 처음 들어오는 사람들에게 **완충재** 같은 역할을 함  
    그런데 아직도 watchdog이 뭔지 잘 모르겠음

- 나는 Embassy를 **애플리케이션 패턴 레이어**에서 가장 즐기고 있음  
  긴 수명의 디바이스 태스크들이 타이밍과 조정을 작은 async API 뒤에 숨기는 구조임  
  예를 들어 `loop { let btn = ir.wait_for_press().await; }` 같은 코드에서 컴파일러가 상태 머신을 자동으로 만들어줌  
  이런 스타일은 async + no-std의 **자연스러운 산물**이라 생각함  
  HAL이나 executor보다, 이런 애플리케이션 구조에 대한 논의가 더 많아졌으면 함  
  Brad Gibson과 함께 쓴 [무료 글](https://medium.com/@carlmkadie/how-rust-embassy-shine-on-embedded-devices-part-1-9f4911c92007)에서도 이런 아이디어를 다룸  
  또, 이런 패턴을 실험하고 문서화하는 [device-kit](https://github.com/carlkcarlk/device-kit) 저장소를 열었음. 비슷한 시도를 하는 다른 레포도 알고 싶음
  - 이건 고수준 로직뿐 아니라 **저수준 펌웨어**에도 유용함  
    예전에 NIC 펌웨어를 상태 머신으로 짜던 시절, Rust의 async 같은 게 있었다면 정말 좋았을 것임  
    C에서도 코루틴 흉내는 낼 수 있지만 너무 **해키(hacky)** 함  
    당시엔 RTOS 스레드가 비싸다고 믿었지만, 지금 생각하면 꼭 그랬던 건 아닌 듯함  
    802.11 같은 프로토콜 처리에도 async가 있었다면 코드가 훨씬 작고 단순했을 것임

- 나는 Embassy를 정말 좋아함  
  **Bare metal C**와 FreeRTOS에서 넘어왔는데, 드디어 임베디드에도 현대적인 툴체인이 생긴 느낌임  
  특히 주변 생태계가 훌륭함 — probe-rs + cargo run 통합, defmt 로깅, embedded_hal, stm32-rs 등  
  RTIC도 써봤지만 async 문법의 **인체공학적 사용성** 때문에 Embassy로 정착함  
  macOS에서도 바로 빌드되고 실행돼서 놀라웠음. 예전엔 항상 Linux를 써야 했는데 이제는 M칩에서 바로 가능함  
  주변장치 접근 공유 개념을 이해하는 데 시간이 좀 걸렸지만, 컴파일 타임에 **락 규칙**이 강제되어 버그가 거의 없음  
  USB와 네트워킹 스택 품질도 매우 높음. PLDM over USB와 Ethernet TCP 스택을 쓰는데 완벽하게 동작함  
  단점이라면, 기존 벤더 예제에 익숙한 사람을 온보딩하기 어렵고, 벤더가 Rust를 모르면 디버깅 협업이 힘듦  
  그래도 STM 생태계라면 강력히 추천함
  - 예전에 Embassy를 빌드했을 때 **의존성 100개 이상**을 끌어와서 놀랐음. 취미용으로는 좋지만 산업용으로는 아직 멀었다고 생각함
  - **ESP32** 같은 멀티코어도 지원하는지 궁금했는데, 보니까 두 번째 executor로 가능하고 `embassy_sync`로 통신함

- Embassy와 async Rust는 지난 10년간 임베디드 세계에 일어난 **가장 큰 혁신**임  
  C 기반 RTOS는 개념은 좋지만 실제로 쓰기엔 고통스러움. Embassy 같은 경량 프레임워크가 자연스러운 진화임  
  Embassy는 사실상 **실시간 OS**로도 볼 수 있음. 자세한 내용은 [이 글](https://kerkour.com/introduction-to-embedded-development-with-rust) 참고

- 나는 [Glicol](https://glicol.org/)을 no-std로 다시 작성 중인데, **embassy-rs + 2350** 조합이 최고임  
  2026년에 임베디드 개발을 시작할 계획이라면 이 스택을 강력히 추천함

- 약간 주제에서 벗어나지만, 임베디드 개발을 **처음 시작**하려면 어떤 게 좋을지 궁금함  
  10년 넘게 웹 개발만 하다가 Rust 책을 공부 중임. Raspberry Pi를 주문했는데, 이게 진짜 임베디드라고 할 수 있을까?
  - Raspberry Pi보다는 **ST Nucleo 보드**를 추천함. SWD 프로그래머가 내장되어 있어서 플래싱과 디버깅이 쉬움  
    USB 포트가 있는 [NUCLEO-F767ZI](https://www.st.com/en/evaluation-tools/nucleo-f767zi.html) 같은 모델이 좋음
  - 나는 [ESP32-C6 Touch LCD](https://www.waveshare.com/esp32-c6-touch-lcd-1.47.htm)를 $25에 샀는데, 거의 **스트랩 없는 Fitbit** 같음  
    Wi-Fi, BLE, 6축 센서까지 있고, C 데모도 바로 실행됨. LVGL도 훌륭함  
    Rust는 아직 안 써봤지만, RISC-V 기반이라 흥미로움. Elecrow나 Makerfabs도 초보자에게 좋음
  - **RP2040**이 들어간 보드와 전자부품 스타터 키트를 사서 바로 코딩을 시작하길 권함  
    Rust라면 [rp-hal](https://github.com/rp-rs/rp-hal)이 입문용으로 좋고, Embassy는 조금 더 나중에 써보면 좋음
  - Raspberry Pi도 GPIO를 다룰 수 있어서 임베디드 감각을 익히기 좋음  
    좀 더 **bare metal**에 가깝게 가고 싶다면 ESP32 보드를 추천함. 싸고, 배터리 충전기나 디스플레이가 달린 다양한 폼팩터가 있음

- 나는 Embassy로 **LoRa 릴레이**를 만들어 Bitchat 앱(nrf52 기반)에서 사용 중임  
  대부분 아주 매끄럽게 동작하고, 패닉은 Nordic SoftDevice 쪽 문제였음
  - Bitchat이 BLE 기반 아닌가? LoRa 프로토콜을 직접 구현한 건지, 아니면 Meshtastic 같은 걸 브릿징한 건지 궁금함

- 나는 Embassy로 **Spark 모델링 기타 앰프 페달 컨트롤러**를 만들고 있었음  
  BLE로 앰프를 제어하는데, Rust BLE 스택이 완전 오픈소스라서 흥미로웠음  
  다만 아직 초기 단계라 API가 자주 바뀌고 Cargo에서 git 리비전을 고정해야 했음  
  그래도 프로젝트의 **미래가 기대됨**

- Microsoft에서도 Embassy를 **EC(Embedded Controller)** 용으로 사용 중임  
  자세한 내용은 [Open Device Partnership](https://opendevicepartnership.org/embedded-controller) 참고

- [Ariel OS](https://ariel-os.org)는 Embassy 위에 구축된 운영체제임. 참고할 만함
  - Embassy와는 독립적이지만, **선점형 멀티태스킹**을 찾는다면 [Xous](https://www.youtube.com/watch?v=DaWkfSmIgRs)도 살펴볼 만함
