Contents
全体像と必要ツール
本稿では、C 言語で ARM Cortex‑M 系マイコン向けプログラムを無料の開発環境だけで構築する手順 を示します。対象は組み込みエンジニアやチームリーダーで、Raspberry Pi Pico を例に取り上げていますが、同様の手順は他の ARM Cortex‑M デバイスにも応用可能です。まず全体フローを把握し、その後各ツールの取得・設定方法を段階的に解説します。
重要ポイント
- 本稿で扱うツールは 2026 年時点で最新と考えられるバージョンを例示していますが、リリース状況は公式サイトで必ず確認してください。
- 外部リンクは信頼できる一次情報(公式ドキュメント・権威ある技術媒体)に限定し、統一した脚注形式で示します。
Eclipse と CDT のインストール・設定
IDE 本体の取得
Eclipse は公式サイトから 「Eclipse IDE for C/C++ Developers」 をダウンロードできます。OS 別の手順は次のとおりです。
- Windows:
eclipse-inst.exeを実行し、C/C++ Development Tools を選択してインストール。その後eclipse.exeを起動します。 - macOS:Homebrew (
brew install --cask eclipse) で自動的に /Applications 配下へ配置されます。 - Linux:公式サイトの tar.gz を解凍し、
eclipse/eclipseを実行します。
注:Eclipse のバージョンは 2026‑03 以降(例: 2026‑06)を推奨しますが、リリースノートで CDT が同梱されていることを確認してください【1】。
C/C++ Development Tooling (CDT) の更新
Eclipse に標準で CDT は含まれますが、Marketplace から最新版へアップデートできます。
- メニュー Help → Eclipse Marketplace を開く。
- 「C/C++ Development Tools」を検索し、Update または Install ボタンをクリック。
- インストール完了後にワークスペースを再起動する。
アップデートが終わったら、Window → Preferences → C/C++ → Build → Settings で文字コード(UTF‑8)やビルドパスの既定値を設定しておくと、マルチプラットフォーム環境でも文字化けが起きません。
GNU Arm Embedded Toolchain の取得とパス設定
ツールチェーンの概要
GNU Arm Embedded Toolchain(gcc-arm-none-eabi)は ARM 社が公式に配布するフリーコンパイラです。2026 年版として 13.3.1‑20260330 が例示されていますが、実際のリリースは ARM のダウンロードページで最新情報を確認してください【2】。
各 OS でのインストール手順
| OS | ダウンロード・インストール方法 | 環境変数設定例 |
|---|---|---|
| Windows | https://developer.arm.com/downloads/-/gnu-arm-embedded から exe を取得し実行。 | setx PATH "%PATH%;C:\Program Files\GNU Arm Embedded Toolchain\13.20260330\bin" |
| macOS | Homebrew brew install arm-none-eabi-gcc で自動インストール。 |
echo 'export PATH="/usr/local/opt/arm-none-eabi-gcc/bin:$PATH"' >> ~/.zshrc |
| Linux (Ubuntu) | sudo apt-get update && sudo apt-get install gcc-arm-none-eabi (リポジトリが新しい場合はバージョンが古くなることがあります)。 |
通常は /usr/bin がデフォルトパスに含まれるため追加設定不要。 |
インストール後、ターミナルで次のコマンドを実行しバージョン情報が表示されれば成功です。
|
1 2 3 |
arm-none-eabi-gcc --version # GNU Arm Embedded Toolchain 13.3.1 (2026‑03‑30) |
参考:C 言語の歴史と汎用性は Wikipedia に詳述されています【3】。
CMake を使ったクロスコンパイル設定
ツールチェーンファイルの作成
CMake で ARM 向けにビルドする際は、プロジェクト直下に toolchain-arm-none-eabi.cmake を置きます。このファイルではコンパイラやフラグを明示的に指定します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# toolchain-arm-none-eabi.cmake set(CMAKE_SYSTEM_NAME Generic) set(CMAKE_SYSTEM_PROCESSOR ARM) set(TOOLCHAIN_PREFIX arm-none-eabi-) set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}gcc) set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}g++) set(CMAKE_ASM_COMPILER ${TOOLCHAIN_PREFIX}as) # Cortex‑M0+/M33 用の共通フラグ例 set(COMMON_FLAGS "-mcpu=cortex-m0plus -mthumb -O2") set(CMAKE_C_FLAGS "${COMMON_FLAGS}") set(CMAKE_EXE_LINKER_FLAGS "-nostartfiles -T${CMAKE_SOURCE_DIR}/linker.ld") |
ポイント:
linker.ldはデバイス固有のリンカスクリプトです。Pico SDK が提供するテンプレートをコピーして使用します。
最小構成の CMakeLists.txt
以下は Pico 用ブリンクサンプルの最小構成です。プロジェクトディレクトリに CMakeLists.txt とツールチェーンファイル、そして SDK のインポートスクリプトが揃っていれば、ビルドは自動化できます。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
cmake_minimum_required(VERSION 3.22) project(pico_blink C ASM) # ツールチェーンファイルを指定 set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/toolchain-arm-none-eabi.cmake) # Pico SDK のインポート(SDK パスは環境変数 PICO_SDK_PATH か -DPICO_SDK_PATH=... で指定) include(${CMAKE_SOURCE_DIR}/pico_sdk_import.cmake) pico_sdk_init() add_executable(blink main.c # LED 点滅コードを格納 ) target_link_libraries(blink pico_stdlib) # UF2 ファイル生成設定(Pico 用) pico_add_extra_outputs(blink) |
ビルド手順の概要
cmake -B build -S .でビルドディレクトリを作成。cmake --build build -- -j$(nproc)(Linux/macOS)またはcmake --build build --config Release(Windows)でコンパイル。- 成功すると
build/blink.uf2が生成されます。
注:CMake の公式サイトから最新版を取得してください(2026‑04 以降のリリースが推奨)【4】。
Raspberry Pi Pico を対象としたプロジェクト作成とファームウェア書き込み
SDK のクローンとサブモジュール初期化
公式リポジトリから SDK を取得し、サブモジュールをすべて初期化します。
|
1 2 3 4 |
git clone https://github.com/raspberrypi/pico-sdk.git cd pico-sdk git submodule update --init |
環境変数 PICO_SDK_PATH に SDK の絶対パスを設定すると CMake が自動的に参照できます(例: export PICO_SDK_PATH=$(pwd))。
サンプルコードの作成
main.c に以下のコードを書き込みます。LED (GPIO25) を 0.5 秒間隔で点滅させるだけのシンプルな例です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include "pico/stdlib.h" int main() { const uint LED_PIN = 25; gpio_init(LED_PIN); gpio_set_dir(LED_PIN, GPIO_OUT); while (true) { gpio_put(LED_PIN, 1); sleep_ms(500); gpio_put(LED_PIN, 0); sleep_ms(500); } } |
ビルドと UF2 書き込み手順
| 手順 | コマンド例・説明 |
|---|---|
| ビルドディレクトリ作成 | mkdir -p build && cd build |
| CMake 設定 | cmake -DPICO_SDK_PATH=../pico-sdk .. |
| コンパイル | make -j$(nproc)(Linux/macOS)または cmake --build . --config Release(Windows) |
| UF2 生成確認 | ビルド完了後に blink.uf2 が build/ に出力されていることを確認 |
UF2 書き込み手順
- Pico の BOOTSEL ボタンを押しながら USB ケーブルで PC に接続 → 「RPI‑RP2」マスストレージが表示。
- エクスプローラ(Windows)/Finder(macOS)/ファイルマネージャ(Linux)で
blink.uf2をドラッグ&ドロップ。書き込み完了後に自動的に再起動し、LED が点滅します。
| OS | 書き込み時の留意点 |
|---|---|
| Windows | USB 3.0 ポートで認識しない場合は一度抜いて再接続すると改善することがあります。 |
| macOS | デバイス名が Finder に表示されないときは diskutil list で確認し、cp blink.uf2 /Volumes/RPI-RP2/ を実行してください。 |
| Linux | 自動マウントされない場合は sudo mount /dev/sda1 /mnt && cp blink.uf2 /mnt && sudo umount /mnt と手順を分けて実施します。 |
参考:Qiita に掲載された組み込み開発入門記事では、IDE の統合が進む背景が解説されています【5】。
デバッグ環境の構築と比較
Picoprobe + OpenOCD 設定例
Picoprobe は Raspberry Pi Pico を SWD デバッガとして利用できる低価格ハードウェアです。以下は OpenOCD 用設定ファイル pico-probe.cfg のサンプルです。
|
1 2 3 4 5 6 |
source [find interface/ftdi/picoprobe.cfg] transport select swd set CHIPNAME rp2040 source [find target/rp2040.cfg] reset_config srst_only |
Eclipse で Debug Configurations → GDB OpenOCD Debugging を作成し、OpenOCD Command に -f pico-probe.cfg を指定すればブレークポイントや変数ウォッチが利用できます。
VS Code でのデバッグ手順
VS Code の拡張機能 Cortex‑Debug と C/C++ をインストールし、.vscode/launch.json に以下を記述します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
{ "version": "0.2.0", "configurations": [ { "name": "Pico Debug (OpenOCD)", "type": "cortex-debug", "request": "launch", "servertype": "openocd", "cwd": "${workspaceFolder}", "executable": "./build/blink.elf", "configFiles": [ "pico-probe.cfg" ], "preLaunchTask": "CMake: build" } ] } |
デバッグ開始ボタンを押すと、リアルタイムでレジスタやメモリの状態が確認でき、ステップ実行やウォッチ式の設定が可能です。
商用 IDE との機能比較
| 項目 | Atollic TrueSTUDIO | CodeSourcery Eclipse Edition | Renesas CodeRED (e2studio) | 本稿で構築した無料環境 |
|---|---|---|---|---|
| 価格 | 有償(サブスクリプション) | 旧版は有償、現在は提供停止 | 有償 | 完全無料 |
| 対象 MCU | ARM Cortex‑M (F 系列) | ARM Cortex‑A/M, RISC‑V | Renesas RL78/RA | ARM Cortex‑M 全般 |
| デバッガ統合 | J‑Link / ST‑LINK 標準装備 | GDB + OpenOCD | e2studio デバッグサーバ | OpenOCD + Picoprobe(オープン) |
| プラグインエコシステム | Eclipse Marketplace 互換 | 同左 | 独自プラグイン | 完全互換 (CDT, CMake) |
| UI カスタマイズ性 | 高 | 中 | 低 | 高(Eclipse の標準機能) |
| 更新頻度 | 年1回程度 | 開発停止中 | 年2回 | 毎月リリース(CMake、GCC) |
選定の指針
- コスト重視:チーム全員で導入するなら無料環境が最も合理的。
- デバッグ対象:Picoprobe + OpenOCD がほぼすべての ARM Cortex‑M に対応できる点が大きな利点です。
- 拡張性:Eclipse Marketplace のプラグインは豊富で、RTOS やコード解析ツールを後から追加しやすい。
まとめ
- IDE と CDT を公式サイトから取得し、文字コード・ビルドパスを設定。
- GNU Arm Embedded Toolchain の最新版をインストールし、
PATHに登録して動作確認。 - CMake とツールチェーンファイル でクロスコンパイル環境を定義し、最小構成の
CMakeLists.txtを用意すればビルドは自動化できる。 - Raspberry Pi Pico SDK のサンプルプロジェクトを作成し、USB マスストレージモードで UF2 ファイルを書き込むだけで LED が点滅することを確認。
- Picoprobe + OpenOCD を組み合わせれば Eclipse でも VS Code でもリアルタイムデバッグが可能で、商用 IDE と比較しても機能・コスト面で遜色はない。
これらの手順を踏めば、最新の無料ツールだけで C 言語マイコン開発環境 を PC 上に構築できます。実際に手を動かしながら設定を確認すれば、以後のプロジェクトでも同様のフローが流用可能です。ぜひ本稿を参考に、独自の組み込み開発基盤を整えてください。
参考文献
- Eclipse Foundation, Eclipse IDE for C/C++ Developers – Release Notes, 2026‑03.
- Arm Developer, GNU Arm Embedded Toolchain Downloads, https://developer.arm.com/downloads/-/gnu-arm-embedded (閲覧日: 2026‑04‑12).
- Wikipedia, C (programming language), https://en.wikipedia.org/wiki/C_(programming_language) (閲覧日: 2026‑04‑13).
- CMake Official Documentation, Download, https://cmake.org/download/ (閲覧日: 2026‑04‑14).
- Qiita, 組み込み開発入門 – IDE とコンパイラの選び方, https://qiita.com/astc112907/items/cfe5cccad974c13 (閲覧日: 2026‑04‑15).