概要
Embassy はRustベースの次世代組込みアプリケーションフレームワーク。 安全性 ・ 正確性 ・ 省電力性 を兼ね備えたコードを高速開発可能。 async/await による効率的なマルチタスク制御を実現。 幅広い マイコン ・ 通信規格 に対応したライブラリ群を提供。 ドキュメント ・ サンプル ・ 開発サポート も充実。
Embassyの特徴と概要
- Rust言語 による高速・省メモリ・安全な組込み開発基盤
- async/await を活用した協調型マルチタスク実現
- RTOS不要、カーネルコンテキストスイッチなしで高速・小規模実装
- 動的メモリ割当不要、単一スタック上で複数タスク動作
- 型安全性 と スレッド安全性 によるコンパイル時バグ検出
標準搭載ライブラリ・機能
- Hardware Abstraction Layer (HAL) によるハードウェア抽象化
- embassy-stm32 (STM32シリーズ全般)
- embassy-nrf (Nordic nRF52/53/54/91シリーズ)
- embassy-rp (Raspberry Pi RP2040, RP23xx)
- embassy-mspm0 (TI MSPM0シリーズ)
- esp-rs (ESP32シリーズ、Wi-Fi/Bluetooth/ESP-NOW対応開発中)
- ch32-hal (WCH CH32V RISC-Vシリーズ)
- mpfs-hal (Microchip PolarFire SoC)
- py32-hal (Puya Semiconductor PY32シリーズ)
- embassy_time によるグローバルな時間管理(Instant, Duration, Timer)
- 複数優先度Executor によるリアルタイム制御
- 省電力設計 (アイドル時自動スリープ、割込みでタスク復帰)
- embassy-net でEthernet/IP/TCP/UDP/ICMP/DHCP対応ネットワーク機能
- Bluetooth (trouble/nrf-softdevice/embassy-stm32-wpan等で各種MCUサポート)
- LoRaWAN (lora-rsで非同期LoRa/LoRaWAN通信)
- embassy-usb によるUSBデバイススタック(CDC ACM, HID対応、拡張API)
- embassy-boot による安全なブートローダ・DFU(試行起動・ロールバック対応)
サンプルコード例(抜粋)
- 非同期タスク(async fn)によるLED点滅・ボタン入力監視
- Timer でハードウェアタイマ不要の時間管理
- Input/Output でGPIO制御
- Spawner でバックグラウンド並列処理
- info! でログ出力
サンプル実行手順
- probe-rs インストール(https://probe.rs参照)
- 対象チップ用サンプルディレクトリへ移動(例:cd examples/nrf52840)
- Cargo.toml でチップ名feature指定、 .cargo/config.toml でチップ名指定
- 実行例:cargo run --release --bin blinky
- 詳細はGetting StartedやRunning the Examples参照
開発環境サポート
- Rust Analyzer (Visual Studio Code等)対応
- .vscode/settings.jsonの rust-analyzer.linkedProjects 設定参照
- 複数ターゲット対応のためCargo workspaceは未提供
ライセンス・コントリビューション
- Apache License 2.0 または MIT License のデュアルライセンス
- コントリビューションは明示ない限り上記ライセンスで受領
由来
- 名前の由来:「 EMB edded ASY nc」から命名
Embassyの利点まとめ
- 安全性 :型・スレッド安全なRustでバグを未然防止
- 効率性 :async/awaitでRTOS不要の高速・省メモリマルチタスク
- 拡張性 :多様なマイコン・通信規格に対応したHAL・ライブラリ
- 開発支援 :豊富なドキュメント・サンプル・ツール連携
- 省電力 :自動スリープ・割込み駆動で長寿命デバイス設計