I wonder, if someone was successful with the GD32VF103 controller.
I had to make two small modifications to the riscv32 rtl startup code, to get programs run on a GD32VF103 controller.
The first entry in the interrupt vector table did not contain a jump to the startup code location.
Starting a program via the internal boot loader then worked, but running a program at power on reset failed.
At power on reset, the controller starts executing at address 0x00000000, but the flash start address is 0x08000000 (both address ranges point to the same physical memory) for which the program is correctly linked. The startup code now checks, if the program counter is below 0x08000000 and switches to 0x08nnnnnn if needed.
Regards, Bernd.