AnsweredAssumed Answered

Ethernet Default DMA change

Question asked by mini on Aug 1, 2012
Latest reply on Aug 6, 2012 by mini

I am using the BF537 EZ-Kit board, and all the resources I am using is SPORT0 and Ethernet. What I want to do is looping the ADC and DAC process and at the same time, transmitting data to PC. But during the Ethernet transmitting process, DMA3 and DMA4 can't get proper interrupts. I assumed this is because DMA1~2 has a higher priority over DMA3~4. So I want to change default DMA channels of Ethernet to DMA8 and DMA9.

 

I change adi_dma.h, adi_dma.c, adi_int.h and ADI_ETHER_BF537.c.

 

But during the debug process, I saw SIC_IMASK=00000180E and SIC_ISR=00020000. Althought the SIC_IMASK is set, the interrupt seems still in the DMA1. And I could not connect the board with PC. Please give me some guidance.

 

i have no experience in DSP developing, so I am not sure about the modifying of adi_int.h, I just change the order of ADI_INT_PERIPHERAL_ID enum.

 

typedef enum ADI_INT_PERIPHERAL_ID {    // IMASK/ISR/IWR bit, SIC_ISRx offset, SIC_IMASKx offset, SIC_IWRx offset, SIC_IARx offset, SIC_IAR nibble

    ADI_INT_PLL_WAKEUP                  = ADI_INT_PERIPHERAL_ID_VALUE(  0,  0,  0,  0,  0,  0   ),

    ADI_INT_DMA_ERROR                   = ADI_INT_PERIPHERAL_ID_VALUE(  1,  0,  0,  0,  0,  1   ),

    ADI_INT_PERIPHERAL_ERROR            = ADI_INT_PERIPHERAL_ID_VALUE(  2,  0,  0,  0,  0,  2   ),

    ADI_INT_RTC                         = ADI_INT_PERIPHERAL_ID_VALUE(  3,  0,  0,  0,  0,  3   ),

    ADI_INT_DMA0_PPI                    = ADI_INT_PERIPHERAL_ID_VALUE(  4,  0,  0,  0,  0,  4   ),

    ADI_INT_DMA3_SPORT0_RX              = ADI_INT_PERIPHERAL_ID_VALUE(  5,  0,  0,  0,  0,  5   ),

    ADI_INT_DMA4_SPORT0_TX              = ADI_INT_PERIPHERAL_ID_VALUE(  6,  0,  0,  0,  0,  6   ),

    ADI_INT_DMA5_SPORT1_RX              = ADI_INT_PERIPHERAL_ID_VALUE(  7,  0,  0,  0,  0,  7   ),

    ADI_INT_DMA6_SPORT1_TX              = ADI_INT_PERIPHERAL_ID_VALUE(  8,  0,  0,  0,  1,  0   ),

    ADI_INT_TWI                         = ADI_INT_PERIPHERAL_ID_VALUE(  9,  0,  0,  0,  1,  1   ),

    ADI_INT_DMA7_SPI                    = ADI_INT_PERIPHERAL_ID_VALUE(  10, 0,  0,  0,  1,  2   ),

    ADI_INT_DMA8_ETHERNET_RX_PORTH_A    = ADI_INT_PERIPHERAL_ID_VALUE(  11, 0,  0,  0,  1,  3   ),

    ADI_INT_DMA9_ETHERNET_TX_PORTH_B    = ADI_INT_PERIPHERAL_ID_VALUE(  12, 0,  0,  0,  1,  4   ),

//ADI_INT_DMA8_UART0_RX               = ADI_INT_PERIPHERAL_ID_VALUE(  11, 0,  0,  0,  1,  3   ),

    //ADI_INT_DMA9_UART0_TX               = ADI_INT_PERIPHERAL_ID_VALUE(  12, 0,  0,  0,  1,  4   ),

    ADI_INT_DMA10_UART1_RX              = ADI_INT_PERIPHERAL_ID_VALUE(  13, 0,  0,  0,  2,  3   ),

    ADI_INT_DMA11_UART1_TX              = ADI_INT_PERIPHERAL_ID_VALUE(  14, 0,  0,  0,  2,  4   ),

    ADI_INT_CAN_RX                      = ADI_INT_PERIPHERAL_ID_VALUE(  15, 0,  0,  0,  1,  7   ),

    ADI_INT_CAN_TX                      = ADI_INT_PERIPHERAL_ID_VALUE(  16, 0,  0,  0,  2,  0   ),

    ADI_INT_DMA1_UART0_RX               = ADI_INT_PERIPHERAL_ID_VALUE(  17, 0,  0,  0,  2,  1   ),

    ADI_INT_DMA2_UART0_TX               = ADI_INT_PERIPHERAL_ID_VALUE(  18, 0,  0,  0,  2,  2   ),

//ADI_INT_DMA1_ETHERNET_RX_PORTH_A    = ADI_INT_PERIPHERAL_ID_VALUE(  17, 0,  0,  0,  2,  1   ),

    //ADI_INT_DMA2_ETHERNET_TX_PORTH_B    = ADI_INT_PERIPHERAL_ID_VALUE(  18, 0,  0,  0,  2,  2   ),

    ADI_INT_TIMER0                      = ADI_INT_PERIPHERAL_ID_VALUE(  19, 0,  0,  0,  1,  3   ),

    ADI_INT_TIMER1                      = ADI_INT_PERIPHERAL_ID_VALUE(  20, 0,  0,  0,  1,  4   ),

    ADI_INT_TIMER2                      = ADI_INT_PERIPHERAL_ID_VALUE(  21, 0,  0,  0,  2,  5   ),

    ADI_INT_TIMER3                      = ADI_INT_PERIPHERAL_ID_VALUE(  22, 0,  0,  0,  2,  6   ),

    ADI_INT_TIMER4                      = ADI_INT_PERIPHERAL_ID_VALUE(  23, 0,  0,  0,  2,  7   ),

    ADI_INT_TIMER5                      = ADI_INT_PERIPHERAL_ID_VALUE(  24, 0,  0,  0,  3,  0   ),

    ADI_INT_TIMER6                      = ADI_INT_PERIPHERAL_ID_VALUE(  25, 0,  0,  0,  3,  1   ),

    ADI_INT_TIMER7                      = ADI_INT_PERIPHERAL_ID_VALUE(  26, 0,  0,  0,  3,  2   ),

    ADI_INT_PORTFG_A                    = ADI_INT_PERIPHERAL_ID_VALUE(  27, 0,  0,  0,  3,  3   ),

    ADI_INT_PORTG_B                     = ADI_INT_PERIPHERAL_ID_VALUE(  28, 0,  0,  0,  3,  4   ),

    ADI_INT_MDMAS0                      = ADI_INT_PERIPHERAL_ID_VALUE(  29, 0,  0,  0,  3,  5   ),

    ADI_INT_MDMAS1                      = ADI_INT_PERIPHERAL_ID_VALUE(  30, 0,  0,  0,  3,  6   ),

    ADI_INT_WATCHDOG_PORTF_B            = ADI_INT_PERIPHERAL_ID_VALUE(  31, 0,  0,  0,  3,  7   ),

    ADI_INT_WATCHDOG                    = ADI_INT_PERIPHERAL_ID_VALUE(  31, 0,  0,  0,  3,  7   ),

} ADI_INT_PERIPHERAL_ID;

Outcomes