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.

TDA4VM: TDA4VM: Openvx error DOF node

Part Number: TDA4VM

Hi Team.

I got this error after running app with DOF node.

[MCU2_1] 653.978695 s: VX_ZONE_ERROR:[tivxDmpacDofProcess:582] Failed to Get Processed Request

The above message is intermittent.
The app does not die or crash when the message occurs.
Why am I seeing these messages?
Under what circumstances would this message occur?
Is there a problem with the app working?
I'm wondering if the DOF node is working reliably?

Thanks.

Best regards.

  • Hi,

    This error message just mean that DOF completed the processing, but there is no output descriptor available. It will not affect in the processing of the DOF node. 

    But need to be fixed it. 

    For the other VPAC drivers, i see that VPAC drivers runs in a loop on this API to get the output descriptors, somehow it is not done for DOF driver. Can you try adding it in the API Vhwa_m2mDofPopRings in the file packages\ti\drv\vhwa\src\drv\vhwa_m2mDofUdma.c and see if it helps?

    int32_t Vhwa_m2mDofPopRings(Vhwa_M2mDofInstObj *instObj,
        Vhwa_M2mDofHandleObj *hObj, uint32_t pyrLvl)
    {
        int32_t              status = FVID2_SOK;
        uint32_t             chCnt, repeatCnt;
        uint64_t             ringPopVal;
        Vhwa_M2mDofChParams *chPrms = NULL;
    
        /* Check for Null pointer */
        GT_assert(VhwaDofTrace, (NULL != instObj));
        GT_assert(VhwaDofTrace, (NULL != hObj));
    
        /* Enable the channel which are required */
        for (chCnt = 0u; chCnt < VHWA_M2M_DOF_MAX_DMA_CH; chCnt ++)
        {
            repeatCnt = 0;
            chPrms = &hObj->chPrms[pyrLvl][chCnt];
            
            if ((uint32_t)TRUE == chPrms->isEnabled)
            {
                do
                {
                    status = Udma_ringDequeueRaw(instObj->cqRingHndl[chCnt],
                                &ringPopVal);
                    if (UDMA_SOK == status)
                    {
                        break;
                    }
                    repeatCnt ++;
                } while (repeatCnt < VHWA_DOF_MAX_WAIT_LOOP_CNT);
                
                if ((repeatCnt < VHWA_DOF_MAX_WAIT_LOOP_CNT) && (UDMA_SOK == status))
                {
                    status = FVID2_SOK;
                }
                else
                {
                    status = FVID2_EFAIL;
    
                    if (repeatCnt >= VHWA_DOF_MAX_WAIT_LOOP_CNT)
                    {
                        GT_1trace(VhwaDofTrace, GT_ERR,
                            "UDMA Failed to pop Ring for ch%d!!\n", chId);
                    }
                }
            }
        }
    
        return (status);
    }
    

    and then you can add below macro definition in packages\ti\drv\vhwa\src\drv\vhwa_m2mDofPriv.h file

    #define VHWA_DOF_MAX_WAIT_LOOP_CNT                (5000)

    Regards,

    Brijesh

  • Thanks Brijesh.
    I applied your code and verified the behavior.
    For now, we are not getting that error.
    Thanks a lot.

    Will your suggestion be updated to the PSDK in the future?

    Best regards.

  • Thank you for confirming this change. Yes, i have raised this request to the team and will be fixed in the next release.

    [PDK-13396] [DMPAC]: No timeout mechanism in removing element from output queue - Texas Instruments JIRA

    Regards,

    Brijesh