Arduino IDE 2.0でRaspberry Pi デバッグプローブを使ったRaspberry Pi Picoのデバッグを試してみる

Raspberry Pi公式から[Raspberry Pi デバッグプローブ](https://www.switch-science.com/products/8708)が発売されました。
これまでもRaspberry Pi Picoに[Picoprobe](https://github.com/raspberrypi/picoprobe)というファームウェアを書き込めば、デバッガーとしては使用できましたが、こちらは、最初からPicoprobeが書き込まれていてケースに入ったツールになっています。

パッケージには、Raspberry Pi Picoと接続するためのケーブルとPCと繋ぐためのUSBケーブルも付属しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/71f1c9f6-1f05-0f89-9ff0-b4631288ed04.png)

Arduino IDE 2.0や[Arduino-pico](https://github.com/earlephilhower/arduino-pico)もPicoprobeによるデバッグ環境に対応しているので、試してみました。

Arduino IDEを使ったRaspberry Pi Picoの開発方法は著書を参考にしてもらえると嬉しいです。（ググってもたくさん出てきます）

<a href="https://www.amazon.co.jp/2022%E5%B9%B4%E7%89%88%E3%83%9E%E3%82%A4%E3%82%B3%E3%83%B3%E3%81%AF%E3%81%98%E3%82%81%E3%81%AE%E4%B8%80%E6%AD%A9%EF%BC%81-Arduino-IDE%E3%81%A7%E3%81%AF%E3%81%98%E3%82%81%E3%82%8BRaspberry-Pi-Pico-ebook/dp/B0B6T396NC?psc=1&linkCode=li2&tag=jksoft-22&linkId=e7e138c58a30c01313b7282b12d9bcfb&language=ja_JP&ref_=as_li_ss_il" target="_blank"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B0B6T396NC&Format=_SL160_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=jksoft-22&language=ja_JP" ></a><img src="https://ir-jp.amazon-adsystem.com/e/ir?t=jksoft-22&language=ja_JP&l=li2&o=9&a=B0B6T396NC" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
[2022年版マイコンはじめの一歩！ Arduino IDEではじめるRaspberry Pi Pico: 1st](https://amzn.to/3Y4aK1s)

## 試した環境
* PC：`Windows 10 pro`
* Arduino IDE：`v2.0.3`
* Arduino Pico：`v2.7.3`

## Raspberry Pi PicoとRaspberry Pi デバッグプローブの接続
Raspberry Pi PicoのSWD端子にRaspberry Pi デバッグプローブを繋げます。
Raspberry Pi Pico Hであれば、そのままはんだ付けせずに繋げられます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/9157769e-54db-eed3-1368-356ca80fe788.png)
Raspberry Pi PicoのUSBは電源を取るだけのために繋げています。ピンからの電源供給でもOKです。
Raspberry Pi デバッグプローブはArduino IDEを使用するPCにUSBケーブルで繋げます。

## セットアップ
1. デバッグしたいスケッチを開く
1. ボード選択をRaspberry Pi デバッグプローブのシリアルポートにして、ボードは`Raspberry Pi Pico`にする（ターゲットのRaspberry Pi PicoにしてもOK）
1. Arduino IDEの「ツール」⇒「Upload Method」から通常は`Default（UF2）`になっていると思うので、`Picoprobe(CMSIS-DAP)`にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/b0c7dccb-b97e-0414-e8b0-924b9494bdb2.png)
4. 書き込みを行う。「** Programing Finished **」となっていればOK
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/99de2700-c101-997c-ede2-a85c017e5b3e.png)


## デバッグのやり方
1. デバッグの開始を行うとデバッグが始まります。（ボタンをクリックしてからちょっとの間、無反応なのでちょっと待ってください）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/676f3e01-f2f2-efb5-a4ee-393a8dc15e34.png)

2. デバッグが始まると次のような画面に変わります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/26da834b-747c-aceb-7819-6874c0b5f9bb.png)

3. ブレークポイントを置くとプログラムが停止し、変数の内容など確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/765e732f-e798-e077-a247-b3c966737d7e.png)


### デバッグ開始時にエラーが出る場合
私の環境（Windows 10）では、次のようなエラーが起こったため、2つのファイルを書き換え、設定を変更しています。

```
Error: Failed to open or find the device
Error: Can't find a picoprobe device! Please check device connections and permissions.
```
#### picoprobe.tclの書き換え

##### ファイルパス
```
C:\Users\{Windowsのユーザーネーム}\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\{Arduino-picoのバージョン}\lib\picoprobe.tcl
```

##### 書き換える内容
```
source [find interface/picoprobe.cfg]
```
↓
```
source [find interface/cmsis-dap.cfg]
```

#### cmsis-dap.cfg

##### ファイルパス
```
C:\Users\{Windowsのユーザーネーム}\AppData\Local\Arduino15\packages\rp2040\tools\pqt-openocd\1.5.0-b-c7bab52\share\openocd\scripts\interface\cmsis-dap.cfg
```

##### 書き換える内容
以下を追記

```
transport select swd

adapter_khz 500
```


これで解決できました！