This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Syslink notify does not work

I have a Davinci chip with an ARM and a 8148 DSP.

I start the communication between the ARM and the DSP and the handler acknowledges the two first messages but the DSP hangs on the 3rd message.

DSP is in ti_sdo_ipc_notifyDrivers_NotifyDriverShm_sendEvent__E.

I can see that the payload is correct and copied in the right memory area.

However on the ARM side although the memory is correct it seems that the event flag is never cleared by the ARM.

(NotifyDrvShm.c    while ((eventEntry->flag != NotifyDriverShm_DOWN)) l397

If I load a different DSP code it works

0564.Dsp.cfg

Handler code skeleton:

void s_notif_handler(
        unsigned short proc_id
        ,    unsigned short line_id
        ,    unsigned int   event_id
        ,    unsigned int * arg
        ,    unsigned int   payload
        ){    
    rx_message.word = payload;
 

    switch (rx_message.bit.id) {
        int r = 0;
        case IPCM_DSP_ON:    
            INF( "DSP ON\n");
            dspInError = FALSE;
            break;
        case IPCM_DSP_SHUTDOWN:        
            break;
        case IPCM_DSP_START_ACK:
            INF( "DSP START\n");
            break;
        case IPCM_DSP_DATA_READY:     
            INF( "DSP START\n");     
            break;
        case IPCM_DSP_ASSERT:
            dspInError = TRUE;
            ERR("received IPCM_DSP_ASSERT msg line%d (will exit after printing last dsp messages)\n" , rx_message.field.value );
            break;
        case IPCM_DSP_PRINT_BUF_FULL:
            dspInError = TRUE;
            ERR( "received IPCM_DSP_PRINT_BUF_FULL, abording (will exit after printing last dsp messages)");
            break;
        default:
            dspInError = TRUE;
            ERR("unexpected DSP message: 0x%x (will exit after printing last dsp messages)\n",rx_message.bit.id);
            break;
    }

    return;
}