タラバガニー設計局stalins.clubNOTE/notes/ch32-qingke-riscv

QingKeは標準RISC-Vの上に割り込み・デバッグの独自性を載せている

CH32を理解するためのノート群 のCPUコア側の整理。

事実

WCHのRISC-V MCUはQingKeと呼ばれるコア群を使う。

V003のQingKe V2はRV32E系で、一般的なRV32Iの32本ではなく16本の汎用レジスタを使う。WCHはQingKeに独自の割り込み高速化機構を追加している。

代表的なものがHardware Prologue/Epilogueで、割り込み入口・出口で必要になるレジスタ退避/復帰の一部をハードウェア側で処理する。

またV003は通常のARM MCUでよく見るSWDではなく、1線式のSDI/SWIOをデバッグ・書き込みに用いる。

QingKeは世代が増えており、V4FやV5FではFPUを持つ。2026年のV407/V467ではベクトル命令を持つV3V系が使われている。

probe-rs 0.32.0ではCH32F1、H4、L1、V003/CH641、V00X、V1、V2/V3、X0/CH643などのターゲット定義が追加・再生成され、WCH-LinkからのCH32自動判別も追加された。

考察

CH32を「RISC-Vなので完全に標準ツールだけで扱える」と考えるのも、「WCH独自CPUなので専用環境必須」と考えるのも両方極端である。

命令セット、GCC/LLVMなどのコンパイラ部分はRISC-V標準化の恩恵を強く受ける。一方で、

  • 割り込みコントローラ
  • startup
  • Flash programming
  • debug transport
  • option bytes

などはMCU固有である。

これはSTM32で「Cortex-Mだから全部同じ」ではないのと本質的には同じだが、QingKeではSWIOや独自高速割り込みの存在が目立つため、差が見えやすい。

開発上の意味

コンパイラが動くことと、快適に開発できることを分けるべきである。

CH32では2026年までにprobe-rs、Zephyr、ch32funなどの対応が進み、後者の障壁もかなり下がってきた。詳しくはCH32の開発環境はMounRiverだけではなくGCC・ch32fun・Zephyr・Rustまで広がっているとCH32の書き込みとデバッグはSWIO・ISP・minichlink・probe-rsを分けて考える。

出典

▸ ノート一覧に戻る