Raspberry Pi Pico用のC/C++ビルド環境を構築する
2025年3月15日
この記事(というか、自分用のメモ)では、Windows PC に、Raspberry Pi Pico 用の C/C++ で書かれたプログラムをビルドする環境を方法について述べる。例として、MachiKania のソースコードからビルドする方法について述べるが、他の Raspberry Pi Pico 用のプログラムでも同じであり、また、Pico 2, Pico W, Pico 2 W にも対応できる。
Raspberry Pi Pico 用のソースコードからビルドするには、VS code の extension を用いる方法があるが、私自身がその extension の中身をよく理解しておらず、どういう操作を行っているか分からないので、使っていない。この記事でも、VS code は使わず、必要なソフトウェアーを個々に揃えて利用する方法をとる。

必要なツール
Raspberry Pi Pico 用の C/C++ プログラムをビルドするのに必要なツールは以下の通り。
1.Git
2.pico-sdk
3.CMake
4.MinGW
5.ARM CC (ARM C コンパイラー)
6.Python
Git は、バージョン管理システムと呼ばれるもので、多くのソフトウェアーが Git で管理されている。次に述べる pico-sdk が Git で管理されているため、これが必要になる。また、目的の C プログラムをビルドするときにも、Gitが必要になる場合がある。
pico-sdk は、Raspberry Pi Pico 向けの C/C++ 開発用ソフトウェア開発キットだ。必要なライブラリーを含んでおり、ビルドの方法も提供する。
CMake は、ソフトウェアプロジェクトの構築を管理するためのクロスプラットフォームツールだ。プロジェクトの構造や依存関係を記述するスクリプトを基にプラットフォームに応じたビルドシステム生成するためのものだ。
MinGW(Minimalist GNU for Windows)は、Windows 向けの軽量な開発環境で、GNU コンパイラコレクション(GCC)を使用して C、C++ などのプログラムをコンパイルするためのツールである。
ARM CC (ARM C Compiler)は、Raspberry Pi Pico で採用されている CPU、ARM cortex M0+ もしくは ARM cortex M33 用に、C/C++ ソースコードをコンパイルするためのコンパイラーだ。
Python は汎用性の高いプログラミング言語で、シンプルな構文と豊富なライブラリが特徴である。pico-sd によるビルドの際にもこれが使われる。
では、順番に見ていく。ここでは、これらのツールのうち Windows のインストーラーを用いてインストールするのは Git のみで、他のものは ZIP アーカイブをダウンロードして、解凍してできたファイル群を特定のフォルダーに配置する形をとる。
環境によっては、Git や Python などがすでにインストール済みであったりするケースもあるだろうが、その場合はそれぞれの項をスキップしていただきたい。また、それぞれのツールのインストール先、配置先が異なる場合は、後に説明するパス指定を、適宜修正する必要がある。
Git
Windows 用の Git は、次の場所から入手できる。
https://git-scm.com/downloads/win
64-bit Windows 用には「Click here to download」もしくは「64-bit Git for Windows Setup」をクリックすれば、インストーラーがダウンロードされる。2025/03/15 現在、「Git-2.48.1-64-bit.exe」である。
インストーラーをダウンロードしたら、ダウンロードファイルをダブルクリックしてGitをインストールする。基本的にデフォルトの設定のまま「Next」ボタンを押し続けてインストールすればよい。

pico-sdk
Git をインストールすると、スタートメニューの検索欄に「git bash」と打つことで、次のようなアプリケーションが出るようになっているはずだ。これをクリックして、起動する。

このコンソール上で、順に「cd Desktop/」 「git clone --recurse-submodules https://github.com/raspberrypi/pico-sdk.git」とタイプする。デスクトップ上に「pico-sdk」が現れる。すべてのファイルを取得するのに、数分かかる。エラー無く作業が済めば、「pico-sdk/libs」内にある5つのフォルダー(btstack, syw43-driver, lwip, mbedtls, tinyusb)のすべてが、空ではなくファイル・フォルダーが含まれている状態になっているはずなので、確認する。もし空のフォルダーがあれば、「git clone」に失敗しているので、一度「pico-sdk」フォルダー全体を削除してやり直す。
ここでは、「pico-sdk」フォルダーを「c:\pico」に移動して使用することとする。「c:\」に「pico」という名で新規にフォルダーを作成し、デスクトップ上の「pico-sdk」をそこに移す。
「c:\pico\pico-sdk」フォルダーの中身は、次のようになる。

CMake
Windows 用の CMake は、次の場所で手に入る。
https://cmake.org/download/
「Latest Release」のZIPアーカイブのものを選べばよい。ここでは、Windows x64 ZIP(cmake-3.31.6-windows-x86_64.zip)を選んだ。
ZIPアーカイブに含まれているフォルダーを展開し、フォルダー名を「cmake」に変更して、「c:\pico」に移す。「c:\pico\cmake」フォルダーの中身は、次のようになっている。

MinGW
MinGW (MinGW-w64)は、次の場所で手に入る。
https://winlibs.com/
Web ページの上から4分の1ぐらいのところに、「Help! I don't know which download to choose!(助けて!どのダウンロードファイルを選択したらよいかわからない!)」 「Don't worry. For most purposes the latest Windows 64-bit release version with MSVCRT runtime and POSIX threads is a good choice.(心配しないで。ほとんどの目的には、MSVCRTとPOSIX対応の64ビットバージョンを選ぶのがよい選択だよ!)」という記述の後に「Download it here.(ここで、それをダウンロード)」というリンクがあるので、それを選ぶ。ここでは、「winlibs-x86_64-posix-seh-gcc-14.2.0-mingw-w64msvcrt-12.0.0-r3.zip」をダウンロードした。
ダウンロードした ZIP アーカイブには「mingw64」というフォルダーがあるので、それを解凍して「c:\pico」に展開する。「c:\pico\mingw64」フォルダーの中身は、次のようになる。

ARM CC
ARM C コンパイラーは、次の場所で手に入る。
https://developer.arm.com/downloads/-/gnu-rm/product-release
Windows 用の ZIP アーカイブを選択する。2025/03/15現在、最新版は「Version 10-2020-q4-major」なので、ここでは「gcc-arm-none-eabi-10-2020-q4-major-win32.zip」を選んだ。
ZIP アーカイブのフォルダーを解凍し、フォルダー名を「gcc-arm」に変更して、「c:\pico」フォルダーに移す。「c:\pico\gcc-arm」フォルダーの中身は、次のようになる。

Python
Python は、次の場所で手に入る。
https://www.python.org/downloads/windows/
「Windows installer」ではなく、「Windows embeddable package」を選ぶ。ここでは、「python-3.13.2-embed-amd64.zip」を選択した。
「c:\pico」フォルダーに「python」という名のフォルダーを作成し、そこにZIPアーカイブのすべてのファイルを展開する。「c:\pico\python」フォルダーの中身は、次のようになる。

ソースコードを入手して配置
必要なツールのインストールが終了したので、いよいよビルドの準備を行う。まず、ソースコードを入手して、配置する。次の場所から、開発中の MachiKania を入手する。
https://github.com/machikania/phyllosoma/tree/production
「Code:」ボタンを押して、「Download ZIP」を選択すると、「phyllosoma-production.zip」がダウンロードできる。
ダウンロードしたZIPアーカイブの「phyllowoma-production」フォルダーを解凍し、フォルダー名を「phyllosoma」に変更して「c:\pico」フォルダーに移す。「c:\pico\phyllosoma」フォルダーの中身は、次のようになる。

ビルド用のフォルダーを作成
「c:\pico」フォルダーに、「build」という名で新規にフォルダーを作成する。このフォルダー内に、「cmake.bat」 「make.bat」の2つのバッチファイルを作成する。バッチファイルの中身は、次の通り。
cmake.bat
make.bat
ただし、これらのバッチファイルの中で、「cmake」 「gcc-arm」 「mingw64」 「pico-sdk」 「python」のインストール先を指定している。もしこれらが実際の場所と異なる場合は、適宜書き換える必要がある。また、「..\phyllosoma」はソースコードを含むフォルダーの指定なので、これが異なる場合も、書き換えなければならない。
「c:\pico\build」フォルダーの中身は、次のようになる。

これで、すべての準備ができた。「c:\pico」フォルダーの中身は、次のようになった。

いよいよビルド
まず、「c:\pico\build」フォルダーに作った「cmake.bat」のアイコンをダブルクリック。エラーなしに終了すると、次のような結果になる。

次に、「make.bat」のアイコンをダブルクリックすると、ビルドが開始される。1分から数分でビルドが終了し、エラーがなかった場合、次のような結果になる。

上記のような結果でビルドがうまく行くと、「c:\pico\build」フォルダーに、「phyllosoma.uf2」と「phyllosoma_kb.uf2」の2つのバイナリーが作成されているが、これらがビルドできたファームウェアーだ。「BOOTSEL」ボタンを押しながら Raspberry Pi Pico を USB スロットに差し込むと、「RPI-RP2」もしくは「RP2350」ドライブが出現する。ここに「*.uf2」ファイルをドラッグ&ドロップすると、これらのファームウェアーが Raspberry Pi Pico に書き込まれる。
Pico 2, Pico W, Pico 2 W 用のビルド
上記で説明した方法は、Raspberry Pi Pico 用のビルドであるが、Pico 2, Pico W, Pico 2 W用のビルドもできる。「cmake.bat」の内容で「-DPICO_BOARD=pico -DPICO_PLATFORM=rp2040」の部分をそれぞれ、次のようにすればよい。
また、「build」というフォルダー名ではなく「build_pico2」などの名でフォルダーを作って「cmake.bat」 「make.bat」を配置すれば、4つの異なる Raspberry Pi Pico 用のファームウェアーをそれぞれ別々に作成することも可能である。
ソースコードに変更があった場合のビルド
ソースコードに変更があった場合は、「make.bat」を実行しなおすだけでよい。「cmake.bat」の実行は不要である。
SDKに変更があった場合のビルド
pico-sdk に変更があった場合は、「c:\pico\build」ディレクトリーにあるファイルのうち、「cmake.bat」 「make.bat」以外のファイルを全部削除し、「cmake.bat」の実行からやり直す。これをやらないと、おかしなファームウェアーがビルドされる可能性がある。
Raspberry Pi Pico 用のソースコードからビルドするには、VS code の extension を用いる方法があるが、私自身がその extension の中身をよく理解しておらず、どういう操作を行っているか分からないので、使っていない。この記事でも、VS code は使わず、必要なソフトウェアーを個々に揃えて利用する方法をとる。

(画像は、ビルドに成功した時のスクリーンショット)
必要なツール
Raspberry Pi Pico 用の C/C++ プログラムをビルドするのに必要なツールは以下の通り。
1.Git
2.pico-sdk
3.CMake
4.MinGW
5.ARM CC (ARM C コンパイラー)
6.Python
Git は、バージョン管理システムと呼ばれるもので、多くのソフトウェアーが Git で管理されている。次に述べる pico-sdk が Git で管理されているため、これが必要になる。また、目的の C プログラムをビルドするときにも、Gitが必要になる場合がある。
pico-sdk は、Raspberry Pi Pico 向けの C/C++ 開発用ソフトウェア開発キットだ。必要なライブラリーを含んでおり、ビルドの方法も提供する。
CMake は、ソフトウェアプロジェクトの構築を管理するためのクロスプラットフォームツールだ。プロジェクトの構造や依存関係を記述するスクリプトを基にプラットフォームに応じたビルドシステム生成するためのものだ。
MinGW(Minimalist GNU for Windows)は、Windows 向けの軽量な開発環境で、GNU コンパイラコレクション(GCC)を使用して C、C++ などのプログラムをコンパイルするためのツールである。
ARM CC (ARM C Compiler)は、Raspberry Pi Pico で採用されている CPU、ARM cortex M0+ もしくは ARM cortex M33 用に、C/C++ ソースコードをコンパイルするためのコンパイラーだ。
Python は汎用性の高いプログラミング言語で、シンプルな構文と豊富なライブラリが特徴である。pico-sd によるビルドの際にもこれが使われる。
では、順番に見ていく。ここでは、これらのツールのうち Windows のインストーラーを用いてインストールするのは Git のみで、他のものは ZIP アーカイブをダウンロードして、解凍してできたファイル群を特定のフォルダーに配置する形をとる。
環境によっては、Git や Python などがすでにインストール済みであったりするケースもあるだろうが、その場合はそれぞれの項をスキップしていただきたい。また、それぞれのツールのインストール先、配置先が異なる場合は、後に説明するパス指定を、適宜修正する必要がある。
Git
Windows 用の Git は、次の場所から入手できる。
https://git-scm.com/downloads/win
64-bit Windows 用には「Click here to download」もしくは「64-bit Git for Windows Setup」をクリックすれば、インストーラーがダウンロードされる。2025/03/15 現在、「Git-2.48.1-64-bit.exe」である。
インストーラーをダウンロードしたら、ダウンロードファイルをダブルクリックしてGitをインストールする。基本的にデフォルトの設定のまま「Next」ボタンを押し続けてインストールすればよい。

pico-sdk
Git をインストールすると、スタートメニューの検索欄に「git bash」と打つことで、次のようなアプリケーションが出るようになっているはずだ。これをクリックして、起動する。

このコンソール上で、順に「cd Desktop/」 「git clone --recurse-submodules https://github.com/raspberrypi/pico-sdk.git」とタイプする。デスクトップ上に「pico-sdk」が現れる。すべてのファイルを取得するのに、数分かかる。エラー無く作業が済めば、「pico-sdk/libs」内にある5つのフォルダー(btstack, syw43-driver, lwip, mbedtls, tinyusb)のすべてが、空ではなくファイル・フォルダーが含まれている状態になっているはずなので、確認する。もし空のフォルダーがあれば、「git clone」に失敗しているので、一度「pico-sdk」フォルダー全体を削除してやり直す。
ここでは、「pico-sdk」フォルダーを「c:\pico」に移動して使用することとする。「c:\」に「pico」という名で新規にフォルダーを作成し、デスクトップ上の「pico-sdk」をそこに移す。
「c:\pico\pico-sdk」フォルダーの中身は、次のようになる。

CMake
Windows 用の CMake は、次の場所で手に入る。
https://cmake.org/download/
「Latest Release」のZIPアーカイブのものを選べばよい。ここでは、Windows x64 ZIP(cmake-3.31.6-windows-x86_64.zip)を選んだ。
ZIPアーカイブに含まれているフォルダーを展開し、フォルダー名を「cmake」に変更して、「c:\pico」に移す。「c:\pico\cmake」フォルダーの中身は、次のようになっている。

MinGW
MinGW (MinGW-w64)は、次の場所で手に入る。
https://winlibs.com/
Web ページの上から4分の1ぐらいのところに、「Help! I don't know which download to choose!(助けて!どのダウンロードファイルを選択したらよいかわからない!)」 「Don't worry. For most purposes the latest Windows 64-bit release version with MSVCRT runtime and POSIX threads is a good choice.(心配しないで。ほとんどの目的には、MSVCRTとPOSIX対応の64ビットバージョンを選ぶのがよい選択だよ!)」という記述の後に「Download it here.(ここで、それをダウンロード)」というリンクがあるので、それを選ぶ。ここでは、「winlibs-x86_64-posix-seh-gcc-14.2.0-mingw-w64msvcrt-12.0.0-r3.zip」をダウンロードした。
ダウンロードした ZIP アーカイブには「mingw64」というフォルダーがあるので、それを解凍して「c:\pico」に展開する。「c:\pico\mingw64」フォルダーの中身は、次のようになる。

ARM CC
ARM C コンパイラーは、次の場所で手に入る。
https://developer.arm.com/downloads/-/gnu-rm/product-release
Windows 用の ZIP アーカイブを選択する。2025/03/15現在、最新版は「Version 10-2020-q4-major」なので、ここでは「gcc-arm-none-eabi-10-2020-q4-major-win32.zip」を選んだ。
ZIP アーカイブのフォルダーを解凍し、フォルダー名を「gcc-arm」に変更して、「c:\pico」フォルダーに移す。「c:\pico\gcc-arm」フォルダーの中身は、次のようになる。

Python
Python は、次の場所で手に入る。
https://www.python.org/downloads/windows/
「Windows installer」ではなく、「Windows embeddable package」を選ぶ。ここでは、「python-3.13.2-embed-amd64.zip」を選択した。
「c:\pico」フォルダーに「python」という名のフォルダーを作成し、そこにZIPアーカイブのすべてのファイルを展開する。「c:\pico\python」フォルダーの中身は、次のようになる。

ソースコードを入手して配置
必要なツールのインストールが終了したので、いよいよビルドの準備を行う。まず、ソースコードを入手して、配置する。次の場所から、開発中の MachiKania を入手する。
https://github.com/machikania/phyllosoma/tree/production
「Code:」ボタンを押して、「Download ZIP」を選択すると、「phyllosoma-production.zip」がダウンロードできる。
ダウンロードしたZIPアーカイブの「phyllowoma-production」フォルダーを解凍し、フォルダー名を「phyllosoma」に変更して「c:\pico」フォルダーに移す。「c:\pico\phyllosoma」フォルダーの中身は、次のようになる。

ビルド用のフォルダーを作成
「c:\pico」フォルダーに、「build」という名で新規にフォルダーを作成する。このフォルダー内に、「cmake.bat」 「make.bat」の2つのバッチファイルを作成する。バッチファイルの中身は、次の通り。
cmake.bat
@cd "%0\.." @SET PATH=%PATH%c:\pico\cmake\bin;c:\pico\gcc-arm\bin;c:\pico\mingw64\bin; @SET PICO_SDK_PATH=c:\pico\pico-sdk @SET PARAMS= @SET PARAMS=%PARAMS% -DPython3_EXECUTABLE="c:\pico\python\python.exe" @SET PARAMS=%PARAMS% -DPICO_BOARD=pico -DPICO_PLATFORM=rp2040 cmake.exe -G "MinGW Makefiles" %PARAMS% ..\phyllosoma pause
make.bat
@cd "%0\.." @SET PATH=%PATH%c:\pico\cmake\bin;c:\pico\gcc-arm\bin;c:\pico\mingw64\bin; mingw32-make pause
ただし、これらのバッチファイルの中で、「cmake」 「gcc-arm」 「mingw64」 「pico-sdk」 「python」のインストール先を指定している。もしこれらが実際の場所と異なる場合は、適宜書き換える必要がある。また、「..\phyllosoma」はソースコードを含むフォルダーの指定なので、これが異なる場合も、書き換えなければならない。
「c:\pico\build」フォルダーの中身は、次のようになる。

これで、すべての準備ができた。「c:\pico」フォルダーの中身は、次のようになった。

いよいよビルド
まず、「c:\pico\build」フォルダーに作った「cmake.bat」のアイコンをダブルクリック。エラーなしに終了すると、次のような結果になる。

次に、「make.bat」のアイコンをダブルクリックすると、ビルドが開始される。1分から数分でビルドが終了し、エラーがなかった場合、次のような結果になる。

上記のような結果でビルドがうまく行くと、「c:\pico\build」フォルダーに、「phyllosoma.uf2」と「phyllosoma_kb.uf2」の2つのバイナリーが作成されているが、これらがビルドできたファームウェアーだ。「BOOTSEL」ボタンを押しながら Raspberry Pi Pico を USB スロットに差し込むと、「RPI-RP2」もしくは「RP2350」ドライブが出現する。ここに「*.uf2」ファイルをドラッグ&ドロップすると、これらのファームウェアーが Raspberry Pi Pico に書き込まれる。
Pico 2, Pico W, Pico 2 W 用のビルド
上記で説明した方法は、Raspberry Pi Pico 用のビルドであるが、Pico 2, Pico W, Pico 2 W用のビルドもできる。「cmake.bat」の内容で「-DPICO_BOARD=pico -DPICO_PLATFORM=rp2040」の部分をそれぞれ、次のようにすればよい。
Pico: -DPICO_BOARD=pico -DPICO_PLATFORM=rp2040 Pico2: -DPICO_BOARD=pico2 -DPICO_PLATFORM=rp2350-arm-s Pico W: -DPICO_BOARD=pico_w -DPICO_PLATFORM=rp2040 Pico 2 W: -DPICO_BOARD=pico2_w -DPICO_PLATFORM=rp2350-arm-s
また、「build」というフォルダー名ではなく「build_pico2」などの名でフォルダーを作って「cmake.bat」 「make.bat」を配置すれば、4つの異なる Raspberry Pi Pico 用のファームウェアーをそれぞれ別々に作成することも可能である。
ソースコードに変更があった場合のビルド
ソースコードに変更があった場合は、「make.bat」を実行しなおすだけでよい。「cmake.bat」の実行は不要である。
SDKに変更があった場合のビルド
pico-sdk に変更があった場合は、「c:\pico\build」ディレクトリーにあるファイルのうち、「cmake.bat」 「make.bat」以外のファイルを全部削除し、「cmake.bat」の実行からやり直す。これをやらないと、おかしなファームウェアーがビルドされる可能性がある。