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