- 안전하고 효율적인 임베디드 애플리케이션을 빠르게 개발할 수 있도록 설계된 차세대 프레임워크
- 런타임이나 가비지 컬렉터 없이 컴파일 타임 메모리·스레드 안전성을 확보하며, 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**”의 약자