2022-09-02 09:13 PM
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;
}