mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-26 09:45:37 +03:00
STM32H7 - Use FAST_CODE on all HOT ISRs to avoid flash access on targets where
FAST_CODE functions are placed in RAM.
This commit is contained in:
parent
37412289dd
commit
0b7fcb7df4
8 changed files with 14 additions and 7 deletions
|
@ -111,7 +111,7 @@ typedef enum {
|
|||
.owner.resourceIndex = 0 \
|
||||
}
|
||||
|
||||
#define DEFINE_DMA_IRQ_HANDLER(d, s, i) void DMA ## d ## _Stream ## s ## _IRQHandler(void) {\
|
||||
#define DEFINE_DMA_IRQ_HANDLER(d, s, i) FAST_IRQ_HANDLER void DMA ## d ## _Stream ## s ## _IRQHandler(void) {\
|
||||
const uint8_t index = DMA_IDENTIFIER_TO_INDEX(i); \
|
||||
dmaCallbackHandlerFuncPtr handler = dmaDescriptors[index].irqHandlerCallback; \
|
||||
if (handler) \
|
||||
|
|
|
@ -291,7 +291,7 @@ static void bbSetupDma(bbPort_t *bbPort)
|
|||
bbDMA_ITConfig(bbPort);
|
||||
}
|
||||
|
||||
void bbDMAIrqHandler(dmaChannelDescriptor_t *descriptor)
|
||||
FAST_IRQ_HANDLER void bbDMAIrqHandler(dmaChannelDescriptor_t *descriptor)
|
||||
{
|
||||
dbgPinHi(0);
|
||||
|
||||
|
|
|
@ -42,7 +42,7 @@ static IO_t ws2811IO = IO_NONE;
|
|||
static TIM_HandleTypeDef TimHandle;
|
||||
static uint16_t timerChannel = 0;
|
||||
|
||||
void WS2811_DMA_IRQHandler(dmaChannelDescriptor_t* descriptor)
|
||||
FAST_IRQ_HANDLER void WS2811_DMA_IRQHandler(dmaChannelDescriptor_t* descriptor)
|
||||
{
|
||||
HAL_DMA_IRQHandler(TimHandle.hdma[descriptor->userParam]);
|
||||
TIM_DMACmd(&TimHandle, timerChannel, DISABLE);
|
||||
|
|
|
@ -210,7 +210,7 @@ void pwmCompleteDshotMotorUpdate(void)
|
|||
}
|
||||
}
|
||||
|
||||
static void motor_DMA_IRQHandler(dmaChannelDescriptor_t* descriptor)
|
||||
FAST_IRQ_HANDLER static void motor_DMA_IRQHandler(dmaChannelDescriptor_t* descriptor)
|
||||
{
|
||||
if (DMA_GET_FLAG_STATUS(descriptor, DMA_IT_TCIF)) {
|
||||
|
||||
|
|
|
@ -365,7 +365,7 @@ void uartConfigureDma(uartDevice_t *uartdev)
|
|||
#endif
|
||||
|
||||
#define UART_IRQHandler(type, number, dev) \
|
||||
void type ## number ## _IRQHandler(void) \
|
||||
FAST_IRQ_HANDLER void type ## number ## _IRQHandler(void) \
|
||||
{ \
|
||||
uartPort_t *uartPort = &(uartDevmap[UARTDEV_ ## dev]->port); \
|
||||
uartIrqHandler(uartPort); \
|
||||
|
|
|
@ -301,7 +301,7 @@ void uartDmaIrqHandler(dmaChannelDescriptor_t* descriptor)
|
|||
}
|
||||
#endif
|
||||
|
||||
void uartIrqHandler(uartPort_t *s)
|
||||
FAST_IRQ_HANDLER void uartIrqHandler(uartPort_t *s)
|
||||
{
|
||||
UART_HandleTypeDef *huart = &s->Handle;
|
||||
/* UART in mode Receiver ---------------------------------------------------*/
|
||||
|
|
|
@ -59,7 +59,7 @@ transponder_t transponder;
|
|||
#endif
|
||||
bool transponderInitialised = false;
|
||||
|
||||
static void TRANSPONDER_DMA_IRQHandler(dmaChannelDescriptor_t* descriptor)
|
||||
FAST_IRQ_HANDLER static void TRANSPONDER_DMA_IRQHandler(dmaChannelDescriptor_t* descriptor)
|
||||
{
|
||||
HAL_DMA_IRQHandler(TimHandle.hdma[descriptor->userParam]);
|
||||
TIM_DMACmd(&TimHandle, timerChannel, DISABLE);
|
||||
|
|
|
@ -157,6 +157,13 @@
|
|||
#define DEFAULT_CPU_OVERCLOCK 0
|
||||
#endif
|
||||
|
||||
#if defined(STM32H7)
|
||||
// Move ISRs to fast ram to avoid flash latency.
|
||||
#define FAST_IRQ_HANDLER FAST_CODE
|
||||
#else
|
||||
#define FAST_IRQ_HANDLER
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef USE_ITCM_RAM
|
||||
#if defined(ITCM_RAM_OPTIMISATION) && !defined(DEBUG)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue