From aeb21c240785b24764bb04578da56add8262c697 Mon Sep 17 00:00:00 2001 From: hathach Date: Mon, 28 Jul 2025 11:43:20 +0700 Subject: [PATCH] correct flash/ram for v307 and v305 --- .github/ISSUE_TEMPLATE/bug_report.yml | 4 ++-- .../boards/ch32v307v_r1_1v0/board.cmake | 5 +++-- .../ch32v30x/boards/ch32v307v_r1_1v0/board.mk | 4 +++- .../ch32v30x/boards/nanoch32v305/board.cmake | 5 +++-- hw/bsp/ch32v30x/boards/nanoch32v305/board.mk | 4 +++- hw/bsp/ch32v30x/family.cmake | 11 ++++++----- hw/bsp/ch32v30x/family.mk | 2 ++ .../{ch32v307.ld => linker/ch32v30x.ld} | 18 +++++++++--------- 8 files changed, 31 insertions(+), 22 deletions(-) rename hw/bsp/ch32v30x/{ch32v307.ld => linker/ch32v30x.ld} (91%) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 35576a439..34e177984 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -86,8 +86,8 @@ body: - type: checkboxes attributes: - label: I have checked existing issues, dicussion and documentation + label: I have checked existing issues, discussion and documentation description: You agree to check all the resources above before opening a new issue. options: - - label: I confirm I have checked existing issues, dicussion and documentation. + - label: I confirm I have checked existing issues, discussion and documentation. required: true diff --git a/hw/bsp/ch32v30x/boards/ch32v307v_r1_1v0/board.cmake b/hw/bsp/ch32v30x/boards/ch32v307v_r1_1v0/board.cmake index 9f5682042..3a3d2bf8e 100644 --- a/hw/bsp/ch32v30x/boards/ch32v307v_r1_1v0/board.cmake +++ b/hw/bsp/ch32v30x/boards/ch32v307v_r1_1v0/board.cmake @@ -1,4 +1,5 @@ +set(LD_FLASH_SIZE 256K) +set(LD_RAM_SIZE 64K) + function(update_board TARGET) -# target_compile_definitions(${TARGET} PUBLIC -# ) endfunction() diff --git a/hw/bsp/ch32v30x/boards/ch32v307v_r1_1v0/board.mk b/hw/bsp/ch32v30x/boards/ch32v307v_r1_1v0/board.mk index 4e91d8938..810f85e30 100644 --- a/hw/bsp/ch32v30x/boards/ch32v307v_r1_1v0/board.mk +++ b/hw/bsp/ch32v30x/boards/ch32v307v_r1_1v0/board.mk @@ -1 +1,3 @@ -LD_FILE = $(FAMILY_PATH)/ch32v307.ld +LDFLAGS += \ + -Wl,--defsym=__FLASH_SIZE=256K \ + -Wl,--defsym=__RAM_SIZE=64K \ diff --git a/hw/bsp/ch32v30x/boards/nanoch32v305/board.cmake b/hw/bsp/ch32v30x/boards/nanoch32v305/board.cmake index 9f5682042..5f526ffea 100644 --- a/hw/bsp/ch32v30x/boards/nanoch32v305/board.cmake +++ b/hw/bsp/ch32v30x/boards/nanoch32v305/board.cmake @@ -1,4 +1,5 @@ +set(LD_FLASH_SIZE 128K) +set(LD_RAM_SIZE 32K) + function(update_board TARGET) -# target_compile_definitions(${TARGET} PUBLIC -# ) endfunction() diff --git a/hw/bsp/ch32v30x/boards/nanoch32v305/board.mk b/hw/bsp/ch32v30x/boards/nanoch32v305/board.mk index 4e91d8938..580cf1a76 100644 --- a/hw/bsp/ch32v30x/boards/nanoch32v305/board.mk +++ b/hw/bsp/ch32v30x/boards/nanoch32v305/board.mk @@ -1 +1,3 @@ -LD_FILE = $(FAMILY_PATH)/ch32v307.ld +LDFLAGS += \ + -Wl,--defsym=__FLASH_SIZE=128K \ + -Wl,--defsym=__RAM_SIZE=32K \ diff --git a/hw/bsp/ch32v30x/family.cmake b/hw/bsp/ch32v30x/family.cmake index 446e850c5..0fd9b786a 100644 --- a/hw/bsp/ch32v30x/family.cmake +++ b/hw/bsp/ch32v30x/family.cmake @@ -29,7 +29,7 @@ function(add_board_target BOARD_TARGET) endif() if (NOT DEFINED LD_FILE_GNU) - set(LD_FILE_GNU ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/ch32v307.ld) + set(LD_FILE_GNU ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/linker/ch32v30x.ld) endif () set(LD_FILE_Clang ${LD_FILE_GNU}) @@ -74,12 +74,14 @@ function(add_board_target BOARD_TARGET) -fsigned-char ) target_link_options(${BOARD_TARGET} PUBLIC - "LINKER:--script=${LD_FILE_GNU}" -nostartfiles --specs=nosys.specs --specs=nano.specs + -Wl,--defsym=__FLASH_SIZE=${LD_FLASH_SIZE} + -Wl,--defsym=__RAM_SIZE=${LD_RAM_SIZE} + "LINKER:--script=${LD_FILE_GNU}" ) elseif (CMAKE_C_COMPILER_ID STREQUAL "Clang") - message(FATAL_ERROR "Clang is not supported for MSP432E4") + message(FATAL_ERROR "Clang is not supported for CH32v") elseif (CMAKE_C_COMPILER_ID STREQUAL "IAR") target_link_options(${BOARD_TARGET} PUBLIC "LINKER:--config=${LD_FILE_IAR}" @@ -120,9 +122,8 @@ function(family_configure_example TARGET RTOS) ) target_link_libraries(${TARGET} PUBLIC board_${BOARD}) - - # Flashing family_add_bin_hex(${TARGET}) family_flash_openocd_wch(${TARGET}) + family_flash_wlink_rs(${TARGET}) endfunction() diff --git a/hw/bsp/ch32v30x/family.mk b/hw/bsp/ch32v30x/family.mk index bf2732106..be6813914 100644 --- a/hw/bsp/ch32v30x/family.mk +++ b/hw/bsp/ch32v30x/family.mk @@ -57,6 +57,8 @@ INC += \ $(TOP)/$(SDK_SRC_DIR)/Core \ $(TOP)/$(SDK_SRC_DIR)/Peripheral/inc +LD_FILE ?= $(FAMILY_PATH)/linker/ch32v30x.ld + # For freeRTOS port source FREERTOS_PORTABLE_SRC = $(FREERTOS_PORTABLE_PATH)/RISC-V diff --git a/hw/bsp/ch32v30x/ch32v307.ld b/hw/bsp/ch32v30x/linker/ch32v30x.ld similarity index 91% rename from hw/bsp/ch32v30x/ch32v307.ld rename to hw/bsp/ch32v30x/linker/ch32v30x.ld index 55bd10cd0..6dd5d344a 100644 --- a/hw/bsp/ch32v30x/ch32v307.ld +++ b/hw/bsp/ch32v30x/linker/ch32v30x.ld @@ -1,20 +1,20 @@ -ENTRY( _start ) - -__stack_size = 4096; - -PROVIDE( _stack_size = __stack_size ); - +/* Define default values if not already defined */ +__flash_size = DEFINED(__FLASH_SIZE) ? __FLASH_SIZE : 128K; +__ram_size = DEFINED(__RAM_SIZE) ? __RAM_SIZE : 32K; +__stack_size = DEFINED(__STACK_SIZE) ? __STACK_SIZE : 2048; MEMORY { - FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 288K - RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 32K + FLASH (rx) : ORIGIN = 0x00000000, LENGTH = __flash_size + RAM (xrw) : ORIGIN = 0x20000000, LENGTH = __ram_size } +ENTRY( _start ) + +PROVIDE( _stack_size = __stack_size ); SECTIONS { - .init : { _sinit = .;