Raspberry Pi PicoのC++開発環境 Ubuntu 20.04 LTS編
先日、ラズパイpicoでUSB-DDCを走らせることについてチラッと書きましたが、C++開発環境を整える方法を備忘録的に書いておこうと思います。
インターフェース誌などではWindows+WSL2上に構築してたりVisual Studio Codeでデバッグする方法が書かれていたりします。
それらも、とても素晴らしい方法ではありますがラズパイ公式ではLinux上でコンパイルするのが標準となっていて、一番問題が起きにくいと思われます。
今日は「シンプルで標準的な開発環境を構築する方法」を書きたいと思います。
VirtualBOX+Ubuntu(Linuxディストリビューションのひとつ)の組み合わせです。
もし、いらなくなれば仮想マシンごと削除すると綺麗さっぱり消せます。Windowsのシステムを汚しません。
準備編
Oracle VM VirtualBox をインストールします。
Windows、macOS、LinuxにインストールできるバーチャルPCソフトウェアです。8GB以上メモリを積んだPCなら普通に使える速度で動きます。
Ubuntu 20.04 LTS 日本語 Remix 版を入れました。
インストーラーが日本語に対応しているので、ボタンなどがフレームアウトせずにインストールできます。 本家版だとインストール途中でボタンが見えなくなり厳しい。(英語メニューでなら平気だと思われる)
PCのストレージはubuntuを最小インストールしても最終的に11.25GBくらい喰います。そのためストレージはVDIタイプで20~30GBくらい割り当てておくと良いです。実際に使用された分だけ実容量を喰う仕組みになっています。
ここまではRaspberry Pi picoと直接は関係ないので、説明はあまり深追いしません。不明点はweb検索してください。
システム->メモリ割り当て=6GB、プロセッサー数=4個(使用率制限100%)
ディスプレイ-> ビデオメモリ=64MB、グラフィックコントローラー=VBoxSVGA
にしています。
さて、Ubuntuが起動できるようになった所からpicoの開発環境構築スタートです。
PicoのSDKソース一式ダウンロード
端末(ターミナル)を開いて作業ディレクトリを作ってgitからダウンロードしてきます。ピンク文字はコマンド入力です。コピペしてください。
cd ~/
mkdir pico
cd pico
git clone -b master https://github.com/raspberrypi/pico-sdk.git
git clone -b master https://github.com/raspberrypi/pico-examples.git
git clone -b master https://github.com/raspberrypi/pico-playground.git
git clone -b master https://github.com/raspberrypi/pico-extras.git
もし、git コマンドがないと言われたら(ubuntu最小インストール時は入ってない)
sudo apt update
sudo apt install git
でインストールしてください。
Pico用のコンパイラ導入
PCはIntelのCPUでpicoはARMです。つまりコンパイラはクロスコンパイラが必要です。M1 macはARMですがVirtualBOX上のutuntuから見るとクロスになるのでしょうか。ちょっと不明。。。
sudo apt update
sudo apt install -y cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential
これでpicoの開発環境は整いました。拍子抜けするくらい簡単ですね。
実際にコンパイルしてみよう
コンパイルするならやっぱりUSB-DDC(I2S出力)ですよね。
まず、pico-sdkとpico-extrasのパスを設定します。
export PICO_SDK_PATH=~/pico/pico-sdk
export PICO_EXTRAS_PATH=~/pico/pico-extras
次に、cmake
cd ~/
cd pico/pico-playground/
mkdir build
cd build/
cmake .. <-後ろの点・点 までがコマンドです。
いよいよmake
cd apps/usb_sound_card
make
[100%] Built target usb_sound_card というメッセージが出る所まで行けばコンパイル成功です。
usb_sound_card.uf2 というファイルが出来ているハズです。これをBOOTスイッチを押しながら接続したpicoのフォルダへドラッグ&ドロップするとpicoへ転送されて実行されます。
VirtualBOXはホストOS上に挿したUSBデバイスをそのままゲストOS上に渡せますので、ubuntu上でドラッグ&ドロップすればOKです。
ソースコードを編集したときはmakeのみでOK。 cmakeは一度きりで大丈夫です。(CMakeLists.txtを編集したときはcmakeから)
パスを登録しておくと便利
pico-sdkとpico-extrasのパスを登録しておくと再起動する度に、いちいち打たなくても良くなります。
ホームの .profile というファイルの一番下に以下の2行を追記しておきます。
export PICO_SDK_PATH=~/pico/pico-sdk
export PICO_EXTRAS_PATH=~/pico/pico-extras
関係ないけどCmakeって
cmakeってあまり使ったことが無かったのですが、上で作ったbuildディレクトリ下でmakeするんですね。
VirtualBox:~/pico/pico-playground/apps/usb_sound_card$ make
ではなく、
VirtualBox:~/pico/pico-playground/build/apps/usb_sound_card$ make
なのです。
gitでダウンロードしてきたソースコードはbuildディレクトがない方です。cmakeを実行すると、build以下にソース元のディレクトリ構成が構築されてMakefileも出来上がっています。
ソースコードの編集は元のディレクトリ上で行い、makeはbuildディレクトリ下で実行します。ちょっと不思議。
open sshdを入れると
sudo apt install openssh-server
とコマンドを打つとsshdがインストールできます。
VirtualBox で ネットワークを「NAT」と「ホストオンリーアダプター」の2つを有効にしておくと、(ホスト)Windows上から(ゲスト)ubuntuへssh接続できるようになります。
これを便利というかは使用者次第ではありますが、WinSCPとTeraTermでLinuxと通信しながらソフト開発するのと同じ環境が整います。
VScode(エディタ)でsshリモート開発する方法もあるらしいです。
参考まで。
番外編
Pi4でコンパイルする方法
Pi4に導入するスクリプトが用意されています。公式ドキュメントChapter 1 をご覧ください。
Linuxを使わずにWindows上でコンパイルする方法
クロスコンパイラ、Cmake、git、python、ビルドツール、VScodeなどをインストールする、まとめ記事はこちら。
« Moode Audio R8.0.1用のSabreberry32ドライバリリース | トップページ | あのオーディオデザインさんがラズパイオーディオを発売 »
「Raspberry Pi pico」カテゴリの記事
- RPiZeroRP2040 ラズパイZERO形状USB-DDC基板(2024.10.20)
- RPiZeroRP2040 USB-DDC基板試作(2024.09.01)
- ラズパイPico USB-DDC Feedbackを機能するように実装(3)(2024.08.24)
- ラズパイPico USB-DDC Feedbackを機能するように実装(2)(2024.08.23)
- ラズパイPico USB-DDC Feedbackを機能するように実装(1)(2024.08.22)
« Moode Audio R8.0.1用のSabreberry32ドライバリリース | トップページ | あのオーディオデザインさんがラズパイオーディオを発売 »
コメント