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: How to save frame buffer to file in Linux usecase?

Part Number: TDA2PXEVM


Tool/software: Linux

Hi,

I'm trying to dump frame buffer and save to file in Linux usecase.

I used below api, but there was an err return at ChainsCommon_Osal_fileOpen() (fp = 01)

    fp = ChainsCommon_Osal_fileOpen(fileName, CHAINSCOMMON_OSAL_FILEMODE_WRITE_BIN);
    UTILS_assert(-1 != fp);

    ChainsCommon_Osal_fileWrite(fp, (UInt8*)ChainsCommon_Osal_getVirtAddr((Uint32)save_buffer), IMG_SIZE);
    ChainsCommon_Osal_fileClose(fp);

I assume there was a problem in rtos file access. Which partition is used for rtos file access and what file system is supported?

Is there any way to dump framebuffer of display input in Linux side?

Thanks.

  • Hi HJ,

    in Linux you can use "OSA_fileWriteFile()" from "vision_sdk/links_fw/src/hlos/osa/src/osa_file.c" (it is based on standard fopen->fwrite->fclose APIs).

    Regards,
    Yordan
  • Hi Yordan,

    Thanks for your reply.

    OSA_fileWriteFile() worked well. simcop capture code is below.

    Thansk again!

       System_linkControl(chainsObj.ucObj.IssM2mSimcopLinkID, ISSM2MSIMCOP_LINK_CMD_SAVE_FRAME, &chId, sizeof(chId), TRUE);
       simcopSaveFrameStatus.chId = 0;

       do {
        System_linkControl(chainsObj.ucObj.IssM2mSimcopLinkID, ISSM2MSIMCOP_LINK_CMD_GET_SAVE_FRAME_STATUS,
          &simcopSaveFrameStatus, sizeof(IssM2mSimcopLink_GetSaveFrameStatus), TRUE);
       } while (simcopSaveFrameStatus.isSaveFrameComplete == FALSE);   

       virt_addr = (UInt8 *)OSA_memPhys2Virt(simcopSaveFrameStatus.bufAddr, OSA_MEM_REGION_TYPE_AUTO);
       OSA_fileWriteFile("/home/root/nfs/opt/vision_sdk/img.yuv", virt_addr, simcopSaveFrameStatus.bufSize);