diff --git a/.github/workflows/action.yml b/.github/workflows/action.yml
index 91a3f88a1aed5704bae37099bc864829891c2fd4..5f577d0c4af8b1f134596f8fbaf305b3e058d084 100644
--- a/.github/workflows/action.yml
+++ b/.github/workflows/action.yml
@@ -144,6 +144,8 @@ jobs:
- {RTT_BSP: "stm32/stm32mp157a-st-ev1", RTT_TOOL_CHAIN: "sourcery-arm"}
- {RTT_BSP: "stm32/stm32u575-st-nucleo", RTT_TOOL_CHAIN: "sourcery-arm"}
- {RTT_BSP: "stm32/stm32wb55-st-nucleo", RTT_TOOL_CHAIN: "sourcery-arm"}
+ - {RTT_BSP: "wch/arm/ch32f103c8-core", RTT_TOOL_CHAIN: "sourcery-arm"}
+ - {RTT_BSP: "wch/arm/ch32f203r-evt", RTT_TOOL_CHAIN: "sourcery-arm"}
- {RTT_BSP: "swm320", RTT_TOOL_CHAIN: "sourcery-arm"}
- {RTT_BSP: "swm320-lq100", RTT_TOOL_CHAIN: "sourcery-arm"}
- {RTT_BSP: "beaglebone", RTT_TOOL_CHAIN: "sourcery-arm"}
diff --git a/bsp/wch/arm/Libraries/CH32F20x_StdPeriph_Driver/CMSIS/WCH/CH32F20x/Source/GCC/startup_ch32f10x.S b/bsp/wch/arm/Libraries/CH32F20x_StdPeriph_Driver/CMSIS/WCH/CH32F20x/Source/GCC/startup_ch32f20x.S
similarity index 62%
rename from bsp/wch/arm/Libraries/CH32F20x_StdPeriph_Driver/CMSIS/WCH/CH32F20x/Source/GCC/startup_ch32f10x.S
rename to bsp/wch/arm/Libraries/CH32F20x_StdPeriph_Driver/CMSIS/WCH/CH32F20x/Source/GCC/startup_ch32f20x.S
index 07a651fa19382bf21ef7114d1b0b08cdcf320e05..ee113ca635430c9c55c53fba66a2790e0476e9fd 100644
--- a/bsp/wch/arm/Libraries/CH32F20x_StdPeriph_Driver/CMSIS/WCH/CH32F20x/Source/GCC/startup_ch32f10x.S
+++ b/bsp/wch/arm/Libraries/CH32F20x_StdPeriph_Driver/CMSIS/WCH/CH32F20x/Source/GCC/startup_ch32f20x.S
@@ -1,9 +1,9 @@
/********************************** (C) COPYRIGHT *******************************
-* File Name : startup_ch32f10x.s
+* File Name : startup_ch32f20x.s
* Author : WCH
* Version : V1.0.0
* Date : 2020/11/01
-* Description : CH32F10x vector table for GCC toolchain.
+* Description : CH32F20x vector table for GCC toolchain.
*******************************************************************************/
.syntax unified
@@ -148,7 +148,51 @@ g_pfnVectors:
.word EXTI15_10_IRQHandler
.word RTCAlarm_IRQHandler
.word USBWakeUp_IRQHandler
- .word USBHD_IRQHandler
+ .word TIM8_BRK_IRQHandler
+ .word TIM8_UP_IRQHandler
+ .word TIM8_TRG_COM_IRQHandler
+ .word TIM8_CC_IRQHandler
+ .word RNG_IRQHandler
+ .word FSMC_IRQHandler
+ .word SDIO_IRQHandler
+ .word TIM5_IRQHandler
+ .word SPI3_IRQHandler
+ .word UART4_IRQHandler
+ .word UART5_IRQHandler
+ .word TIM6_IRQHandler
+ .word TIM7_IRQHandler
+ .word DMA2_Channel1_IRQHandler
+ .word DMA2_Channel2_IRQHandler
+ .word DMA2_Channel3_IRQHandler
+ .word DMA2_Channel4_IRQHandler
+ .word DMA2_Channel5_IRQHandler
+ .word ETH_IRQHandler
+ .word ETH_WKUP_IRQHandler
+ .word CAN2_TX_IRQHandler
+ .word CAN2_RX0_IRQHandler
+ .word CAN2_RX1_IRQHandler
+ .word CAN2_SCE_IRQHandler
+ .word OTG_FS_IRQHandler
+ .word USBHSWakeup_IRQHandler
+ .word USBHS_IRQHandler
+ .word DVP_IRQHandler
+ .word UART6_IRQHandler
+ .word UART7_IRQHandler
+ .word UART8_IRQHandler
+ .word TIM9_BRK_IRQHandler
+ .word TIM9_UP_IRQHandler
+ .word TIM9_TRG_COM_IRQHandler
+ .word TIM9_CC_IRQHandler
+ .word TIM10_BRK_IRQHandler
+ .word TIM10_UP_IRQHandler
+ .word TIM10_TRG_COM_IRQHandler
+ .word TIM10_CC_IRQHandler
+ .word DMA2_Channel6_IRQHandler
+ .word DMA2_Channel7_IRQHandler
+ .word DMA2_Channel8_IRQHandler
+ .word DMA2_Channel9_IRQHandler
+ .word DMA2_Channel10_IRQHandler
+ .word DMA2_Channel11_IRQHandler
/*******************************************************************************
Dummy Exception Handlers (infinite loops which can be modified)
@@ -309,5 +353,137 @@ g_pfnVectors:
.weak USBWakeUp_IRQHandler
.thumb_set USBWakeUp_IRQHandler,Default_Handler
- .weak USBHD_IRQHandler
- .thumb_set USBHD_IRQHandler,Default_Handler
+ .weak TIM8_BRK_IRQHandler
+ .thumb_set TIM8_BRK_IRQHandler,Default_Handler
+
+ .weak TIM8_UP_IRQHandler
+ .thumb_set TIM8_UP_IRQHandler,Default_Handler
+
+ .weak TIM8_TRG_COM_IRQHandler
+ .thumb_set TIM8_TRG_COM_IRQHandler,Default_Handler
+
+ .weak TIM8_CC_IRQHandler
+ .thumb_set TIM8_CC_IRQHandler,Default_Handler
+
+ .weak RNG_IRQHandler
+ .thumb_set RNG_IRQHandler,Default_Handler
+
+ .weak FSMC_IRQHandler
+ .thumb_set FSMC_IRQHandler,Default_Handler
+
+ .weak SDIO_IRQHandler
+ .thumb_set SDIO_IRQHandler,Default_Handler
+
+ .weak TIM5_IRQHandler
+ .thumb_set TIM5_IRQHandler,Default_Handler
+
+ .weak SPI3_IRQHandler
+ .thumb_set SPI3_IRQHandler,Default_Handler
+
+ .weak UART4_IRQHandler
+ .thumb_set UART4_IRQHandler,Default_Handler
+
+ .weak UART5_IRQHandler
+ .thumb_set UART5_IRQHandler,Default_Handler
+
+ .weak TIM6_IRQHandler
+ .thumb_set TIM6_IRQHandler,Default_Handler
+
+ .weak TIM7_IRQHandler
+ .thumb_set TIM7_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel1_IRQHandler
+ .thumb_set DMA2_Channel1_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel2_IRQHandler
+ .thumb_set DMA2_Channel2_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel3_IRQHandler
+ .thumb_set DMA2_Channel3_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel4_IRQHandler
+ .thumb_set DMA2_Channel4_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel5_IRQHandler
+ .thumb_set DMA2_Channel5_IRQHandler,Default_Handler
+
+ .weak ETH_IRQHandler
+ .thumb_set ETH_IRQHandler,Default_Handler
+
+ .weak ETH_WKUP_IRQHandler
+ .thumb_set ETH_WKUP_IRQHandler,Default_Handler
+
+ .weak CAN2_TX_IRQHandler
+ .thumb_set CAN2_TX_IRQHandler,Default_Handler
+
+ .weak CAN2_RX0_IRQHandler
+ .thumb_set CAN2_RX0_IRQHandler,Default_Handler
+
+ .weak CAN2_RX1_IRQHandler
+ .thumb_set CAN2_RX1_IRQHandler,Default_Handler
+
+ .weak CAN2_SCE_IRQHandler
+ .thumb_set CAN2_SCE_IRQHandler,Default_Handler
+
+ .weak OTG_FS_IRQHandler
+ .thumb_set OTG_FS_IRQHandler,Default_Handler
+
+ .weak USBHSWakeup_IRQHandler
+ .thumb_set USBHSWakeup_IRQHandler,Default_Handler
+
+ .weak USBHS_IRQHandler
+ .thumb_set USBHS_IRQHandler,Default_Handler
+
+ .weak DVP_IRQHandler
+ .thumb_set DVP_IRQHandler,Default_Handler
+
+ .weak UART6_IRQHandler
+ .thumb_set UART6_IRQHandler,Default_Handler
+
+ .weak UART7_IRQHandler
+ .thumb_set UART7_IRQHandler,Default_Handler
+
+ .weak UART8_IRQHandler
+ .thumb_set UART8_IRQHandler,Default_Handler
+
+ .weak TIM9_BRK_IRQHandler
+ .thumb_set TIM9_BRK_IRQHandler,Default_Handler
+
+ .weak TIM9_UP_IRQHandler
+ .thumb_set TIM9_UP_IRQHandler,Default_Handler
+
+ .weak TIM9_TRG_COM_IRQHandler
+ .thumb_set TIM9_TRG_COM_IRQHandler,Default_Handler
+
+ .weak TIM9_CC_IRQHandler
+ .thumb_set TIM9_CC_IRQHandler,Default_Handler
+
+ .weak TIM10_BRK_IRQHandler
+ .thumb_set TIM10_BRK_IRQHandler,Default_Handler
+
+ .weak TIM10_UP_IRQHandler
+ .thumb_set TIM10_UP_IRQHandler,Default_Handler
+
+ .weak TIM10_TRG_COM_IRQHandler
+ .thumb_set TIM10_TRG_COM_IRQHandler,Default_Handler
+
+ .weak TIM10_CC_IRQHandler
+ .thumb_set TIM10_CC_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel6_IRQHandler
+ .thumb_set DMA2_Channel6_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel7_IRQHandler
+ .thumb_set DMA2_Channel7_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel8_IRQHandler
+ .thumb_set DMA2_Channel8_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel9_IRQHandler
+ .thumb_set DMA2_Channel9_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel10_IRQHandler
+ .thumb_set DMA2_Channel10_IRQHandler,Default_Handler
+
+ .weak DMA2_Channel11_IRQHandler
+ .thumb_set DMA2_Channel11_IRQHandler,Default_Handler
diff --git a/bsp/wch/arm/ch32f103c8-core/.config b/bsp/wch/arm/ch32f103c8-core/.config
index 327fe0db7cc1a213dae1751ab7093775044fcc29..8d19eb11089997e68f7d6c5f4ef981f806b89eab 100644
--- a/bsp/wch/arm/ch32f103c8-core/.config
+++ b/bsp/wch/arm/ch32f103c8-core/.config
@@ -673,18 +673,13 @@ CONFIG_SOC_CH32F103C8=y
# On-chip Peripheral Drivers
#
CONFIG_BSP_USING_UART=y
-CONFIG_BSP_USING_UART1=y
+# CONFIG_BSP_USING_UART1 is not set
CONFIG_BSP_USING_UART2=y
-CONFIG_BSP_USING_UART3=y
-CONFIG_BSP_USING_SPI=y
-CONFIG_BSP_USING_SPI1=y
-CONFIG_BSP_USING_SPI2=y
-CONFIG_BSP_USING_HWI2C=y
-CONFIG_BSP_USING_HWI2C1=y
-CONFIG_BSP_USING_HWI2C2=y
-CONFIG_BSP_USING_IWDT=y
-CONFIG_BSP_USING_RTC=y
-CONFIG_BSP_USING_RTC_LSI=y
+# CONFIG_BSP_USING_UART3 is not set
+# CONFIG_BSP_USING_SPI is not set
+# CONFIG_BSP_USING_HWI2C is not set
+# CONFIG_BSP_USING_IWDT is not set
+# CONFIG_BSP_USING_RTC is not set
CONFIG_LSI_VALUE=40000
# CONFIG_BSP_USING_TIM is not set
diff --git a/bsp/wch/arm/ch32f103c8-core/board/board.c b/bsp/wch/arm/ch32f103c8-core/board/board.c
index 10104959e58b33aa6246d52049d36b855c4f9160..f1d3773fa6d015a533ea5680fb50d0df01da1047 100644
--- a/bsp/wch/arm/ch32f103c8-core/board/board.c
+++ b/bsp/wch/arm/ch32f103c8-core/board/board.c
@@ -200,6 +200,7 @@ void ch32f1_i2c_config(I2C_TypeDef *i2cx)
}
}
+#ifdef BSP_USING_TIM
void ch32f1_tim_clock_init(TIM_TypeDef *timx)
{
if (timx == TIM1)
@@ -434,3 +435,4 @@ void ch32f1_pwm_io_init(TIM_TypeDef *timx, rt_uint8_t channel)
}
}
}
+#endif
diff --git a/bsp/wch/arm/ch32f103c8-core/project.uvprojx b/bsp/wch/arm/ch32f103c8-core/project.uvprojx
index b00c028f60616cf01636d4196360f3d1c0d97e7a..9153f0f1651d1283a12efe681f522ca0a4560793 100644
--- a/bsp/wch/arm/ch32f103c8-core/project.uvprojx
+++ b/bsp/wch/arm/ch32f103c8-core/project.uvprojx
@@ -533,16 +533,16 @@
Compiler
- syscall_mem.c
+ syscalls.c
1
- ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c
+ ..\..\..\..\components\libc\compilers\armlibc\syscalls.c
- syscalls.c
+ syscall_mem.c
1
- ..\..\..\..\components\libc\compilers\armlibc\syscalls.c
+ ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c
@@ -562,6 +562,13 @@
CPU
+
+
+ showmem.c
+ 1
+ ..\..\..\..\libcpu\arm\common\showmem.c
+
+
div0.c
@@ -578,9 +585,9 @@
- showmem.c
- 1
- ..\..\..\..\libcpu\arm\common\showmem.c
+ context_rvds.S
+ 2
+ ..\..\..\..\libcpu\arm\cortex-m3\context_rvds.S
@@ -590,13 +597,6 @@
..\..\..\..\libcpu\arm\cortex-m3\cpuport.c
-
-
- context_rvds.S
- 2
- ..\..\..\..\libcpu\arm\cortex-m3\context_rvds.S
-
-
DeviceDrivers
@@ -616,51 +616,51 @@
- ringblk_buf.c
+ waitqueue.c
1
- ..\..\..\..\components\drivers\ipc\ringblk_buf.c
+ ..\..\..\..\components\drivers\ipc\waitqueue.c
- workqueue.c
+ ringblk_buf.c
1
- ..\..\..\..\components\drivers\ipc\workqueue.c
+ ..\..\..\..\components\drivers\ipc\ringblk_buf.c
- completion.c
+ pipe.c
1
- ..\..\..\..\components\drivers\ipc\completion.c
+ ..\..\..\..\components\drivers\ipc\pipe.c
- dataqueue.c
+ completion.c
1
- ..\..\..\..\components\drivers\ipc\dataqueue.c
+ ..\..\..\..\components\drivers\ipc\completion.c
- pipe.c
+ ringbuffer.c
1
- ..\..\..\..\components\drivers\ipc\pipe.c
+ ..\..\..\..\components\drivers\ipc\ringbuffer.c
- waitqueue.c
+ dataqueue.c
1
- ..\..\..\..\components\drivers\ipc\waitqueue.c
+ ..\..\..\..\components\drivers\ipc\dataqueue.c
- ringbuffer.c
+ workqueue.c
1
- ..\..\..\..\components\drivers\ipc\ringbuffer.c
+ ..\..\..\..\components\drivers\ipc\workqueue.c
@@ -720,13 +720,6 @@
Drivers
-
-
- startup_ch32f10x.s
- 2
- ..\Libraries\CH32F10x_StdPeriph_Driver\CMSIS\WCH\CH32F10x\Source\ARM\startup_ch32f10x.s
-
-
system_ch32f10x.c
@@ -736,37 +729,16 @@
- board.c
- 1
- board\board.c
-
-
-
-
- drv_rtc_ch32f10x.c
- 1
- ..\Libraries\ch32_drivers\drv_rtc_ch32f10x.c
-
-
-
-
- drv_hwi2c_ch32f10x.c
- 1
- ..\Libraries\ch32_drivers\drv_hwi2c_ch32f10x.c
-
-
-
-
- drv_gpio_ch32f10x.c
- 1
- ..\Libraries\ch32_drivers\drv_gpio_ch32f10x.c
+ startup_ch32f10x.s
+ 2
+ ..\Libraries\CH32F10x_StdPeriph_Driver\CMSIS\WCH\CH32F10x\Source\ARM\startup_ch32f10x.s
- drv_spi_ch32f10x.c
+ board.c
1
- ..\Libraries\ch32_drivers\drv_spi_ch32f10x.c
+ board\board.c
@@ -778,16 +750,16 @@
- drv_iwdt_ch32f10x.c
+ drv_common.c
1
- ..\Libraries\ch32_drivers\drv_iwdt_ch32f10x.c
+ ..\Libraries\ch32_drivers\drv_common.c
- drv_common.c
+ drv_gpio_ch32f10x.c
1
- ..\Libraries\ch32_drivers\drv_common.c
+ ..\Libraries\ch32_drivers\drv_gpio_ch32f10x.c
@@ -819,93 +791,93 @@
Kernel
- thread.c
+ irq.c
1
- ..\..\..\..\src\thread.c
+ ..\..\..\..\src\irq.c
- mem.c
+ scheduler.c
1
- ..\..\..\..\src\mem.c
+ ..\..\..\..\src\scheduler.c
- idle.c
+ device.c
1
- ..\..\..\..\src\idle.c
+ ..\..\..\..\src\device.c
- timer.c
+ components.c
1
- ..\..\..\..\src\timer.c
+ ..\..\..\..\src\components.c
- clock.c
+ kservice.c
1
- ..\..\..\..\src\clock.c
+ ..\..\..\..\src\kservice.c
- irq.c
+ clock.c
1
- ..\..\..\..\src\irq.c
+ ..\..\..\..\src\clock.c
- components.c
+ mempool.c
1
- ..\..\..\..\src\components.c
+ ..\..\..\..\src\mempool.c
- object.c
+ ipc.c
1
- ..\..\..\..\src\object.c
+ ..\..\..\..\src\ipc.c
- mempool.c
+ object.c
1
- ..\..\..\..\src\mempool.c
+ ..\..\..\..\src\object.c
- kservice.c
+ idle.c
1
- ..\..\..\..\src\kservice.c
+ ..\..\..\..\src\idle.c
- device.c
+ mem.c
1
- ..\..\..\..\src\device.c
+ ..\..\..\..\src\mem.c
- ipc.c
+ timer.c
1
- ..\..\..\..\src\ipc.c
+ ..\..\..\..\src\timer.c
- scheduler.c
+ thread.c
1
- ..\..\..\..\src\scheduler.c
+ ..\..\..\..\src\thread.c
diff --git a/bsp/wch/arm/ch32f103c8-core/rtconfig.h b/bsp/wch/arm/ch32f103c8-core/rtconfig.h
index cc5ddae209d612fe0330be5dad99e0a5b66f379d..828514602400348dbb7dbac31c7024fb221198c1 100644
--- a/bsp/wch/arm/ch32f103c8-core/rtconfig.h
+++ b/bsp/wch/arm/ch32f103c8-core/rtconfig.h
@@ -209,18 +209,7 @@
/* On-chip Peripheral Drivers */
#define BSP_USING_UART
-#define BSP_USING_UART1
#define BSP_USING_UART2
-#define BSP_USING_UART3
-#define BSP_USING_SPI
-#define BSP_USING_SPI1
-#define BSP_USING_SPI2
-#define BSP_USING_HWI2C
-#define BSP_USING_HWI2C1
-#define BSP_USING_HWI2C2
-#define BSP_USING_IWDT
-#define BSP_USING_RTC
-#define BSP_USING_RTC_LSI
#define LSI_VALUE 40000
/* Onboard Peripheral Drivers */