4 ポイント 投稿者 GN⁺ 2026-01-10 | 2件のコメント | WhatsAppで共有
  • 安全で効率的な組み込みアプリケーションをすばやく開発できるよう設計された次世代フレームワーク
  • ランタイムやガベージコレクタなしでコンパイル時のメモリ・スレッド安全性を確保し、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
    • troublenrf-softdeviceembassy-stm32-wpanなど多様なBLEスタックをサポート
  • LoRa、USB、Bootloader
    • lora-rsでLoRaWANスタックをサポート
    • embassy-usbUSB CDC、HIDクラスを実装
    • embassy-boot電源障害時にも安全なファームウェア更新をサポート

技術仕様とライセンス

  • 最小対応Rustバージョン(MSRV): 1.75以上
  • ライセンス: Apache-2.0またはMITを選択可能
  • プロジェクト名は「EMBedded ASYnc」の略

2件のコメント

 
pmnxis 2026-01-11

embassy-rs を使って STM32G030C8T6 で製品開発から量産までやってみましたが、使っていて欠点はいくつかあります。
一般的ではない HAL にアクセスするときは、結局 RTIC フレームワークを使っていたときのようなアプローチが必要になります。
async のため、メモリ効率が悪くなる可能性が高く、注意が必要です。
フラッシュメモリが 32KB 以下の環境で開発するにはかなり制約があります。(log+debug symbol など)
NRF/STM/ESP/RP を外れたエコシステムで開発しようとすると、事実上かなり難しいです。
embassy-rs で Rust embedded を触ってみるのは良いですが、その後の量産やキャリア面での改善を望むなら、RTIC をもう少し触ってみるのがよさそうです。
一方では、advanced rust arduino のようになってアクセスしやすいことが、かえって難易度の高い開発をするときに厄介な状況を生む問題が発生するのではないかと懸念しています.

 
GN⁺ 2026-01-10
Hacker News の意見
  • 自分は Embassy プロジェクトの大ファンだ。これは async Rust がなぜすごいのかを示す完璧な例だ
    ヒープなしで動作し、低コストな抽象化により単一コアのチップでも並行実行が可能だ。RTOS の複雑さもない
    Embassy チームがここまで成長したのは本当に驚きだ。
    それから、Embassy-net 向けの HTTP クライアントである 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 と共著した 無料記事 でもこのアイデアを扱っている
    また、こうしたパターンを実験して文書化するための device-kit リポジトリも公開した。同様の試みをしている他のリポジトリも知りたい

    • これは高水準ロジックだけでなく 低水準ファームウェアにも有用だ
      昔 NIC ファームウェアを状態機械で書いていた頃、Rust の async のようなものがあれば本当によかったと思う
      C でもコルーチンを真似ることはできるが、かなり ハッキー
      当時は RTOS スレッドは高コストだと信じていたが、今思えば必ずしもそうではなかった気もする
      802.11 のようなプロトコル処理にも async があれば、コードはもっと小さく単純になっていただろう
  • 自分は Embassy が本当に好きだ
    ベアメタル 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 のようなマルチコアも対応しているのか気になっていたが、見たところ 2 つ目の executor で可能で、embassy_sync で通信するようだ
  • Embassy と async Rust は、ここ 10 年の組み込みの世界で起きた 最大の革新
    C ベースの RTOS は概念としてはよいが、実際に使うとつらい。Embassy のような軽量フレームワークは自然な進化だ
    Embassy は事実上 リアルタイム OSとして見ることもできる。詳しくは この記事 を参照

  • 自分は Glicol を no-std で書き直しているが、embassy-rs + 2350 の組み合わせが最高だ
    2026 年に組み込み開発を始めるつもりなら、このスタックを強くおすすめする

  • 少し話はそれるが、組み込み開発を これから始めるなら何がよいのか気になる
    10 年以上 Web 開発だけをしてきて、今は Rust の本を勉強中だ。Raspberry Pi を注文したのだが、これって本当に組み込みと言えるのだろうか?

    • Raspberry Pi より ST Nucleo ボードをおすすめする。SWD プログラマが内蔵されていて、書き込みやデバッグがしやすい
      USB ポートのある NUCLEO-F767ZI のようなモデルがよい
    • 自分は ESP32-C6 Touch LCD を 25 ドルで買ったが、ほとんど ストラップのない Fitbit のようなものだ
      Wi-Fi、BLE、6 軸センサーまで載っていて、C のデモもすぐ動く。LVGL も素晴らしい
      Rust はまだ試していないが、RISC-V ベースなので興味深い。Elecrow や Makerfabs も初心者にはよい
    • RP2040 搭載ボードと電子部品のスターターキットを買って、すぐにコーディングを始めるのを勧める
      Rust なら rp-hal が入門向けによく、Embassy はもう少し後で試すとよい
    • Raspberry Pi でも GPIO を扱えるので、組み込みの感覚を身につけるにはよい
      もっと ベアメタルに近づきたいなら ESP32 ボードをおすすめする。安くて、バッテリー充電器やディスプレイ付きなどさまざまなフォームファクタがある
  • 自分は Embassy で LoRa リレーを作って Bitchat アプリ(nrf52 ベース)で使っている
    ほとんどは非常にスムーズに動作しており、panic は Nordic SoftDevice 側の問題だった

    • Bitchat は BLE ベースでは? LoRa プロトコルを直接実装したのか、それとも Meshtastic のようなものをブリッジしているのか気になる
  • 自分は Embassy で Spark モデリングギターアンプのペダルコントローラを作っていた
    BLE でアンプを制御するのだが、Rust の BLE スタックが完全オープンソースなので興味深かった
    ただ、まだ初期段階なので API が頻繁に変わり、Cargo で git リビジョンを固定する必要があった
    それでもプロジェクトの 将来性に期待している

  • Microsoft でも Embassy を **EC(Embedded Controller)**向けに使っている
    詳しくは Open Device Partnership を参照

  • Ariel OS は Embassy 上に構築されたオペレーティングシステムだ。参考になる

    • Embassy とは独立しているが、プリエンプティブマルチタスキングを探しているなら Xous も見てみるとよい