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.

Linux/TDA2PXEVM: "Update Current DCC" is not working in DCC tool

Part Number: TDA2PXEVM

Tool/software: Linux

Hi,

Image capture and memory dump are ok in DCC, and DCC file which is included in program image is also ok.
Sensor id in DCC was set up correctly. But "Update Current DCC" is not working.
Please find the following err log.

<DCC side>
Request to Update active DCC data in Target : 10.159.171.31
Loaded communication DLL:itCommun.dll
Error in Updating current DCC bin data


<TDA2Px EVB side>
[HOST] [HOST ] 1262.919203 s: NETWORK_CTRL: Received command [iss_send_dcc_file], with 173 bytes of parameters
[HOST] [HOST ] 1262.919538 s: NETWORK_CTRL: Network_read() failed to read parameters (port=5000) !!!
[HOST] [HOST ] 1262.919538 s: NETWORK_CTRL: iss_send_dcc_file:
[HOST] [HOST ] 1262.919843 s: NETWORK_CTRL: Sent response for command [iss_send_dcc_file], with 0 bytes of parameters

Regards,
HJ Kim

  • Hi HJ Kim,

    can you check if the suggested answer in this thread for a similar issue can give you some directions:
    e2e.ti.com/.../586821

    Also did you followed chapter "3.9 DCC" in VisionSDK_UserGuide_TDA3xx.pdf.

    Regards,
    Yordan
  • Hi Yordan,

    I've tried some ways as you guided but the result is the same.

    The sensor id was correct, and no difference if NDK_PROC_TO_USE=none was changed to =a15_0 in vision_sdk/apps/configs/tda2px_evm_linux_all/cfg.mk
    When network_ctrl was used to communicate with iss, "mem_rd" and "iss_read_2a_params" were ok but "iss_send_dcc_file" was failed and its output log was same as DCC tool.

    Is the "Update Current DCC" not supported in ca15 Linux platform? It's only supported in ipu rtos platform?
    Is special data format needed for sending dcc bin file to target board?

    Regards,
    HJ Kim

  • Hi Yordan,

    I think there's an issue with accessing physical address from A15 Linux.
    It worked well after modifying "network_ctrl_handle_iss_raw_save.c" as following.

    /* read parameters */
    #ifdef __linux__
    {
    UInt8 *buf;
    buf = (UInt8 *)OSA_memPhys2Virt((unsigned int)dccCtrlPrms.dccBuf, OSA_MEM_REGION_TYPE_AUTO);
    NetworkCtrl_readParams(buf, prmSize);
    }
    #else
    NetworkCtrl_readParams(dccCtrlPrms.dccBuf, prmSize);
    #endif
    Vps_printf(" NETWORK_CTRL: %s:", cmd);

    Regards,
    HJ Kim
  • I assume cache operation is necessary to sync between A15 and IPU.

    /* read parameters */
    #ifdef __linux__
    {
    UInt8 *buf;
    buf = (UInt8 *)OSA_memPhys2Virt((unsigned int)dccCtrlPrms.dccBuf, OSA_MEM_REGION_TYPE_AUTO);
    NetworkCtrl_readParams(buf, prmSize);
    OSA_memCacheWb((Uint32)buf, (Uint32)buf + prmSize - 1);
    }
    #else
    NetworkCtrl_readParams(dccCtrlPrms.dccBuf, prmSize);
    #endif
    Vps_printf(" NETWORK_CTRL: %s:", cmd);
  • Hi Kim,

    How do you allocate this dcc buffer on A15?

    Rgds,
    Brijesh
  • Hi Brijesh,

    The dcc buffer was alloed by system link.
    It is at vision_sdk\apps\src\rtos\modules\network_ctrl\network_ctrl_handle_iss_raw_save.c

            dccCtrlPrms.dccBuf = NULL;
    
            linkId = NetworkCtrl_getAewbLinkId();
    
            if (SYSTEM_LINK_ID_INVALID != linkId)
            {
                /* get results */
                status = System_linkControl(
                    linkId,
                    ALGORITHM_LINK_CMD_CONFIG,
                    &dccCtrlPrms,
                    sizeof(dccCtrlPrms),
                    TRUE);
                UTILS_assert(0 == status);
            }
    
            if (NULL == dccCtrlPrms.dccBuf)
            {
                Vps_printf(" NETWORK_CTRL: DCC Buffer is NULL");
    
                /* send response */
                NetworkCtrl_writeParams(NULL, 0, 0);
    
                return ;
            }
    


    Regards,
    HJ Kim

  • Hi Kim,

    this does not allocate dcc buffer, this control command sends the buffer to the link...

    Rgds,

    Brijesh