Rust × ESP32開発が本格化:esp-hal 1.0のインパクトと始め方

2025年10月、ESP32向けRust HAL「esp-hal」がバージョン1.0.0に到達しました。これはマイコンベンダーが公式にサポートする初の安定版Rust HALであり、組込みRust界にとって画期的な出来事です。この記事では、esp-hal 1.0の意義と、ESP32でRust開発を始める方法を解説します。

esp-hal 1.0.0とは

esp-halはEspressifが公式に開発・メンテナンスしている、ESP32ファミリー向けのRustハードウェア抽象化レイヤー(HAL)です。2025年2月にベータ版、10月に正式リリースされました。

1.0で安定化された機能:

  • HAL初期化(esp_hal::init)と設定
  • GPIO、UART、SPI、I2Cドライバ
  • 時間モジュール(Instant、Duration、Rate)
  • async/blockingの両方のドライバモード
  • Embassyなどの非同期ランタイムとの互換性

その他の機能はunstableフィーチャーフラグの下に配置され、段階的に安定化される予定です。次の大きな安定化ターゲットはWi-Fi/Bluetooth/ESP-NOWスタック「esp-radio」です。

2つの開発アプローチ

ESP32でRustを使う方法は2つあります。

1. no_std + esp-hal(ベアメタル)

OSを使わず、ハードウェアを直接制御するアプローチです。バイナリサイズが小さく、起動が速く、リアルタイム性が必要な場面に適しています。esp-hal 1.0はこのパスの安定版です。

2. std + esp-idf-hal(IDF上で動作)

ESP-IDFの上にRust標準ライブラリを載せるアプローチです。スレッド、ネットワーキング、ファイルシステムなど標準ライブラリの機能がフルに使えます。バイナリは大きくなりますが、機能の網羅性は高いです。

LLVM Xtensaアップストリーム化

ESP32・ESP32-S2・ESP32-S3が採用するXtensaアーキテクチャのLLVMサポートが、本家LLVMへのアップストリーム化が進んでいます。基本ISAの大部分はすでにLLVM本体に取り込まれており、将来的にはEspressifのカスタムLLVMフォークなしで、標準のRustツールチェーンからXtensaターゲットにコンパイルできるようになります。

なお、RISC-VベースのESP32-C系/H系チップはすでに標準ツールチェーンでコンパイル可能です。

始め方

ESP32でRust開発を始める手順は以下のとおりです。

  1. RustインストールrustupでRustをインストール
  2. espupインストールcargo install espupでESP32用ツールチェーンマネージャを導入
  3. ツールチェーン構築espup installでXtensa対応ツールチェーンを自動セットアップ
  4. プロジェクト作成cargo generate esp-rs/esp-halテンプレートからプロジェクトを生成
  5. ビルド&フラッシュcargo runで実機にフラッシュして実行

まとめ

esp-hal 1.0.0のリリースにより、ESP32でのRust開発は「実験的」から「プロダクション対応」へと段階が上がりました。メモリ安全性とゼロコスト抽象化というRustの利点を、IoTデバイス開発で活かせる時代が来ています。C/C++に慣れた組込みエンジニアも、ぜひRust on ESP32を試してみてください。

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

IP: 取得中...
216.73.216.31216.73.216.31