-
Embassy는 Rust 언어와 비동기(async) 기능을 활용해 안전하고 효율적인 임베디드 애플리케이션을 빠르게 개발할 수 있도록 설계된 차세대 프레임워크
- 런타임이나 가비지 컬렉터 없이 컴파일 타임 메모리·스레드 안전성을 확보하며, RTOS 없이도 멀티태스킹을 수행
-
HAL, 네트워킹, Bluetooth, USB, 부트로더 등 주요 기능을 포함해 다양한 마이크로컨트롤러를 지원
-
저전력 설계와 우선순위 기반 실행기(executor) 로 실시간 처리와 배터리 수명을 모두 고려
- Rust 생태계와 결합된 비동기 임베디드 개발의 대표 플랫폼으로 자리잡고 있음
Embassy 개요
- Embassy는 Rust와 async 기능을 이용해 임베디드 애플리케이션을 안전하고 효율적으로 작성할 수 있는 차세대 프레임워크
- 런타임, 가비지 컬렉터, 운영체제 없이 동작
- 컴파일 타임에 메모리 및 스레드 안전성을 확보
- 공식 문서, API 레퍼런스, 웹사이트, 채팅 채널이 제공됨
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는 전원 장애에도 안전한 펌웨어 업데이트 지원
예제 및 개발 환경
- 예제는 examples/ 폴더에 칩 제조사별로 구분되어 있음
- 예: nrf52840, stm32xx, rp, std 등
- 실행 절차
-
probe-rs 설치 후 예제 디렉터리 이동
-
Cargo.toml과 .cargo/config.toml에서 칩 이름 설정
-
cargo run --release --bin blinky 명령으로 실행
-
Rust Analyzer 기반 IDE 사용 시 .vscode/settings.json의 rust-analyzer.linkedProjects 설정 필요
기술 사양 및 라이선스
-
최소 지원 Rust 버전(MSRV) : 1.75 이상
-
라이선스: Apache-2.0 또는 MIT 중 선택 가능
-
저작권 문서는 LICENSE-APACHE, LICENSE-MIT, LICENSE-CC-BY-SA 포함
-
이름의 의미는 “** EMBedded ASYnc**”의 약자
프로젝트 현황
- GitHub에서 8.5k 스타, 1.3k 포크, 177개 태그, 636명 기여자
- 코드의 99.6%가 Rust로 작성
- 최신 커밋은 2026년 1월 기준으로 활발히 유지됨
요약
- Embassy는 Rust의 안전성과 async의 효율성을 결합한 현대적 임베디드 프레임워크
-
RTOS 대체 수준의 비동기 실행 모델, 다양한 하드웨어 지원, 저전력 설계가 특징
-
네트워킹·Bluetooth·USB·부트로더 등 실무 기능을 통합 제공
-
Rust 1.75 이상에서 안정적으로 컴파일되며, Apache-2.0/MIT 듀얼 라이선스로 공개
- 활발한 커뮤니티와 풍부한 예제로 임베디드 Rust 개발의 핵심 플랫폼으로 성장 중