From b5badc857a2b3930fd53ae58829de8f3e91ed3ef Mon Sep 17 00:00:00 2001 From: imi415 Date: Tue, 29 Mar 2022 15:05:50 +0800 Subject: [PATCH] Disabled fast interrupt for open source toolchain. --- BSP/Startup/startup_ch32v30x_D8.S | 10 +++++++--- BSP/Startup/startup_ch32v30x_D8C.S | 10 +++++++--- CMakeLists.txt | 1 + src/ch32v30x_it.c | 4 ++-- src/main.c | 11 ++++++++++- src/syscalls.c | 7 +++++++ 6 files changed, 34 insertions(+), 9 deletions(-) create mode 100644 src/syscalls.c diff --git a/BSP/Startup/startup_ch32v30x_D8.S b/BSP/Startup/startup_ch32v30x_D8.S index 69c29cf..97f8262 100644 --- a/BSP/Startup/startup_ch32v30x_D8.S +++ b/BSP/Startup/startup_ch32v30x_D8.S @@ -4,8 +4,8 @@ * Version : V1.0.0 * Date : 2021/06/06 * Description : CH32V303 vector table for eclipse toolchain. -* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. -* SPDX-License-Identifier: Apache-2.0 +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 *******************************************************************************/ .section .init,"ax",@progbits @@ -348,7 +348,11 @@ handle_reset: csrw 0xbc0, t0 /* Enable nested and hardware stack */ - li t0, 0x1f + /* li t0, 0x1f */ /* For MRS proprietary GCC compilers */ + + /* Enable nested interrupt, disable hardware stack */ + li t0, 0x1e /* Refer to RISC-V4 PFIC manual */ + csrw 0x804, t0 /* Enable floating point and interrupt */ diff --git a/BSP/Startup/startup_ch32v30x_D8C.S b/BSP/Startup/startup_ch32v30x_D8C.S index 8b2980b..85b2e34 100644 --- a/BSP/Startup/startup_ch32v30x_D8C.S +++ b/BSP/Startup/startup_ch32v30x_D8C.S @@ -4,8 +4,8 @@ * Version : V1.0.0 * Date : 2021/06/06 * Description : CH32V307-CH32V305 vector table for eclipse toolchain. -* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. -* SPDX-License-Identifier: Apache-2.0 +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 *******************************************************************************/ .section .init,"ax",@progbits @@ -368,7 +368,11 @@ handle_reset: csrw 0xbc0, t0 /* Enable nested and hardware stack */ - li t0, 0x1f + /* li t0, 0x1f */ /* For MRS proprietary GCC compilers */ + + /* Enable nested interrupt, disable hardware stack */ + li t0, 0x1e /* Refer to RISC-V4 PFIC manual */ + csrw 0x804, t0 /* Enable floating point and interrupt */ diff --git a/CMakeLists.txt b/CMakeLists.txt index 3115173..893f6d1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,6 +47,7 @@ set(TARGET_C_SOURCES "BSP/Peripheral/src/ch32v30x_wwdg.c" "src/ch32v30x_it.c" "src/main.c" + "src/syscalls.c" "src/system_ch32v30x.c" ) diff --git a/src/ch32v30x_it.c b/src/ch32v30x_it.c index ac3af18..8ffbce2 100644 --- a/src/ch32v30x_it.c +++ b/src/ch32v30x_it.c @@ -9,8 +9,8 @@ *******************************************************************************/ #include "ch32v30x_it.h" -void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); -void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); +void NMI_Handler(void) __attribute__((interrupt())); +void HardFault_Handler(void) __attribute__((interrupt())); /********************************************************************* * @fn NMI_Handler diff --git a/src/main.c b/src/main.c index b78ca40..65f80a5 100644 --- a/src/main.c +++ b/src/main.c @@ -1,7 +1,16 @@ // SPDX-License-Identifier: MIT +#include + +#include + int main(void) { + + USART_Printf_Init(115200); + + printf("Hello world?\r\n"); + for(;;) { // } -} \ No newline at end of file +} diff --git a/src/syscalls.c b/src/syscalls.c new file mode 100644 index 0000000..977632e --- /dev/null +++ b/src/syscalls.c @@ -0,0 +1,7 @@ +#include + +int _fstat(int file, struct stat *st) { + st->st_mode = S_IFCHR; + + return 0; +} \ No newline at end of file