Raspberry Pi Picoを超低遅延のアケコン/ゲームパッド基板にするファームウェア、GP2040-CEを手元でビルドできるように環境を整えました
GP2040-CEとは
GP2040-CEとは、ラズベリーパイピコ他RP2040を使ったマイコンボードを超低遅延のアケコン/ゲームパッドのコントロール基板として利用するためのファームウェアです。 gp2040-ce.info
ソースコードはgithubで公開されていて、開発が継続されています
手元でビルドしたい
せっかくオープンソースなので自分でもビルドできるようにしたいと思い、ビルドの為にどういった環境が必要か調べていたところ、こちらのツイートに行き当たりました。
GP2040-CE v0.6.0のビルド環境構築とビルド方法をまとめてみました。自分でCG2040-CEをビルドしてみたい人は参考にしてみてください。
— あん (@alirin222) 2023年1月15日
(対象はGP2040-CEのv0.6.0以降のみ)
ちなみにこの手順ではオリジナルのGP2040のビルドはできません。https://t.co/BkqugggkIp
凄く丁寧で親切な資料で『やった、これで勝てる』と確信しました。
手順書に従って必要なものをインストールして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:こういった環境構築ではバージョンが異なると動かないことが多々あるので、原則的にはまず各環境を検証済みのバージョンに合わせて構築してみるのが変にハマらない/ハマってもトラブル解決しやすいのでお勧めと思います