Post Go back to editing

Two core communication No dispatched Handler?

Category: Software
Product Number: BF609

Hai.....

Every one  I'm trying to communication in between two cores for application ....

My application was Image to Rx and transmit using EPPI in CORE0 &

EppI  image sharing into CORE1 using (L2) Shared MEMORY and SD_write &Read and transmitting through UART0

In CORE0 ---EPPI0 ,EPPI2,UART1,DDR2 (Uart buadrate is 230400) INTERRUPT

In CORE1 ---RSI,UART0,CORE_TIMER (Uart buadrate is 115200)_INTERRUPT

here is my code flow...

IN CORE0:- whenever Image comes PPI_ISR will activate and do some changes in image like croping or scale down etc...

as well as in CORE1 :-image  comes into CORE1 SD_write &Read and transmitting through UART0 

 If do like this I was getting LIKE

**************************************************************************************************************************************************************************

FATAL  ERROR AT 0XC8080838

...

0XC808083A

.....

A FATAL ERROR OR EXCEPTION HAS OCCURRED

DESCRIPTION    : NO DISPATCHED HANDLER AVAILABLE FOR THE SPECIFIED INTERRUPT CODE

GENERAL TYPE : RUN TIME ERROR

SPECIFIC TYPE : NO DISPATCHED HANDLER

GENERAL CODE : 0X8

SPECIFIC CODE : 0XB;

ERROR VALUE : 0X001B0052

ERROR PC : 0XFFA01F42

***********************************************************************************************************************************

if i run CORE1 using WITHOUT UART0 it's working without any disturbance ..

please help guide me anyone ....

Parents
  • Hi,

    From the information you have provided, fatal error occurred at location 0XC8080838. This address is belonging to L2 memory. From 0xC8080420 to 0xC808820F is sharable memory and owned by 0.  
    Can you please let us know do you have use this address location. If possible, please share simple project which simulates this issue in Ezkit.

    Regards,
    Anand Selvaraj.

  • Hi

    i have code flow ...

    ****************************CORE0********************************

    #include <hedders>

    #pragma align 4

    #pragma section(buffer section")

    unsigned short image_buffer[512*512]

    #pragma section(buffer section1")

    unsigned short image_buffer1[512*512]

    uint32_t *image_flag =(uint32_t*)0xc8080420

    ************global variables**************

    **********Function_prototypes**********

    int main(void)

    {

    adi_initcomponents();

    clk_init();

    DDR2_init();

    EPPI0_init();

    EPPI0_DMA_init();

    Enable_EPPI0();---------DMA29_CFG |=0x0001;EPPI_CTL |=0x0001;

    EPPI2_init();

    UART1_init();

    UART1_DMA_init();

    adi_core_enable();

    while(1)

    {

        if(EPPI_ISR_flag == 1)

         {

           disable_EPPI0();

             ----------some application---------

    EPPI_ISR_flag = 0;

    Image_flag =1;   ( for enter into CORE1 while loop)

    Enable_EPPI0();

         }

    }

    }

    ********************************************CORE1***********************************

    #include <hedders>

    #pragma align 4

    #pragma section(buffer section2")

    unsigned short DDR_image_buffer[512*512]

    uint32_t *image_flag1 =(uint32_t*)0xc8080420;

    unsigned short *input_image = 0x4;(CORE0 image_buffer starting address in Memory )

    ************global variables**************

    **********Function_prototypes**********

    int main(void)

    {

    adi_initcomponents();

    clk_init();

    DDR2_init();

    UART0_init();

    UART0_DMA_init();

    while(1)

    {

        if(*image_flage1 == 1)

         {

           get_image();

             ----------some application---------

      *image_flage1 = 0;

    }

    if(UART_ISR == 1)

         {

             for(int i=0;i<512*512;i++)

             {

                   uart0_tx_data(DDR_image_buffer[i]);

              }

         UART_ISR = 0;

     

    }

    }

    }

    void get_image(void)

    {

    static int buf=0;

             for(int i=0;i<512*512;i++)

             {

                   DDR_image_buffer[i] = input_image[buf++];

              }

    }

    void uart0_init()

    {

    adi_uart_open();

    --------------------------------

    ----------------------

    ----------------------------

    ----------------------------

    *PREG_UART0_CLK=0x8000043D;

    }

    void uart0_dma_init();

    {

    clk=0x8000043D;  ctl=0x301;  Imask_clr = 0xFFFFFFFF;

    xcnt =01;  xmod =1;CFG 0x00501007;Imask_set = 0x01;

    adi_int_EnableInt(81,1);

    adi_int_installhandler(81,uart_isr,0,true);

    }

    void uart_isr()

    {

    UART_ISR == 1;

    }

    *****************************************************************************************************

    ****************************************************************************************************

    if I run this i got error like NO Dispatched Handler

    FATAL  ERROR AT 0XC8080838

    0XC808083A

    .....

    A FATAL ERROR OR EXCEPTION HAS OCCURRED

    DESCRIPTION    : NO DISPATCHED HANDLER AVAILABLE FOR THE SPECIFIED INTERRUPT CODE

    GENERAL TYPE : RUN TIME ERROR

    SPECIFIC TYPE : NO DISPATCHED HANDLER

    GENERAL CODE : 0X8

    SPECIFIC CODE : 0XB;

    ERROR VALUE : 0X001B0052

    ERROR PC : 0XFFA01F42

    please help me to fix this error 

    Thank you.

  • Hi,

    1. Can you please try to change the priority of UART
    2. Do you get any error in UART, please check in UART status register.
    3. Also, please check the stack got overflowed. You can enable stack overflow detection via Project > Properties > C/C++ Build > Settings > Tool Settings > Compiler > Run-time Checks > Generate code to catch a Stack Overflow.
    4. In the below line, address is not assigned for buffer. Can you please explain this
    unsigned short *input_image = 0x4;(CORE0 image_buffer starting address in Memory )

    Regards,
    Anand Selvaraj.

Reply
  • Hi,

    1. Can you please try to change the priority of UART
    2. Do you get any error in UART, please check in UART status register.
    3. Also, please check the stack got overflowed. You can enable stack overflow detection via Project > Properties > C/C++ Build > Settings > Tool Settings > Compiler > Run-time Checks > Generate code to catch a Stack Overflow.
    4. In the below line, address is not assigned for buffer. Can you please explain this
    unsigned short *input_image = 0x4;(CORE0 image_buffer starting address in Memory )

    Regards,
    Anand Selvaraj.

Children
No Data