tl;dr
- DAPLink はオープンソースのARM MCU デバッガのファームウェアだよ。SWDの他にUARTも生えてて便利だよ。
- DAPLink 仕様のフォークされた CH32V203 用のファームウェアがあるよ
- SWD には 10ピンコネクタの仕様があるよ。Arduino UNO R4 の SWD はこれにUARTを足してあるよ。
- Arduino UNO R4 の SWD 仕様の DAPLink を作ったよ。だけど、デバッグとかどうやるのかわかっていない。
ARM MCU デバッガ DAPLink
DAPLink はオープンソースで開発されるARM MCU のデバッガです。 ARMマイコンのデバッガというと、ST-Link が浮かびますが、こちらはUSB-Cでなかったり、微妙に使い勝手が悪く感じていました。 DAPLink は OpenOCD ではサポートされていて、PlatformIO でも使うことができ、私は STM32、RP2040 のデバッグに重宝しています。
本家 DAPLink は STM32F103CB など、複数のMCU上で動くファームウェアとして開発されています。
aliexpress で検索すると、安価なデバイスが見つかります。私は Muse Lab の以下の Mini DAPLink をよく使っていました。
Mini DAPLink Debug Probe TYPE-C STM32 NRF51/52 ARM Cortex-M MCU JTAG/SWD/CDC Serial Port/Drag and Drop Program Keil/MDK OpenOCD
https://www.aliexpress.com/item/1005003197553949.html
DAPLink を CH32V203 に実装したプロジェクト
DAPLink がオープンソースなのだけあって、公式がサポートしている MCU 以外にも実装したプロジェクトが見つかります。 その中に、CH32V203 を使ったプロジェクトがありました。
こちらを CH32V203 ProMicro に焼いてみたところ、DAPLink として SWD 経由で STM32F103 のファームウェアの書き込みを行うことができました。 そして、これを使って安価にオリジナルの DAPLink を作ってみたいと思うようになりました。
SWD のピン仕様
SWD には 10ピンコネクタには公式仕様があります。
Arduino UNO R4 の SWD の仕様から調べていたのですが、公式であるのはありがたく、この仕様で作れば良いことがわかります。
ESPProgのUART+BOOT IO+RESETを 1.27mm 6ピンに収めたパッケージが、電源供給とBOOT IOとUARTを一挙に接続できて便利に感じていて、私の作るESP32には必ずそのポートを持たせるようにしていました。ARM MCUでも同様のことができれば便利だと思っていました。
ただし、Arduino UNO R4 はこれにUARTを足した形になっていました。
https://docs.arduino.cc/resources/schematics/ABX00080-schematics.pdf
この UART が足してあるというのが、私にとってそのままデバッグする際に重宝するため、この仕様でいくつかものを作りたいと思いました。
DAPLink の PCB を作った
CH32V203 はストックがあるので、このUART付きSWDのDAPLinkを作りたいと思い、作りました。 ついでに、Arduino UNO R4 の VCC は 5V であるため、3V3と5Vの切り替えスイッチ付きです。
1.27mmピッチのSWDコネクタはSWD+UART仕様です。
まずはボックスピンヘッダではなく、後ろのピンで、STM32F103で、SWD経由でファームウェアのアップロードができることを確認できました。
CH32V203 を使った DAPLink、Arduino UNO R4 のSWD(1.27mmピッチ10ピンでUART付き)を持つパージョンを作った。とりあえず STM32F103 で動作確認した。
— 74th (@74th) July 8, 2023
さて、UNO R4 がデバッグできるかどうか……。 pic.twitter.com/c0bxtmFqog
また、Arduino UNO R4 でのデバッグは、それができそうなオープンソースソフトウェアが見つかっておらず、確認はできていないのですが、意図したとおり電源供給できることと、裏のランドのSWDIO、SWCLK が繋がっていることは確認できました。まだ、SWDIO、SWCLKにレベル変換が必要なのかはわかりませんが、ソフトウェアが整ったらトライしてみたいところです。
この DAPLink は booth にて販売中
このDAPLinkを3個つくったので、2個をBOOTHにて販売開始しました! STM32、RP2040のデバッグのお供にご利用ください。
なお、このKiCADファイル自体は以下のリポジトリで公開しています。