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.

MCFW的疑问

Other Parts Discussed in Thread: TVP5146, TVP7002, TVP5158

各位专家好,

           我们用DM385实现如下框图的功能:

   

通过FPGA从3路视频中选择2路,(如果是TVP5146,就填充到BT.1120)分别输出到DM385的VP0,VP1。

我们有几个疑问想咨询下:

我们软件版本是IPNC3.5,用了ipnc_mcfw/demos/mcfw_api_demose/multich_use

1.现有的demo构架默认是按ISS接口接入camera的做法,如果要改成HDVPSS接口,如何进行配置呢?

2.现有的MCFW构架能否实现我们的功能呢?

3.如果现有的MCFW构架不能实现,只能用Link api提供的接口api,那么Link api里面是否实现了1024*768和720*576的视频输入呢?

非常感谢!

  • 你好,

    DM385有一个camera接口,两个VIP口,可以直接三路信号,为什们还需要FPGA呢?

    使用VIP口,请参考capture link。但IPNC RDK里面没有使用capture link的例子。

  • 您好,

           如果我们修改成capture link,有可参考的代码或文档吗?

    我们看到在system_m3vpss.c里面有vps platform的初始化部分,从log看tvp7002的驱动挂载不成功,用的是I2C0,在A8里面是可以的。

    能给些意见或建议吗?现阶段很困惑。非常感谢!

  • 1、关于capture link 的参考

         在ipnc rdk 中已经给 capture link中实现的接口都是可以用的,具体需要根据你的采集来进行配置;

         link的设计,如果你有dvrrdk的源码是最好了,可以直接参考设计,如果没有,可以在 ipnc_3.8/Source/ti_tools/hdvpss_01_00_01_37/packages/ti/psp/examples/common/vps/chains/src中,参考下面的usecase的配置,和其他link的配置模式基本类似的;

    2、你的tvp7002不是接入fpga了吗,你是把i2c的驱动接口给了达芬奇板子吗?

  • 您好,

             我们再看看能不能找到IPNC3.8的版本,在目前3.5版本中,我们做了如下尝试,试图将camera link修改成captute link。

    1.在现有的demo:ti_mcfw_ipnc_main.c中,Vcam的地方修改成Vcap,主要是初始化,start,stop几个函数。

    2.修改ti_vcap.c文件,按照我们的配置进行初始化参数修改。

    在这个过程中发现ti_vcap.c是按照tvp5158做的,我们准备修改成tvp7002,tvp5146,adv7611。

    在ipnc_mcfw/mcfw/src_linux/devices/     下面有tvp5158的驱动,这里有几个疑问,发现这种采集芯片的驱动在3处地方存在:

    1.我们应该需要按照类似的方法在ipnc_mcfw/mcfw/src_linux/devices/ 实现tvp7002,tvp5146,adv7611的驱动吧?

    2.在linux内核里面已经实现了tvp7002,tvp5146,adv7611驱动,也能跑起来,FPGA可以采集到视频信号。

    3.在hdvpss_01_00_01_37/packages/ti/psp/devices/  目录下也有tvp5158等视频采集芯片的驱动。

    很迷惑这3个地方驱动的关系,为什么要重复实现?

     

    我们的tvp7002,tvp5146,adv7611的I2C接口接在达芬奇板子上了,用的I2C0。M3-VPSS和A8的I2C是对应的吗,如果A8上我们用I2C0,M3-VPSS也是I2C0吗?

     

    非常感谢不厌其烦的为我们解答疑惑,非常感谢!

     

     

  • 1、这个三个地方的驱动都实现了,你可以选择一个就可以,像ezsdk是通过内核来加载驱动,在DVRRDK中,可以通过A8来加载驱动,也可以通过M3来加载驱动;

         针对你自己的平台,自己选择,方便实现对外围信息的控制就可以;

    2、I2C0是在M3上还是在M3-VPSS上,可以自己配置的;

  • 您好,

            经过这几天的摸索,修改了一个capturelink的usecase,在之前的demo里面修改成了capture link方式,发现获取不到视频数据,但是FPGA确实有数据输入。发现

    ipnc_mcfw\mcfw\src_bios6\links_m3vpss\capture\captureLink_drv.c里面的函数:

    Int32 CaptureLink_drvPrintRtStatus(CaptureLink_Obj * pObj, UInt32 frameCount, UInt32 elaspedTime)

    {
        UInt32 fps = (frameCount * 100) / (elaspedTime / 10);

    Vps_rprintf
            (" %d: CAPTURE: Fields = %d (fps = %d), Total Resets = %d (Avg %d ms per reset)\r\n",
                     Utils_getCurTimeInMsec(), frameCount, fps, pObj->resetCount,
                               pObj->resetTotalTime / pObj->resetCount);

        return 0;
    }

    打印log如下:

    [m3vpss ]  21699: CAPTURE: Fields = 0 (fps = 0), Total Resets = 0 (Avg 0 ms per reset)

    我们的usecase暂时只配置了VP0,我们的原理是TVP7002输出数据经过FPGA到VP0,流程如下:

    CAPUTER(VPSSM3)---->FRAMES OUT(VPSSM3)---->FRAMES IN(VIDEOM3)---->ENC(VIDEOM3)---->BITS OUT(VIDEOM3)---->BITS IN(A8)

    具体代码请看附件singlech_encode.c。

    现在不知道问题出在哪里,麻烦帮忙看看,万分感谢!

     

     

     

     

     

  • 你的FPGA输出给dm8168的视频信号是内同步输出还是离散同步输出的,这个你有在

    ipnc_mcfw\mcfw\src_bios6\links_m3vpss\capture\captureLink_drv.c

    中进行配置吗?

  • 你的FPGA输出给dm8168的视频信号是内同步输出还是离散同步输出的,这个你有在

    ipnc_mcfw\mcfw\src_bios6\links_m3vpss\capture\captureLink_drv.c

    中进行配置吗?

  • 可以参考:

    /**
     * \brief Video capture operation mode
    */
    typedef enum
    {
        VPS_CAPT_VIDEO_CAPTURE_MODE_SINGLE_CH_NON_MUX_EMBEDDED_SYNC = 0,
        /**< Single Channel non multiplexed mode */
        VPS_CAPT_VIDEO_CAPTURE_MODE_MULTI_CH_LINE_MUX_EMBEDDED_SYNC,
        /**< Multi-channel line-multiplexed mode */
        VPS_CAPT_VIDEO_CAPTURE_MODE_MULTI_CH_PIXEL_MUX_EMBEDDED_SYNC,
        /**< Multi-channel pixel muxed */
        VPS_CAPT_VIDEO_CAPTURE_MODE_SINGLE_CH_NON_MUX_DISCRETE_SYNC_HSYNC_VBLK,
        /**< Single Channel non multiplexed discrete sync mode with HSYNC and
            VBLK as control signals. */
        VPS_CAPT_VIDEO_CAPTURE_MODE_SINGLE_CH_NON_MUX_DISCRETE_SYNC_HSYNC_VSYNC,
        /**< Single Channel non multiplexed discrete sync mode with HSYNC and
            VSYNC as control signals. */
        VPS_CAPT_VIDEO_CAPTURE_MODE_SINGLE_CH_NON_MUX_DISCRETE_SYNC_ACTVID_VBLK,
        /**< Single Channel non multiplexed discrete sync mode with ACTVID and
            VBLK as control signals. */
        VPS_CAPT_VIDEO_CAPTURE_MODE_SINGLE_CH_NON_MUX_DISCRETE_SYNC_ACTVID_VSYNC,
        /**< Single Channel non multiplexed discrete sync mode with ACTVID and
            VBLK as control signals. */
        VPS_CAPT_VIDEO_CAPTURE_MODE_MULTI_CH_LINE_MUX_SPLIT_LINE_EMBEDDED_SYNC,
        /**< Multi-channel line-multiplexed mode - split line mode */
        VPS_CAPT_VIDEO_CAPTURE_MODE_MAX
        /**< Maximum modes */
    } Vps_CaptVideoCaptureMode;
  • 您好,

          我们在usecase设置的inDataFormat = YUV422P.

           在captureLink_drv.c里函数CaptureLink_drvCreatInst会根据inDataFormat,设置videocapturemode=

    VPS_CAPT_VIDEO_CAPTURE_MODE_SINGLE_CH_NON_MUX_EMBEDDED_SYNC
        videoifmode=VPS_CAPT_VIDEO_IF_MODE_16BIT
    
    
    FPGA输出到VP0硬件上确实是16位的。
  • 不好意思,很长时间没来反馈进展了,问题解决了,2个vp都能接收到视频数据了,之前不行原因还是capturelinuk里面参数设置不正确所致,感谢大家的帮助!

  • 最后查出来是capturelinuk哪里的参数设置不正确?我现在也碰到相似的问题,感谢您的分享!

  • Huchong Li 说:

    最后查出来是capturelinuk哪里的参数设置不正确?我现在也碰到相似的问题,感谢您的分享!

    建议多参考 usecases 里面的配置,对比自己平台和 demo板 平台的区别,来调整参数。