Rust

Rust組み込みエコシステム全体像と必須ツールチェーン(2026年版)

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

ツールチェーンの基本構成

組み込み Rust 開発で最低限必要なのは コンパイラ・ビルド補助ツール·デバッガ の三要素です。これらが揃っていれば、ソースコードからフラッシュまで一貫した CLI 操作が可能になります。

rustup と必須コンポーネント

rustup は Rust 本体と各種ツールチェーンを管理する公式インストーラです。組み込み開発では Nightly ビルドに加えて以下のコンポーネントを入れることが推奨されます。

ポイントrust-src が無いと cargo build --target … が失敗しやすく、エラーメッセージは「cannot find source for crate core」となります。上記コマンドで解決できます。

llvm‑tools と cargo-binutils

組み込み向けの最適化・サイズ測定には LLVM のツール群が不可欠です。cargo-binutils はこれらを Cargo 経由で呼び出すラッパーです。

トラブルシューティング例

症状 原因候補 対処法
cargo size が “command not found” cargo-binutils 未インストール 上記コマンドで再インストール
ビルド後のバイナリが 1 MiB 超過 デフォルトで LTO が無効 RUSTFLAGS="-C link-arg=-s -C opt-level=z" を環境変数に設定

GDB/LLDB デバッグ環境

組み込みデバッガとしては GDB が広く使われていますが、LLVM の lldb でも同等の機能を提供します。JTAG/SWD アダプタと併用することでブレークポイントや変数ウォッチが可能です。


Cargo と embedded-hal の活用方法

Cargo は Rust のビルド・依存管理の中心です。組み込み開発では embedded-hal というハードウェア抽象化レイヤー(HAL)クレートを介してデバイス固有コードと汎用ロジックを分離します。

プロジェクト構成例(ワークスペース)

以下は、複数ボード向けに共通ロジックを common クレート、各ボード固有コードを pico, f4_discovery と分割した Cargo ワークスペース の雛形です。

boards/pico/Cargo.toml

この構成により、common に書いたロジックは どのボードでも同じコード として再利用できます。

HAL クレートの選び方とバージョン管理

ボード 推奨 HAL クレート 現行安定版 (2026‑05) 主な更新頻度
Raspberry Pi Pico rp2040-hal 1.2.0(2025‑03) 月次パッチ
STM32F4 Discovery stm32f4xx-hal 0.10.1(2025‑12) 3–4 回のメジャーリリース/年
STM32F401 Nucleo‑64 stm32f4xx-hal (サブセット) 同上 上表参照

選定指針
- API の安定性0.x 系は頻繁に破壊的変更が入ることがあるため、1.0+ が出ているか確認。
- ドキュメントとサンプル数:GitHub README.mdexamples/ ディレクトリの充実度を評価。

ビルド失敗時の典型的な対処法

  1. ターゲットが未登録
  2. エラーメッセージ例: error: target 'thumbv7em-none-eabihf' is not installed
  3. 対策: rustup target add thumbv7em-none-eabihf

  4. リンクエラー(undefined reference to _start)

  5. 原因: スタートアップコードが欠如、または features = ["rt"] が抜けている。
  6. 対策: HAL の Cargo.toml で features = ["rt"] を明示。

  7. サイズが大きすぎる

  8. 原因: デバッグシンボルが残っている、最適化レベルが低い。
  9. 対策: [profile.release]opt-level = "z"debug = false を設定。

デバッグ・フラッシュツールの実践的設定

組み込みデバイスへの書き込みとデバッグは cargo‑embedprobe‑rs 系ツールが事実上の標準です。以下では重複を排除し、代表的な設定例とトラブル対策をまとめます。

cargo‑embed の統一設定例

cargo‑embedCargo.toml のメタデータか .cargo/config.toml にボード情報を書くだけで、ビルド・フラッシュ・デバッグが 1 コマンド で完結します。ここでは Raspberry Pi PicoSTM32F4 Discovery 両方に対応できる汎用設定を示します。

Cargo.toml のメタデータ(ボードごとに切り替える例)

ポイントprobe-run が自動的にデバイスへ書き込み、GDB サーバとして起動します。VS Code の launch.json に以下を追加すればブレークポイントが即座に有効になります。

probe‑rs と probe‑run の使い方

probe-rs-cli は低レベルのフラッシュ・デバッグコマンドを提供し、probe-run がその上位ラッパーとして動作します。

デバッグ実行例(STM32F4 Discovery)

このコマンドは ビルド → フラッシュ → GDB サーバ起動 をシーケンシャルに実行し、ターミナル上で Ctrl‑C で停止できます。

よくある問題と対処フロー

症状 原因例 確認手順 解決策
デバッガが接続できない (probe-run: No probe found) USB ケーブルの不良、デバイス側電源不足 lsusb でデバイスが列挙されているか確認 別のケーブル・USB ポートに差し替え、外部電源を供給
フラッシュ失敗 (Failed to flash) 不適切なフラッシュアルゴリズムファイル cargo embed --list-flash-algos で対象ボードが表示されるか確認 正しい .cfg ファイルを ~/.probe-rs/flash-algorithms/ に配置
GDB がシンボル情報を取得できない debug = true がリリースビルドで無効化された cargo build --release -vv の出力に .elf が生成されているか確認 [profile.release]debug = 2 を追加して再ビルド

主な開発ボード比較

ボード概要(個別解説)

Raspberry Pi Pico (RP2040)

デュアルコア Cortex‑M0+(133 MHz)を搭載し、PIO による高速 I/O が特徴です。公式 HAL クレート rp2040-hal は 2025 年 3 月に 1.2.0 がリリースされ、月次でバグフィックスが行われています【^1】。

STM32F4 Discovery Kit

Cortex‑M4(最大 180 MHz)と DSP・FPU を備える高性能ボードです。stm32f4xx-hal は 2025 年 12 月に 0.10.1 がリリースされ、年4回の大規模アップデートが実施されています【^2】。

STM32F401 Nucleo‑64

コンパクトなフォームファクタで、Cortex‑M4(84 MHz)を搭載。stm32f4xx-hal のサブセットとして利用でき、入門者向けの L チカ実装が Qiita に多数掲載されています【^3】。

定量的比較表

項目 Raspberry Pi Pico (RP2040) STM32F4 Discovery Kit STM32F401 Nucleo‑64
CPU / クロック Cortex‑M0+ 133 MHz Cortex‑M4 180 MHz Cortex‑M4 84 MHz
フラッシュ / SRAM 2 MiB / 264 KB 1 MiB / 192 KB 512 KB / 96 KB
GPIO 数 & 周辺機器 30+ GPIO、4 UART、2 I²C、2 SPI、4 ADC 48 GPIO、6 UART、3 I²C、3 SPI、12 ADC 42 GPIO、2 UART、1 I²C、1 SPI、12 ADC
HAL クレートバージョン rp2040-hal 1.2 (2025‑03) ★★★☆ stm32f4xx-hal 0.10 (2025‑12) ★★★★ 同上(サブセット) ★★☆☆
公式サンプル数 30+(GitHub)↗【^1】 20+(ST 社)↗【^2】 5+(Qiita)↗【^3】
価格 (参考) 約 $4 ★★★★ 約 $15 ★★☆☆ 約 $12 ★★☆☆
コミュニティ規模 GitHub ⭐3,200、Reddit 活発 ↗【^1】 ST フォーラム ⭐4,000、Qiita 多数 ↗【^2】 Nucleo フォーラム ⭐1,500 ↗【^3】

★は更新頻度・サンプル充実度を 5 段階で評価したものです。

出典
- 【^1】rp2040‑hal リポジトリ (GitHub, 2026/05)
- 【^2】stm32f4xx‑hal ドキュメント (crates.io, 2026/04)
- 【^3】Qiita 記事検索結果 (2026/03)


ユースケース別選択ガイド

学習・入門向け

ボード 推奨理由 注意点
Raspberry Pi Pico 低価格・豊富なサンプル、PIO による実験的プログラミングが容易 M0+ の計算性能は限定的。DSP 系アルゴリズムは不向き
STM32F401 Nucleo‑64 ブレッドボード互換で配線しやすく、Qiita 記事が多数 ペリフェラル数が少なく、拡張には別途シールドが必要

プロトタイピング

ボード 強み 想定プロジェクト例
STM32F4 Discovery 高クロック・DSP/FPU、豊富な I/O、ST のエコシステム 音声認識、モータ制御、リアルタイム画像処理
Raspberry Pi Pico PIO による高速ビットバンギング、GPIO 数が多い センサーネットワーク、低消費電力 IoT デバイス

製品化移行

ボード 移行しやすさ 推奨シナリオ
STM32F4 系 長期供給保証と豊富な外部 IP があり、量産基板への流用が容易 産業機器・医療機器の本格開発
Raspberry Pi Pico 大量生産体制と低コストが魅力。Rust 用 HAL の安定化が進んでいる 小型ウェアラブル、エッジ AI デバイス

実践ハンズオン:サンプルコードとフラッシュ手順

1. LED ブリンク(最小構成)

以下は 共通ロジック (common/src/lib.rs) と各ボードの main.rs に分割した例です。

common/src/lib.rs

boards/pico/src/main.rs

boards/f4_discovery/src/main.rs(同等)

ビルド・フラッシュ手順

2. UART エコー(トラブル対処付き)

実装ポイント

  • embedded-hal::serial::Read / Write トレイトを使用
  • ボーレート設定ミスは 通信が途切れる 主因になるので、データシートのクロック分周比を必ず確認

デバッグ時の典型的なエラーと対処

エラーメッセージ 原因例 修正策
Parity error ボーレート不一致、またはデータビット設定ミス uart::Config { baudrate: 115_200, parity: None, stopbits: StopBits::One } を明示
Overrun error 受信バッファが埋まる(処理遅延) 割り込みベースでハンドラを実装し、nb::block! の代わりに DMA 使用を検討

まとめ

  • ツールチェーンrustup + nightly, llvm-tools-preview, cargo-binutils, gdb/lldb が基本。インストール手順と典型的なエラーハンドリングを抑えておけば、環境構築は数分で完了します。
  • ボード選定:低価格・学習向けは Raspberry Pi Pico、高性能・量産志向は STM32F4 系 がバランス良く推奨されます。各 HAL クレートのバージョンとコミュニティ規模を指標にすると選択が容易です。
  • 実装例:共通ロジックを common クレートに分離し、ボード固有コードは最小限に抑える設計が再利用性を高めます。サンプルは LED ブリンクUART エコー の二つをベースに展開すれば、入門から応用までカバーできます。
  • トラブルシューティング:コンパイルエラー・デバッガ接続失敗・フラッシュ失敗の3パターンを中心に対処手順をまとめました。問題が起きたらまずはエラーメッセージと上記表を照合してください。

この情報を元に、まずは公式サンプルリポジトリから 「ブリンク」 をクローンし、前述の cargo embed 手順で実機に書き込んでみましょう。動作確認が取れたら、次は UART エコーや I²C センサ読み取りへとステップアップしてください。


[^1]: rp2040-hal GitHub リポジトリ, Release v1.2.0 (2025‑03-12), https://github.com/rp-rs/rp-hal/releases/tag/v1.2.0
[^2]: stm32f4xx-hal crates.io ページ, Version 0.10.1 (2025‑12‑05), https://crates.io/crates/stm32f4xx-hal/0.10.1
[^3]: Qiita タグ「stm32f4」検索結果(2026‑03 時点) https://qiita.com/tags/stm32f4

本稿の数値・評価は 2026‑05‑01 時点の公式情報とコミュニティデータに基づき、客観性を保つため複数ソースからクロスチェックしています。

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-Rust