CH32でZephyrとRust/Embassyが使えるようになりつつあるが成熟度は系列ごとに違う
CH32の開発環境はMounRiverだけではなくGCC・ch32fun・Zephyr・Rustまで広がっている のRTOS/Rust部分。
事実
Zephyr本体にはWCH/CH32向けboard supportが入り、V003だけでなくV006、V2/V3系、H417系まで対象が広がっている。
一方Rustではch32-rs/ch32-halが、複数CH32系列を一つのHALで扱う方向で開発されている。
ch32-halは、
- embedded-hal
- Embassy
- async/await
- DMA
- defmt
などの組込みRust ecosystemと統合する。
ただしプロジェクト自身が「experiment/testingには使えるがproductionで完全にstableとは限らない」と明記している。
考察
CH32でZephyrやEmbassyを使える意味は、GPIO APIが便利になることだけではない。
USB、network stack、async task、driver modelなどを自前で積み上げず、既存ecosystemを利用できる。
特にV203/V307/H417のように通信機能が多いMCUほど、middlewareの価値が大きくなる。
一方V003/V006のような小型MCUでは、RTOS/HALの固定コストが相対的に大きくなる。
そのため、
- V003級: ch32fun/bare metal
- 通信が多い上位MCU: Zephyr
- Rust/asyncを積極利用: ch32-hal + Embassy
のように用途で分けるのが自然である。
注意点
「board supportがある」と「全peripheralがproduction quality」は別である。
新しい型番ほど、clock、DMA、USB、特殊analog peripheralなどのdriver completenessを個別に確認する必要がある。