1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

arduino_core_ch32_sz

@verylowfreq (三峰 スズ) さんが作成しているボード、 Suzuno32RV 向けの Arduino IDE開発環境用のボード定義ファイルを提供しています.

Generic な 開発

Suzuno32RV 用の開発環境 arduino_core_ch32_sz を Generic な CH32V203 用に流用して、

「arduino_core_ch32_sz を使って BluePill+ を L チカする」
https://qiita.com/nanbuwks/items/0963b7a87469192240de

において開発をしてみました。

その後、以前解説した方法がうまくいかなくなったのでとりあえずの Hack.

環境

  • Ubuntu 22.04 LTS
  • Arduino 開発環境 1.8.19
    • ポータブル化設定済

Hack

2026/4 の Commit a4a0fb6 において、 board.txt より CH32V20x_EVT Board が削除されたので
Commit f54043e から必要なものを持ってくる。

portable/packages/WCH_sz/hardware/ch32v/1.0.4+sz8/boards.txt を編集。
以下を追記します。

##############################################################################

##CH32V20x  Board

CH32V20x_EVT.name=CH32V20x
CH32V20x_EVT.build.core=arduino
CH32V20x_EVT.build.board=CH32V20x_EVT
CH32V20x_EVT.upload.maximum_size=0
CH32V20x_EVT.upload.maximum_data_size=0
CH32V20x_EVT.build.variant_h=variant_{build.board}.h
CH32V20x_EVT.debug.tool=gdb-WCH_LinkE

#CH32V203C8 Generic Board

CH32V20x_EVT.menu.pnum.CH32V203C8_GEN=CH32V203C8_Generic
CH32V20x_EVT.menu.pnum.CH32V203C8_GEN.node=NODE_V203C8_Generic
CH32V20x_EVT.menu.pnum.CH32V203C8_GEN.upload.maximum_size=229376
CH32V20x_EVT.menu.pnum.CH32V203C8_GEN.upload.maximum_data_size=20480
CH32V20x_EVT.menu.pnum.CH32V203C8_GEN.build.mcu=QingKe-V4B
CH32V20x_EVT.menu.pnum.CH32V203C8_GEN.build.board=CH32V203C8
CH32V20x_EVT.menu.pnum.CH32V203C8_GEN.build.series=CH32V20x
CH32V20x_EVT.menu.pnum.CH32V203C8_GEN.build.variant=CH32V20x/CH32V203C8
CH32V20x_EVT.menu.pnum.CH32V203C8_GEN.build.chip=CH32V203
CH32V20x_EVT.menu.pnum.CH32V203C8_GEN.build.march=rv32imacxw
CH32V20x_EVT.menu.pnum.CH32V203C8_GEN.build.mabi=ilp32
CH32V20x_EVT.menu.pnum.CH32V203C8_GEN.build.math_lib_gcc=-lm
CH32V20x_EVT.menu.pnum.CH32V203C8_GEN.build.IQ_math_RV32=
CH32V20x_EVT.menu.pnum.CH32V203C8_GEN.build.ch_extra_lib=-lprintf
CH32V20x_EVT.menu.pnum.CH32V203C8_GEN.build.board_extra_flags=


# USB support
CH32V20x_EVT.menu.usb.none=None
CH32V20x_EVT.menu.usb.none.build.usb_flags=
CH32V20x_EVT.menu.usb.tinyusb_usbd=Adafruit TinyUSB with USBD
CH32V20x_EVT.menu.usb.tinyusb_usbd.build.usb_flags=-DUSBCON -DUSE_TINYUSB -DCFG_TUD_ENABLED=1 -DCFG_TUD_WCH_USBIP_FSDEV=1 "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino"
CH32V20x_EVT.menu.usb.tinyusb_usbd_usbfsh=Adafruit TinyUSB with USBD/USBFS Host
CH32V20x_EVT.menu.usb.tinyusb_usbd_usbfsh.build.usb_flags=-DUSBCON -DUSE_TINYUSB -DCFG_TUD_ENABLED=1 -DCFG_TUD_WCH_USBIP_FSDEV=1 -DCFG_TUH_ENABLED=1 -DCFG_TUH_WCH_USBIP_USBFS=1 "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino"

# Upload menu
CH32V20x_EVT.menu.upload_method.ispMethod=WCH-ISP
CH32V20x_EVT.menu.upload_method.ispMethod.upload.protocol=
CH32V20x_EVT.menu.upload_method.ispMethod.upload.options=
CH32V20x_EVT.menu.upload_method.ispMethod.upload.tool=wchisp
CH32V20x_EVT.menu.upload_method.ispMethod.bootloader.tool=wchisp
CH32V20x_EVT.menu.upload_method.swdMethod=WCH-SWD
CH32V20x_EVT.menu.upload_method.swdMethod.upload.protocol=
CH32V20x_EVT.menu.upload_method.swdMethod.upload.options=
CH32V20x_EVT.menu.upload_method.swdMethod.upload.tool=WCH_linkE
CH32V20x_EVT.menu.upload_method.swdMethod.bootloader.tool=WCH_linkE
CH32V20x_EVT.menu.upload_method.hidmethod=HID Bootloader
CH32V20x_EVT.menu.upload_method.hidmethod.upload.protocol=
CH32V20x_EVT.menu.upload_method.hidmethod.upload.options=
CH32V20x_EVT.menu.upload_method.hidmethod.upload.tool=hidbootloader
CH32V20x_EVT.menu.upload_method.hidmethod.build.ldscript=Link_bootloader.ld
CH32V20x_EVT.menu.upload_method.hidmethod.build.flash_base=0x08000000
CH32V20x_EVT.menu.upload_method.hidmethod.build.flash_offset=0x00004000
CH32V20x_EVT.menu.upload_method.hidmethod.build.family_id=0x699b62ec

# Clock Select
CH32V20x_EVT.menu.clock.144MHz_HSI=144MHz Internal
CH32V20x_EVT.menu.clock.144MHz_HSI.build.flags.clock=-DSYSCLK_FREQ_144MHz_HSI=144000000 -DF_CPU=144000000
CH32V20x_EVT.menu.clock.120MHz_HSI=120MHz Internal
CH32V20x_EVT.menu.clock.120MHz_HSI.build.flags.clock=-DSYSCLK_FREQ_120MHz_HSI=120000000 -DF_CPU=120000000
CH32V20x_EVT.menu.clock.96MHz_HSI=96MHz Internal
CH32V20x_EVT.menu.clock.96MHz_HSI.build.flags.clock=-DSYSCLK_FREQ_96MHz_HSI=96000000 -DF_CPU=96000000
CH32V20x_EVT.menu.clock.72MHz_HSI=72MHz Internal
CH32V20x_EVT.menu.clock.72MHz_HSI.build.flags.clock=-DSYSCLK_FREQ_72MHz_HSI=72000000 -DF_CPU=72000000
CH32V20x_EVT.menu.clock.56MHz_HSI=56MHz Internal
CH32V20x_EVT.menu.clock.56MHz_HSI.build.flags.clock=-DSYSCLK_FREQ_56MHz_HSI=56000000 -DF_CPU=56000000
CH32V20x_EVT.menu.clock.48MHz_HSI=48MHz Internal
CH32V20x_EVT.menu.clock.48MHz_HSI.build.flags.clock=-DSYSCLK_FREQ_48MHz_HSI=48000000 -DF_CPU=48000000
CH32V20x_EVT.menu.clock.HSI=HSI Internal
CH32V20x_EVT.menu.clock.HSI.build.flags.clock=-DSYSCLK_FREQ_HSI=HSI_VALUE -DF_CPU=HSI_VALUE
CH32V20x_EVT.menu.clock.144MHz_HSE=144MHz External
CH32V20x_EVT.menu.clock.144MHz_HSE.build.flags.clock=-DSYSCLK_FREQ_144MHz_HSE=144000000 -DF_CPU=144000000
CH32V20x_EVT.menu.clock.120MHz_HSE=120MHz External
CH32V20x_EVT.menu.clock.120MHz_HSE.build.flags.clock=-DSYSCLK_FREQ_120MHz_HSE=120000000 -DF_CPU=120000000
CH32V20x_EVT.menu.clock.96MHz_HSE=96MHz External
CH32V20x_EVT.menu.clock.96MHz_HSE.build.flags.clock=-DSYSCLK_FREQ_96MHz_HSE=96000000 -DF_CPU=96000000
CH32V20x_EVT.menu.clock.72MHz_HSE=72MHz External
CH32V20x_EVT.menu.clock.72MHz_HSE.build.flags.clock=-DSYSCLK_FREQ_72MHz_HSE=72000000 -DF_CPU=72000000
CH32V20x_EVT.menu.clock.56MHz_HSE=56MHz External
CH32V20x_EVT.menu.clock.56MHz_HSE.build.flags.clock=-DSYSCLK_FREQ_56MHz_HSE=56000000 -DF_CPU=56000000
CH32V20x_EVT.menu.clock.48MHz_HSE=48MHz External
CH32V20x_EVT.menu.clock.48MHz_HSE.build.flags.clock=-DSYSCLK_FREQ_48MHz_HSE=48000000 -DF_CPU=48000000
CH32V20x_EVT.menu.clock.HSE=HSE External
CH32V20x_EVT.menu.clock.HSE.build.flags.clock=-DSYSCLK_FREQ_HSE=HSE_VALUE -DF_CPU=HSE_VALUE


# Optimizations
CH32V20x_EVT.menu.opt.osstd=Smallest (-Os default)
CH32V20x_EVT.menu.opt.osstd.build.flags.optimize=-Os
CH32V20x_EVT.menu.opt.oslto=Smallest (-Os) with LTO
CH32V20x_EVT.menu.opt.oslto.build.flags.optimize=-Os -flto
CH32V20x_EVT.menu.opt.o1std=Fast (-O1)
CH32V20x_EVT.menu.opt.o1std.build.flags.optimize=-O1
CH32V20x_EVT.menu.opt.o1lto=Fast (-O1) with LTO
CH32V20x_EVT.menu.opt.o1lto.build.flags.optimize=-O1 -flto
CH32V20x_EVT.menu.opt.o2std=Faster (-O2)
CH32V20x_EVT.menu.opt.o2std.build.flags.optimize=-O2
CH32V20x_EVT.menu.opt.o2lto=Faster (-O2) with LTO
CH32V20x_EVT.menu.opt.o2lto.build.flags.optimize=-O2 -flto
CH32V20x_EVT.menu.opt.o3std=Fastest (-O3)
CH32V20x_EVT.menu.opt.o3std.build.flags.optimize=-O3
CH32V20x_EVT.menu.opt.o3lto=Fastest (-O3) with LTO
CH32V20x_EVT.menu.opt.o3lto.build.flags.optimize=-O3 -flto
CH32V20x_EVT.menu.opt.ogstd=Debug (-Og)
CH32V20x_EVT.menu.opt.ogstd.build.flags.optimize=-Og
CH32V20x_EVT.menu.opt.o0std=No Optimization (-O0)
CH32V20x_EVT.menu.opt.o0std.build.flags.optimize=-O0


# Debug information
CH32V20x_EVT.menu.dbg.none=None
CH32V20x_EVT.menu.dbg.none.build.flags.debug=-DNDEBUG
CH32V20x_EVT.menu.dbg.enable_sym=Symbols Enabled (-g)
CH32V20x_EVT.menu.dbg.enable_sym.build.flags.debug=-g -DNDEBUG
CH32V20x_EVT.menu.dbg.enable_log=Core logs Enabled
CH32V20x_EVT.menu.dbg.enable_log.build.flags.debug=
CH32V20x_EVT.menu.dbg.enable_all=Core Logs and Symbols Enabled (-g)
CH32V20x_EVT.menu.dbg.enable_all.build.flags.debug=-g


# C Runtime Library
CH32V20x_EVT.menu.rtlib.nano=Newlib Nano (default)
CH32V20x_EVT.menu.rtlib.nano.build.flags.ldflags=--specs=nano.specs --specs=nosys.specs
CH32V20x_EVT.menu.rtlib.nanofp=Newlib Nano + Float Printf
CH32V20x_EVT.menu.rtlib.nanofp.build.flags.ldflags=--specs=nano.specs --specs=nosys.specs -u _printf_float
CH32V20x_EVT.menu.rtlib.nanofs=Newlib Nano + Float Scanf
CH32V20x_EVT.menu.rtlib.nanofs.build.flags.ldflags=--specs=nano.specs --specs=nosys.specs -u _scanf_float
CH32V20x_EVT.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
CH32V20x_EVT.menu.rtlib.nanofps.build.flags.ldflags=--specs=nano.specs --specs=nosys.specs -u _printf_float -u _scanf_float
CH32V20x_EVT.menu.rtlib.full=Newlib Standard
CH32V20x_EVT.menu.rtlib.full.build.flags.ldflags=--specs=nosys.specs



@verylowfreq (三峰 スズ) さんの最新の作り込みを反映したいところだけれども、どのようにするのがいいかな? 最もいいやりかたが固まるまでとりあえずこれで。

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?