What about Eclipse CDT and J-Link debugger?
I bought lot of boards CH32F103 and programming firmware by JLink is toooooo slow
STM32F103 programmed in 2-3 seconds (50kB firmware) and
CH32F103 takes 73 seconds.
SEGGER J-Link GDB Server V6.10l Command Line Version
JLinkARM.dll V6.10l (DLL compiled Nov 7 2016 16:51:01)
-----GDB Server start settings-----
GDBInit file: none
GDB Server Listening port: 2331
SWO raw output listening port: 2332
Terminal I/O port: 2333
Accept remote connection: localhost only
Generate logfile: off
Verify download: on
Init regs on start: on
Silent mode: off
Single run mode: on
Target connection timeout: 0 ms
------J-Link related settings------
J-Link Host interface: USB
J-Link script: none
J-Link settings file: none
------Target related settings------
Target device: STM32F103C8
Target interface: SWD
Target interface speed: 1000kHz
Target endian: little
Connecting to J-Link...
J-Link is connected.
Firmware: J-Link ARM V8 compiled Nov 28 2014 13:44:46
Hardware: V8.00
S/N: 58001139
Feature(s): RDI,FlashDL,FlashBP,JFlash
Checking target voltage...
Target voltage: 3.30 V
Listening on TCP/IP port 2331
Connecting to target...Connected to target
Waiting for GDB connection...Connected to 127.0.0.1
Reading all registers
Read 4 bytes @ address 0x00000000 (Data = 0x20005000)
Read 2 bytes @ address 0x00000000 (Data = 0x5000)
Target interface speed set to 100 kHz
Resetting target
Halting target CPU...
...Target halted (PC = 0x08000E68)
R0 = 20000100, R1 = 00000000, R2 = 08000000, R3 = 08000135
R4 = 200006BC, R5 = 20000714, R6 = 20000714, R7 = 20003A34
R8 = 021014B1, R9 = 3050A000, R10= 0288A100, R11= 010C9284
R12= 20000630, R13= 20005000, MSP= 20005000, PSP= 99140140
R14(LR) = FFFFFFFF, R15(PC) = 08000E68
XPSR 01000000, APSR 00000000, EPSR 01000000, IPSR 00000000
CFBP 00000000, CONTROL 00, FAULTMASK 00, BASEPRI 00, PRIMASK 00
Reading all registers
Select auto target interface speed (2000 kHz)
Flash breakpoints enabled
Semi-hosting enabled (Handle on BKPT)
Semihosting I/O set to TELNET Client
Read 4 bytes @ address 0x08000E68 (Data = 0xE0032100)
Read 2 bytes @ address 0x08000E68 (Data = 0x2100)
Downloading 268 bytes @ address 0x08000000 - Verified OK
Downloading 16128 bytes @ address 0x08000110 - Verified OK
Downloading 15888 bytes @ address 0x08004010 - Verified OK
Downloading 14804 bytes @ address 0x08007E20 - Verified OK
Downloading 3660 bytes @ address 0x0800B7F8 - Verified OK
Downloading 8 bytes @ address 0x0800C644 - Verified OK
Downloading 8 bytes @ address 0x0800C64C - Verified OK
Downloading 4 bytes @ address 0x0800C654 - Verified OK
Downloading 2864 bytes @ address 0x0800C658 - Verified OK
Read 4 bytes @ address 0x08000E68 (Data = 0xE0032100)
Read 2 bytes @ address 0x08000E68 (Data = 0x2100)
Read 2 bytes @ address 0x08000F60 (Data = 0xB530)
Comparing flash [....................] Done.
Erasing flash [....................] Done.
Programming flash [.