Skip to main content
VN.2
Associate III
September 3, 2022
Question

BDMA_ChannelX_IRQHandler being entered with ISR == 0. (H750)

  • September 3, 2022
  • 0 replies
  • 429 views

I'm a bit confused what ISR==0 means in a DMA IRQ handler. I can skip it but wonder if something is configured incorrectly. Is "ISR==0" an expected and valid case or do I need to delve into settings? 

No error code is set, I am funneling all BDMA ISRs into my two functions.

x/8w LogBuffer+100

0xc0800190: 0x00000077 0x00000070 0x00000077 0x00000070

0xc08001a0: 0x00000070 0x00000077 0x00000070 0x00000000

p DMACount

$1 = 7

extern "C" void BDMA_Channel1_IRQHandler(void)
{
 if (((BDMA_Base_Registers *)(DMA_Handle_Channel1.StreamBaseAddress))->ISR == 0) {
 volatile uint32_t x = *((uint32_t*)(0x57b800)); // Force hardfault.
 x += 1;
 }
 LogBuffer[100 + DMACount] = ((BDMA_Base_Registers *)(DMA_Handle_Channel1.StreamBaseAddress))->ISR;
 ((BDMA_Base_Registers *)(DMA_Handle_Channel1.StreamBaseAddress))->IFCR = 1 << 4;
 DMACount += 1;
}
 
extern "C" void BDMA_Channel0_IRQHandler(void)
{
 if (((BDMA_Base_Registers *)(DMA_Handle_Channel1.StreamBaseAddress))->ISR == 0) {
 volatile uint32_t x = *((uint32_t*)(0x57b800)); // Force hardfault.
 x += 1;
 }
 LogBuffer[100 + DMACount] = ((BDMA_Base_Registers *)(DMA_Handle_Channel0.StreamBaseAddress))->ISR;
 ((BDMA_Base_Registers *)(DMA_Handle_Channel0.StreamBaseAddress))->IFCR = 1;
 DMACount += 1;
}

This topic has been closed for replies.