カテゴリー: IoT・組込み

  • 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.217.150216.73.217.150