C言語

WSL2 と Windows 11で始める組込みC開発環境構築ガイド

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

お得なお知らせ

スポンサードリンク
AI時代のキャリア構築

プログラミング学習、今日から動き出す

「何から始めるか」で止まっている人こそ、無料説明会や本で自分に合うルートを30分で確定できます。

Enjoy Tech!|月額制でWeb系に強い▶ (Kindle本)ITエンジニアの転職学|後悔しないキャリア戦略▶

▶ AIコーディング環境なら  実践Claude Code入門(Amazon)が実務で即使える入門書です。Amazonベストセラーにも選ばれていますよ。


スポンサードリンク

1. 全体像とメリット

項目 内容
OS 基盤 Windows 11 + WSL2(Linux カーネル上で動作)
ディストリビューション Ubuntu 22.04 LTS(2022 年 4 月リリース、2027 年まで長期サポート)
主なツールチェーン gcc-arm-none-eabimakeopenocdgdb-multiarch
IDE/エディタ Visual Studio Community 2022(C/C++ デスクトップ開発)・VS Code(Remote‑WSL 拡張)
バージョン管理 Git for Windows
USB デバッグ usbipd-win を用いた WSL2 への USB 転送

メリット
- Windows の GUI と Linux のビルドツールを同時に利用でき、環境切り替えが不要。
- Ubuntu の公式リポジトリはセキュリティパッチとバグフィックスが定期的に提供されるため、常に「最新」ではなく「安定」した状態で開発できる。
- VS Code の Remote‑WSL により、エディタ側から直接 Linux ツールチェーンを呼び出すことができ、生産性が向上する。


2. 前提条件と必須ソフト

カテゴリ 必要なもの
OS Windows 11 (Pro/Enterprise が推奨)
仮想化機能 「Virtual Machine Platform」および「Windows Subsystem for Linux」機能を有効化
WSL2 ディストリビューション Ubuntu 22.04 LTS(2022 年版)
開発ツール Git for Windows、Visual Studio Community 2022、VS Code
USB 転送ユーティリティ usbipd-win(Windows 用 USBIP デーモン)

注記:本稿ではすべてのインストール手順を PowerShell と Ubuntu ターミナルで実行する前提で説明します。


3. WSL2 と Ubuntu 22.04 のセットアップ

3.1 Windows 側の準備

3.2 Ubuntu 22.04 のインストール

ポイント
Ubuntu 22.04 は 2022 年 4 月 にリリースされた LTS バージョンです。5 年間の標準サポート(2027 年まで)と、追加で 5 年間の ESM(Extended Security Maintenance)が提供されます。

3.3 Ubuntu 側で基本ツールを最新化


4. 開発ツールチェーンのインストール

  • gcc-arm-none-eabi は ARM Cortex‑M 系マイコン向けのクロスコンパイラです。
  • openocdusbip は USB デバッグアダプタを WSL2 から利用するために必須です。

インストール結果確認


5. IDE と WSL2 の連携設定

5.1 VS Code – Remote‑WSL の構成

  1. VS Code をインストールし、拡張機能マーケットプレイスから Remote - WSL を追加。
  2. 左下の緑色アイコン → “New Window using Distro”Ubuntu-22.04 を選択。
  3. 新しいウィンドウが Ubuntu のファイルシステムにマッピングされるので、code . と入力すれば同じフォルダが VS Code に表示されます。

ヒント:Remote‑WSL ではターミナルも自動的に Linux 環境になるため、パスの混在エラーを防げます。

5.2 Visual Studio Community 2022 の統合(汎用設定)

Visual Studio は Windows 側で実行されるので、WSL2 上のツールチェーンへは wsl.exe を介して呼び出す形にします。ハードコードされたディレクトリパスではなく、環境変数と wslpath コマンドを組み合わせて動的に解決できるように設定してください。

  1. プロジェクト → プロパティ → VC++ ディレクトリ → 実行可能ファイルディレクトリ
    text
    $(WslRoot)\usr\bin

    $(WslRoot) は次のコマンドで取得できます(PowerShell 例)

powershell
$wslRoot = wsl.exe wslpath -u "$env:USERPROFILE\AppData\Local\Packages\CanonicalGroupLimited..."

  1. 外部ツール を追加し、以下のように設定
  2. タイトルWSL Make
  3. コマンドwsl.exe
  4. 引数make -C $(ProjectDir)

この構成なら、Visual Studio のビルドボタンだけで Ubuntu 上の make が実行されます。Windows と Linux のパスが混在しない点に注意してください。


6. USB デバイス(ST‑LINK/V2 等)を WSL2 に転送する手順

6.1 Windows 側で usbipd-win をインストール

管理者権限 が必要です。インストール後、PC を再起動してください。

6.2 デバイスの列挙とバインド

6.3 WSL2 側でデバイスをアタッチ

6.4 接続確認

トラブルシューティング
「cannot open USB device」 エラーが出た場合は、Windows 側でデバイスが別プロセス(例:ST‑Link Utility)にロックされていないか確認し、必要ならそのアプリを終了してください。


7. ビルドフローの実装例

7.1 ディレクトリ構成

7.2 完全版 Makefile

解説
- CFLAGS-nostdlib -nostartfiles を入れることで、組込み向けの最小構成バイナリが生成されます。
- debug ターゲットは VS Code のタスクから呼び出すことを想定しています。

7.3 VS Code 用デバッグ設定

.vscode/launch.json

.vscode/tasks.json


8. サンプルコードと実機書き込み

8.1 LED 点滅サンプル(src/main.c

8.2 ビルド・書き込み手順

実行結果
書き込みが成功すると、対象ボード上の LED が約 0.5 秒間隔で点滅します。


9. よくある問題と対策

症状 原因例 解決策
openocd: cannot open USB device WSL2 がデバイスを認識していない Windows 側で usbipd list → 正しい BusID を bind → WSL で modprobe vhci_hcd && usbip attach …
ビルド時に「/usr/bin/arm-none-eabi-gcc が見つからない」 PATH が破損または apt install が失敗 sudo apt reinstall gcc-arm-none-eabi → 再度 which arm-none-eabi-gcc
VS Code のタスクが「permission denied」 openocd を sudo で実行しないとデバイスにアクセスできない タスク定義の commandsudo を付与し、WSL2 側で sudo visudoNOPASSWD: /usr/bin/openocd を許可
デバッグ時に GDB が接続できない OpenOCD のポート 3333 が別プロセスで使用中 sudo lsof -i:3333 で占有プロセスを特定し、停止させるかポート番号を変更

10. まとめと次のステップ

  1. 環境構築:Windows 11 → WSL2 + Ubuntu 22.04 LTS → 必要パッケージ (gcc-arm-none-eabiopenocd…) をインストール。
  2. IDE 連携:VS Code の Remote‑WSL と Visual Studio の wsl.exe ラッピングでシームレスに開発。
  3. USB デバッグusbipd-winusbip によるデバイス転送手順を踏み、OpenOCD がマイコンへアクセスできるように設定。
  4. ビルド・フロー:Makefile でクロスコンパイルと書き込みタスクを一元管理し、VS Code の launch.json/tasks.json と連携させる。
  5. サンプル実行:LED 点滅コードをビルド・フラッシュすれば、即座にハードウェア上で動作確認が可能。

この手順を踏めば、Windows 環境だけで完結した「C 言語 組込み開発」の入門体験が実現できます。次は以下のテーマへ挑戦してみてください。

  • RTOS(FreeRTOS) を組み込んだマルチタスク例
  • 外部ライブラリ(CMSIS‑DSP, FatFS) のビルド統合
  • CI/CD パイプライン(GitHub Actions + WSL2)による自動テスト

最後に:本稿は Windows 11 と Ubuntu 22.04 LTS を前提にしていますが、WSL1 や別ディストリビューションでも概ね同様の手順で構築できます。環境に合わせてパッケージ名やデバイス転送方式を調整してください。


参考リンク

Happy hacking! 🚀

スポンサードリンク

お得なお知らせ

スポンサードリンク
AI時代のキャリア構築

プログラミング学習、今日から動き出す

「何から始めるか」で止まっている人こそ、無料説明会や本で自分に合うルートを30分で確定できます。

Enjoy Tech!|月額制でWeb系に強い▶ (Kindle本)ITエンジニアの転職学|後悔しないキャリア戦略▶

▶ AIコーディング環境なら  実践Claude Code入門(Amazon)が実務で即使える入門書です。Amazonベストセラーにも選ばれていますよ。


-C言語