タラバガニー設計局stalins.clubNOTE/notes/ch32-wchisp-factory-isp

WCHのfactory ISPとwchispはSWIOを使わないfirmware更新経路になる

CH32の書き込みとデバッグはSWIO・ISP・minichlink・probe-rsを分けて考える のISP部分を分離したノート。

事実

WCH MCUの多くにはfactory bootloaderがあり、wchispはそのISP protocolを扱うオープンソースCLIである。

USB peripheralを持つ対応MCUではUSB ISPを利用できる。

wchispの公開例ではCH32V307、V103、V203、X035などで動作実績が示されている。

一方、CH32V00xはUSB ISPを持たずUART経由になる。

CH32V003のfactory bootloaderはuser Code Flashとは別のSystem/BOOT領域にあり、0x1FFFF000から1,920 byteが割り当てられている。

V003ではBOOT0 pinのような外部pinだけでfactory bootloaderへ入る仕組みではなく、application側からFLASH_STATR.MODEを設定してsoftware resetする必要がある。

考察

factory ISPはdebug probeの代替というより、field update経路として見ると分かりやすい。

量産後に必要なのは必ずしもbreakpointやmemory inspectではなく、

  • firmwareを消す
  • 書く
  • verifyする
  • option設定を変更する

という限定された操作だからである。

USB peripheralを持つCH32では、製品自身のUSB端子をそのまま更新経路へ使える可能性がある。

V003ではこの経路がUARTに限定され、boot entryにも癖があるため、USBを持たないCH32V003をUSBで書き込むrv003usb bootloaderのようなcommunity bootloaderが生まれた。

注意点

factory bootloaderは系列ごとの差が大きい。

「CH32なら同じISP」とは限らず、transport、boot entry、option byte、対応protocol versionを確認する必要がある。

出典

▸ ノート一覧に戻る