summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHa Thach <[email protected]>2025-07-28 12:11:11 +0700
committerGitHub <[email protected]>2025-07-28 12:11:11 +0700
commitde9a6c8561e439c397bbb44cc053701a76d9988d (patch)
treebed8c074a39f49aaadef32d7c37f46536d39de61
parenta72f0396c75ef8b9fed35a9fc9e8a8269bd663c7 (diff)
parentaeb21c240785b24764bb04578da56add8262c697 (diff)
Merge pull request #3186 from rhgndf/nanoch32v305
Add nanoch32v305
-rw-r--r--.github/ISSUE_TEMPLATE/bug_report.yml4
-rwxr-xr-x.github/workflows/ci_set_matrix.py2
-rw-r--r--docs/reference/boards.rst3
-rw-r--r--hw/bsp/ch32v307/boards/ch32v307v_r1_1v0/board.cmake4
-rw-r--r--hw/bsp/ch32v307/boards/ch32v307v_r1_1v0/board.mk1
-rw-r--r--hw/bsp/ch32v30x/boards/ch32v307v_r1_1v0/board.cmake5
-rw-r--r--hw/bsp/ch32v30x/boards/ch32v307v_r1_1v0/board.h (renamed from hw/bsp/ch32v307/boards/ch32v307v_r1_1v0/board.h)0
-rw-r--r--hw/bsp/ch32v30x/boards/ch32v307v_r1_1v0/board.mk3
-rw-r--r--hw/bsp/ch32v30x/boards/nanoch32v305/board.cmake5
-rw-r--r--hw/bsp/ch32v30x/boards/nanoch32v305/board.h48
-rw-r--r--hw/bsp/ch32v30x/boards/nanoch32v305/board.mk3
-rw-r--r--hw/bsp/ch32v30x/ch32v30x_conf.h (renamed from hw/bsp/ch32v307/ch32v30x_conf.h)0
-rw-r--r--hw/bsp/ch32v30x/ch32v30x_it.c (renamed from hw/bsp/ch32v307/ch32v30x_it.c)0
-rw-r--r--hw/bsp/ch32v30x/ch32v30x_it.h (renamed from hw/bsp/ch32v307/ch32v30x_it.h)0
-rw-r--r--hw/bsp/ch32v30x/debug_uart.c (renamed from hw/bsp/ch32v307/debug_uart.c)0
-rw-r--r--hw/bsp/ch32v30x/debug_uart.h (renamed from hw/bsp/ch32v307/debug_uart.h)0
-rw-r--r--hw/bsp/ch32v30x/family.c (renamed from hw/bsp/ch32v307/family.c)7
-rw-r--r--hw/bsp/ch32v30x/family.cmake (renamed from hw/bsp/ch32v307/family.cmake)11
-rw-r--r--hw/bsp/ch32v30x/family.mk (renamed from hw/bsp/ch32v307/family.mk)2
-rw-r--r--hw/bsp/ch32v30x/linker/ch32v30x.ld (renamed from hw/bsp/ch32v307/ch32v307.ld)18
-rw-r--r--hw/bsp/ch32v30x/system_ch32v30x.c (renamed from hw/bsp/ch32v307/system_ch32v30x.c)0
-rw-r--r--hw/bsp/ch32v30x/system_ch32v30x.h (renamed from hw/bsp/ch32v307/system_ch32v30x.h)0
-rw-r--r--hw/bsp/ch32v30x/wch-riscv.cfg (renamed from hw/bsp/ch32v307/wch-riscv.cfg)0
-rwxr-xr-xtools/get_deps.py2
24 files changed, 93 insertions, 25 deletions
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/.github/workflows/ci_set_matrix.py b/.github/workflows/ci_set_matrix.py
index ddb3ee1fb..65d243281 100755
--- a/.github/workflows/ci_set_matrix.py
+++ b/.github/workflows/ci_set_matrix.py
@@ -17,7 +17,7 @@ toolchain_list = [
family_list = {
"broadcom_32bit": ["arm-gcc"],
"broadcom_64bit": ["aarch64-gcc"],
- "ch32v10x ch32v20x ch32v307 fomu gd32vf103": ["riscv-gcc"],
+ "ch32v10x ch32v20x ch32v30x fomu gd32vf103": ["riscv-gcc"],
"da1469x": ["arm-gcc"],
"imxrt": ["arm-gcc", "arm-clang"],
"kinetis_k kinetis_kl kinetis_k32l2": ["arm-gcc", "arm-clang"],
diff --git a/docs/reference/boards.rst b/docs/reference/boards.rst
index 41e765683..824b1214b 100644
--- a/docs/reference/boards.rst
+++ b/docs/reference/boards.rst
@@ -326,5 +326,6 @@ ch32v103r_r1_1v0 CH32V103R-R1-1v1 ch32v10x https://github.com/openwch/ch32v10
ch32v203c_r0_1v0 CH32V203C-R0-1v0 ch32v20x https://github.com/openwch/ch32v20x/tree/main/SCHPCB/CH32V203C-R0
ch32v203g_r0_1v0 CH32V203G-R0-1v0 ch32v20x https://github.com/openwch/ch32v20x/tree/main/SCHPCB/CH32V203C-R0
nanoch32v203 nanoCH32V203 ch32v20x https://github.com/wuxx/nanoCH32V203
-ch32v307v_r1_1v0 CH32V307V-R1-1v0 ch32v307 https://github.com/openwch/ch32v307/tree/main/SCHPCB/CH32V307V-R1-1v0
+nanoch32v305 nanoCH32V305 ch32v30x https://github.com/wuxx/nanoCH32V305
+ch32v307v_r1_1v0 CH32V307V-R1-1v0 ch32v30x https://github.com/openwch/ch32v307/tree/main/SCHPCB/CH32V307V-R1-1v0
================ ================ ======== ===================================================================== ======
diff --git a/hw/bsp/ch32v307/boards/ch32v307v_r1_1v0/board.cmake b/hw/bsp/ch32v307/boards/ch32v307v_r1_1v0/board.cmake
deleted file mode 100644
index 9f5682042..000000000
--- a/hw/bsp/ch32v307/boards/ch32v307v_r1_1v0/board.cmake
+++ /dev/null
@@ -1,4 +0,0 @@
-function(update_board TARGET)
-# target_compile_definitions(${TARGET} PUBLIC
-# )
-endfunction()
diff --git a/hw/bsp/ch32v307/boards/ch32v307v_r1_1v0/board.mk b/hw/bsp/ch32v307/boards/ch32v307v_r1_1v0/board.mk
deleted file mode 100644
index 4e91d8938..000000000
--- a/hw/bsp/ch32v307/boards/ch32v307v_r1_1v0/board.mk
+++ /dev/null
@@ -1 +0,0 @@
-LD_FILE = $(FAMILY_PATH)/ch32v307.ld
diff --git a/hw/bsp/ch32v30x/boards/ch32v307v_r1_1v0/board.cmake b/hw/bsp/ch32v30x/boards/ch32v307v_r1_1v0/board.cmake
new file mode 100644
index 000000000..3a3d2bf8e
--- /dev/null
+++ b/hw/bsp/ch32v30x/boards/ch32v307v_r1_1v0/board.cmake
@@ -0,0 +1,5 @@
+set(LD_FLASH_SIZE 256K)
+set(LD_RAM_SIZE 64K)
+
+function(update_board TARGET)
+endfunction()
diff --git a/hw/bsp/ch32v307/boards/ch32v307v_r1_1v0/board.h b/hw/bsp/ch32v30x/boards/ch32v307v_r1_1v0/board.h
index 491347034..491347034 100644
--- a/hw/bsp/ch32v307/boards/ch32v307v_r1_1v0/board.h
+++ b/hw/bsp/ch32v30x/boards/ch32v307v_r1_1v0/board.h
diff --git a/hw/bsp/ch32v30x/boards/ch32v307v_r1_1v0/board.mk b/hw/bsp/ch32v30x/boards/ch32v307v_r1_1v0/board.mk
new file mode 100644
index 000000000..810f85e30
--- /dev/null
+++ b/hw/bsp/ch32v30x/boards/ch32v307v_r1_1v0/board.mk
@@ -0,0 +1,3 @@
+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
new file mode 100644
index 000000000..5f526ffea
--- /dev/null
+++ b/hw/bsp/ch32v30x/boards/nanoch32v305/board.cmake
@@ -0,0 +1,5 @@
+set(LD_FLASH_SIZE 128K)
+set(LD_RAM_SIZE 32K)
+
+function(update_board TARGET)
+endfunction()
diff --git a/hw/bsp/ch32v30x/boards/nanoch32v305/board.h b/hw/bsp/ch32v30x/boards/nanoch32v305/board.h
new file mode 100644
index 000000000..a478f00a9
--- /dev/null
+++ b/hw/bsp/ch32v30x/boards/nanoch32v305/board.h
@@ -0,0 +1,48 @@
+/*
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2023 Ha Thach (tinyusb.org) for Adafruit Industries
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+/* metadata:
+ name: nanoCH32V305
+ url: https://github.com/wuxx/nanoCH32V305
+*/
+
+#ifndef BOARD_H_
+#define BOARD_H_
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#define LED_PORT GPIOA
+#define LED_PIN GPIO_Pin_3
+#define LED_STATE_ON 0
+#define LED_CLOCK_EN() RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE)
+
+// TODO UART port
+
+#ifdef __cplusplus
+ }
+#endif
+
+#endif
diff --git a/hw/bsp/ch32v30x/boards/nanoch32v305/board.mk b/hw/bsp/ch32v30x/boards/nanoch32v305/board.mk
new file mode 100644
index 000000000..580cf1a76
--- /dev/null
+++ b/hw/bsp/ch32v30x/boards/nanoch32v305/board.mk
@@ -0,0 +1,3 @@
+LDFLAGS += \
+ -Wl,--defsym=__FLASH_SIZE=128K \
+ -Wl,--defsym=__RAM_SIZE=32K \
diff --git a/hw/bsp/ch32v307/ch32v30x_conf.h b/hw/bsp/ch32v30x/ch32v30x_conf.h
index 0b86ad390..0b86ad390 100644
--- a/hw/bsp/ch32v307/ch32v30x_conf.h
+++ b/hw/bsp/ch32v30x/ch32v30x_conf.h
diff --git a/hw/bsp/ch32v307/ch32v30x_it.c b/hw/bsp/ch32v30x/ch32v30x_it.c
index c329c5613..c329c5613 100644
--- a/hw/bsp/ch32v307/ch32v30x_it.c
+++ b/hw/bsp/ch32v30x/ch32v30x_it.c
diff --git a/hw/bsp/ch32v307/ch32v30x_it.h b/hw/bsp/ch32v30x/ch32v30x_it.h
index f3977a8be..f3977a8be 100644
--- a/hw/bsp/ch32v307/ch32v30x_it.h
+++ b/hw/bsp/ch32v30x/ch32v30x_it.h
diff --git a/hw/bsp/ch32v307/debug_uart.c b/hw/bsp/ch32v30x/debug_uart.c
index 2fd3a9d64..2fd3a9d64 100644
--- a/hw/bsp/ch32v307/debug_uart.c
+++ b/hw/bsp/ch32v30x/debug_uart.c
diff --git a/hw/bsp/ch32v307/debug_uart.h b/hw/bsp/ch32v30x/debug_uart.h
index a7e070585..a7e070585 100644
--- a/hw/bsp/ch32v307/debug_uart.h
+++ b/hw/bsp/ch32v30x/debug_uart.h
diff --git a/hw/bsp/ch32v307/family.c b/hw/bsp/ch32v30x/family.c
index 48eb8a38c..bd01f4f46 100644
--- a/hw/bsp/ch32v307/family.c
+++ b/hw/bsp/ch32v30x/family.c
@@ -122,12 +122,13 @@ void board_init(void) {
GPIO_Init(LED_PORT, &GPIO_InitStructure);
// Button
+#ifdef BUTTON_PORT
BUTTON_CLOCK_EN();
GPIO_InitStructure.GPIO_Pin = BUTTON_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(BUTTON_PORT, &GPIO_InitStructure);
-
+#endif
/* Enable interrupts globally */
__enable_irq();
@@ -157,7 +158,11 @@ void board_led_write(bool state) {
}
uint32_t board_button_read(void) {
+#ifdef BUTTON_PORT
return BUTTON_STATE_ACTIVE == GPIO_ReadInputDataBit(BUTTON_PORT, BUTTON_PIN);
+#else
+ return false;
+#endif
}
int board_uart_read(uint8_t* buf, int len) {
diff --git a/hw/bsp/ch32v307/family.cmake b/hw/bsp/ch32v30x/family.cmake
index 446e850c5..0fd9b786a 100644
--- a/hw/bsp/ch32v307/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/ch32v307/family.mk b/hw/bsp/ch32v30x/family.mk
index bf2732106..be6813914 100644
--- a/hw/bsp/ch32v307/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/ch32v307/ch32v307.ld b/hw/bsp/ch32v30x/linker/ch32v30x.ld
index 55bd10cd0..6dd5d344a 100644
--- a/hw/bsp/ch32v307/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 = .;
diff --git a/hw/bsp/ch32v307/system_ch32v30x.c b/hw/bsp/ch32v30x/system_ch32v30x.c
index 23f783df4..23f783df4 100644
--- a/hw/bsp/ch32v307/system_ch32v30x.c
+++ b/hw/bsp/ch32v30x/system_ch32v30x.c
diff --git a/hw/bsp/ch32v307/system_ch32v30x.h b/hw/bsp/ch32v30x/system_ch32v30x.h
index ad81058c7..ad81058c7 100644
--- a/hw/bsp/ch32v307/system_ch32v30x.h
+++ b/hw/bsp/ch32v30x/system_ch32v30x.h
diff --git a/hw/bsp/ch32v307/wch-riscv.cfg b/hw/bsp/ch32v30x/wch-riscv.cfg
index aa35aa9c5..aa35aa9c5 100644
--- a/hw/bsp/ch32v307/wch-riscv.cfg
+++ b/hw/bsp/ch32v30x/wch-riscv.cfg
diff --git a/tools/get_deps.py b/tools/get_deps.py
index 4a980b255..539ab52a9 100755
--- a/tools/get_deps.py
+++ b/tools/get_deps.py
@@ -204,7 +204,7 @@ deps_optional = {
'ch32v20x'],
'hw/mcu/wch/ch32v307': ['https://github.com/openwch/ch32v307.git',
'184f21b852cb95eed58e86e901837bc9fff68775',
- 'ch32v307'],
+ 'ch32v30x'],
'hw/mcu/wch/ch32f20x': ['https://github.com/openwch/ch32f20x.git',
'77c4095087e5ed2c548ec9058e655d0b8757663b',
'ch32f20x'],