diff --git a/.gitignore b/.gitignore
index f79293a9c0b686f0cb5fcd5f5760dfcea671c309..dac6f1e85c551aef5a845a2233956943059fdaf8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,3 +11,4 @@ minichlink/minichlink.so
 compile_commands.json
 .clangd
 .cache
+ch32v003fun/generated_*.ld
\ No newline at end of file
diff --git a/ch32v003fun/ch32v003fun.h b/ch32v003fun/ch32v003fun.h
index 2212859cdc56d5044b579cfd1f511c06cc9fe290..75021d943560de9d2a1f0285c7b046f8d99be2e9 100644
--- a/ch32v003fun/ch32v003fun.h
+++ b/ch32v003fun/ch32v003fun.h
@@ -12157,11 +12157,6 @@ void DefaultIRQHandler( void ) __attribute__((section(".text.vector_handler")))
 
 #endif
 
-#define str(token) #token
-#define xstr(token) str(token)
-
-#pragma message("CH32V003FUN: " xstr(FUNCONF_PLL_MULTIPLIER) " Multiplier")
-
 // Determination of PLL multiplication factor for non-V003 chips
 #if defined(CH32V10x) || defined(CH32V20x) || defined(CH32V30x)
 	#if !defined(FUNCONF_SYSTEM_CORE_CLOCK)
@@ -12241,9 +12236,6 @@ void DefaultIRQHandler( void ) __attribute__((section(".text.vector_handler")))
 	#endif
 #endif
 
-#pragma message("CH32V003FUN: " xstr(FUNCONF_SYSTEM_CORE_CLOCK) " Clock")
-
-
 #ifndef __ASSEMBLER__
 
 void DelaySysTick( uint32_t n );
diff --git a/ch32v003fun/ch32v003fun.mk b/ch32v003fun/ch32v003fun.mk
index 278b7361d74b728961d7fe4678ce8931aca58ee3..8fdec5237cf381b5659f4fb11597a73917850b27 100644
--- a/ch32v003fun/ch32v003fun.mk
+++ b/ch32v003fun/ch32v003fun.mk
@@ -1,31 +1,50 @@
 
 PREFIX?=riscv64-unknown-elf
 
+TARGET_MCU?=CH32V003
+TARGET_EXT?=c
+
 CH32V003FUN?=../../ch32v003fun
 MINICHLINK?=../../minichlink
 
-CFLAGS+= \
-	-g -Os -flto -ffunction-sections \
-	-static-libgcc \
-	-march=rv32ec \
-	-mabi=ilp32e \
-	-I/usr/include/newlib \
-	-I$(CH32V003FUN)/../extralibs \
-	-I$(CH32V003FUN) \
-	-nostdlib \
-	-I. -Wall $(EXTRA_CFLAGS)
+WRITE_SECTION?=flash
+SYSTEM_C?=$(CH32V003FUN)/ch32v003fun.c
 
-LINKER_SCRIPT?=$(CH32V003FUN)/ch32v003fun.ld
+ifeq ($(TARGET_MCU),CH32V003)
+	CFLAGS+= \
+		-g -Os -flto -ffunction-sections \
+		-static-libgcc \
+		-march=rv32ec \
+		-mabi=ilp32e \
+		-I/usr/include/newlib \
+		-I$(CH32V003FUN)/../extralibs \
+		-I$(CH32V003FUN) \
+		-nostdlib \
+		-DCH32V003=1 \
+		-I. -Wall $(EXTRA_CFLAGS)
+
+	LINKER_SCRIPT?=$(CH32V003FUN)/ch32v003fun.ld
+else
+	ifeq ($(findstring CH32V10,$(TARGET_MCU)),CH32V10)
+		include $(CH32V003FUN)/ch32v10xfun.mk
+	else ifeq ($(findstring CH32V20,$(TARGET_MCU)),CH32V20)
+		include $(CH32V003FUN)/ch32v20xfun.mk
+	else ifeq ($(findstring CH32V30,$(TARGET_MCU)),CH32V30)
+		include $(CH32V003FUN)/ch32v30xfun.mk
+	else
+		$(error Unknown MCU $(TARGET_MCU))
+	endif
+endif
 
 LDFLAGS+=-T $(LINKER_SCRIPT) -Wl,--gc-sections -L$(CH32V003FUN)/../misc -lgcc
 
-WRITE_SECTION?=flash
-SYSTEM_C?=$(CH32V003FUN)/ch32v003fun.c
-TARGET_EXT?=c
+ifeq ($(TARGET_MCU), CH32V003)
 
 $(TARGET).elf : $(SYSTEM_C) $(TARGET).$(TARGET_EXT) $(ADDITIONAL_C_FILES)
 	$(PREFIX)-gcc -o $@ $^ $(CFLAGS) $(LDFLAGS)
 
+endif
+
 $(TARGET).bin : $(TARGET).elf
 	$(PREFIX)-size $^
 	$(PREFIX)-objdump -S $^ > $(TARGET).lst
diff --git a/ch32v003fun/ch32v10xfun.ld b/ch32v003fun/ch32v10xfun.ld
index 509b9f1ea7fd0b4f33159869ef060b38ebe304dd..e4506fecd01678d699bcc1ccd644afb6efd8f0f5 100644
--- a/ch32v003fun/ch32v10xfun.ld
+++ b/ch32v003fun/ch32v10xfun.ld
@@ -7,8 +7,21 @@ PROVIDE( _stack_size = __stack_size );
 
 MEMORY
 {
+#if MCU_PACKAGE == 1
+
 	FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 64K
 	RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 20K
+
+#elif MCU_PACKAGE == 2
+
+    FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 32K
+	RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 10K
+
+#else
+
+    #error "Unknown MCU package"
+
+#endif
 }
 
 
diff --git a/ch32v003fun/ch32v10xfun.mk b/ch32v003fun/ch32v10xfun.mk
index afe095f089868f9aed856d3b1b4d8ad34401dadf..997e7f18d94d30a12e5efee8588dfd4a5d38d4f2 100644
--- a/ch32v003fun/ch32v10xfun.mk
+++ b/ch32v003fun/ch32v10xfun.mk
@@ -1,8 +1,5 @@
-
-PREFIX?=riscv64-unknown-elf
-
-CH32V003FUN?=../../ch32v003fun
-MINICHLINK?=../../minichlink
+TARGET_MCU_PACKAGE?=CH32V103R8T6
+MCU_PACKAGE?=1
 
 CFLAGS+= \
 	-g -Os -flto -ffunction-sections -fdata-sections \
@@ -16,43 +13,25 @@ CFLAGS+= \
 	-I/usr/include/newlib \
 	-I$(CH32V003FUN) \
 	-nostdlib \
+	-DCH32V10x=1 \
 	-I. -Wall
 
-LDFLAGS+=-T $(CH32V003FUN)/ch32v10xfun.ld -Wl,--gc-sections -L$(CH32V003FUN)/../misc -lgcc
-
-SYSTEM_C:=$(CH32V003FUN)/ch32v003fun.c
-
-$(TARGET).elf : $(SYSTEM_C) $(TARGET).c $(ADDITIONAL_C_FILES)
-	$(PREFIX)-gcc -o $@ $^ $(CFLAGS) $(LDFLAGS)
-
-$(TARGET).bin : $(TARGET).elf
-	$(PREFIX)-size $^
-	$(PREFIX)-objdump -S $^ > $(TARGET).lst
-	$(PREFIX)-objdump -t $^ > $(TARGET).map
-	$(PREFIX)-objcopy -O binary $< $(TARGET).bin
-	$(PREFIX)-objcopy -O ihex $< $(TARGET).hex
-
-ifeq ($(OS),Windows_NT)
-closechlink :
-	-taskkill /F /IM minichlink.exe /T
-else
-closechlink :
-	-killall minichlink
+# MCU Flash/RAM split
+ifeq ($(findstring R8, $(TARGET_MCU_PACKAGE)), R8)
+	MCU_PACKAGE:=1
+else ifeq ($(findstring C8, $(TARGET_MCU_PACKAGE)), C8)
+	MCU_PACKAGE:=1
+else ifeq ($(findstring C6, $(TARGET_MCU_PACKAGE)), C6)
+	MCU_PACKAGE:=2
 endif
 
-terminal : monitor
-
-monitor :
-	$(MINICHLINK)/minichlink -T
-
-gdbserver : 
-	-$(MINICHLINK)/minichlink -baG
-
-cv_flash : $(TARGET).bin
-	make -C $(MINICHLINK) all
-	$(MINICHLINK)/minichlink -w $< flash -b
+GENERATED_LD_FILE:=$(CH32V003FUN)/generated_$(TARGET_MCU_PACKAGE).ld
+LINKER_SCRIPT:=$(GENERATED_LD_FILE)
+FILES_TO_COMPILE:=$(SYSTEM_C) $(TARGET).$(TARGET_EXT) $(ADDITIONAL_C_FILES)
 
-cv_clean :
-	rm -rf $(TARGET).elf $(TARGET).bin $(TARGET).hex $(TARGET).lst $(TARGET).map $(TARGET).hex || true
+$(GENERATED_LD_FILE) :
+	$(PREFIX)-gcc -E -P -x c -DMCU_PACKAGE=$(MCU_PACKAGE) $(CH32V003FUN)/ch32v10xfun.ld > $(GENERATED_LD_FILE)
 
-build : $(TARGET).bin
+$(TARGET).elf : $(GENERATED_LD_FILE) $(FILES_TO_COMPILE)
+	echo $(FILES_TO_COMPILE)
+	$(PREFIX)-gcc -o $@ $(FILES_TO_COMPILE) $(CFLAGS) $(LDFLAGS)
\ No newline at end of file
diff --git a/ch32v003fun/ch32v20xfun.ld b/ch32v003fun/ch32v20xfun.ld
index a811a900b961a9aeac920ccfe85c935b3d46bd35..2400a0b2abfce88d5e048e3e77c6daa3661785c2 100644
--- a/ch32v003fun/ch32v20xfun.ld
+++ b/ch32v003fun/ch32v20xfun.ld
@@ -6,28 +6,27 @@ PROVIDE( _stack_size = __stack_size );
 
 MEMORY
 {
-/* CH32V20x_D6 - CH32V203F6-CH32V203G6-CH32V203K6-CH32V203C6 */
-/*
-	FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 32K
-	RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 10K
-*/
-
-/* CH32V20x_D6 - CH32V203K8-CH32V203C8-CH32V203G8-CH32V203F8 */
-/**/
+#if MCU_PACKAGE == 1
+
 	FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 64K
 	RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 20K
 
+#elif MCU_PACKAGE == 2
+
+    FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 32K
+    RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 10K
+
+#elif MCU_PACKAGE == 3
+
+    FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 128K
+    RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 64K
+
+#else
+
+    #error "Unknown MCU package"
 
-/* CH32V20x_D8 - CH32V203RB
-   CH32V20x_D8W - CH32V208x
-   FLASH + RAM supports the following configuration
-   FLASH-128K + RAM-64K
-   FLASH-144K + RAM-48K
-   FLASH-160K + RAM-32K
+#endif
 
-	FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 160K
-	RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 32K
-*/
 }
 
 
diff --git a/ch32v003fun/ch32v20xfun.mk b/ch32v003fun/ch32v20xfun.mk
index e4cb46dce090db27ad545818f181b30600e6a93c..4775ac1778ff79394b27060a32a85010dbde1c31 100644
--- a/ch32v003fun/ch32v20xfun.mk
+++ b/ch32v003fun/ch32v20xfun.mk
@@ -1,8 +1,5 @@
-
-PREFIX?=riscv64-unknown-elf
-
-CH32V003FUN?=../../ch32v003fun
-MINICHLINK?=../../minichlink
+TARGET_MCU_PACKAGE?=CH32V203F8P6
+MCU_PACKAGE?=1
 
 CFLAGS+= \
 	-g -Os -flto -ffunction-sections -fdata-sections \
@@ -16,43 +13,52 @@ CFLAGS+= \
 	-I/usr/include/newlib \
 	-I$(CH32V003FUN) \
 	-nostdlib \
+	-DCH32V20x=1 \
 	-I. -Wall
 
-LDFLAGS+=-T $(CH32V003FUN)/ch32v20xfun.ld -Wl,--gc-sections -L$(CH32V003FUN)/../misc -lgcc
-
-SYSTEM_C:=$(CH32V003FUN)/ch32v003fun.c
-
-$(TARGET).elf : $(SYSTEM_C) $(TARGET).c $(ADDITIONAL_C_FILES)
-	$(PREFIX)-gcc -o $@ $^ $(CFLAGS) $(LDFLAGS)
-
-$(TARGET).bin : $(TARGET).elf
-	$(PREFIX)-size $^
-	$(PREFIX)-objdump -S $^ > $(TARGET).lst
-	$(PREFIX)-objdump -t $^ > $(TARGET).map
-	$(PREFIX)-objcopy -O binary $< $(TARGET).bin
-	$(PREFIX)-objcopy -O ihex $< $(TARGET).hex
+# MCU Flash/RAM split
+ifeq ($(findstring F8, $(TARGET_MCU_PACKAGE)), F8)
+	MCU_PACKAGE:=1
+else ifeq ($(findstring G8, $(TARGET_MCU_PACKAGE)), G8)
+	MCU_PACKAGE:=1
+else ifeq ($(findstring K8, $(TARGET_MCU_PACKAGE)), K8)
+	MCU_PACKAGE:=1
+else ifeq ($(findstring C8, $(TARGET_MCU_PACKAGE)), C8)
+	MCU_PACKAGE:=1
+else ifeq ($(findstring F6, $(TARGET_MCU_PACKAGE)), F6)
+	MCU_PACKAGE:=2
+else ifeq ($(findstring G6, $(TARGET_MCU_PACKAGE)), G6)
+	MCU_PACKAGE:=2
+else ifeq ($(findstring K6, $(TARGET_MCU_PACKAGE)), K6)
+	MCU_PACKAGE:=2
+else ifeq ($(findstring C6, $(TARGET_MCU_PACKAGE)), C6)
+	MCU_PACKAGE:=2
+else ifeq ($(findstring RB, $(TARGET_MCU_PACKAGE)), RB)
+	MCU_PACKAGE:=3
+else ifeq ($(findstring GB, $(TARGET_MCU_PACKAGE)), GB)
+    MCU_PACKAGE:=3
+else ifeq ($(findstring CB, $(TARGET_MCU_PACKAGE)), CB)
+    MCU_PACKAGE:=3
+else ifeq ($(findstring WB, $(TARGET_MCU_PACKAGE)), WB)
+    MCU_PACKAGE:=3
+endif
 
-ifeq ($(OS),Windows_NT)
-closechlink :
-	-taskkill /F /IM minichlink.exe /T
+# Package
+ifeq ($(findstring 203RB, $(TARGET_MCU_PACKAGE)), 203RB)
+	CFLAGS+=-DCH32V20x_D8
+else ifeq ($(findstring 208, $(TARGET_MCU_PACKAGE)), 208)
+	CFLAGS+=-DCH32V20x_D8W
 else
-closechlink :
-	-killall minichlink
+	CFLAGS+=-DCH32V20x_D6
 endif
 
-terminal : monitor
-
-monitor :
-	$(MINICHLINK)/minichlink -T
-
-gdbserver : 
-	-$(MINICHLINK)/minichlink -baG
-
-cv_flash : $(TARGET).bin
-	make -C $(MINICHLINK) all
-	$(MINICHLINK)/minichlink -w $< flash -b
+GENERATED_LD_FILE:=$(CH32V003FUN)/generated_$(TARGET_MCU_PACKAGE).ld
+LINKER_SCRIPT:=$(GENERATED_LD_FILE)
+FILES_TO_COMPILE:=$(SYSTEM_C) $(TARGET).$(TARGET_EXT) $(ADDITIONAL_C_FILES)
 
-cv_clean :
-	rm -rf $(TARGET).elf $(TARGET).bin $(TARGET).hex $(TARGET).lst $(TARGET).map $(TARGET).hex || true
+$(GENERATED_LD_FILE) :
+	$(PREFIX)-gcc -E -P -x c -DMCU_PACKAGE=$(MCU_PACKAGE) $(CH32V003FUN)/ch32v20xfun.ld > $(GENERATED_LD_FILE)
 
-build : $(TARGET).bin
+$(TARGET).elf : $(GENERATED_LD_FILE) $(FILES_TO_COMPILE)
+	echo $(FILES_TO_COMPILE)
+	$(PREFIX)-gcc -o $@ $(FILES_TO_COMPILE) $(CFLAGS) $(LDFLAGS)
\ No newline at end of file
diff --git a/ch32v003fun/ch32v30xfun.ld b/ch32v003fun/ch32v30xfun.ld
index 2db0919ae6833d94659eeceaf765678e6ba507f1..3fca4445ec7c793e708612ebda92536e0790f17c 100644
--- a/ch32v003fun/ch32v30xfun.ld
+++ b/ch32v003fun/ch32v30xfun.ld
@@ -7,26 +7,21 @@ PROVIDE( _stack_size = __stack_size );
 
 MEMORY
 {
-/* CH32V30x_D8C - CH32V305RB-CH32V305FB
-   CH32V30x_D8 - CH32V303CB-CH32V303RB
-*/
-
-	FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 128K
-	RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 32K
-
-
-/* CH32V30x_D8C - CH32V307VC-CH32V307WC-CH32V307RC
-   CH32V30x_D8 - CH32V303VC-CH32V303RC
-   FLASH + RAM supports the following configuration
-   FLASH-192K + RAM-128K
-   FLASH-224K + RAM-96K
-   FLASH-256K + RAM-64K
-   FLASH-288K + RAM-32K
-*/
-/*
-	FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 288K
-	RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 32K
-*/
+#if MCU_PACKAGE == 1
+
+    FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 256K
+    RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 64K
+
+#elif MCU_PACKAGE == 2
+
+    FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 128K
+    RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 32K
+
+#else
+
+    #error "Unknown MCU package"
+
+#endif
 }
 
 
diff --git a/ch32v003fun/ch32v30xfun.mk b/ch32v003fun/ch32v30xfun.mk
index 5c1edfc33665537c332157d740f9077783442f9b..90dea83f342cda9227e07dc8c7e6d04b4b2fb633 100644
--- a/ch32v003fun/ch32v30xfun.mk
+++ b/ch32v003fun/ch32v30xfun.mk
@@ -1,8 +1,5 @@
-
-PREFIX?=riscv64-unknown-elf
-
-CH32V003FUN?=../../ch32v003fun
-MINICHLINK?=../../minichlink
+TARGET_MCU_PACKAGE?=CH32V307VCT6
+MCU_PACKAGE?=1
 
 CFLAGS+= \
 	-g -Os -flto -ffunction-sections -fdata-sections \
@@ -16,43 +13,39 @@ CFLAGS+= \
 	-I/usr/include/newlib \
 	-I$(CH32V003FUN) \
 	-nostdlib \
+	-DCH32V30x=1 \
 	-I. -Wall
 
-LDFLAGS+=-T $(CH32V003FUN)/ch32v30xfun.ld -Wl,--gc-sections -L$(CH32V003FUN)/../misc -lgcc
-
-SYSTEM_C:=$(CH32V003FUN)/ch32v003fun.c
-
-$(TARGET).elf : $(SYSTEM_C) $(TARGET).c $(ADDITIONAL_C_FILES)
-	$(PREFIX)-gcc -o $@ $^ $(CFLAGS) $(LDFLAGS)
-
-$(TARGET).bin : $(TARGET).elf
-	$(PREFIX)-size $^
-	$(PREFIX)-objdump -S $^ > $(TARGET).lst
-	$(PREFIX)-objdump -t $^ > $(TARGET).map
-	$(PREFIX)-objcopy -O binary $< $(TARGET).bin
-	$(PREFIX)-objcopy -O ihex $< $(TARGET).hex
+# MCU Flash/RAM split
+ifeq ($(findstring RC, $(TARGET_MCU_PACKAGE)), RC)
+	MCU_PACKAGE:=1
+else ifeq ($(findstring VC, $(TARGET_MCU_PACKAGE)), VC)
+	MCU_PACKAGE:=1
+else ifeq ($(findstring WC, $(TARGET_MCU_PACKAGE)), WC)
+	MCU_PACKAGE:=1
+else ifeq ($(findstring CB, $(TARGET_MCU_PACKAGE)), CB)
+	MCU_PACKAGE:=2
+else ifeq ($(findstring FB, $(TARGET_MCU_PACKAGE)), FB)
+	MCU_PACKAGE:=2
+else ifeq ($(findstring RB, $(TARGET_MCU_PACKAGE)), RB)
+	MCU_PACKAGE:=2
+endif
 
-ifeq ($(OS),Windows_NT)
-closechlink :
-	-taskkill /F /IM minichlink.exe /T
+# Package
+ifeq ($(findstring 303, $(TARGET_MCU_PACKAGE)), 303)
+	CFLAGS+=-DCH32V30x_D8
 else
-closechlink :
-	-killall minichlink
+	CFLAGS+=-DCH32V20x_D8C
 endif
 
-terminal : monitor
-
-monitor :
-	$(MINICHLINK)/minichlink -T
-
-gdbserver : 
-	-$(MINICHLINK)/minichlink -baG
+GENERATED_LD_FILE:=$(CH32V003FUN)/generated_$(TARGET_MCU_PACKAGE).ld
+LINKER_SCRIPT:=$(GENERATED_LD_FILE)
+FILES_TO_COMPILE:=$(SYSTEM_C) $(TARGET).$(TARGET_EXT) $(ADDITIONAL_C_FILES)
 
-cv_flash : $(TARGET).bin
-	make -C $(MINICHLINK) all
-	$(MINICHLINK)/minichlink -w $< flash -b
+$(GENERATED_LD_FILE) :
+	$(PREFIX)-gcc -E -P -x c -DMCU_PACKAGE=$(MCU_PACKAGE) $(CH32V003FUN)/ch32v30xfun.ld > $(GENERATED_LD_FILE)
 
-cv_clean :
-	rm -rf $(TARGET).elf $(TARGET).bin $(TARGET).hex $(TARGET).lst $(TARGET).map $(TARGET).hex || true
 
-build : $(TARGET).bin
+$(TARGET).elf : $(GENERATED_LD_FILE) $(FILES_TO_COMPILE)
+	echo $(FILES_TO_COMPILE)
+	$(PREFIX)-gcc -o $@ $(FILES_TO_COMPILE) $(CFLAGS) $(LDFLAGS)
\ No newline at end of file
diff --git a/examples_v10x/blink/Makefile b/examples_v10x/blink/Makefile
index 9200f8666dec5fa0816ed48ff715ba48a0e81f16..1eb420e845b2763c49ffea0954a3d034c79ad970 100644
--- a/examples_v10x/blink/Makefile
+++ b/examples_v10x/blink/Makefile
@@ -1,8 +1,9 @@
 all : flash
 
 TARGET:=blink
+TARGET_MCU:=CH32V103
 
-include ../../ch32v003fun/ch32v10xfun.mk
+include ../../ch32v003fun/ch32v003fun.mk
 
 flash : cv_flash
 clean : cv_clean
diff --git a/examples_v10x/blink/funconfig.h b/examples_v10x/blink/funconfig.h
index 89212b564e21e0572462652fa5af5f040111dd35..fb00ab9117a8978d2e015cfd7fd9524caba9a4d0 100644
--- a/examples_v10x/blink/funconfig.h
+++ b/examples_v10x/blink/funconfig.h
@@ -1,7 +1,7 @@
 #ifndef _FUNCONFIG_H
 #define _FUNCONFIG_H
 
-#define CH32V10x           1
+//#define CH32V10x           1
 
 #endif
 
diff --git a/examples_v20x/blink/Makefile b/examples_v20x/blink/Makefile
index d902349dc8e1fa9aeef5381ff77942c32da48c0f..90acba47f71e2bdda4ccbfb405b65054e889173e 100644
--- a/examples_v20x/blink/Makefile
+++ b/examples_v20x/blink/Makefile
@@ -1,8 +1,9 @@
 all : flash
 
 TARGET:=blink
+TARGET_MCU:=CH32V203
 
-include ../../ch32v003fun/ch32v20xfun.mk
+include ../../ch32v003fun/ch32v003fun.mk
 
 flash : cv_flash
 clean : cv_clean
diff --git a/examples_v20x/blink/funconfig.h b/examples_v20x/blink/funconfig.h
index 882bc02dbda74357280035f74d271e82e976f19d..83cb00acf8b11a356fd9a0436ce3952fe3c85bcc 100644
--- a/examples_v20x/blink/funconfig.h
+++ b/examples_v20x/blink/funconfig.h
@@ -1,7 +1,7 @@
 #ifndef _FUNCONFIG_H
 #define _FUNCONFIG_H
 
-#define CH32V20x           1
+// #define CH32V20x           1
 
 #endif
 
diff --git a/examples_v30x/blink/Makefile b/examples_v30x/blink/Makefile
index 696a08416b0a1b18aac00c12259b6f8486034aee..4f454568be3ce56e7b1f018e25a694ab536fb294 100644
--- a/examples_v30x/blink/Makefile
+++ b/examples_v30x/blink/Makefile
@@ -1,8 +1,10 @@
 all : flash
 
 TARGET:=blink
+TARGET_MCU:=CH32V305
+TARGET_MCU_PACKAGE:=CH32V305RBT6
 
-include ../../ch32v003fun/ch32v30xfun.mk
+include ../../ch32v003fun/ch32v003fun.mk
 
 flash : cv_flash
 clean : cv_clean
diff --git a/examples_v30x/blink/funconfig.h b/examples_v30x/blink/funconfig.h
index c3d634ab068c29936feb5988b3c0438a51c721db..36729457cc58bae43981f873968473ee725d0198 100644
--- a/examples_v30x/blink/funconfig.h
+++ b/examples_v30x/blink/funconfig.h
@@ -1,7 +1,7 @@
 #ifndef _FUNCONFIG_H
 #define _FUNCONFIG_H
 
-#define CH32V30x           1
+// #define CH32V30x           1
 
 #endif