Эту проблему поправил, взяв скрипт из MRS2. Но увы. Даже после
пересборки без LTO, без правок кода, отказывает на функции: jtag_libusb_open(wlink_vids, wlink_pids, &wfd, NULL)
Debug: 55 9 target.c:1671 handle_target_init_command(): Initializing targets...
Debug: 56 9 wch_riscv.c:84 wch_riscv_init_target(): wch_riscv_init_target()
Debug: 57 9 semihosting_common.c:130 semihosting_common_init():
Error: 58 16 wlinke.c:1480 wlink_init(): open failed
Debug: 59 16 command.c:556 run_command(): Command 'init' failed with error code -4
User : 60 16 command.c:620 command_run_line():
Debug: 61 16 wch_riscv.c:114 wch_riscv_deinit_target(): wch_riscv_deinit_target()
Debug: 62 16 target.c:2214 target_free_all_working_areas_restore(): freeing all working areas
(-4) - это общий код отказа "ERROR_FAIL".
Возможно, мой CH32V317 слишком новый для этой сборки. MRS2 его видит, шьёт и отлаживает.
Завтра проверю сборку OpenOCD с CH32V307. Если заработает - значит просто нет поддержки чипа в этих исходниках.