見出し画像

C/C++でもPicoってみる!(RapberryPi Pico・C/C++ でLチカ)

RaspberryPi picoをRaspberryPi400につないでCのプログラムを実行してみようというやつです。

↑の続き的なやつ。ちょっと難易度高い版?

前回、MicroPythonでちょー楽べんり!ってやってみたわけですが、もちろん C/C++ でもできるようなので、環境構築がてらやってみました。

公式PDF

画像3

https://datasheets.raspberrypi.org/pico/getting-started-with-pico.pdf 

↑元ネタ、というか公式の情報PDF、英文ですが、こちらに従ってやればおkです。

SDKのインストールナド

真面目にやる人は公式PDFの Chapter 2. The SDK の手順を進める感じになると思いますが、不真面目で面倒くさがりの私のような人は、 Chapter 1. Quick Pico Setup のままでよいようです。(こっちがおすすめ!)

ようはインストールスクリプトをwgetで持ってきて、実行するだけでセットアップOK、かんたんですw

そのスクリプトは、母艦のRaspberryPiのterminalから、

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

で持ってこれます。

※wgetが動かないばあいは、sudo apt install wget すること!

すると、pico_setup.sh というファイルができているはずなので、

$ chmod +x pico_setup.sh

をして実行権限を与えて、

$ ./pico_setup.sh

で実行します。

画像1

こんなかんじ。この後もだあああーーーって沢山ダウンロードして、展開してくれます。

画像2

どんどんすすみます。見てると結構たのしいですw(時間かかります)

やたら時間かかりますw

中で何をやっているかというと

Create a directory called pico
• Install required dependencies
• Download the pico-sdk, pico-examples, pico-extras, and pico-playground repositories
• Define PICO_SDK_PATH, PICO_EXAMPLES_PATH, PICO_EXTRAS_PATH, and PICO_PLAYGROUND_PATH in your ~/.bashrc
• Build the blink and hello_world examples in pico-examples/build/blink and pico-examples/build/hello_world
• Download and build picotool (see Appendix B), and copy it to /usr/local/bin.
• Download and build picoprobe (see Appendix A).
• Download and compile OpenOCD (for debug support)
• Download and install Visual Studio Code
• Install the required Visual Studio Code extensions (see Chapter 6 for more details)
• Configure the Raspberry Pi UART for use with Raspberry Pi Pico

だそう。英文ですがまあなんとなくわかりますね。

時間かかると思ったらサンプルコードのコンパイル&ビルドもやってくれてるし、VS Codeのインストールまでやってくれちゃっているようです。

手厚い!w

さて、無事終了したら、

コマンドラインでLチカmakeしてみる

(いきなりVS Codeでやってみたい人はここ飛ばしてもOK)

Chapter 3. を参照。

先ほどのインストールスクリプトで自動的に突っ込んだ場合は不要ですが、Chapter 2. The SDK を真面目にやった方は、下記の操作が必要です。

ソースコードはこちら https://github.com/raspberrypi/pico-examples/blob/master/blink/blink.c

pico-sdk と pico-examples リポジトリが同列の同じディレクトリに並べてクローンされている状態で、

$ cd pico-examples
$ mkdir build
$ cd build

として buildに入ります。

$ export PICO_SDK_PATH=../../pico-sdk

としてSDKのパスを設定し、いざ

$ cmake ..
Using PICO_SDK_PATH from environment ('../../pico-sdk')
PICO_SDK_PATH is /home/pi/pico/pico-sdk
 .
 .
 .
-- Build files have been written to: /home/pi/pico/pico-examples/build

というかんじで make & build できます。

Lチカだけなら

$ cd blink
$ make -j4
Scanning dependencies of target ELF2UF2Build
Scanning dependencies of target boot_stage2_original
[ 0%] Creating directories for 'ELF2UF2Build'
 .
 .
 .
[100%] Linking CXX executable blink.elf
[100%] Built target blink

でOKね♪

build / blink にできている blink.uf2 ファイルをPicoに転送すれば動く、はず、です(今回は下のVS Codeでやってみてからやっちみます)

VS Codeでやってみる!

さて本題!

 Chapter 1. Quick Pico Setup でまるっと環境を作成すると、もれなくVS Codeもついてきます!

画像4

これこれ!

さっそく立ち上げてみましょう。

画像5

見慣れた画面!

これがRaspberryPiでうごいちゃうんですねえ。

さて、最初は一緒に入っている pico-examples フォルダを File -> Open Folder でフォルダごとオープンしちゃいましょう

画像6

画像7

すると、右下のほうでプロジェクトを構成したり、cmake をしてくれたり

画像8

なにやらどんどんやってくれますが、基本、許可してあげれば大丈夫っぽいですw (キャプチャし忘れてるうちにどんどん進んで、気が付いたらVS Codeも日本語化されてました!? これ、自動的にできちゃうんですかね?w)

さて、ソース

画像9

Lチカのソースは、 pico-examples / blink に入っています。

↑では、試しに15行目と17行目のsleepの数字を 250 -> 50 に書き換えたところです。 (ファイルを変更しないとコンパイラが(もうやってんじゃん)っていって処理してくれないのでw)

キットの設定

画像10

ウィンドウ下部の↑の所をクリックして、

画像11

GCC for arm-none-eabi というやつをセットします。

下部が

画像12

こう変わればOK

次に、その隣の「ビルド」と書かれているところをクリックすると、ビルドが始まっちゃうのですが、ターゲット(その右側にあるやつ)が、[all]になっていると、exampleをぜんぶまるっとビルドしてしまうので、

画像13

[all]をクリックしてターゲットを

画像14

blink に指定しなおします。

画像15

↑の表示になればOK、安心して ビルド をクリックします。

画像16

できた!(∩´∀`)∩☆

Picoに転送

ビルドが終わったファイルは、プロジェクトのある blinkと同列の build フォルダに入っています。

画像17

build以下にいろいろはいっちゃってるのは、他のサンプルもビルドされた結果です。

※最初の環境インストールスクリプトで全部クリーンビルドされているので、やたら沢山はいっちゃっています。今回は blink だけをビルドさせたかったので、ソースをすこし(waitの数字)を書き換える形でコンパイル&ビルドを blink だけやらせてみたかんじです

この状態で、例のコレ

画像18

をやって、

画像19

生えてきた RPI-RP2 (ストレージデバイス)へ blink.uf2 ファイルを転送すると……

光りました!(∩´∀`)∩

画像20

すごい勢い(100ms)で点滅してます!

まとめ

以上のような感じで、RaspberryPi Picoのプログラムを C/C++ で作成して、コンパイル&ビルドして転送するまでの手順がわかったかんじです。

最初に書いたように、

公式PDF:https://datasheets.raspberrypi.org/pico/getting-started-with-pico.pdf 

に従って進めていけば、意外に簡単にここまで進められると思います。

流石にMicroPythonのほうが初心者向けで簡単ですが、C/C++のほうが大規模なプロジェクトとかも組みやすそうなので期待ですね。

あと、PDFを読みすすめてみると、二台のRapberryPi Picoを使って VS Code上で実機のデバッガもつくれちゃうみたい! 二台体制でやるって、なんだかそれだけでわくわくしてきますが(謎)それも今度挑戦してみたいとおもいます♪

※↑で2台のRaspberryPi Picoを使用してのデバッグ、というのは私の勘違いで、PCやMacから行うときにそういう技がある、ということのようです。RapberryPiを母艦として使うときは、わざわざ2台のPicoをつなげなくてもデバッグできる模様。詳しくは別noteで~。

#RaspberryPi #RaspberryPiPico #VSCode

よろしければサポートお願いします!いただいたサポートはクリエイターとしての活動費にさせていただきます!感謝!,,Ծ‸Ծ,,