おいちゃんのおぼえがき

仕事のTipsをメモするブログ

ラズパイ pico 始めました

2023-08-27 | 組み込み
macOS (12.6.8 Monterey Intel) + Parallels Desktop 18 でラズパイ pico の開発環境を試したのでメモ
いろいろネット情報集めて素直に macOS 版環境を作ってみたけど、結局 macOS ネイティブではビルドエラーの壁を乗り越えられなかった・・・(>_<。)
で、結構手堅い印象の macOS + ParallelsDesktop + RaspberryPi OS Desktop の構成でなんとかうまく行くようになった
・頼った資料や参考になった情報
 RaspberryPiPico をセットアップしよう (https://datasheets.raspberrypi.com/pico/getting-started-with-pico-JP.pdf)
 Parallels Desktop で Raspberry Pi OS を Mac にインストールする (https://qiita.com/nak435/items/28771812f46f7b7f6651)
・OS イメージ (https://www.raspberrypi.com/software/raspberry-pi-desktop/)
・ハードウェア
 Raspberry Pi Pico (https://akizukidenshi.com/catalog/g/gM-16132/ など)
 Raspberry Pi DebugProbe (https://akizukidenshi.com/catalog/g/gM-17971/ など)
 USB-UART コンバータ (https://www.amazon.co.jp/gp/product/B07MHGC1BD/ref=ppx_yo_dt_b_asin_title_o00_s01?ie=UTF8&psc=1 など)

まず OS イメージをダウンロードし Parallels Desktop の「新規作成」-「DVD / イメージファイルから Windows / その他 OS をインストール」でインストール
Raspberry Pi OS のインストール、設定や Parallels Tools インストールはほぼ言いなりで順調に完了
実に快適に動作するょ(^.^)

続いて公式から出ている日本語文書「Raspberry Pi Pico をセットアップしよう・・・ C/C++ 開発」に従って開発環境をインストールする
環境は RaspPi 4B や 400 ではないけれど、まあいい感じの RaspPi 環境なので第 1 章でオススメされているクイックセットアップを試した
指示通りセットアップスクリプトを wget して chmod し実行してしばらく待っていると、ホントに何もせず開発環境インストールが完了したょ
なんと RaspberryPi OS 用 VIsualStudioCode (日本語や CMake なんかの拡張機能込み) や SWD デバッグ環境までオールインワンでバッチリ

まずは「RaspberryPi・・・セットアップしよう」を一通り目を通してから「第 7 章 Visual Studio Code を使用する」でサンプルプロジェクト (pico-example) の L チカ (blink) を試した
この時大切なことは VSCode に環境変数を渡す関係上、必ずターミナルから次の様にして VSCode を起動すること (イチゴメニュー-プログラミングにも Visual Studio Code があるけど、これは使わない)
 $ code
起動後、サンプルディレクトリ (pico/pico-examples) を開くとプロジェクトの「構成」ってのが走るけど、走らなかったらエクスプローラでフォルダ直下にある "CMakeLists.txt" を右クリックして「すべてのプロジェクトの構成」を選ぶとよいみたい
CMake Tools 拡張機能が機能していると VSCode 最下部の青いところ (ステータスバー?) にコンパイラキットやビルドターゲットの設定などが出ているので、適切に選んでビルドする
まずは blink でためしたょ

いよいよ pico をつないでプログラムを書き込んでみる
基板上の USB コネクタそばにあるタクトスイッチ (BOOTSEL) を押したまま USB ケーブルを mac につなぎでからスイッチを離すと、pico が USB メモリ (MSC) として認識されるので、Parallels の RaspberryPi OS に接続してファイルマネージャで開いておく
(ウチの場合は RPI-RP2 と言う名前のボリュームでマウントされ、INDEX.HTM, INFO_UF2.TXT のファイルがあった)
ここに pico-examples/build/blink にある (はず) の blink.uf2 をドラッグコピーすると、コピー終了と共に pico はリセットされて L チカ (blink) が動いた

DebugProbe を使ってプログラムの書き込み
pico 基板には SWD デバッグ用のパッドがあるので、3p ピンヘッダ/ピンソケットをはんだ付けしてプローブの "U" 側コネクタとつないでプログラムの書き込みやソースコードデバッグができる (U コネクタに付属の 橙-黒-黄 ケーブルを繋いだ時、橙 : SWCLK、黒 : GND、黄 : SWDIO)
まずプログラムの書き込みから
クイックセットアップでインストールしたなら、書き込みに必要な openocd はすでに入っているので、そのまま使えるょ
「・・・セットアップしよう」第 5 章 5.3 プログラムの読み込みに従って書き込む (文書と自分の単語の使い方がなんかズレてるな〜) けど、少し注意点
・コマンド openocd は sudo で実行しないとデバイスにつながらないみたい
・コマンドに渡す interface 名は cmsis-dap.cfg
こんな感じ
 $ sudo openocd -f interface/cmsis-dap.cfg -f target/rp2040.cfg -c "program blink/blink.elf verify reset exit"
基板のスイッチ押しながら電源入れ直したりしなくてすむので、とっても便利
この後、ホントなら DebugProbe を使ってターミナルから gdb でデバッグするんだけど、gdb 使ったことないので VSCode に進むょ

DebugProbe を使って VSCode で書き込み/デバッグ
VSCode + DebugProbe のために次の準備をする
・「・・・セットアップしよう」第 7 章 7.3 プロジェクトのデバッグを行うに従って次のコマンドを実行
 $ cd ~/pico/pico-examples
 $ mkdir .vscode
 $ cp ide/vscode/launch-raspberrypi-swd.json .vscode/launch.json
 $ cp ide/vxcode/setting.json .vscode/settings.json
・.vscode/launch.json ファイル内の "interface/raspberrypi-swd.cfg", の行を "interface/cmsis-dap.cfg", に変更
また、ターミナルで openocd を実行するときは sudo で行ったけど、VSCcode からは出来なさそう?なので、openocd コマンドに SUID ビットを設定しておく
 $ sudo chmod u+s /usr/local/bin/openocd
VSCode を起動し画面左アイコン (アクティビティバー?) の「実行とデバッグ」を選び、ステータスバーでターゲットを選択、エクスプローラ上部の緑三角アイコンをクリックすると openocd でプログラムの書き込み、gdb 起動が行われ、ソースコードが開く (はず) (^.^)

個人的には VSCode での CMake 操作、デバッグプローブのデバイス名?、openocd の実行権限の問題でだいぶ引っかかったので、忘れないようにしないと