きよくらの備忘録

「三日坊主と呼ばせない!日記」改め。主にソフトウェア開発関連の話題。

GP2040-CEのビルド環境を整えた

Raspberry Pi Picoを超低遅延のアケコン/ゲームパッド基板にするファームウェア、GP2040-CEを手元でビルドできるように環境を整えました

GP2040-CEとは

GP2040-CEとは、ラズベリーパイピコ他RP2040を使ったマイコンボードを超低遅延のアケコン/ゲームパッドのコントロール基板として利用するためのファームウェアです。 gp2040-ce.info

ソースコードはgithubで公開されていて、開発が継続されています

github.com

手元でビルドしたい

せっかくオープンソースなので自分でもビルドできるようにしたいと思い、ビルドの為にどういった環境が必要か調べていたところ、こちらのツイートに行き当たりました。

凄く丁寧で親切な資料で『やった、これで勝てる』と確信しました。

手順書に従って必要なものをインストールしてv.0.6.0のビルド成功

前述の @alirin222 さんの資料に従って必要なものを順次インストールしました。 あえて特筆するべき点があるとすれば、必要なツール類のバージョンについて少し冒険と思いつつも*1現時点の最新バージョンを使用してみた点でしょうか。

  • Arm GNU Toolchain : 13.2.Rel1
    • arm-gnu-toolchain-13.2.rel1-mingw-w64-i686-arm-none-eabi.exe
  • CMake : 3.28.0-rc5
    • cmake-3.28.0-rc5-windows-x86_64.msi
  • Python : 3.12.0
    • Windows embeddable package (64-bit): python-3.12.0-amd64.exe

Visual StudioはもともとVS2022 (Version 17.8.1) のC++環境が入っていたのでそのまま使いました。 Git環境も既存で入ったものを使っています(2.41あたりのまま)。

上記の環境で、GP2040のリポジトリからまずはv0.6.0のタグのバージョンをチェックアウトしてビルドしたところ問題なくビルド完了してuf2が生成されました。

v.0.7.5をビルドするにはnode.jsが必要

ドキュメント記載時点のバージョンのビルドが通ったので、現在の最新リリースのv.0.7.5をチェックアウトしてビルドしようとしたところ……。

cmakeの時点で以下のようにfailedになってしまいました。

[cmake] CMake Error at lib/httpd/CMakeLists.txt:1 (add_library):
[cmake]   Cannot find source file:
[cmake] 
[cmake]     fsdata.c
[cmake] 
[cmake]   Tried extensions .c .C .c++ .cc .cpp .cxx .cu .mpp .m .M .mm .h .hh .h++
[cmake]   .hm .hpp .hxx .in .txx .f .F .for .f77 .f90 .f95 .f03 .ispc
[cmake] 
[cmake] 
[cmake] -- Generating done
[cmake] CMake Generate step failed.  Build files cannot be regenerated correctly.

fsdata.c自体はリポジトリにも該当のディレクトリにもあるのに何でや……と思いつつissueを調べてみると同じ質問を発見しました。 fsdata.c missing from main branch · Issue #115 · OpenStickCommunity/GP2040-CE · GitHub

要は、node.jsが足りてないから入れればよい、とのこと(そういえばこの環境、node.jsはもともと入ってなかった)。

ということで追加で最新LTSの20.10.0をインストールしました。

  • Node.js : LTS 20.10.0
    • node-v20.10.0-x64.msi

これを入れて再度cmakeを実行すると問題なく完了し、nmakeも最後まで通ってuf2が作成されました

まとめ

これでGP2040-CEを手元でビルドしてバイナリを生成することができるようになりました。 完全に @alirin222 さんの資料のおかげです。ありがとうございました。

冬休みには時間をとってGP2040-CEをカスタムとかしてみようかなと思ってます。

*1:こういった環境構築ではバージョンが異なると動かないことが多々あるので、原則的にはまず各環境を検証済みのバージョンに合わせて構築してみるのが変にハマらない/ハマってもトラブル解決しやすいのでお勧めと思います