use max32 cmsis, fix NVIC_GetEnableIRQ() not defined when using with CMISIS < 5

This commit is contained in:
hathach 2024-08-14 23:59:35 +07:00
parent f6b96f7ea9
commit 0be427bae9
No known key found for this signature in database
GPG Key ID: 26FAB84F615C3C52
14 changed files with 70 additions and 37 deletions

View File

@ -24,12 +24,24 @@
* This file is part of the TinyUSB stack. * This file is part of the TinyUSB stack.
*/ */
#include "board.h" #ifdef __GNUC__
#include "bsp/board_api.h" #pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wstrict-prototypes" // _mxc_crit_get_state()
#endif
#include "gpio.h" #include "gpio.h"
#include "mxc_sys.h"
#include "mxc_device.h" #include "mxc_device.h"
#include "uart.h" #include "uart.h"
#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif
#include "board.h"
#include "bsp/board_api.h"
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler // Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+

View File

@ -74,7 +74,6 @@ function(add_board_target BOARD_TARGET)
) )
target_include_directories(${BOARD_TARGET} PUBLIC target_include_directories(${BOARD_TARGET} PUBLIC
${CMAKE_CURRENT_FUNCTION_LIST_DIR} ${CMAKE_CURRENT_FUNCTION_LIST_DIR}
${CMSIS_5}/CMSIS/Core/Include
${MAX32_CMSIS}/Include ${MAX32_CMSIS}/Include
${MAX32_CMSIS}/Device/Maxim/MAX32650/Include ${MAX32_CMSIS}/Device/Maxim/MAX32650/Include
${MAX32_PERIPH}/Include/MAX32650 ${MAX32_PERIPH}/Include/MAX32650

View File

@ -82,14 +82,13 @@ SRC_C += \
$(PERIPH_SRC)/ICC/icc_reva.c \ $(PERIPH_SRC)/ICC/icc_reva.c \
$(PERIPH_SRC)/ICC/icc_common.c \ $(PERIPH_SRC)/ICC/icc_common.c \
$(PERIPH_SRC)/TPU/tpu_me10.c \ $(PERIPH_SRC)/TPU/tpu_me10.c \
$(PERIPH_SRC)/TPU/tpu_reva.c \ $(PERIPH_SRC)/TPU/tpu_reva.c \
$(PERIPH_SRC)/UART/uart_common.c \ $(PERIPH_SRC)/UART/uart_common.c \
$(PERIPH_SRC)/UART/uart_me10.c \ $(PERIPH_SRC)/UART/uart_me10.c \
$(PERIPH_SRC)/UART/uart_reva.c \ $(PERIPH_SRC)/UART/uart_reva.c \
INC += \ INC += \
$(TOP)/$(BOARD_PATH) \ $(TOP)/$(BOARD_PATH) \
$(TOP)/lib/CMSIS_5/CMSIS/Core/Include \
$(TOP)/$(MAX32_CMSIS)/Include \ $(TOP)/$(MAX32_CMSIS)/Include \
$(TOP)/$(MAX32_CMSIS)/Device/Maxim/MAX32650/Include \ $(TOP)/$(MAX32_CMSIS)/Device/Maxim/MAX32650/Include \
$(TOP)/$(MAX32_PERIPH)/Include/MAX32650 \ $(TOP)/$(MAX32_PERIPH)/Include/MAX32650 \

View File

@ -24,13 +24,24 @@
* This file is part of the TinyUSB stack. * This file is part of the TinyUSB stack.
*/ */
#include "board.h" #ifdef __GNUC__
#include "bsp/board_api.h" #pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wstrict-prototypes" // _mxc_crit_get_state()
#endif
#include "gpio.h" #include "gpio.h"
#include "mxc_sys.h"
#include "mcr_regs.h" #include "mcr_regs.h"
#include "mxc_device.h" #include "mxc_device.h"
#include "uart.h" #include "uart.h"
#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif
#include "board.h"
#include "bsp/board_api.h"
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler // Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+

View File

@ -70,7 +70,6 @@ function(add_board_target BOARD_TARGET)
) )
target_include_directories(${BOARD_TARGET} PUBLIC target_include_directories(${BOARD_TARGET} PUBLIC
${CMAKE_CURRENT_FUNCTION_LIST_DIR} ${CMAKE_CURRENT_FUNCTION_LIST_DIR}
${CMSIS_5}/CMSIS/Core/Include
${MAX32_CMSIS}/Include ${MAX32_CMSIS}/Include
${MAX32_CMSIS}/Device/Maxim/MAX32665/Include ${MAX32_CMSIS}/Device/Maxim/MAX32665/Include
${MAX32_PERIPH}/Include/MAX32665 ${MAX32_PERIPH}/Include/MAX32665

View File

@ -82,7 +82,6 @@ SRC_C += \
INC += \ INC += \
$(TOP)/$(BOARD_PATH) \ $(TOP)/$(BOARD_PATH) \
$(TOP)/lib/CMSIS_5/CMSIS/Core/Include \
$(TOP)/$(MAX32_CMSIS)/Include \ $(TOP)/$(MAX32_CMSIS)/Include \
$(TOP)/$(MAX32_CMSIS)/Device/Maxim/MAX32665/Include \ $(TOP)/$(MAX32_CMSIS)/Device/Maxim/MAX32665/Include \
$(TOP)/$(MAX32_PERIPH)/Include/MAX32665 \ $(TOP)/$(MAX32_PERIPH)/Include/MAX32665 \

View File

@ -24,13 +24,25 @@
* This file is part of the TinyUSB stack. * This file is part of the TinyUSB stack.
*/ */
#include "board.h" #ifdef __GNUC__
#include "bsp/board_api.h" #pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wstrict-prototypes" // _mxc_crit_get_state()
#endif
#include "gpio.h" #include "gpio.h"
#include "mxc_sys.h"
#include "mcr_regs.h" #include "mcr_regs.h"
#include "mxc_device.h" #include "mxc_device.h"
#include "uart.h" #include "uart.h"
#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif
#include "board.h"
#include "bsp/board_api.h"
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler // Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+

View File

@ -75,7 +75,6 @@ function(add_board_target BOARD_TARGET)
) )
target_include_directories(${BOARD_TARGET} PUBLIC target_include_directories(${BOARD_TARGET} PUBLIC
${CMAKE_CURRENT_FUNCTION_LIST_DIR} ${CMAKE_CURRENT_FUNCTION_LIST_DIR}
${CMSIS_5}/CMSIS/Core/Include
${MAX32_CMSIS}/Include ${MAX32_CMSIS}/Include
${MAX32_CMSIS}/Device/Maxim/MAX32690/Include ${MAX32_CMSIS}/Device/Maxim/MAX32690/Include
${MAX32_PERIPH}/Include/MAX32690 ${MAX32_PERIPH}/Include/MAX32690

View File

@ -90,7 +90,6 @@ SRC_C += \
INC += \ INC += \
$(TOP)/$(BOARD_PATH) \ $(TOP)/$(BOARD_PATH) \
$(TOP)/lib/CMSIS_5/CMSIS/Core/Include \
$(TOP)/$(MAX32_CMSIS)/Include \ $(TOP)/$(MAX32_CMSIS)/Include \
$(TOP)/$(MAX32_CMSIS)/Device/Maxim/MAX32690/Include \ $(TOP)/$(MAX32_CMSIS)/Device/Maxim/MAX32690/Include \
$(TOP)/$(MAX32_PERIPH)/Include/MAX32690 \ $(TOP)/$(MAX32_PERIPH)/Include/MAX32690 \

View File

@ -24,13 +24,24 @@
* This file is part of the TinyUSB stack. * This file is part of the TinyUSB stack.
*/ */
#include "board.h" #ifdef __GNUC__
#include "bsp/board_api.h" #pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wstrict-prototypes" // _mxc_crit_get_state()
#endif
#include "gpio.h" #include "gpio.h"
#include "mxc_sys.h"
#include "mcr_regs.h" #include "mcr_regs.h"
#include "mxc_device.h" #include "mxc_device.h"
#include "uart.h" #include "uart.h"
#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif
#include "board.h"
#include "bsp/board_api.h"
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler // Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+

View File

@ -72,7 +72,6 @@ function(add_board_target BOARD_TARGET)
) )
target_include_directories(${BOARD_TARGET} PUBLIC target_include_directories(${BOARD_TARGET} PUBLIC
${CMAKE_CURRENT_FUNCTION_LIST_DIR} ${CMAKE_CURRENT_FUNCTION_LIST_DIR}
${CMSIS_5}/CMSIS/Core/Include
${MAX32_CMSIS}/Include ${MAX32_CMSIS}/Include
${MAX32_CMSIS}/Device/Maxim/MAX78002/Include ${MAX32_CMSIS}/Device/Maxim/MAX78002/Include
${MAX32_PERIPH}/Include/MAX78002 ${MAX32_PERIPH}/Include/MAX78002

View File

@ -87,7 +87,6 @@ SRC_C += \
INC += \ INC += \
$(TOP)/$(BOARD_PATH) \ $(TOP)/$(BOARD_PATH) \
$(TOP)/lib/CMSIS_5/CMSIS/Core/Include \
$(TOP)/$(MAX32_CMSIS)/Include \ $(TOP)/$(MAX32_CMSIS)/Include \
$(TOP)/$(MAX32_CMSIS)/Device/Maxim/MAX78002/Include \ $(TOP)/$(MAX32_CMSIS)/Device/Maxim/MAX78002/Include \
$(TOP)/$(MAX32_PERIPH)/Include/MAX78002 \ $(TOP)/$(MAX32_PERIPH)/Include/MAX78002 \

View File

@ -31,13 +31,8 @@
extern "C" { extern "C" {
#endif #endif
#if TU_CHECK_MCU(OPT_MCU_MAX32690, OPT_MCU_MAX32650, OPT_MCU_MAX32666, OPT_MCU_MAX78002) #include "mxc_device.h"
#include "mxc_device.h" #include "usbhs_regs.h"
#include "usbhs_regs.h"
#else
#error "Unsupported MCUs"
#endif
#if CFG_TUD_ENABLED #if CFG_TUD_ENABLED
#define USBHS_M31_CLOCK_RECOVERY #define USBHS_M31_CLOCK_RECOVERY
@ -48,39 +43,39 @@ static mxc_usbhs_regs_t* const musb_periph_inst[] = {
}; };
// Mapping of IRQ numbers to port. Currently just 1. // Mapping of IRQ numbers to port. Currently just 1.
static const IRQn_Type musb_irqs[] = { static const IRQn_Type musb_irqs[] = {
USB_IRQn USB_IRQn
}; };
TU_ATTR_ALWAYS_INLINE TU_ATTR_ALWAYS_INLINE
static inline void musb_dcd_int_enable(uint8_t rhport) static inline void musb_dcd_int_enable(uint8_t rhport) {
{
NVIC_EnableIRQ(musb_irqs[rhport]); NVIC_EnableIRQ(musb_irqs[rhport]);
} }
TU_ATTR_ALWAYS_INLINE TU_ATTR_ALWAYS_INLINE
static inline void musb_dcd_int_disable(uint8_t rhport) static inline void musb_dcd_int_disable(uint8_t rhport) {
{
NVIC_DisableIRQ(musb_irqs[rhport]); NVIC_DisableIRQ(musb_irqs[rhport]);
} }
TU_ATTR_ALWAYS_INLINE TU_ATTR_ALWAYS_INLINE
static inline unsigned musb_dcd_get_int_enable(uint8_t rhport) static inline unsigned musb_dcd_get_int_enable(uint8_t rhport) {
{ #ifdef NVIC_GetEnableIRQ // only defined in CMSIS 5
return NVIC_GetEnableIRQ(musb_irqs[rhport]); return NVIC_GetEnableIRQ(musb_irqs[rhport]);
#else
uint32_t IRQn = (uint32_t) musb_irqs[rhport];
return ((NVIC->ISER[IRQn >> 5UL] & (1UL << (IRQn & 0x1FUL))) != 0UL) ? 1UL : 0UL;
#endif
} }
TU_ATTR_ALWAYS_INLINE TU_ATTR_ALWAYS_INLINE
static inline void musb_dcd_int_clear(uint8_t rhport) static inline void musb_dcd_int_clear(uint8_t rhport) {
{ NVIC_ClearPendingIRQ(musb_irqs[rhport]);
NVIC_ClearPendingIRQ(musb_irqs[rhport]);
} }
//Used to save and restore user's register map when interrupt occurs //Used to save and restore user's register map when interrupt occurs
static volatile unsigned isr_saved_index = 0; static volatile unsigned isr_saved_index = 0;
static inline void musb_dcd_int_handler_enter(uint8_t rhport) static inline void musb_dcd_int_handler_enter(uint8_t rhport) {
{
uint32_t mxm_int, mxm_int_en, mxm_is; uint32_t mxm_int, mxm_int_en, mxm_is;
//save current register index //save current register index

View File

@ -26,7 +26,7 @@ deps_optional = {
'fc100s'], 'fc100s'],
'hw/mcu/analog/max32' : ['https://github.com/analogdevicesinc/msdk.git', 'hw/mcu/analog/max32' : ['https://github.com/analogdevicesinc/msdk.git',
'b20b398d3e5e2007594e54a74ba3d2a2e50ddd75', 'b20b398d3e5e2007594e54a74ba3d2a2e50ddd75',
'max32690 max32650 max32666 max78002'], 'max32650 max32666 max32690 max78002'],
'hw/mcu/bridgetek/ft9xx/ft90x-sdk': ['https://github.com/BRTSG-FOSS/ft90x-sdk.git', 'hw/mcu/bridgetek/ft9xx/ft90x-sdk': ['https://github.com/BRTSG-FOSS/ft90x-sdk.git',
'91060164afe239fcb394122e8bf9eb24d3194eb1', '91060164afe239fcb394122e8bf9eb24d3194eb1',
'brtmm90x'], 'brtmm90x'],