プログラミング素人のはてなブログ

プログラミングも電気回路も専門外の技術屋の末端が勉強したことや作品をアウトプットするブログ。コードに間違いなど見つけられたら、気軽にコメントください。 C#、Python3、ラズパイなど。

Raspberry PiでRaspberry Pi Pico向けC言語をBuildしてみる

ラズベリーパイ4にラズパイピコのビルド環境を作る

WindowsからTeratermSSH接続したRaspberry Pi 4 (8GB)上でラズパイピコ向けのC言語ソースをビルドします。
Windows上でももちろんラズパイピコのビルド環境は作れるのですが、ラズベリーパイ(4)ではもっと簡単にできるらしい、ということでやってみました。

やってみる

以下を参考にしました。
note.com
tetsufuku-blog.com

まずは公式のシェルスクリプトをダウンロードします。
このシェルスクリプトを使うことで、簡単に環境構築できるようです。
wgetシェルスクリプトをダウンロードするので、インストールされていないときはまずこちらをダウンロードします。
ダウンロードできたら続けてこのシェルスクリプトを実行します。

$ sudo apt install wget
$ wget https://raw.githubusercontent.com/raspberrypi/pico-setup/master/pico_setup.sh
$ sh pico_setup.sh

するとhomeディレクトリにpicoというフォルダができます。
このなかにpico-examplespico-sdkというフォルダができています。
(なぜかpico-examplesが生成されないことがありましたが、もう一度シェルスクリプトを実行すると生成されました。)

$ cd pico
raspberrypi4@raspberrypi4:~/pico $ ls
>>pico-examples  pico-sdk

何やらPathの設定をします。

$ cd pico-examples
$ mkdir build
$ cd build
$ export PICO_SDK_PATH=../../pico-sdk

サンプルをBuildしてみたいので以下のようにmakeします。

raspberrypi4@raspberrypi4:~/pico/pico-examples/build $
$ cmake ..
$ make -j4  // jオプションは並列化、これで4並列

以下の場所にblink.uf2が出来上がります。

/home/raspberrypi4/pico/pico-examples/build/blink

Gitで自動的にダウンロードされたこのサンプルソースの中にはいくつかの.cファイルがあるのですが、このやり方でmakeするとすべてがmakeされるようです。
そのためかmakeは結構時間がかかります。
引用元のnoteでは個別にビルドできるようなことが書かれていますが、Blinkのほかにhello_worldやpwm等の基本的なサンプルコードが入っているのですが、これらすべてがビルドされています。
しかし、2回目以降は、変更のあるファイルしかビルドされないのでこれでも大きな問題はないと思います。

あとは、このように出来上がったblink.uf2をラズパイピコへ転送すればOKですが、ラズベリーパイ4にUSB接続して転送してもよいですが、TeraTermWindowsへ転送しWindowsから転送してもOKです。
ラズパイピコへの接続はbootボタンを押しながらUSB接続します。
このようにするとあくまでラズベリーパイ4をビルドサーバーとして使うことができます。

CMakeLists.txtとは何なのか?

さて、これでビルドは一通りできたのですが、何をやっているのかさっぱりわからないですね。
まずはCMakeLists.txtというファイルですが、「ビルドに際しての設定項目の仕様」が書かれているようです。
kamino.hatenablog.com

まとめ

ラズパイピコの開発環境をラズパイ4に構築してビルドしてみました。
また、全く同じ手順でVirtualBox上のUbuntuでもビルドできました。
Arduino IDEで開発も出来ますが、パッケージをダウンロードして依存関係を気にしながらビルドするにはこうした環境が必要ではないかと思い公式の環境を構築しました。
Windowsでこのような環境を構築するにはVS codeを使ったり、なにかいろいろ複雑そう…、と思っていたのですがラズパイ含めてLinux上では比較的に簡単に構築することができます。