From 97df783484950362eb8ee7523680c32781121118 Mon Sep 17 00:00:00 2001 From: jzlv Date: Wed, 28 Jul 2021 15:03:33 +0800 Subject: [PATCH] [fix][irq] add nesting process for enable irq and disable irq --- CMakeLists.txt | 1 + bsp/bsp_common/platform/bflb_platform.c | 9 +++++++-- common/misc/misc.h | 18 ++---------------- 3 files changed, 10 insertions(+), 18 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2f0bdda0..9d4b6afa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,6 +9,7 @@ PROJECT(${BOARD} C CXX ASM) ENABLE_LANGUAGE(ASM) include_directories(${CMAKE_SOURCE_DIR}/common/misc) +include_directories(${CMAKE_SOURCE_DIR}/drivers/${CHIP}_driver/risc-v/Core/Include) include_directories(${CMAKE_SOURCE_DIR}/bsp/bsp_common/platform) if(IS_DIRECTORY ${CMAKE_SOURCE_DIR}/bsp/board/${CHIP}) diff --git a/bsp/bsp_common/platform/bflb_platform.c b/bsp/bsp_common/platform/bflb_platform.c index d9ef600e..1000cad8 100644 --- a/bsp/bsp_common/platform/bflb_platform.c +++ b/bsp/bsp_common/platform/bflb_platform.c @@ -38,6 +38,11 @@ __WEAK__ void bl_show_info(void) { } +__WEAK__ int bflb_get_board_config(uint8_t func, uint8_t *pinlist) +{ + return 0; +} + __WEAK__ enum uart_index_type board_get_debug_uart_index(void) { return 0; @@ -45,7 +50,7 @@ __WEAK__ enum uart_index_type board_get_debug_uart_index(void) void bflb_platform_init(uint32_t baudrate) { - disable_irq(); + __disable_irq(); board_init(); @@ -73,7 +78,7 @@ void bflb_platform_init(uint32_t baudrate) else MSG("dynamic memory init error\r\n"); - enable_irq(); + __enable_irq(); } #if ((defined BOOTROM) || (defined BFLB_EFLASH_LOADER)) diff --git a/common/misc/misc.h b/common/misc/misc.h index f96aae5f..fff66c29 100644 --- a/common/misc/misc.h +++ b/common/misc/misc.h @@ -30,6 +30,8 @@ #include #include #include "gcc.h" +#include "cmsis_compatible_gcc.h" + /*@} end of group COMMON_Public_Types */ /** @defgroup COMMON_Public_Constants @@ -88,22 +90,6 @@ #define BIT(x) (1 << (x)) -static uint8_t nesting = 0; - -__attribute__((always_inline)) __STATIC_INLINE__ void enable_irq(void) -{ - nesting--; - if (nesting == 0) { - __ASM__ volatile("csrsi mstatus, 8"); - } -} - -__attribute__((always_inline)) __STATIC_INLINE__ void disable_irq(void) -{ - __ASM__ volatile("csrci mstatus, 8"); - nesting++; -} - /** * @brief Error type definition */