RP2040をSWDデバッグしたい
こんにちは、リゲル・インテリジェンスです。
Raspberry Pi Picoの互換ボードであるSeeed XIAO RP2040のソフトウェア開発を行うためには、
- C/C++ SDKベースの環境を構築したホストPCにてビルド=「.uf2」ファイルの作成を行う
- BOOTSELモードにしたRP2040ボードに作成した「.uf2」ファイルをコピーする
だけで済みます。特別なデバッガやプログラムライタなど追加のハードウェアは不要で、非常に安価かつシンプルな開発環境かと思います。
ですが少し複雑な処理、RTOSを導入してのタスク管理やDual coreを非同期で動かしたいとか、が出てくるとやはりもうちょっと「開発環境」としての機能が欲しいです、Break pointを張ってのStop&Goのデバッグとか。
幸いなことにSeeed XIAO RP2040にはARM SWD(Serial Wire Debug)のための端子がボード裏面に出ていますし、もちろん本家Raspberry Pi PicoにもSWDIO/SWCLKとしてピンが用意されています。
これらのピンを利用してデバッガを接続すれば、デバッグ環境としては格段に良くなるかと思います。毎回2つのボタンを押してBOOTSELモードに入れてファイルコピー、もなかなかに面倒ですから。
さてARM SWD用のデバッガですが、パッと思いつくのはSEGGER社のJ-Linkでしょうか。高いですね、、お客様案件でしたら購入を悩みませんがホビーユースにはちょっと無理です。新しいiPhoneを買いたくなってしまいます。SEGGER社のJ-Linkには個人利用に使えるいくらか安価なものもあるようですが、半導体不足の煽りか入手は難しいようです。AmazonやAliでアヤシイコピー商品を買うのも躊躇いますし、いくら手作り好きでもさすがにScratchから作るのは重すぎです。
STMicroのチップなら手元にあるNUCLEOボードのST-LINKが使えるのに、と思いながら少し調べてみました。
- ST-LINKをJ-Link化して使う〜SEGGER社提供のツールを使う、ただしJ-Link化しても使えるのはSTMicroのチップのみ
ST-LINK On-BoardSEGGER offers a firmware upgrading the ST-LINK on-board on the Nucleo and Discovery Boards. All you need to know. Learn ... - ST-LINKをDAPLink化して使う〜CMSIS-DAP経由でVSCodeから使えそう
GitHub - ARMmbed/DAPLinkContribute to ARMmbed/DAPLink development by creating an account on GitHub.
上記1ではRP2040のデバッガとしては使えませんので、2を試してみることにします。大まかな作業としては下記のようです。
- 下記に従いソースコードからビルドを行い、ターゲット(NUCLEO ST-LINK/V2)に書込むバイナリファイルを作る
〜最近まではKeilの有料版が必要だったようですが、gcc armでビルド可能です
DAPLink/docs/DEVELOPERS-GUIDE.md at main · ARMmbed/DAPLinkContribute to ARMmbed/DAPLink development by creating an account on GitHub. - 作成したバイナリファイルをJ-LinkなどのARM SWDをサポートしているデバッガで書込む
〜ST-LINK/V2単体で自身のファームウェアを書き換える方法は無い
結局J-Linkが必要なのか!と思ったのですが、ST-LINK/V2が2つあればSTMicroが提供しているST-LINK utilityツールを使用してファームウェアを書き換えられる!?
2つありました。→ NUCLEO-L476RGボード
1台はDAPLink専用にするためにボードを切り離しています。DAPLink化に際して元のST-LINK/V2のファームウェアは上書きされてしまいますし、STMicroからはST-LINK/V2のファームウェアは公開されていませんので、
一度DAPLinkのファームウェアに書き換えると元のST-LINK/V2には戻せません
NUCLEOのボードは高価なものではありませんが、失敗すると単なるSTM32F103CBの評価ボードに成り下がってしまうのでそれなりに覚悟して作業を進める必要があります。
コメント