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を分けて考える。