Skip to content

[CH32VM00X] Support TSSOP20 variants ch32v002f4 ch32v006f8 #200

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 12 commits into
base: main
Choose a base branch
from
146 changes: 142 additions & 4 deletions boards.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,15 @@

menu.pnum=Board Select
menu.clock=Clock Select

#menu.peripherals=peripherals
menu.periADC=ADC Module
menu.periUART=UART Module
menu.periSPI=SPI Module
menu.periI2C=I2C Module
menu.periI2Cslave=I2C Slave Option
menu.periTimer=Hardware Timer

menu.xserial=U(S)ART support
menu.usb=USB support (if available)
menu.xusb=USB speed (if available)
Expand All @@ -14,8 +23,8 @@ menu.upload_method=Upload method



##############################################################################
##CH32V00x_EVT Board
#############################################################################
##CH32V00x EVT Board

CH32V00x_EVT.name=CH32V00x
CH32V00x_EVT.build.core=arduino
Expand All @@ -38,7 +47,7 @@ CH32V00x_EVT.menu.pnum.CH32V003F4.build.variant=CH32V00x/CH32V003F4
CH32V00x_EVT.menu.pnum.CH32V003F4.build.chip=CH32V003F4
CH32V00x_EVT.menu.pnum.CH32V003F4.build.march=rv32ecxw
CH32V00x_EVT.menu.pnum.CH32V003F4.build.mabi=ilp32e
CH32V00x_EVT.menu.pnum.CH32V003F4.build.math_lib_gcc=-lm
CH32V00x_EVT.menu.pnum.CH32V003F4.build.math_lib_gcc=-lm
CH32V00x_EVT.menu.pnum.CH32V003F4.build.IQ_math_RV32=
CH32V00x_EVT.menu.pnum.CH32V003F4.build.ch_extra_lib=-lprintf

Expand All @@ -53,6 +62,31 @@ CH32V00x_EVT.menu.upload_method.ispMethod.upload.protocol=
CH32V00x_EVT.menu.upload_method.ispMethod.upload.options=
CH32V00x_EVT.menu.upload_method.ispMethod.upload.tool=wchisp

# Peripherals Options
CH32V00x_EVT.menu.periADC.disable=disabled (default)
CH32V00x_EVT.menu.periADC.disable.build.periADC=
CH32V00x_EVT.menu.periADC.enable=enabled
CH32V00x_EVT.menu.periADC.enable.build.periADC=-DADC_MODULE_ENABLED
CH32V00x_EVT.menu.periUART.disable=disabled (default)
CH32V00x_EVT.menu.periUART.disable.build.periUART=
CH32V00x_EVT.menu.periUART.enable=enabled
CH32V00x_EVT.menu.periUART.enable.build.periUART=-DUART_MODULE_ENABLED
CH32V00x_EVT.menu.periSPI.disable=disabled (default)
CH32V00x_EVT.menu.periSPI.disable.build.periSPI=
CH32V00x_EVT.menu.periSPI.enable=enabled
CH32V00x_EVT.menu.periSPI.enable.build.periSPI=-DSPI_MODULE_ENABLED
CH32V00x_EVT.menu.periI2C.disable=disabled (default)
CH32V00x_EVT.menu.periI2C.disable.build.periI2C=
CH32V00x_EVT.menu.periI2C.enable=enabled
CH32V00x_EVT.menu.periI2C.enable.build.periI2C=-DI2C_MODULE_ENABLED
CH32V00x_EVT.menu.periI2Cslave.disable=disabled (default)
CH32V00x_EVT.menu.periI2Cslave.disable.build.periI2Cslave=-DOPT_I2C_SLAVE=0
CH32V00x_EVT.menu.periI2Cslave.enable=enabled
CH32V00x_EVT.menu.periI2Cslave.enable.build.periI2Cslave=-DOPT_I2C_SLAVE=1
CH32V00x_EVT.menu.periTimer.disable=disabled (default)
CH32V00x_EVT.menu.periTimer.disable.build.periTimer=
CH32V00x_EVT.menu.periTimer.enable=enabled
CH32V00x_EVT.menu.periTimer.enable.build.periTimer=-DTIM_MODULE_ENABLED

# Clock Select
CH32V00x_EVT.menu.clock.48MHz_HSI=48MHz Internal
Expand Down Expand Up @@ -130,6 +164,23 @@ CH32VM00X_EVT.build.variant_h=variant_{build.board}.h
CH32VM00X_EVT.debug.tool=gdb-WCH_LinkE


#CH32V002F4 EVT Board
CH32VM00X_EVT.menu.pnum.CH32V002F4=CH32V002F4 EVT
CH32VM00X_EVT.menu.pnum.CH32V002F4.node=NODE_V002F4
CH32VM00X_EVT.menu.pnum.CH32V002F4.upload.maximum_size=16384
CH32VM00X_EVT.menu.pnum.CH32V002F4.upload.maximum_data_size=4096
CH32VM00X_EVT.menu.pnum.CH32V002F4.build.mcu=QingKe-V2C
CH32VM00X_EVT.menu.pnum.CH32V002F4.build.board=CH32V002F4
CH32VM00X_EVT.menu.pnum.CH32V002F4.build.series=CH32VM00X
CH32VM00X_EVT.menu.pnum.CH32V002F4.build.variant=CH32VM00X/CH32V002F4
CH32VM00X_EVT.menu.pnum.CH32V002F4.build.chip=CH32V002F4
CH32VM00X_EVT.menu.pnum.CH32V002F4.build.march=rv32ecxw
CH32VM00X_EVT.menu.pnum.CH32V002F4.build.mabi=ilp32e
CH32VM00X_EVT.menu.pnum.CH32V002F4.build.math_lib_gcc=-lm
CH32VM00X_EVT.menu.pnum.CH32V002F4.build.IQ_math_RV32=
CH32VM00X_EVT.menu.pnum.CH32V002F4.build.ch_extra_lib=-lprintf
CH32VM00X_EVT.menu.pnum.CH32V002F4.build.ldscript=LinkV002.ld

#CH32V006K8 EVT Board
CH32VM00X_EVT.menu.pnum.CH32V006K8=CH32V006K8 EVT
CH32VM00X_EVT.menu.pnum.CH32V006K8.node=NODE_V006K8
Expand All @@ -145,7 +196,24 @@ CH32VM00X_EVT.menu.pnum.CH32V006K8.build.mabi=ilp32e
CH32VM00X_EVT.menu.pnum.CH32V006K8.build.math_lib_gcc=-lm
CH32VM00X_EVT.menu.pnum.CH32V006K8.build.IQ_math_RV32=
CH32VM00X_EVT.menu.pnum.CH32V006K8.build.ch_extra_lib=-lprintf

CH32VM00X_EVT.menu.pnum.CH32V006K8.build.ldscript=Link.ld

#CH32V006F8 EVT Board
CH32VM00X_EVT.menu.pnum.CH32V006F8=CH32V006F8 EVT
CH32VM00X_EVT.menu.pnum.CH32V006F8.node=NODE_V006F8
CH32VM00X_EVT.menu.pnum.CH32V006F8.upload.maximum_size=63488
CH32VM00X_EVT.menu.pnum.CH32V006F8.upload.maximum_data_size=8192
CH32VM00X_EVT.menu.pnum.CH32V006F8.build.mcu=QingKe-V2C
CH32VM00X_EVT.menu.pnum.CH32V006F8.build.board=CH32V006F8
CH32VM00X_EVT.menu.pnum.CH32V006F8.build.series=CH32VM00X
CH32VM00X_EVT.menu.pnum.CH32V006F8.build.variant=CH32VM00X/CH32V006F8
CH32VM00X_EVT.menu.pnum.CH32V006F8.build.chip=CH32V006F8
CH32VM00X_EVT.menu.pnum.CH32V006F8.build.march=rv32ecxw
CH32VM00X_EVT.menu.pnum.CH32V006F8.build.mabi=ilp32e
CH32VM00X_EVT.menu.pnum.CH32V006F8.build.math_lib_gcc=-lm
CH32VM00X_EVT.menu.pnum.CH32V006F8.build.IQ_math_RV32=
CH32VM00X_EVT.menu.pnum.CH32V006F8.build.ch_extra_lib=-lprintf
CH32VM00X_EVT.menu.pnum.CH32V006F8.build.ldscript=Link.ld

# Upload menu
CH32VM00X_EVT.menu.upload_method.swdMethod=WCH-SWD
Expand All @@ -158,6 +226,34 @@ CH32VM00X_EVT.menu.upload_method.ispMethod.upload.options=
CH32VM00X_EVT.menu.upload_method.ispMethod.upload.tool=wchisp


# Peripherals Options
CH32VM00X_EVT.menu.periADC.disable=disabled (default)
CH32VM00X_EVT.menu.periADC.disable.build.periADC=
CH32VM00X_EVT.menu.periADC.enable=enabled
CH32VM00X_EVT.menu.periADC.enable.build.periADC=-DADC_MODULE_ENABLED
CH32VM00X_EVT.menu.periUART.disable=disabled (default)
CH32VM00X_EVT.menu.periUART.disable.build.periUART=
CH32VM00X_EVT.menu.periUART.enable=enabled
CH32VM00X_EVT.menu.periUART.enable.build.periUART=-DUART_MODULE_ENABLED
CH32VM00X_EVT.menu.periSPI.disable=disabled (default)
CH32VM00X_EVT.menu.periSPI.disable.build.periSPI=
CH32VM00X_EVT.menu.periSPI.enable=enabled
CH32VM00X_EVT.menu.periSPI.enable.build.periSPI=-DSPI_MODULE_ENABLED
CH32VM00X_EVT.menu.periI2C.disable=disabled (default)
CH32VM00X_EVT.menu.periI2C.disable.build.periI2C=
CH32VM00X_EVT.menu.periI2C.enable=enabled
CH32VM00X_EVT.menu.periI2C.enable.build.periI2C=-DI2C_MODULE_ENABLED
CH32VM00X_EVT.menu.periI2Cslave.disable=disabled (default)
CH32VM00X_EVT.menu.periI2Cslave.disable.build.periI2Cslave=-DOPT_I2C_SLAVE=0
CH32VM00X_EVT.menu.periI2Cslave.enable=enabled
CH32VM00X_EVT.menu.periI2Cslave.enable.build.periI2Cslave=-DOPT_I2C_SLAVE=1
CH32VM00X_EVT.menu.periTimer.disable=disabled (default)
CH32VM00X_EVT.menu.periTimer.disable.build.periTimer=
CH32VM00X_EVT.menu.periTimer.enable=enabled
CH32VM00X_EVT.menu.periTimer.enable.build.periTimer=-DTIM_MODULE_ENABLED



# Clock Select
CH32VM00X_EVT.menu.clock.48MHz_HSI=48MHz Internal
CH32VM00X_EVT.menu.clock.48MHz_HSI.build.flags.clock=-DSYSCLK_FREQ_48MHz_HSI=48000000 -DF_CPU=48000000
Expand Down Expand Up @@ -250,6 +346,22 @@ CH32X035_EVT.menu.pnum.CH32X035G8U.build.math_lib_gcc=-lm
CH32X035_EVT.menu.pnum.CH32X035G8U.build.IQ_math_RV32=
CH32X035_EVT.menu.pnum.CH32X035G8U.build.ch_extra_lib=-lprintf

#CH32X033F8P EVT Board
CH32X035_EVT.menu.pnum.CH32X033F8P=CH32X033F8P EVT
CH32X035_EVT.menu.pnum.CH32X033F8P.node=NODE_X033F8P
CH32X035_EVT.menu.pnum.CH32X033F8P.upload.maximum_size=63488
CH32X035_EVT.menu.pnum.CH32X033F8P.upload.maximum_data_size=20480
CH32X035_EVT.menu.pnum.CH32X033F8P.build.mcu=QingKe-V4C
CH32X035_EVT.menu.pnum.CH32X033F8P.build.board=CH32X033F8P
CH32X035_EVT.menu.pnum.CH32X033F8P.build.series=CH32X035
CH32X035_EVT.menu.pnum.CH32X033F8P.build.variant=CH32X035/CH32X033F8P
CH32X035_EVT.menu.pnum.CH32X033F8P.build.chip=CH32X033F8P
CH32X035_EVT.menu.pnum.CH32X033F8P.build.march=rv32imacxw
CH32X035_EVT.menu.pnum.CH32X033F8P.build.mabi=ilp32
CH32X035_EVT.menu.pnum.CH32X033F8P.build.math_lib_gcc=-lm
CH32X035_EVT.menu.pnum.CH32X033F8P.build.IQ_math_RV32=
CH32X035_EVT.menu.pnum.CH32X033F8P.build.ch_extra_lib=-lprintf


# Upload menu
CH32X035_EVT.menu.upload_method.swdMethod=WCH-SWD
Expand All @@ -261,6 +373,32 @@ CH32X035_EVT.menu.upload_method.ispMethod.upload.protocol=
CH32X035_EVT.menu.upload_method.ispMethod.upload.options=
CH32X035_EVT.menu.upload_method.ispMethod.upload.tool=wchisp

# Peripherals Options
CH32X035_EVT.menu.periADC.disable=disabled (default)
CH32X035_EVT.menu.periADC.disable.build.periADC=
CH32X035_EVT.menu.periADC.enable=enabled
CH32X035_EVT.menu.periADC.enable.build.periADC=-DADC_MODULE_ENABLED
CH32X035_EVT.menu.periUART.disable=disabled (default)
CH32X035_EVT.menu.periUART.disable.build.periUART=
CH32X035_EVT.menu.periUART.enable=enabled
CH32X035_EVT.menu.periUART.enable.build.periUART=-DUART_MODULE_ENABLED
CH32X035_EVT.menu.periSPI.disable=disabled (default)
CH32X035_EVT.menu.periSPI.disable.build.periSPI=
CH32X035_EVT.menu.periSPI.enable=enabled
CH32X035_EVT.menu.periSPI.enable.build.periSPI=-DSPI_MODULE_ENABLED
CH32X035_EVT.menu.periI2C.disable=disabled (default)
CH32X035_EVT.menu.periI2C.disable.build.periI2C=
CH32X035_EVT.menu.periI2C.enable=enabled
CH32X035_EVT.menu.periI2C.enable.build.periI2C=-DI2C_MODULE_ENABLED
CH32X035_EVT.menu.periI2Cslave.disable=disabled (default)
CH32X035_EVT.menu.periI2Cslave.disable.build.periI2Cslave=-DOPT_I2C_SLAVE=0
CH32X035_EVT.menu.periI2Cslave.enable=enabled
CH32X035_EVT.menu.periI2Cslave.enable.build.periI2Cslave=-DOPT_I2C_SLAVE=1
CH32X035_EVT.menu.periTimer.disable=disabled (default)
CH32X035_EVT.menu.periTimer.disable.build.periTimer=
CH32X035_EVT.menu.periTimer.enable=enabled
CH32X035_EVT.menu.periTimer.enable.build.periTimer=-DTIM_MODULE_ENABLED


# Clock Select
CH32X035_EVT.menu.clock.48MHz_HSI=48MHz Internal
Expand Down
12 changes: 6 additions & 6 deletions libraries/SPI/src/utility/spi_com.c
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,7 @@ void spi_init(spi_t *obj, uint32_t speed, spi_mode_e mode, uint8_t msb)
// Enable SPI clock
if (handle->Instance == SPI1)
{
#if defined(CH32L10x)
#if defined(CH32L10x) || defined(CH32VM00X)
RCC_PB2PeriphResetCmd(RCC_PB2Periph_SPI1, ENABLE);
RCC_PB2PeriphResetCmd(RCC_PB2Periph_SPI1, DISABLE);
RCC_PB2PeriphClockCmd(RCC_PB2Periph_SPI1, ENABLE );
Expand All @@ -254,7 +254,7 @@ void spi_init(spi_t *obj, uint32_t speed, spi_mode_e mode, uint8_t msb)
#if defined SPI2_BASE
if (handle->Instance == SPI2)
{
#if defined(CH32L10x)
#if defined(CH32L10x) || defined(CH32VM00X)
RCC_PB1PeriphResetCmd(RCC_PB1Periph_SPI2, ENABLE);
RCC_PB1PeriphResetCmd(RCC_PB1Periph_SPI2, DISABLE);
RCC_PB1PeriphClockCmd(RCC_PB1Periph_SPI2, ENABLE );
Expand All @@ -269,7 +269,7 @@ void spi_init(spi_t *obj, uint32_t speed, spi_mode_e mode, uint8_t msb)
#if defined SPI3_BASE
if (handle->Instance == SPI3)
{
#if defined(CH32L10x)
#if defined(CH32L10x) || defined(CH32VM00X)
RCC_PB1PeriphResetCmd(RCC_PB1Periph_SPI3, ENABLE);
RCC_PB1PeriphResetCmd(RCC_PB1Periph_SPI3, DISABLE);
RCC_PB1PeriphClockCmd(RCC_PB1Periph_SPI3, ENABLE );
Expand Down Expand Up @@ -306,7 +306,7 @@ void spi_deinit(spi_t *obj)
// Reset SPI and disable clock
if (handle->Instance == SPI1)
{
#if defined(CH32L10x)
#if defined(CH32L10x) || defined(CH32VM00X)
RCC_PB2PeriphResetCmd(RCC_PB2Periph_SPI1, ENABLE);
RCC_PB2PeriphResetCmd(RCC_PB2Periph_SPI1, DISABLE);
RCC_PB2PeriphClockCmd(RCC_PB2Periph_SPI1, DISABLE);
Expand All @@ -320,7 +320,7 @@ void spi_deinit(spi_t *obj)
#if defined SPI2_BASE
if (handle->Instance == SPI2)
{
#if defined(CH32L10x)
#if defined(CH32L10x) || defined(CH32VM00X)
RCC_PB1PeriphResetCmd(RCC_PB1Periph_SPI2, ENABLE);
RCC_PB1PeriphResetCmd(RCC_PB1Periph_SPI2, DISABLE);
RCC_PB1PeriphClockCmd(RCC_PB1Periph_SPI2, DISABLE);
Expand All @@ -335,7 +335,7 @@ void spi_deinit(spi_t *obj)
#if defined SPI3_BASE
if (handle->Instance == SPI3)
{
#if defined(CH32L10x)
#if defined(CH32L10x) || defined(CH32VM00X)
RCC_PB1PeriphResetCmd(RCC_PB1Periph_SPI3, ENABLE);
RCC_PB1PeriphResetCmd(RCC_PB1Periph_SPI3, DISABLE);
RCC_PB1PeriphClockCmd(RCC_PB1Periph_SPI3, DISABLE);
Expand Down
12 changes: 12 additions & 0 deletions libraries/Wire/src/utility/twi.c
Original file line number Diff line number Diff line change
Expand Up @@ -141,9 +141,15 @@ void i2c_custom_init(i2c_t *obj, uint32_t timing, uint32_t addressingMode, uint3
// Enable I2C1 clock if not done
if (obj->i2c == I2C1)
{
#if defined(CH32L10x) || defined(CH32VM00X)
RCC_PB1PeriphResetCmd(RCC_PB1Periph_I2C1, ENABLE);
RCC_PB1PeriphResetCmd(RCC_PB1Periph_I2C1, DISABLE);
RCC_PB1PeriphClockCmd(RCC_PB1Periph_I2C1, ENABLE );
#else
RCC_APB1PeriphResetCmd(RCC_APB1Periph_I2C1, ENABLE);
RCC_APB1PeriphResetCmd(RCC_APB1Periph_I2C1, DISABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE );
#endif

obj->irq = I2C1_EV_IRQn;
obj->irqER = I2C1_ER_IRQn;
Expand All @@ -154,9 +160,15 @@ void i2c_custom_init(i2c_t *obj, uint32_t timing, uint32_t addressingMode, uint3
// Enable I2C2 clock if not done
if (obj->i2c == I2C2)
{
#if defined(CH32L10x) || defined(CH32VM00X)
RCC_PB1PeriphResetCmd(RCC_PB1Periph_I2C2, ENABLE);
RCC_PB1PeriphResetCmd(RCC_PB1Periph_I2C2, DISABLE);
RCC_PB1PeriphClockCmd(RCC_PB1Periph_I2C2, ENABLE );
#else
RCC_APB1PeriphResetCmd(RCC_APB1Periph_I2C2, ENABLE);
RCC_APB1PeriphResetCmd(RCC_APB1Periph_I2C2, DISABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C2, ENABLE );
#endif

obj->irq = I2C2_EV_IRQn;
obj->irqER = I2C2_ER_IRQn;
Expand Down
12 changes: 8 additions & 4 deletions platform.txt
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,14 @@ compiler.libraries.ldflags=

compiler.extra_flags=-march={build.march} -mabi={build.mabi} -msmall-data-limit=8 -msave-restore -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common

# peripherial option flags
compiler.peripheral_flags=-DIDE_MENU_PERIPHERALS {build.periADC} {build.periUART} {build.periSPI} {build.periI2C} {build.periI2Cslave} {build.periTimer}

compiler.S.flags={compiler.extra_flags} -x assembler-with-cpp {build.flags.clock} "-I{build.system.path}/{build.series}/SRC/Startup/" "-I{build.core.path}/ch32/"

compiler.c.flags={build.flags.clock} {compiler.extra_flags} -c {build.flags.optimize} {build.flags.debug} {compiler.warning_flags} -std=gnu99 -MMD {compiler.ch.extra_include}
compiler.c.flags={build.flags.clock} {compiler.extra_flags} {compiler.peripheral_flags} -c {build.flags.optimize} {build.flags.debug} {compiler.warning_flags} -std=gnu99 -MMD {compiler.ch.extra_include}

compiler.cpp.flags={build.flags.clock} {compiler.extra_flags} -c {build.flags.optimize} {build.flags.debug} {compiler.warning_flags} -std={compiler.cpp.std} -fno-threadsafe-statics -fno-rtti -fno-exceptions -fno-use-cxa-atexit -MMD {compiler.ch.extra_include} -fpermissive
compiler.cpp.flags={build.flags.clock} {compiler.extra_flags} {compiler.peripheral_flags} -c {build.flags.optimize} {build.flags.debug} {compiler.warning_flags} -std={compiler.cpp.std} -fno-threadsafe-statics -fno-rtti -fno-exceptions -fno-use-cxa-atexit -MMD {compiler.ch.extra_include} -fpermissive

compiler.ar.flags=rcs

Expand Down Expand Up @@ -132,6 +135,7 @@ recipe.S.o.pattern="{compiler.path}{compiler.S.cmd}" {compiler.S.flags} {build.i
recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{archive_file_path}" "{object_file}"

## Combine gc-sections, archives, and objects
# {build.flags.optimize}
recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.extra_flags} -T "{build.system.path}/{build.series}/SRC/Ld/{build.ldscript}" -nostartfiles -Xlinker --gc-sections "-Wl,-Map,{build.path}/{build.project_name}.map" {compiler.c.elf.extra_flags} {build.flags.ldflags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -Wl,--start-group {object_files} {build.ch_extra_lib} -Wl,--whole-archive "{archive_file_path}" -Wl,--no-whole-archive -lc -Wl,--end-group

## Create output (.bin file)
Expand Down Expand Up @@ -162,7 +166,7 @@ recipe.size.regex.data=^(?:\.data|\.bss|\.noinit)\s+([0-9]+).*

# Uploader tool
## WCH-LinkE
tools.WCH_linkE.path={runtime.tools.openocd-1.0.0.path}/bin/
tools.WCH_linkE.path={runtime.tools.openocd-2.3.0.path}/bin/
tools.WCH_linkE.cmd=openocd
tools.WCH_linkE.upload.params.verbose=
tools.WCH_linkE.upload.params.quiet=
Expand Down Expand Up @@ -190,6 +194,6 @@ debug.toolchain.prefix=riscv-none-embed
debug.toolchain.path={compiler.path}

debug.server=openocd
debug.server.openocd.path={runtime.tools.openocd-1.0.0.path}/bin/openocd
debug.server.openocd.path={runtime.tools.openocd-2.3.0.path}/bin/openocd
debug.server.openocd.scripts_dir={debug.toolchain.path}/scripts
debug.server.openocd.script={runtime.tools.openocd.path}/bin/wch-riscv.cfg
Loading