2026年1月5日月曜日

Seeeduino XIAO (SAMD21G18A)をDAPLinkデバイス化する(2)

 

Seeed Wikiに「ArduinoボードをDAPLinkデバイスとして使用する方法」という記事があったのでトレースしてみる。、、、の続き。VSCodeにRaspberry Pi Pico拡張機能を入れてデバッグする。

参考ページはこちら(https://zenn.dev/usagi1975/articles/2024-08-29-000_pico_development)。参考ページではpi picoをdebug probeにしてpi picoをデバッグしてるけど、これを、daplink xiao(samd21)からのxiao RP2040でやろうってわけだよ。

結線はこう。
右がdaplink xiao(samd21)で左がxiao RP2040。

んでは、VSCodeを起動して、拡張機能アイコンをつついて、検索ボックスにpiって入れて、Raspberry pi picoを選んで、
んで、インストール。
、、、こんなんでるけど、信頼するしかない;

新しい拡張機能アイコンができるので押してみる。
こうなる。

んで、"New Project From Example"を選んで、現れた画面で、、、今回はblinkを選択して、まぁいい感じで設定を入力して、
Createを押す。

右下にこんなのが出て、
そこそこ時間がかかって、、、

こうなる。

blink.cを見てみる。
GPIO25がblinkするらしい。で、GPIO25ってなんなんや?って回路図(https://wiki.seeedstudio.com/ja/XIAO-RP2040/)見ると、
だましなしなら、LED青がblinkするはず。

ではコンパイルしてみる。

なんじゃもんじゃ出るけど最終的にこうなって、たぶんうまくいったんだろう。

デバッグしてみる。

なんかエラーっぽいの出ているけど、それらしいところで停止しているぽい。

ステップ実行ボタンを押すと、それらしくコードが移動して、それに伴いLED青が点灯したり消灯したりする。

続行ボタンを押してみる

こうなる。

停止ボタンを押してから
Flash Projectしてみる

こうなって、勝手にリセットがかかって、blinkするようになる。
いいかんじ。xiao samd21 daplink使える!

が、pi picoって結構お安く手に入るからこんなことせんでもいいかもだけど(、、、今さらー)、、、賢明な方はpi pico買ってください。

2026年。良い年になりますよう(。>ㅅ<)✩⡱

2026年1月4日日曜日

Seeeduino XIAO (SAMD21G18A)をDAPLinkデバイス化する(1)<--ふたたび

 

Seeed Wikiに「ArduinoボードをDAPLinkデバイスとして使用する方法」という記事があったのでトレースしてみる。

Seeed Wikiの当該ページはこちら(https://wiki.seeedstudio.com/ja/Arduino-DAPLink/)。で、使用するボードはSeeeduinoXIAO(SAMD21)。

1.DAPLink Arduinoライブラリのインストール

1-1.Seeed_Arduino_DAPLink リポジトリをダウンロード
Seeed-Studio/Seeed_Arduino_DAPLinkで、
ってすると、
Seeed_Arduino_DAPLink-master.zip
ってのがダウンロードされる。

1-2.ArduinoIDEにライブラリを追加
んで、ArduinoIDEで
で、開くダイアログでさっきダウンロードしたSeeed_Arduino_DAPLink-master.zipを選ぶ。一瞬で何かが行われた後、こんな感じでSeeed_Arduino_DAPLinkってやつが現れるようになる。

2. Seeed SAMD boardsを再インストール
ボードフォルダの中にもlibrariesフォルダがあって、このなかのtinyusbが古かったので衝突が起こってたと思う。updateでもいいのかもしれないけど、、、

2-1.ボードマネジャでseeedで検索してSeeed SAMD Boardsを探して、一旦削除。

2-2.ArduinoIDEを再起動してSeeed SAMD Boardsを再度インストール

3.ピン定義のカスタマイズ
Seeeduino Xiaoを使用しているのでスキップ。

4. Arduinoボードへのアップロード

4-1.プロジェクトを開く
ArduinoIDEでexampleからdaplink_v2を開く。
(いろいろ試したけど、こっちがいいらしい)

4-2.コードをちょっといじる。
元のコードは#if 0でスキップしてます。


4-3.USB StackをTinyUSBに変更する。

4-4.コンパイルしてみる。
(ライブラリの衝突はなくなった)

4-4.書き込む。
できたと主張している。

5.OpenOCDで動作確認
5-1.OpenOCDをここ(https://github.com/xpack-dev-tools/openocd-xpack/releases)から持ってくる。

5-2.フォルダに展開

5-3.ブツを接続する
拡張ボード側がXIAO RP2040です。

5-4.展開したフォルダでコマンドプロンプトを起動

5-5.OpenOCD起動
ここまでくればまぁ大丈夫。

5-6.telnet接続してみる
Teratermを起動してOpenOCDに接続する。


たぶんうまくいってる!

ライブラリの衝突はやっぱりダメだったんだろう。
daplink_v2を使うことでzadigいらなくなったっぽい。
どういうコードでどういうエラーが出てるかをGeminiに伝えることで、中身はさっぱりわからんけど解決できた。

AI、、、ちょっとずつ使えるようになってきてると思う。AIバブル(?)はまだつづくかなー

2026年1月3日土曜日

Seeeduino XIAO (SAMD21G18A)をDAPLinkデバイス化する(1)<--だめ

 

Seeed Wikiに「ArduinoボードをDAPLinkデバイスとして使用する方法」という記事があったのでトレースしてみる。ごめん、うまくいかない。WindowsでもLinuxでもopenocdがCMSIS-DAPデバイスを見つけてくれないTT

Seeed Wikiの当該ページはこちら(https://wiki.seeedstudio.com/ja/Arduino-DAPLink/)。で、使用するボードはSeeeduinoXIAO(SAMD21)。本当に単純に愚直にトレースする。

1.DAPLink Arduinoライブラリのインストール

1-1.Seeed_Arduino_DAPLink リポジトリをダウンロード
Seeed-Studio/Seeed_Arduino_DAPLinkで、
ってすると、
Seeed_Arduino_DAPLink-master.zip
ってのがダウンロードされる。

1-2.ArduinoIDEにライブラリを追加
んで、ArduinoIDEで
で、開くダイアログでさっきダウンロードしたSeeed_Arduino_DAPLink-master.zipを選ぶ。一瞬で何かが行われた後、こんな感じでSeeed_Arduino_DAPLinkってやつが現れるようになる。

2. Adafruit_TinyUSB_Arduinoライブラリのインストール

2-1.Adafruit_TinyUSB_Arduino リポジトリをダウンロード
adafruit/Adafruit_TinyUSB_Arduinoで、
ってすると、
Adafruit_TinyUSB_Arduino-master.zip
ってのがダウンロードされる。

2-2.ArduinoIDEにライブラリを追加
んで、1-2と同じようにArduinoIDEを操作して、Adafruit_TinyUSB_Arduino-master.zipを選択するとAdafruit TinyUSB Libraryってのが現れるようになる。

3.ピン定義のカスタマイズ
Seeeduino Xiaoを使用しているのでスキップ。

4. Arduinoボードへのアップロード

4-1.プロジェクトを開く
ArduinoIDEでexampleからsimple_daplinkを開く。

4-2.USB StackをTinyUSBに変更する。

4-3.コンパイルしてみる。
ArduinoIDEが認識しているライブラリがとっ散らかっているせいでウォーニング出てるけどまぁ意図通りのライブラリを選択しているみたい。

4-4.書き込む。
できたと主張している。

ここから先は参考サイトにない情報(できて当然とでも思ってるんやろうか?)
5.ドライバを変更する
ところで、このままではWindowsではCMSIS-DAPデバイスとして認識されなくてUSBシリアルデバイスのままなのである。ちなみにLinuxマシンにつなぐとCMSIS-DAPデバイスとして認識されているぽい。
こういう場合はzadigでいじくりまわすといい(雑)。

5-1.Zadigをダウンロード
ここ(https://zadig.akeo.ie/)からもらってくる。

5-2.Zadig実行
実行ファイル状態でダウンロードされるので、そのまま実行。
ブツをつないだ状態で
んで、ブツを選ぶ
んで、ドライバを入れ替える
こんなんなる
んで、こうなる
デバイスマネジャーを見ると
ってなってるので、たぶんうまくいってる。

5-3.ちなみに
ドライバを標準に戻すにはデバイスを接続した状態で、デバイスドライバで削除(今回の場合はCMSIS-DAPを削除)。んで、ブツを抜いて再度挿せば元に戻る(今回の場合はUSBシリアルデバイスに戻る)。が、これやるとCOMポート番号が変わっちゃうのがなんだかなーなんだよねー;

このあと、openocdで動かそうとしたんだけど、だめだったわ。なんなんだろうね。
OpenOCDでRP2040にアクセスしようとしたんだけどねー

2025年11月22日土曜日

Seeeduino XIAO RP2040をdebugprobeにする(1)

 

Raspberry pi picoをdebugprobeにすることができるらしい。Seeeduino XIAO RP2040でもできるのでは?

Raspberry pi picoにソフトを書き込んだり、デバッグしたりするのにRaspberry Pi Debug Probe(https://www.raspberrypi.com/products/debug-probe/)なるものがある。こやつ、実はRaspberry pi picoとおなじRP2040でできているらしいんだわ。ってことはRaspberry pi picoはDebug Probeにすることができる。ってことはSeeeduino XIAO RP2040も何か工夫すれば(工夫しなくても)Debug Probeにできるのかもしれない。で、チャレンジしてみた。ちなみにRaspberry pi Debug Probeは2000えんくらいで買えるので頑張らずに買う方が正解な気もする。

ビルド方法はここ(https://github.com/raspberrypi/debugprobe)に書いてある通り
git clone https://github.com/raspberrypi/debugprobe.git
cd debugprobe
git submodule update --init --recursive
mkdir build
cd build
cmake -DDEBUG_ON_PICO=ON ..
まぁ、ここで、こんなエラーが出ます
  SDK location was not specified. Please set PICO_SDK_PATH or set
  PICO_SDK_FETCH_FROM_GIT to on to fetch from git.
Call Stack (most recent call first):
  CMakeLists.txt:3 (include)

-- Configuring incomplete, errors occurred!

ArduinoでSeeeduino XIAO RP2040ボード(Raspberry Pi Pico/RP2040/RP2350)をインストールしていればすでに入っているので、それを使うことにして、
export PICO_SDK_PATH=/home/hoge/.arduino15/packages/rp2040/hardware/rp2040/5.4.2/pico-sdk
ってして、ふたたび
cmake -DDEBUG_ON_PICO=ON ..
ってすると、armビルドツールが見つからないってエラーが出るので、これもSeeeduino XIAO RP2040ボード(Raspberry Pi Pico/RP2040/RP2350)をインストールしていれば入っているので、そこを参照するようにして、
export PATH=$PATH:/home/hoge/.arduino15/packages/rp2040/tools/pqt-gcc/4.1.0-1aec55e/bin
ってして、ふたたび
cmake -DDEBUG_ON_PICO=ON ..
ってすると、
PICOTOOL_FETCH_FROM_GIT_PATHをセットしろやって言ってくるけど、その後、
Downloading Picotool
ってなって勝手にダウンロードしてるっぽいので、よいのだろう
んで、
make
ってすると、最後にundefined referenceエラーでリンクが失敗する。んで、以前はRaspberry Pi Pico/RP2040/RP2350ではなくて、Seeeduino XIAO用のarmビルドツールを使ったことあることを思い出して、
echo $PATH
で、現在のPATHを確認して、Raspberry Pi Pico/RP2040/RP2350のarmツールへのPATHを削除して
export PATH=なんちゃら
で、
export PATH=$PATH:/home/hoge/.arduino15/packages/Seeeduino/tools/arm-none-eabi-gcc/7-2017q4/bin
ついでにpicotoolのwarningもでないようにしちゃう
export PICOTOOL_FETCH_FROM_GIT_PATH=/home/hoge/build_local/pipicoprobe/debugprobe/picotool
一旦、これまでの成果物を削除
cd ..
rm -rf build
mkdir build
cd build
cmake -DDEBUG_ON_PICO=ON ..
make
warning出るけどビルド成功。
debugprobe_on_pico.uf2ってのができるので、Seeeduino XIAO RP2040のBOOTボタンをおしながらWindowsPCのUSBに接続してドライブとして見えるようにして、debugprobe.uf2をその中に放り込むと、デバイスマネージャでユニバーサルシリアルバスデバイスのCMSIS-DAP v2 interfaeとして認識される。
この書き込み方法好きじゃないのよねー、、、Linuxだと管理者権限が必要なのとなんかうまくいかないってのと、機密管理の厳しい会社ではUSBメディアに書き出すことが許されていないからできないじゃんか。

この記事、公開するの忘れてた、、、