ch32v003fun
An open source development environment (tooling, headers, examples) for the CH32V003 (and many other chips within the CH32V family) with gcc-riscv64 that can be used in Windows (Native), Linux and/or WSL. The CH32V003 is 10-cent part with a RISC-V EC core that runs at 48MHz, has 16kB of flash and 2kB of RAM and a bunch of peripherals. It also comes in SOP-8, QFN-20 and SOIC packages. You can get the datasheet here.
The goal of this project is to develop the tooling and environment for efficient use of the CH32V003. Avoid complicated HALs, and unleash the hardware! The existing EVT is massive, and dev environment weighty. This project specifically avoids the HAL and makes it so you can just use the TRM. In contrast, blinky is only 500 bytes with ch32v003fun, boots faster, and significantly simpler overall.
ch32v003fun contains:
- Examples using ch32v003fun, but not as many as using the HAL.
- "minichlink" which uses the WCH CH-Link with libusb, for cross-platform use.
- An STM32F042 Programmer, the NHC-Link042
- An ESP32S2 Programmer, the esp32s2-funprog
- The official WCH Link-E Programmer.
- An Arduino-based interface, Ardulink.
- Supports gdbserver-style-debugging for use with Visual Studio.
- Supports printf-over-single-wire. (At about 400kBaud)
- An extra copy of libgcc so you can use unusual risc-v build chains, located in the
misc/libgcc.a
. - A folder named "ch32v003fun" containing a single self-contained source file and header file for compling apps for the ch32v003.
- On some systems ability to "printf" back through
- A demo bootloader.
Other family support
Currently, there is experimental support for the ch32v103, ch32v203, ch32v208, ch32v303 and ch32v307. Note: GDB will only workon the 003 at this time.
Getting Started
For installation / setup instructions, see the wiki page here
Features!
A fast "printf" debug over the programming interface.
And by fast I mean very fast. Typically around 36kBytes/sec.
./minichlink -T | pv > /dev/null
Found ESP32S2 Programmer
536KiB 0:00:15 [36.7KiB/s] [ <=> ]
You can just try out the debugprintf project, or call SetupDebugPrintf(); and printf() away.
Debugging support!
Via gdbserver built into minichlink! It works with gdb-multiarch
as well as in Visual Studio Code
Building and Flashing
cd examples/blink
make