CH32V003のSWIOは1本の信号線で書き込みとデバッグを成立させる
CH32の書き込みとデバッグはSWIO・ISP・minichlink・probe-rsを分けて考える の物理debug interface側。
事実
CH32V003ではPD1を使う1-wireのSWIO/SDI系interfaceから書き込み・デバッグを行う。
WCH-LinkEはこのinterfaceに対応し、Flash programmingやdebug用途に使われる。
ch32fun/minichlinkもWCH-LinkEをbackendとして扱える。
V003コミュニティではさらに、別のV003をsoftware USB + SWIO programmerにするUSBを持たないCH32V003をUSBで書き込むrv003usb bootloader系の実装まで存在する。
考察
ピン数の少ないMCUでdebug interfaceが1本というのは実用上の価値がある。
TSSOP20やSOP8級では、2本3本の専用debug pinも無視できない。
一方、1-wire化はprotocolとtool側を特殊にする。
つまり、
- 基板上のpinコストを減らす
- vendor/OSS tool側の実装コストを増やす
という交換である。
V003が非常に安いにもかかわらず実用的な開発環境を持てたのは、minichlinkやprobe-rsなどがこの特殊部分を吸収してきたからでもある。
設計上の示唆
製品基板ではSWIO padとGNDだけでもtest pointとして残しておく価値が高い。
USB bootloaderを採用する場合でも、初回provisioningやbrick recovery用にSWIO経路を完全には消さない方が安全である。