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:如何将 Bayer 原始数据从 ISS 采集传递到 A15?

Guru**** 2540720 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/718303/linux-tda2pxevm-how-to-pass-bayer-raw-data-from-iss-capture-to-a15

器件型号:TDA2PXEVM

工具/软件:Linux

我编写了一个算法插件,用于处理 a15 Linux 上的 Bayer 数据。   我创建一个链“IssCapture -> Alg_SimpleIsp (A15)-> Display_Video”。  

这似乎不是很好。

下面的日志信息,请帮助我,谢谢。  

HOST][IPU2 ]    54.228573 s: 显示:正在启动!!!
 [host][IPU2 ]    54.228664 s: 显示:开始完成!!!
 [host][IPU2 ]    54.229488 s: IssCaptureLink_tskMain system_CMD_start
 [host][IPU2 ]    54.229579 s: ISSCAPTURE:正在启动!!
 [host][IPU2 ]    54.229732 s: ISSCAPTURE:启动完成!!!
 [host][IPU2 ]    54.286646 s: IssCaptureLink_tskRun system_CMD_new_data
 断言(system_linkApi.c|System_getLinksFullBuffers|267)
 [host][IPU2 ]    54.286768 s: IssCaptureLink_drvProcessData numFrames(1) status (
 [host][IPU2 ]    54.286860 s: IssCaptureLink_drvProcessData system_frame_status_completed
 [host][IPU2 ]    54.286982 s: IssCaptureLink_drvProcessData 发送 nextlink system_cmd_new_data
 [host][IPU2 ]    54.320014 s: IssCaptureLink_tskRun system_CMD_new_data
 [host][IPU2 ]    54.320106 s: IssCaptureLink_drvProcessData numFrames(1) status (
 [host][IPU2 ]    54.320197 s: IssCaptureLink_drvProcessData system_frame_status_completed
 [host][IPU2 ]    54.320289 s: IssCaptureLink_drvProcessData 发送 nextlink system_cmd_new_data
 [host][IPU2 ]    54.353291 s: IssCaptureLink_tskRun system_CMD_new_data
 [主机][IPU2 ]    54.353504 s:
 [host][IPU2 ]    54.353535 s: ### XDC 断言-错误回调开始###
 [主机][IPU2 ]    54.353626 s:
 [host][IPU2 ]    54.353748 s:e_hardFault:Forced
 [主机][IPU2 ]    54.353809 s:
 [host][IPU2 ]    54.353840 s: ### XDC 断言-错误回调结束###
 [主机][IPU2 ]    54.353901 s:
 [主机][IPU2 ]    54.354145 s:
 [host][IPU2 ]    54.354175 s: ### XDC 断言-错误回调开始###
 [主机][IPU2 ]    54.354236 s:
 [host][IPU2 ]    54.354358 s:e_busFault:PRECISERR:立即总线故障、确切的已知地址、地址:fffffff8
 [主机][IPU2 ]    54.354450 s:
 [host][IPU2 ]    54.354480 s: ### XDC 断言-错误回调结束###
 [主机][IPU2 ]    54.354572 s:

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    当前您在 assert 中遇到错误(system_linkApi.c|System_getLinksFullBuffers|267)
    当任何链接使用无效的链接 ID 调用 System_getLinksFullBuffers 时,就会出现此错误。
    请检查自定义链接和用例的链接实现。 在某个位置、链路 ID 处理不正确。

    此致、
    Anuj
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的,链接插件在某些情况下是错误的,我发现它。 但还有其他问题。 原始12数据将传递到 a15 Linux。 因此我将其保存到文件中,但保存的数据长度始终为376832,应为2048000。 我不知道为什么?
    raw12是否每像素占用2个字节,高4位是否为零?

    代码如下, 我的摄像机分辨率为1280*800:

               dataFormat = System_Link_Ch_Info_GET_Flag_Data_Format (pInputChInfo->flags);

         osa_printf ("AlgorithmLink_simpleIspProcess 输入 data_format %x \n"、dataFormat);

               交换机(数据格式)
               {
                   案例 SYSTEM_DF_BYER_BGGR:
                       numBuffs = 1;
                       中断;
                   默认值:
                       numBuffs = 1;
                       utils_assert (0);
                       中断;
               }

         
               pSysBufferOutput->srcTimestamp = pSysBufferInput->srcTimestamp;
               pSysBufferOutput->frameId = pSysBufferInput->frameId;
               pSysBufferOutput->linkLocalTimestamp = OSA_getCurGlobalTimeInUsec();

               /*
                *输入缓冲区的缓存无效
                *
               bufSize[0] =((pInputChInfo->height)*(pInputChInfo->pitch[0]));
               bufSize[1] =((pInputChInfo->height)*(pInputChInfo->pitch[1]));

               for (bufCntr = 0;bufCntr < numBuffs;bufCntr ++)
               {
                   osa_memCacheInv((unsigned int) pSysVideoFrameBufferInput->bufAddr[bufCntr],
                                   (unsigned int) bufSize[bufCntR]
                                  );
               }

         if (g_saved = 0){
          
          file *outfile = fopen ("/home/bayer_01.raw、"WB");
          if (NULL =outfile){
           vps_printf ("fopen 文件/home/bayer_01.raw 失败\n");
          }

          int32 ret = fwrite((void*)pSysVideoFrameBufferInput->bufAddr、2048、1000、outfile);

          osa_printf ("fwrite writed %d bytes ret =%d\n"、bufSize[0]、ret);
          fflush (outfile);
          fclose (outfile);
          
          g_saved = 1;
         }

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、正确。 默认情况下、RAW12存储在16位容器中。

    此致、
    Sujith
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     文件的长度 I d转 储 始终为376832字节, 应为2048000。    为什么?  我的 Bayer 原始分辨率为1280*800。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您能否检查 fwrite 的写入值是多少? 查看它是否能够一次性写入2048000字节、否则、应多次调用它来写入完整数据。

    Rgds、
    Brijesh