#USB CDC library
wget https://github.com/21km43/CH32V203-USBCDC/archive/refs/heads/main.zip
unzip main.zip
mv CH32V203-USBCDC-main/src ~/Arduino/libraries/CH32V203-USBCDC
# download new files
cd ~/.arduino15/packages/WCH/hardware/ch32v/1.0.4/cores/arduino
wget https://github.com/openwch/arduino_core_ch32/raw/refs/heads/main/cores/arduino/Tone.cpp
wget https://github.com/openwch/arduino_core_ch32/raw/refs/heads/main/cores/arduino/Tone.h
wget https://github.com/openwch/arduino_core_ch32/raw/refs/heads/main/cores/arduino/HardwareTimer.cpp
wget https://github.com/openwch/arduino_core_ch32/raw/refs/heads/main/cores/arduino/HardwareTimer.h
sed -i -e 's@// #include "HardwareTimer.h"@#include "HardwareTimer.h"@' -e 's@// #include "Tone.h"@#include "Tone.h"@' wiring.h
#modify ld
cd ~/.arduino15/packages/WCH/hardware/ch32v/1.0.4/system/CH32V20x/SRC/Ld/
sed -i -e 's/\r/\n/g' Link.ld
sed -i -e 's@FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 64K@FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 64K\n\tEXT (rx) : ORIGIN = 0x08010000, LENGTH = 160K@' -e '/[.]rodata/d' -e 's@\.fini @.storage :\n{\n. = ALIGN(4);\n*(.rodata)\n*(.rodata*)\n. = ALIGN(4);\n} >EXT AT>EXT\n\n\t.fini @' Link.ld
#modify platform.txt
cd ~/.arduino15/packages/WCH/hardware/ch32v/1.0.4/
sed -i -e 's@recipe.objcopy.bin.pattern="{compiler.path}{compiler.objcopy.cmd}" {compiler.elf2bin.flags} {compiler.elf2bin.extra_flags} "{build.path}/{build.project_name}.elf" "{build.path}/{build.project_name}.bin"@recipe.objcopy.bin.pattern="{compiler.path}{compiler.objcopy.cmd}" {compiler.elf2bin.flags} {compiler.elf2bin.extra_flags} -R .storage --gap-fill=0xff --pad-to=0x10000 "{build.path}/{build.project_name}.elf" "{build.path}/{build.project_name}.bin"\nrecipe.objcopy.bin.pattern.post_action.1.pattern="{compiler.path}{compiler.objcopy.cmd}" {compiler.elf2bin.flags} {compiler.elf2bin.extra_flags} -j .storage --gap-fill=0xff --pad-to=0x08020000 "{build.path}/{build.project_name}.elf" "{build.path}/{build.project_name}_ext.bin"\nrecipe.objcopy.bin.pattern.post_action.2.pattern=cp -f "{build.path}/{build.project_name}_ext.bin" "{build.source.path}/" @' platform.txt
