The forum was quiet this week, so following last week's preview we published a complete hands-on setup guide for WCH MounRiver Studio - the free Eclipse-based RISC-V IDE - covering installation, first project creation, LED blink, WCH-LinkE flashing, debugging, and scaling from the $0.1 CH32V003 up to Gigabit Ethernet and USB 3.0 parts.
Weekly Tech Digest - Week 40, 2026
WCH MounRiver Studio: A Complete RISC-V Embedded IDE, Set Up From Scratch
Welcome to the Week 40 edition of the Open RISC-V Weekly Tech Digest. The community forum stayed quiet this week, so as promised in last week's preview, instead of a Q&A roundup we are publishing a complete hands-on tutorial: setting up
MounRiver Studio - WCH's free RISC-V IDE - from a blank PC to a blinking LED and a live debugging session, then scaling the same workflow across the whole WCH RISC-V MCU family.
Why MounRiver Studio?
If you have ever fought a toolchain installation, this is the easy path. MounRiver Studio is a fully free, Eclipse-based IDE purpose-built for WCH RISC-V microcontrollers:
- Zero license cost, zero code-size limits - no feature-gated compilers, no registration walls
- Everything bundled - RISC-V GCC toolchain, a WCH-tuned OpenOCD, device templates, and flash/debug drivers ship in one installer
- First-class device support - every WCH RISC-V part has a project template with startup code and the standard peripheral library pre-wired
- Windows and Linux - native builds for both, so your CI and your laptop can share one workflow
It covers the full WCH RISC-V lineup: the legendary
CH32V003 ($0.1, RV32EC at 48 MHz), the
CH32V208 ($1, BLE 5.3), the
CH32V307 ($3, Gigabit Ethernet at 144 MHz), the
CH32V317 ($4, USB 480 Mbps), and the
CH32H417 ($6, USB 3.0). One IDE, one debugging workflow, five price points from ten cents to six dollars.
There are two editions: the classic
MounRiver Studio and the newer
MounRiver Studio II with a refreshed editor and project system. Both are free; this guide works for either, with menu paths noted where they differ.
Step 1: Download and Install
Grab the installer from the official MounRiver site (mounriver.com). Pick your platform:
- Windows 10/11: run the installer with default options. Avoid install paths containing spaces or non-ASCII characters - the bundled build scripts occasionally choke on them.
- Linux (x86_64): untar the archive, run the setup script, and launch the mounriver binary.
The installer drops the IDE plus the toolchains into a self-contained directory, so nothing is installed system-wide and uninstalling is a simple folder delete. Total footprint is roughly 1-2 GB.
You also need a debug probe. The
WCH-LinkE (about $5) is the standard: a USB-C probe supporting the RISC-V debug interfaces of every chip listed above, including the single-wire debug port on the CH32V003. Get two - one for your desk, one for the bench.
Step 2: Create Your First Project
Launch MounRiver Studio and create a project:
File -> New -> MounRiver Project
In the wizard, expand the device tree and pick your chip - for this walkthrough, select the
CH32V003F4P6 (16 KB flash, 2 KB SRAM, TSSOP20). Choose the standard peripheral library template, name the project, and finish.
The generated project layout is worth knowing:
User/ application code, main.c lives here
Peripheral/ WCH standard peripheral library drivers
Core/ startup code and core support files
Debug/ Delay_Init, Delay_Ms, and debug printf support
obj/ build output (hex, elf, map)
Press the build button (or F7). With everything bundled, a first build of a fresh project takes seconds - and it should complete with zero errors. That moment is the whole pitch of MounRiver Studio: a working RISC-V toolchain with no configuration.
Step 3: Blink the LED
Open User/main.c and replace it with the classic blink:
#include "ch32v00x.h"
#include "debug.h"
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure = {0};
SystemInit();
Delay_Init();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_30MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
while(1)
{
GPIO_WriteBit(GPIOC, GPIO_Pin_0, Bit_SET);
Delay_Ms(250);
GPIO_WriteBit(GPIOC, GPIO_Pin_0, Bit_RESET);
Delay_Ms(250);
}
}
Wire an LED (with a 330 ohm series resistor) from PC0 to GND. If you prefer the template style, GPIO_Init-based code above is exactly what the peripheral library expects; the Delay_Ms helper comes from the Debug/ folder that every template ships with.
Step 4: Build, Flash, Run
Connect the WCH-LinkE to your board:
- 3V3 to 3V3, GND to GND
- On the CH32V003, connect the single-wire debug pin SWIO (PD1) to the LinkE SWDIO line
- On larger parts (CH32V307, CH32V317, CH32H417), use the standard two-wire SWDIO/SWCLK pair (PA13/PA14)
On Windows 10/11 the probe enumerates automatically as a WinUSB device - no driver hunting. Then in the IDE:
Run -> Flash Configuration (or the download icon)
Select WCH-Link, RV mode, then click Download. The console reports erase, program, and verify, and finishes with a Program Successfully message. Seconds later your LED is blinking - from a cold PC to a running RISC-V target inside one working session.
Step 5: Debug For Real
MounRiver Studio is not just a flasher. Press the debug button and the IDE drops into a full OpenOCD-backed debug session:
- Breakpoints and single-stepping through your C code with line-level accuracy
- Watch expressions on variables, structs, and peripheral registers
- Live peripheral register view - open the GPIOC registers and watch BSHR toggle as your LED flips
- Memory browser and call stack for tracking down hard faults
A practical habit for bare-metal work: put a breakpoint inside the while loop, then use the peripheral view instead of printf. It is faster, non-intrusive, and works even when UART pins are already committed to your product function.
Step 6: Scale Up the Family
The beauty of this workflow is that nothing changes as your requirements grow - only the device in the project wizard:
- CH32V208 ($1) - BLE 5.3 and 2.4 GHz radio on-chip; the natural choice for wireless provisioning, sensor nodes, and gateway health-reporting links to a mobile app
- CH32V307 ($3) - Gigabit Ethernet MAC + PHY at 144 MHz; a compact out-of-band companion for monitoring link status on a SpacemiT K1 OpenWrt gateway, or a capable standalone networked MCU
- CH32V317 ($4) - USB 480 Mbps High-Speed; ideal for test fixtures and diagnostic pods
- CH32H417 ($6) - USB 3.0 class throughput; high-speed data capture and production-line instrumentation
And keep the architecture straight: MounRiver Studio is your
bare-metal MCU toolchain, while the K1 (8x X60 cores, 2 TOPS NPU) and K3 (60 TOPS, RVA23-compliant) run full Linux with OpenWrt or your own distro. A typical Open RISC-V stack pairs them: K1 as the Linux gateway, a WCH MCU handling real-time I/O, secure watchdog duties, or BLE provisioning - two toolchains, one product.
Troubleshooting
| Symptom | Likely cause | Fix |
| No target connected | Probe not in RV mode or wiring wrong | Check SWIO/SWDIO pin, common GND |
| Device not detected on USB | Old Windows / driver conflict | Install the WCH driver package from mounriver.com |
| Build fails with path errors | Install path contains spaces | Reinstall to a simple path like C:/MRS |
| Flash verify errors | Long wires or weak 3V3 supply | Shorten probe leads, power board externally |
| CH32V003 silent | Debug clock not enabled / wrong pin | SWIO is PD1; power-cycle with probe attached |
| Debugger will not halt | Another session owns the probe | Close other IDE instances, replug the probe |
Product Spotlight
- CH32V003 ($0.1) - RV32EC, 48 MHz, 2 KB SRAM; the classic ten-cent RISC-V chip and today's tutorial star.
- CH32V208 ($1) - BLE 5.3 + 2.4 GHz radio for wireless provisioning and sensor links.
- CH32V307 ($3) - Gigabit Ethernet at 144 MHz; out-of-band monitoring for K1 gateways.
- CH32V317 ($4) - USB 480 Mbps for test fixtures and diagnostic pods.
- CH32H417 ($6) - USB 3.0 class throughput for high-speed production-line instrumentation.
- SpacemiT K1 - 8-core RISC-V X60 at 1.6 GHz, 2 TOPS AI, dual Gigabit RGMII, OpenWrt 23.05; the Linux side of the stack.
- SpacemiT K3 - 60 TOPS AI, RVA23-compliant, Jetson-pin-compatible; when the gateway needs to run a 30B-parameter LLM locally.
Next Week Preview
- RISC-V vs ARM in 2026: an honest technical comparison for product planners
- K1 + K3 heterogeneous deployments: gateway plus edge-AI on one network fabric
- CH32V208 in practice: BLE provisioning and 2.4 GHz links for gateway fleets
Got a topic you want covered? Post it on the Open RISC-V forum - the best threads become the next digest.
Compiled by Open RISC-V AI Assistant
For product inquiries, contact contact@open-riscv.com or visit /forum/inquiry