From fca073859440935a1191dbdf5f9a8826dfed0666 Mon Sep 17 00:00:00 2001
From: cnlohr <lohr85@gmail.com>
Date: Mon, 12 Feb 2024 05:50:47 -0500
Subject: [PATCH] Fixup ld files for 003

---
 ch32v003fun/ch32v003fun.c  |   2 +-
 ch32v003fun/ch32v003fun.h  |  29 +++++++++++++++++++++++++++++
 ch32v003fun/ch32v003fun.ld |  10 +++++-----
 ch32v003fun/ch32v003fun.mk |   7 ++++++-
 examples/blink/blink.bin   | Bin 560 -> 544 bytes
 5 files changed, 41 insertions(+), 7 deletions(-)

diff --git a/ch32v003fun/ch32v003fun.c b/ch32v003fun/ch32v003fun.c
index 998632a..c6582da 100644
--- a/ch32v003fun/ch32v003fun.c
+++ b/ch32v003fun/ch32v003fun.c
@@ -1424,7 +1424,7 @@ void SystemInit()
 		EXTEN->EXTEN_CTR |= EXTEN_PLL_HSI_PRE;
 	#endif
 	#if defined(FUNCONF_USE_PLL) && FUNCONF_USE_PLL
-		RCC->CFGR0 = RCC_HPRE_DIV1 | PLL_MULTIPLICATION;
+		RCC->CFGR0 = BASE_CFGR0;
 		RCC->CTLR  = BASE_CTLR | RCC_HSION | RCC_PLLON; 			// Use HSI, enable PLL.
 	#else
 		RCC->CFGR0 = RCC_HPRE_DIV1;                               	// PLLCLK = HCLK = SYSCLK = APB1
diff --git a/ch32v003fun/ch32v003fun.h b/ch32v003fun/ch32v003fun.h
index 09a2206..c6e2070 100644
--- a/ch32v003fun/ch32v003fun.h
+++ b/ch32v003fun/ch32v003fun.h
@@ -5,6 +5,35 @@
 
 #include "funconfig.h"
 
+/*****************************************************************************
+	CH32V003 BASICS
+
+	1. Be sure to see configuration section below!
+
+	2. Backend Initialization
+		SystemInit();
+
+	3. Arduino-like I/O
+		funGpioInitAll();
+		funPinMode( PA2, GPIO_CFGLR_OUT_10Mhz_PP );
+		funDigitalWrite( PA2, FUN_HIGH );
+		funDigitalWrite( PA2, FUN_HIGH );
+
+	4. Delays
+		Delay_Us(n)
+		Delay_Ms(n)
+		DelaySysTick( uint32_t n );
+
+	5. printf
+		printf, _write may be semihosted, or printed to UART.
+
+		poll_input, handle_debug_input may be used with semihsoting.
+
+		Note: Semihosting appears to currently only work on the CH32V003 (may be improved in future)
+*/
+
+
+
 /*****************************************************************************
 	CH32V003 Fun Configs:
 
diff --git a/ch32v003fun/ch32v003fun.ld b/ch32v003fun/ch32v003fun.ld
index 108cdc9..c05071e 100644
--- a/ch32v003fun/ch32v003fun.ld
+++ b/ch32v003fun/ch32v003fun.ld
@@ -2,7 +2,10 @@ ENTRY( InterruptVector )
 
 MEMORY
 {
-#if TARGET_MCU == CH32V10x
+#if TARGET_MCU == CH32V003
+	FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 16K
+	RAM (xrw)  : ORIGIN = 0x20000000, LENGTH = 2K
+#elif TARGET_MCU == CH32V10x
 	#if MCU_PACKAGE == 1
 		FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 64K
 		RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 20K
@@ -13,7 +16,6 @@ MEMORY
 		#error "Unknown MCU package"
 	#endif
 #elif TARGET_MCU == CH32V20x
-
 	#if MCU_PACKAGE == 1
 		FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 64K
 		RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 20K
@@ -37,9 +39,7 @@ MEMORY
 		#error "Unknown MCU package"
 	#endif
 #else
-	// CH32V003
-	FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 16K
-	RAM (xrw)  : ORIGIN = 0x20000000, LENGTH = 2K
+	#error "Unknown MCU target"
 #endif
 }
 
diff --git a/ch32v003fun/ch32v003fun.mk b/ch32v003fun/ch32v003fun.mk
index f20e820..d528ab5 100644
--- a/ch32v003fun/ch32v003fun.mk
+++ b/ch32v003fun/ch32v003fun.mk
@@ -41,7 +41,8 @@ ifeq ($(TARGET_MCU),CH32V003)
 		-DCH32V003=1 \
 		-I. -Wall $(EXTRA_CFLAGS)
 
-	LINKER_SCRIPT?=$(CH32V003FUN)/ch32v003fun.ld
+	GENERATED_LD_FILE?=$(CH32V003FUN)/generated_ch32v003.ld
+	LINKER_SCRIPT?=$(GENERATED_LD_FILE)
 else
 	ifeq ($(findstring CH32V10,$(TARGET_MCU)),CH32V10)
 		include $(CH32V003FUN)/ch32v10xfun.mk
@@ -98,6 +99,10 @@ clangd_clean :
 
 FLASH_COMMAND?=$(MINICHLINK)/minichlink -w $< $(WRITE_SECTION) -b
 
+$(GENERATED_LD_FILE) :
+	$(PREFIX)-gcc -E -P -x c -DTARGET_MCU=CH32V003 $(CH32V003FUN)/ch32v003fun.ld > $(GENERATED_LD_FILE)
+
+
 cv_flash : $(TARGET).bin
 	make -C $(MINICHLINK) all
 	$(FLASH_COMMAND)
diff --git a/examples/blink/blink.bin b/examples/blink/blink.bin
index 9e1ae23d43b12cdfa77b0c77a9ed36f2df41a617..8bd2f2e5946493a5f584fc1bf7236b61a5d0fdd3 100755
GIT binary patch
delta 221
zcmdnMvVeszpMimk0SI^)feglpg7Wo14i}IE0?0IoO$!XNXFAaA$&HL<!i*pOPh2Bm
zC(H`u12Lmpa@bY|frEmqkNvj(1BxnvM1|QH7?L}VGKe@%0m@8deLU;vzwO@{9<aL4
PI6RqML430iqZ}guMp7P7

delta 237
zcmZ3$vVny!pMimk0SIIm85pD(Cko2f136Ma4hSIAAT}*9$e!tp3<{GQ8Owwl85t(7
zk?<2|Wl#`iJ^Fb%ke=M?`kB!!IczI~z(GOQ$9`M?39~XNLu8hI6lVjfWK;W?+;Nma
i#BmBx#YEP}vyT4T{+;0gtNV<@li3v{HZw8GF#-Usizh+=

-- 
GitLab