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.

TVP5150 DM385 加入DEI模块后vpssM3出现unhandle exception

Other Parts Discussed in Thread: TVP5150

专家好!我在使用DM385开发板上外挂了一个tvp5150片,用来接CVBS摄像头,

tvp5150输出8bit 内嵌同步的CVBS(NTSC或PAL)信号到DM385的VIP1 PORTA的D0~D7位上,软件版本使用的是dvr rdk 4.0;

当我使用数据流:

tvp5150(cvbs) -> capture -> encode -> send

程序可以正确运行,只不过得到的图像只有一半,所以我们认为应该加入DEI模块,

当加入DEI模块后数据流如下:

tvp5150(cvbs) -> capture ->DEI-> encode -> send

代码如下:

/** ============================================================================
 *
 *  Chains_SelCapSelRecv.c
 *
 *  Author     : 
 *
 *  Date       : June 7, 2015
 *
 *  Description:	Cap + Enc + Send
 *  				Net + Dec + Display
 *
 *	capture-|-vipInst0->|->dup->enc->send
 *
 *
 *	receive->dec->sel-|->swms0->display0
 *  ============================================================================
 */


#include <demos/link_api_demos/common/chains.h>
#include <mcfw/interfaces/ti_vcap.h>
//#include <>
static SystemVideo_Ivahd2ChMap_Tbl systemVid_encDecIvaChMapTbl =
{
    .isPopulated = 1,
    .ivaMap[0] =
    {
        .EncNumCh  = 1,
        .EncChList = {0},
        .DecNumCh  = 0,
        .DecChList = {0},
    },
    .ivaMap[1] =
    {
        .EncNumCh  = 0,
        .EncChList = {0},
        .DecNumCh  = 1,
        .DecChList = {0},
    },
    .ivaMap[2] =
    {
        .EncNumCh  = 1,
        .EncChList = {1},
        .DecNumCh  = 1,
        .DecChList = {1},
    },
};

Void Chains_SelCapSelRecv(Chains_Ctrl *chainsCfg)
{

	 CaptureLink_CreateParams            capturePrm;
     DeiLink_CreateParams                deiPrm;//by ct
	 CaptureLink_VipInstParams           *pCaptureInstPrm;
	 CaptureLink_OutParams               *pCaptureOutPrm;
	 DupLink_CreateParams                dupPrm;
	 IpcLink_CreateParams                ipcOutVpssPrm;
	 IpcLink_CreateParams                ipcInVideoPrm;
	 EncLink_CreateParams                encPrm;
	 IpcBitsOutLinkRTOS_CreateParams     ipcBitsOutVideoPrm;
	 IpcBitsInLinkHLOS_CreateParams      ipcBitsInHostPrm;

	 UInt32 captureId, vipInstId;
         UInt32 deiId;
	 UInt32 dupId;
	 UInt32 ipcOutVpssId;
	 UInt32 ipcInVideoId;
	 UInt32 encId;
	 UInt32 ipcBitsOutVideoId;
	 UInt32 ipcBitsInHostId;

	 IpcBitsOutLinkHLOS_CreateParams   ipcBitsOutHostPrm;
	 IpcBitsInLinkRTOS_CreateParams    ipcBitsInVideoPrm;
	 DecLink_CreateParams              decPrm;
	 IpcLink_CreateParams              ipcOutVideoEncPrm;
	 IpcLink_CreateParams              ipcInVpssEncPrm;
     SelectLink_CreateParams           selPrm;
	 SwMsLink_CreateParams             swMsPrm[CHAINS_SW_MS_MAX_DISPLAYS];
	 DisplayLink_CreateParams          displayPrm[CHAINS_SW_MS_MAX_DISPLAYS];

	 UInt32 ipcBitsOutHostId;
	 UInt32 ipcBitsInVideoId;
	 UInt32 decId;
	 UInt32 ipcOutVideoEncId;
	 UInt32 ipcInVpssEncId;
     UInt32 selId;
	 UInt32 swMsId[CHAINS_SW_MS_MAX_DISPLAYS];
	 UInt32 displayId[CHAINS_SW_MS_MAX_DISPLAYS];

	 int i;

	 for(i =0;i<gChains_ctrl.chRecNum;i++)
	 {
		gChains_ctrl.chCfg[i+gChains_ctrl.chCapNum].channel = i;
	 }

	Chains_ipcBitsInit();
       System_linkControl(
                   SYSTEM_LINK_ID_M3VPSS,
                   SYSTEM_M3VPSS_CMD_RESET_VIDEO_DEVICES,
                   NULL,
                   0,
                   TRUE);
	System_linkControl(
		SYSTEM_LINK_ID_M3VIDEO,
		SYSTEM_COMMON_CMD_SET_CH2IVAHD_MAP_TBL,
		&systemVid_encDecIvaChMapTbl,
		sizeof(SystemVideo_Ivahd2ChMap_Tbl),
		TRUE
	);

	/*
	 * Local capture + Enc + send
	 */
	VCAP_PARAMS_S  prm;
	Vcap_params_init(&prm);
	if(chainsCfg->chCapNum > 0)
	{
		CHAINS_INIT_STRUCT(CaptureLink_CreateParams,capturePrm);
                CHAINS_INIT_STRUCT(DeiLink_CreateParams ,deiPrm);//by ct
		CHAINS_INIT_STRUCT(IpcLink_CreateParams,ipcOutVpssPrm);
		CHAINS_INIT_STRUCT(IpcLink_CreateParams,ipcInVideoPrm);
		CHAINS_INIT_STRUCT(EncLink_CreateParams,encPrm);
		CHAINS_INIT_STRUCT(IpcBitsOutLinkRTOS_CreateParams,ipcBitsOutVideoPrm);
		CHAINS_INIT_STRUCT(IpcBitsInLinkHLOS_CreateParams,ipcBitsInHostPrm);

		captureId     = SYSTEM_LINK_ID_CAPTURE;
		dupId         =SYSTEM_VPSS_LINK_ID_DUP_0;
		ipcOutVpssId  = SYSTEM_VPSS_LINK_ID_IPC_OUT_M3_0;
		ipcInVideoId  = SYSTEM_VIDEO_LINK_ID_IPC_IN_M3_0;
		encId         = SYSTEM_LINK_ID_VENC_0;
		ipcBitsOutVideoId   = SYSTEM_VIDEO_LINK_ID_IPC_BITS_OUT_0;
		ipcBitsInHostId     = SYSTEM_HOST_LINK_ID_IPC_BITS_IN_0;

		capturePrm.numVipInst               = chainsCfg->chCapNum;
		capturePrm.tilerEnable              = TRUE;
		capturePrm.numBufsPerCh             = 16;
		capturePrm.numExtraBufs             = 0;
		capturePrm.maxBlindAreasPerCh       = 0;
		capturePrm.isPalMode                = TRUE;
		capturePrm.enableSdCrop             = FALSE;
		capturePrm.doCropInCapture          = FALSE;


//BY CT BEGIN
deiId=SYSTEM_LINK_ID_DEI_0;
deiPrm.inQueParams.prevLinkId = captureId;

    deiPrm.inQueParams.prevLinkQueId  = 0;

    /* Set Output Scaling at DEI based on ratio */
    //deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC][0].scaleMode = DEI_SCALE_MODE_RATIO;
   // deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC][0].ratio.widthRatio.numerator = 1;
   // deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC][0].ratio.widthRatio.denominator = 1;
   // deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC][0].ratio.heightRatio.numerator = 1;
  //  deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC][0].ratio.heightRatio.denominator = 1;
   // for (i=1; i < DEI_LINK_MAX_CH; i++)
      //  deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC][i] = deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC][0];

    deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0].scaleMode = DEI_SCALE_MODE_RATIO;
    deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0].ratio.heightRatio.numerator = 1;
    deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0].ratio.heightRatio.denominator = 1;
    deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0].ratio.widthRatio.numerator = 1;
    deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0].ratio.widthRatio.denominator = 1;
    for (i=1; i < DEI_LINK_MAX_CH; i++)
        deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][i] = deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0];

   // deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC_SECONDARY_OUT][0].scaleMode = DEI_SCALE_MODE_RATIO;
   // deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC_SECONDARY_OUT][0].ratio.heightRatio.numerator = 1;
   // deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC_SECONDARY_OUT][0].ratio.heightRatio.denominator = 2;
   // deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC_SECONDARY_OUT][0].ratio.widthRatio.numerator = 1;
   // deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC_SECONDARY_OUT][0].ratio.widthRatio.denominator = 2;
   // for (i=1; i < DEI_LINK_MAX_CH; i++)
    //    deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC_SECONDARY_OUT][i] = deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC_SECONDARY_OUT][0];

    deiPrm.enableOut[DEI_LINK_OUT_QUE_DEI_SC]                        = FALSE;
    deiPrm.enableOut[DEI_LINK_OUT_QUE_VIP_SC]                        = TRUE;
    deiPrm.enableDeiForceBypass                                      =FALSE;
    deiPrm.enableOut[DEI_LINK_OUT_QUE_VIP_SC_SECONDARY_OUT]          = FALSE;

    //deiPrm.outQueParams[DEI_LINK_OUT_QUE_DEI_SC].nextLink                   = dupId;
    deiPrm.outQueParams[DEI_LINK_OUT_QUE_VIP_SC].nextLink                   = ipcOutVpssId;
    //deiPrm.outQueParams[DEI_LINK_OUT_QUE_VIP_SC_SECONDARY_OUT].nextLink     = dupId;

    deiPrm.tilerEnable[DEI_LINK_OUT_QUE_VIP_SC]          = FALSE;
    deiPrm.comprEnable                                   = FALSE;
    deiPrm.setVipScYuv422Format                          = FALSE;
    deiPrm.inputDeiFrameRate                             =25u;
    deiPrm.outputDeiFrameRate                             =25u;

//END

		for(i=0; i<capturePrm.numVipInst; i++)
		{
#if defined(TI8107_INS)
			vipInstId =	SYSTEM_CAPTURE_INST_VIP0_PORTA + 2 * gChains_ctrl.chCfg[i].channel;
			pCaptureInstPrm						= &capturePrm.vipInst[i];
			pCaptureInstPrm->videoIfMode		= SYSTEM_CAPT_VIDEO_IF_MODE_8BIT;
#endif
			prm.channelParams[i].deviceId 		= vipInstId;
			prm.enableConfigExtVideoDecoder 	= TRUE;
			prm.deviceParams[vipInstId].standard	= chainsCfg->chCfg[i].inStd;

			pCaptureInstPrm->vipInstId          = vipInstId%SYSTEM_CAPTURE_INST_MAX;
			pCaptureInstPrm->inDataFormat       = SYSTEM_DF_YUV422P;
			//pCaptureInstPrm->standard           = chainsCfg->chCfg[i].inStd;
                        pCaptureInstPrm->standard           =SYSTEM_STD_D1;
			pCaptureInstPrm->numOutput          = 1;
			pCaptureInstPrm->numChPerOutput     = 1;

			pCaptureOutPrm                      = &pCaptureInstPrm->outParams[0];
			pCaptureOutPrm->dataFormat          = SYSTEM_DF_YUV420SP_UV;
			pCaptureOutPrm->scEnable            = FALSE;
			pCaptureOutPrm->outQueId            = 0;
		}
		capturePrm.outQueParams[0].nextLink     = deiId; //by ct
 
		dupPrm.inQueParams.prevLinkId           = deiId; //by ct
		dupPrm.inQueParams.prevLinkQueId        = 0;
		dupPrm.numOutQue                        = 1;
		//dupPrm.outQueParams[0].nextLink         = ipcOutVpssId;
		dupPrm.notifyNextLink                   = TRUE;

		ipcOutVpssPrm.inQueParams.prevLinkId    = deiId;
		ipcOutVpssPrm.inQueParams.prevLinkQueId = 0;
		ipcOutVpssPrm.outQueParams[0].nextLink  = ipcInVideoId;
		ipcOutVpssPrm.numOutQue                 = 1;
		ipcOutVpssPrm.numChPerOutQue[0]         = 0;
		ipcOutVpssPrm.notifyNextLink            = TRUE;
		ipcOutVpssPrm.notifyPrevLink            = FALSE;
		ipcOutVpssPrm.noNotifyMode              = FALSE;
		ipcOutVpssPrm.equallyDivideChAcrossOutQues = FALSE;

		ipcInVideoPrm.inQueParams.prevLinkId    = ipcOutVpssId;
		ipcInVideoPrm.inQueParams.prevLinkQueId = 0;
		ipcInVideoPrm.outQueParams[0].nextLink  = encId;
		ipcInVideoPrm.numOutQue                 = 1;
		ipcInVideoPrm.numChPerOutQue[0]         = 0;
		ipcInVideoPrm.notifyNextLink            = TRUE;
		ipcInVideoPrm.notifyPrevLink            = FALSE;
		ipcInVideoPrm.noNotifyMode              = FALSE;
		ipcInVideoPrm.equallyDivideChAcrossOutQues = FALSE;

		for (i=0; i<chainsCfg->chCapNum; i++) {
			encPrm.chCreateParams[i].format                             = chainsCfg->chCfg[i].encFormat;
			encPrm.chCreateParams[i].profile                            = chainsCfg->chCfg[i].encProfile;
			encPrm.chCreateParams[i].dataLayout                         = IVIDEO_FIELD_SEPARATED;
			encPrm.chCreateParams[i].fieldMergeEncodeEnable             = FALSE;
			encPrm.chCreateParams[i].enableAnalyticinfo                 = FALSE;
			encPrm.chCreateParams[i].enableWaterMarking                 = FALSE;
			encPrm.chCreateParams[i].encodingPreset                     = XDM_USER_DEFINED;
			encPrm.chCreateParams[i].rateControlPreset                  = IVIDEO_USER_DEFINED;
			encPrm.chCreateParams[i].enableHighSpeed                    = FALSE;
			encPrm.chCreateParams[i].defaultDynamicParams.interFrameInterval  = 1;
			encPrm.chCreateParams[i].defaultDynamicParams.intraFrameInterval  = chainsCfg->chCfg[i].intraFrameInterval;
			encPrm.chCreateParams[i].defaultDynamicParams.inputFrameRate      = chainsCfg->chCfg[i].inFrameRate;
			encPrm.chCreateParams[i].defaultDynamicParams.targetFrameRate     = chainsCfg->chCfg[i].encFrameRate;
			encPrm.chCreateParams[i].defaultDynamicParams.targetBitRate       = chainsCfg->chCfg[i].bitRate;
			encPrm.chCreateParams[i].defaultDynamicParams.mvAccuracy          = IVIDENC2_MOTIONVECTOR_QUARTERPEL;
			encPrm.chCreateParams[i].defaultDynamicParams.rcAlg               = chainsCfg->chCfg[i].rateCtrl;
			encPrm.chCreateParams[i].defaultDynamicParams.qpMin               = 0;
			encPrm.chCreateParams[i].defaultDynamicParams.qpMax               = 51;
			encPrm.chCreateParams[i].defaultDynamicParams.qpInit              = -1;
			encPrm.chCreateParams[i].defaultDynamicParams.vbrDuration         = 8;
			encPrm.chCreateParams[i].defaultDynamicParams.vbrSensitivity      = 0;
		}
		encPrm.inQueParams.prevLinkId   = ipcInVideoId;
		encPrm.inQueParams.prevLinkQueId= 0;
		encPrm.outQueParams.nextLink    = ipcBitsOutVideoId;
		encPrm.numBufPerCh[0]           = 0;

		ipcBitsOutVideoPrm.baseCreateParams.inQueParams.prevLinkId      = encId;
		ipcBitsOutVideoPrm.baseCreateParams.inQueParams.prevLinkQueId   = 0;
		ipcBitsOutVideoPrm.baseCreateParams.outQueParams[0].nextLink    = ipcBitsInHostId;
		ipcBitsOutVideoPrm.baseCreateParams.numOutQue                   = 1;
		ipcBitsOutVideoPrm.baseCreateParams.notifyNextLink              = FALSE;
		ipcBitsOutVideoPrm.baseCreateParams.notifyPrevLink              = FALSE;
		ipcBitsOutVideoPrm.baseCreateParams.noNotifyMode                = TRUE;
		Chains_ipcBitsInitCreateParams_BitsOutRTOS(&ipcBitsOutVideoPrm,FALSE);

		ipcBitsInHostPrm.baseCreateParams.inQueParams.prevLinkId        = ipcBitsOutVideoId;
		ipcBitsInHostPrm.baseCreateParams.inQueParams.prevLinkQueId     = 0;
		ipcBitsInHostPrm.baseCreateParams.numOutQue                     = 1;
		ipcBitsInHostPrm.baseCreateParams.numChPerOutQue[0]             = 0;
		ipcBitsInHostPrm.baseCreateParams.notifyNextLink                = FALSE;
		ipcBitsInHostPrm.baseCreateParams.notifyPrevLink                = FALSE;
		ipcBitsInHostPrm.baseCreateParams.noNotifyMode                  = TRUE;
		Chains_ipcBitsInitCreateParams_BitsInHLOS(&ipcBitsInHostPrm);
    }

    //Network
     if(chainsCfg->chRecNum > 0)
     {
		CHAINS_INIT_STRUCT(IpcBitsOutLinkHLOS_CreateParams,ipcBitsOutHostPrm);
		CHAINS_INIT_STRUCT(IpcBitsInLinkRTOS_CreateParams,ipcBitsInVideoPrm);
		CHAINS_INIT_STRUCT(DecLink_CreateParams,decPrm);
		CHAINS_INIT_STRUCT(IpcLink_CreateParams,ipcOutVideoEncPrm);
		CHAINS_INIT_STRUCT(IpcLink_CreateParams,ipcInVpssEncPrm);
        CHAINS_INIT_STRUCT(SelectLink_CreateParams,selPrm);
		for (i=0; i<CHAINS_SW_MS_MAX_DISPLAYS; i++) {
			CHAINS_INIT_STRUCT(SwMsLink_CreateParams,swMsPrm[i]);
			CHAINS_INIT_STRUCT(DisplayLink_CreateParams,displayPrm[i]);
		}

		ipcBitsOutHostId    = SYSTEM_HOST_LINK_ID_IPC_BITS_OUT_0;
		ipcBitsInVideoId    = SYSTEM_VIDEO_LINK_ID_IPC_BITS_IN_0;
		decId               = SYSTEM_LINK_ID_VDEC_0;
		ipcOutVideoEncId    = SYSTEM_VIDEO_LINK_ID_IPC_OUT_M3_1;
		ipcInVpssEncId      = SYSTEM_VPSS_LINK_ID_IPC_IN_M3_1;
        selId               = SYSTEM_VPSS_LINK_ID_SELECT_0;
		swMsId[0]           = SYSTEM_LINK_ID_SW_MS_MULTI_INST_0;
		swMsId[1]           = SYSTEM_LINK_ID_SW_MS_MULTI_INST_1;
		displayId[0]        = SYSTEM_LINK_ID_DISPLAY_0;
		displayId[1]        = SYSTEM_LINK_ID_DISPLAY_1;

        for(i=chainsCfg->chCapNum; i<chainsCfg->chNum; i++)
        {
        	chainsCfg->displayRes[i-chainsCfg->chCapNum] = chainsCfg->displayRes[i];
        }

		Chains_displayCtrlInit(chainsCfg->displayRes);

		System_LinkQueInfo queInfo;
		queInfo.numCh = chainsCfg->chRecNum;

		for (i=0; i<chainsCfg->chRecNum; i++) {
			queInfo.chInfo[i].bufType           = SYSTEM_BUF_TYPE_VIDBITSTREAM;
			queInfo.chInfo[i].codingformat      = chainsCfg->chCfg[i + chainsCfg->chCapNum].encFormat;
			queInfo.chInfo[i].height            = chainsCfg->chCfg[i + chainsCfg->chCapNum].outHeight;
			queInfo.chInfo[i].width             = chainsCfg->chCfg[i + chainsCfg->chCapNum].outWidth;
			queInfo.chInfo[i].memType           = SYSTEM_MT_TILEDMEM;
			queInfo.chInfo[i].dataFormat        = SYSTEM_DF_YUV420P;
			queInfo.chInfo[i].scanFormat        = SYSTEM_SF_PROGRESSIVE;
		}

		ipcBitsOutHostPrm.baseCreateParams.numOutQue                    = 1;
		ipcBitsOutHostPrm.baseCreateParams.numChPerOutQue[0]            = chainsCfg->chRecNum;
		ipcBitsOutHostPrm.baseCreateParams.outQueParams[0].nextLink     = ipcBitsInVideoId;
		Chains_ipcBitsInitCreateParams_BitsOutHLOS(&ipcBitsOutHostPrm, &queInfo);

		ipcBitsInVideoPrm.baseCreateParams.inQueParams.prevLinkId       = ipcBitsOutHostId;
		ipcBitsInVideoPrm.baseCreateParams.inQueParams.prevLinkQueId    = 0;
		ipcBitsInVideoPrm.baseCreateParams.numOutQue                    = 1;
		ipcBitsInVideoPrm.baseCreateParams.numChPerOutQue[0]            = chainsCfg->chRecNum;
		ipcBitsInVideoPrm.baseCreateParams.outQueParams[0].nextLink     = decId;
		Chains_ipcBitsInitCreateParams_BitsInRTOS(&ipcBitsInVideoPrm, TRUE);

		for (i=0; i<chainsCfg->chRecNum; i++) {
			decPrm.chCreateParams[i].format                               = chainsCfg->chCfg[i + chainsCfg->chCapNum].encFormat;
			decPrm.chCreateParams[i].profile                              = IH264VDEC_PROFILE_ANY;
			decPrm.chCreateParams[i].targetMaxWidth                       = chainsCfg->chCfg[i + chainsCfg->chCapNum].outWidth;
			decPrm.chCreateParams[i].targetMaxHeight                      = chainsCfg->chCfg[i + chainsCfg->chCapNum].outHeight;
			decPrm.chCreateParams[i].fieldMergeDecodeEnable               = FALSE;
			decPrm.chCreateParams[i].algCreateStatus                      = DEC_LINK_ALG_CREATE_STATUS_CREATE;
			decPrm.chCreateParams[i].defaultDynamicParams.targetFrameRate = chainsCfg->chCfg[i + chainsCfg->chCapNum].encFrameRate;
			decPrm.chCreateParams[i].defaultDynamicParams.targetBitRate   = chainsCfg->chCfg[i + chainsCfg->chCapNum].bitRate;
			decPrm.chCreateParams[i].numBufPerCh                          = 0;
			decPrm.chCreateParams[i].tilerEnable                          = TRUE;
		}

		decPrm.inQueParams.prevLinkId    = ipcBitsInVideoId;
		decPrm.inQueParams.prevLinkQueId = 0;
		decPrm.outQueParams.nextLink     = ipcOutVideoEncId;

		ipcOutVideoEncPrm.inQueParams.prevLinkId    = decId;
		ipcOutVideoEncPrm.inQueParams.prevLinkQueId = 0;
		ipcOutVideoEncPrm.numOutQue                 = 1;
		ipcOutVideoEncPrm.outQueParams[0].nextLink  = ipcInVpssEncId;
		ipcOutVideoEncPrm.notifyNextLink            = TRUE;
		ipcOutVideoEncPrm.notifyPrevLink            = FALSE;
		ipcOutVideoEncPrm.noNotifyMode              = FALSE;

		ipcInVpssEncPrm.inQueParams.prevLinkId      = ipcOutVideoEncId;
		ipcInVpssEncPrm.inQueParams.prevLinkQueId   = 0;
		ipcInVpssEncPrm.numOutQue                   = 1;
		ipcInVpssEncPrm.outQueParams[0].nextLink    = selId;
		ipcInVpssEncPrm.notifyNextLink              = TRUE;
		ipcInVpssEncPrm.notifyPrevLink              = TRUE;//modify
		ipcInVpssEncPrm.noNotifyMode                = FALSE;


        selPrm.inQueParams.prevLinkId       = ipcInVpssEncId;
        selPrm.inQueParams.prevLinkQueId    = 0;
        selPrm.numOutQue                    = chainsCfg->chRecNum;
        selPrm.outQueParams[0].nextLink     = swMsId[0];
        selPrm.outQueChInfo[0].outQueId     = 0;
        selPrm.outQueChInfo[0].numOutCh     = 1;
        selPrm.outQueChInfo[0].inChNum[0]   = 0;
        selPrm.outQueParams[1].nextLink     = swMsId[1];
        selPrm.outQueChInfo[1].outQueId     = 1;
        selPrm.outQueChInfo[1].numOutCh     = 1;
        selPrm.outQueChInfo[1].inChNum[0]   = 1;

        for (i=0; i<chainsCfg->chRecNum; i++) {
            swMsPrm[i].numSwMsInst               = 1;
            swMsPrm[i].swMsInstId[0]             = (i!=0) ? SYSTEM_SW_MS_SC_INST_VIP1_SC : SYSTEM_SW_MS_SC_INST_DEI_SC_NO_DEI;
            swMsPrm[i].inQueParams.prevLinkId    = selId;
            swMsPrm[i].inQueParams.prevLinkQueId = i;
            swMsPrm[i].outQueParams.nextLink     = displayId[i];
            swMsPrm[i].lineSkipMode              = FALSE;
            swMsPrm[i].enableLayoutGridDraw      = TRUE;
            swMsPrm[i].layoutPrm.outputFPS       = chainsCfg->chCfg[i + chainsCfg->chCapNum].encFrameRate;
            swMsPrm[i].maxInputQueLen            = SYSTEM_SW_MS_DEFAULT_INPUT_QUE_LEN;
            swMsPrm[i].maxOutRes                 = chainsCfg->displayRes[i];
            swMsPrm[i].numOutBuf                 = 0;
            Chains_swMsGenerateLayoutParams(i, 2, &swMsPrm[i]);

            displayPrm[i].numInputQueues                = 1;
            displayPrm[i].activeQueue                   = 0;
            displayPrm[i].inQueParams[0].prevLinkId     = swMsId[i];
            displayPrm[i].inQueParams[0].prevLinkQueId  = 0;
            displayPrm[i].displayRes                    = chainsCfg->displayRes[i];
            displayPrm[i].displayId                    	= DISPLAY_LINK_DISPLAY_AUTO_SELECT;
            displayPrm[i].forceFieldSeparatedInputMode  = FALSE;

        }
     }

     /*
      * Create Links
      */
	if (chainsCfg->chCapNum > 0)
	{
		System_linkCreate(captureId, &capturePrm, sizeof(capturePrm));
                System_linkCreate(deiId, &deiPrm, sizeof(deiPrm));
		//System_linkCreate(dupId, &dupPrm, sizeof(dupPrm));
		System_linkCreate(ipcOutVpssId, &ipcOutVpssPrm, sizeof(ipcOutVpssPrm));
		System_linkCreate(ipcInVideoId, &ipcInVideoPrm, sizeof(ipcInVideoPrm));
		System_linkCreate(encId, &encPrm, sizeof(encPrm));
		System_linkCreate(ipcBitsOutVideoId, &ipcBitsOutVideoPrm, sizeof(ipcBitsOutVideoPrm));
		System_linkCreate(ipcBitsInHostId, &ipcBitsInHostPrm, sizeof(ipcBitsInHostPrm));
	}

    if (chainsCfg->chRecNum > 0)
    {
        System_linkCreate(ipcBitsOutHostId,&ipcBitsOutHostPrm,sizeof(ipcBitsOutHostPrm));
        System_linkCreate(ipcBitsInVideoId,&ipcBitsInVideoPrm,sizeof(ipcBitsInVideoPrm));
        System_linkCreate(decId, &decPrm, sizeof(decPrm));
        System_linkCreate(ipcOutVideoEncId, &ipcOutVideoEncPrm, sizeof(ipcOutVideoEncPrm));
        System_linkCreate(ipcInVpssEncId, &ipcInVpssEncPrm, sizeof(ipcInVpssEncPrm));
        //System_linkCreate(dupEncId, &dupEncPrm, sizeof(dupEncPrm));
        System_linkCreate(selId, &selPrm, sizeof(selPrm));
        for(i=0; i<chainsCfg->chRecNum; i++)
        {
            System_linkCreate(swMsId[i], &swMsPrm[i], sizeof(swMsPrm[i]));
            System_linkCreate(displayId[i], &displayPrm[i], sizeof(displayPrm[i]));
        }
    }

	 /*
	  * Start Links
	  */
	if (chainsCfg->chCapNum > 0)
	{
		System_linkStart(ipcBitsInHostId);
		System_linkStart(ipcBitsOutVideoId);
		System_linkStart(encId);
		System_linkStart(ipcInVideoId);
		System_linkStart(ipcOutVpssId);
		//System_linkStart(dupId);
                System_linkStart(deiId);//by ct
		System_linkStart(captureId);
		Vcap_init(&prm);
		Vcap_start();
	}

	if (chainsCfg->chRecNum > 0)
    {
		for(i=0; i<chainsCfg->chRecNum; i++)
		{
			System_linkStart(displayId[i]);
		}
		Vdis_start();
		for(i=0; i<chainsCfg->chRecNum; i++)
		{
			System_linkStart(swMsId[i]);
		}
		//System_linkStart(dupEncId);
        System_linkStart(selId);
		System_linkStart(ipcInVpssEncId);
		System_linkStart(ipcOutVideoEncId);
		System_linkStart(decId);
		System_linkStart(ipcBitsInVideoId);
		System_linkStart(ipcBitsOutHostId);
	}


	while(1)
	{
		char ch;
		//ch = Chains_SelCapSelRecvmenu();
          ch = Chains_menuRunTime();
		if(ch=='0')
			break;


	}


	Chains_ipcBitsStop();

	 if (chainsCfg->chCapNum > 0) {
		 System_linkStop(captureId);
                 
		 Vcap_stop();
                 System_linkStop(deiId);
		 System_linkStop(dupId);
		 System_linkStop(ipcOutVpssId);
		 System_linkStop(ipcInVideoId);
		 System_linkStop(encId);
		 System_linkStop(ipcBitsOutVideoId);
		 System_linkStop(ipcBitsInHostId);
	 }

	 if (chainsCfg->chRecNum > 0) {
		 System_linkStop(ipcBitsOutHostId);
		 System_linkStop(ipcBitsInVideoId);
		 System_linkStop(decId);
		 System_linkStop(ipcOutVideoEncId);
		 System_linkStop(ipcInVpssEncId);
		 //System_linkStop(dupEncId);
         System_linkStop(selId);
		 for(i=0; i<chainsCfg->chRecNum; i++){
			 System_linkStop(swMsId[i]);
			 System_linkStop(displayId[i]);
		 }
		 Vdis_stop();
	 }

	 if (chainsCfg->chCapNum > 0) {
		 System_linkDelete(captureId);
                 System_linkDelete(deiId);  //by ct
		 System_linkDelete(dupId);
		 System_linkDelete(ipcOutVpssId);
		 System_linkDelete(ipcInVideoId);
		 System_linkDelete(encId);
		 System_linkDelete(ipcBitsOutVideoId);
		 System_linkDelete(ipcBitsInHostId);
	 }

	 if (chainsCfg->chRecNum > 0) {
		 System_linkDelete(ipcBitsOutHostId);
		 System_linkDelete(ipcBitsInVideoId);
		 System_linkDelete(decId);
		 System_linkDelete(ipcOutVideoEncId);
		 System_linkDelete(ipcInVpssEncId);
		 //System_linkDelete(dupEncId);
		 System_linkDelete(selId);
		 for(i=0; i<chainsCfg->chRecNum; i++){
			 System_linkDelete(swMsId[i]);
			 System_linkDelete(displayId[i]);
		 }

		 Chains_displayCtrlDeInit();
	 }

	 Chains_ipcBitsExit();
}

结果出现了错误:unhandle exception

追踪代码出现在deiLink_drc.c 中DeiLink_drvReleaseFrames()中的System_sendLinkCmd()中,

麻烦各位帮忙看一下上面的哪些配置是错误的,到底该怎么配置才能让视频通过dei模块? 谢谢!


  • 你好,

    你能否尝试修改capture link的输出数据格式为pCaptureOutPrm->dataFormat          = SYSTEM_DF_YUV422I_YUYV;,看是否有帮助?

  •      改动这个参数设置试过了,还是有错误,错误也没有变。附件是打印信息。

    *** Bootargs Validated for mem param ***
    *** Bootargs Validated for notifyk.vpssm3 params ***
    Kernel bootargs validated
    numid=101,iface=MIXER,name='Left PGA Mixer Line2L Switch'
    ; type=BOOLEAN,access=rw------,values=1
    : values=on
    numid=99,iface=MIXER,name='Left PGA Mixer Line1L Switch'
    ; type=BOOLEAN,access=rw------,values=1
    : values=on
    [c6xdsp ] Remote Debug Shared Memory @ 0xbfff0000
    [m3video] Remote Debug Shared Memory @ 0xbfff5020
    [m3vpss ] Remote Debug Shared Memory @ 0xbfffa040
    SysLink version : 2.20.02.20
    SysLink module created on Date:Jun 4 2015 Time:20:23:45
    Trace enabled
    Trace SetFailureReason enabled
    Setting L3 bandwidth regulator for [HDVICP0 ] to [press=[3,3] BW=2000, WM Cycl]
    Setting DMM priority for [DUCATI ] to [0] ( 0x4e000624 = 0x08000000 )
    Setting DMM priority for [HDVICP0 ] to [2] ( 0x4e000634 = 0x0000000a )
    Attached to slave procId 1.
    Loaded file ../firmware/dvr_rdk_fw_m3vpss_512M_128M.xem3 on slave procId 1.
    Started slave procId 1.
    After Ipc_loadcallback status [0x00000000]
    [m3vpss ] ISS Freq : 560 MHz
    After Ipc_startcallback status [0x00000000]
    [m3vpss ] ***** VPSS Firmware build time 10:56:26 Feb 26 2016 EDG gcc 3.0 mode
    [m3vpss ] ***** SYSTEM : Frequency <ORG> - 200000000, <NEW> - 280000000
    [m3vpss ] notify_attach rtnVal 0
    [m3vpss ] initProxyServer rtnVal 0
    [m3vpss ]
    [m3vpss ] *** UTILS: CPU KHz = 560000 Khz ***
    [m3vpss ]
    [m3vpss ] 38: SYSTEM : System Common Init in progress !!!
    [m3vpss ] 38: SYSTEM: IPC init in progress !!!
    [m3vpss ] 38: SYSTEM: Attaching to [HOST] ...
    [m3vpss ] 40: SYSTEM: Attaching to [HOST] ... SUCCESS !!!
    Attached to slave procId 0.
    Loaded file ../firmware/dvr_rdk_fw_m3video_512M_128M.xem3 on slave procId 0.
    Started slave procId 0.
    After Ipc_loadcallback status [0x00000000]
    [m3video] ISS Freq : 560 MHz
    After Ipc_startcallback status [0x00000000DMA: Module install successful, devic
    ]
    [m3vpss ] 1DRV: Module install successful
    14: SYSTEM: AttaDRV: Module built on Jun 4 2015 20:24:23
    ching to [VIDEO-M3] ... SUCCESS !!!
    [m3video] ***** VIDEO Firmware build time 10:57:29 Feb 26 2016 EDG gcc 3.0 moe
    [m3vpss ] 114: SYSTEM: Creating MsgQ Heap [IPC_MSGQ_MSG_HEAP_2] ...
    [m3video] ***** SYSTEM : Frequency <ORG> - 200000000, <NEW> - 280000000
    [m3vpss ] 114: SYSTEM: Creating MsgQ [VPSS-M3_MSGQ] ...
    [m3video]
    [m3vpss ] 115: SYSTEM: Creating MsgQ [VPSS-M3_ACK_MSGQ] ...
    [m3video] *** UTILS: CPU KHz = 560000 Khz ***
    [m3vpss ] 116: SYSTEM: Notify register to [HOST] line 0, event 15 ...
    [m3video]
    [m3vpss ] 117: SYSTEM: Notify register to [VIDEO-M3] line 0, event 15 ...
    [m3video] 108: SYSTEM : System Common Init in progress !!!
    [m3vpss ] 117: SYSTEM: IPC init DONE !!!
    [m3video] 108: SYSTEM: IPC init in progress !!!
    [m3video] 108: SYSTEM: Attaching to [HOST] ...
    [m3video] 111: SYSTEM: Attaching to [HOST] ... SUCCESS !!!
    [m3video] 114: SYSTEM: Attaching to [VPSS-M3] ... SUCCESS !!!
    [m3video] 114: SYSTEM: Creating MsgQ Heap [IPC_MSGQ_MSG_HEAP_1] ...
    [m3video] 114: SYSTEM: Creating MsgQ [VIDEO-M3_MSGQ] ...
    [m3video] 115: SYSTEM: Creating MsgQ [VIDEO-M3_ACK_MSGQ] ...
    [m3video] 116: SYSTEM: Notify register to [HOST] line 0, event 15 ...
    [m3video] 117: SYSTEM: Notify register to [VPSS-M3] line 0, event 15 ...
    [m3video] 117: SYSTEM: IPC init DONE !!!
    [m3video] 123: MEM: Shared Region 2: Base = 0xb6400000, Length = 0x09210000 (
    [m3vpss ] 123: MEM: Shared Region 2: Base = 0xb6400000, Length = 0x09210000 (
    [m3video] 123: MEM: ERROR: SharedRegion_setEntry (2, 0x2ec33200) FAILED !!!
    [m3vpss ] 123: MEM: Shared Region 1: Base = 0x88000000, Length = 0x05a00000 (
    [m3vpss ] 125: SYSTEM : System Common Init Done !!!
    [m3vpss ] 125: SYSTEM : System VPSS Init in progress !!!
    [m3vpss ] 125: SYSTEM: All VPDMA Free !!!
    [m3vpss ] === I2C0/2 Clk is active ===
    [m3vpss ] 130: SYSTEM: Creating ListMP [VPSS-M3_IPC_OUT_0] in region 0 ...
    [m3vpss ] 130: SYSTEM: Creating ListMP [VPSS-M3_IPC_IN_0] in region 0 ...
    [m3vpss ] 131: SYSTEM: ListElem Shared Addr = 0xbf704680
    [m3vpss ] 133: SYSTEM: Creating ListMP [VPSS-M3_IPC_OUT_1] in region 0 ...
    [m3vpss ] 133: SYSTEM: Creating ListMP [VPSS-M3_IPC_IN_1] in region 0 ...
    [m3vpss ] 133: SYSTEM: ListElem Shared Addr = 0xbf707b80
    [m3vpss ] 149: SYSTEM: Creating ListMP [VPSS-M3_IPC_OUT_19] in region 0 ...
    [m3vpss ] 149: SYSTEM: Creating ListMP [VPSS-M3_IPC_IN_19] in region 0 ...
    [m3vpss ] 149: SYSTEM: ListElem Shared Addr = 0xbf70b080
    [m3vpss ] 152: SYSTEM: Creating ListMP [VPSS-M3_IPC_OUT_20] in region 0 ...
    [m3vpss ] 152: SYSTEM: Creating ListMP [VPSS-M3_IPC_IN_20] in region 0 ...
    [m3vpss ] 152: SYSTEM: ListElem Shared Addr = 0xbf730880
    [m3vpss ] 155: SYSTEM: Creating ListMP [VPSS-M3_IPC_OUT_21] in region 0 ...
    [m3vpss ] 155: SYSTEM: Creating ListMP [VPSS-M3_IPC_IN_21] in region 0 ...
    [m3vpss ] 155: SYSTEM: ListElem Shared Addr = 0xbf756080
    [m3vpss ] 157: SYSTEM : HDVPSS Drivers Version: HDVPSS_01_00_01_37
    [m3vpss ] 157: SYSTEM : FVID2 Init in progress !!!
    [c6xdsp ] Remote Debug Shared Memory @ 0xbfff0000
    [m3video] Remote Debug Shared Memory @ 0xbfff5020
    [m3vpss ] Remote Debug Shared Memory @ 0xbfffa040
    [m3vpss ] 234: SYSTEM : FVID2 Init in progress DONE !!!
    [m3vpss ] 234: SYSTEM : Device Init in progress !!!
    [m3vpss ] 316: SYSTEM : Device Init in progress DONE !!!
    [m3vpss ] HDVPSS Freq : 240 MHz
    [m3vpss ] 356: SYSTEM : System VPSS Init Done !!!
    [m3vpss ] 356: UTILS: DMA: HWI Create for INT63 !!!
    [m3vpss ] 357: SYSTEM : Initializing Links !!!
    [m3vpss ] 357: SYSTEM : FREE SPACE : System Heap = 251488 B, Mbx = 1024
    [m3vpss ] 357: SYSTEM : FREE SPACE : SR0 Heap = 5852544 B (5 MB)
    [m3vpss ] 357: SYSTEM : FREE SPACE : Frame Buffer = 148847488 B (141 MB)
    [m3vpss ] 357: SYSTEM : FREE SPACE : Bitstream Buffer = 94371712 B (89 MB)
    [m3vpss ] TILER_STATS: CNT :8BIT
    [m3vpss ] TILER_STATS: CNT RESOLUTION: 16384 x 3840
    [m3vpss ] TILER_STATS: BUCKET RESOLUTION: 16384 x 3836
    [m3vpss ] TILER_STATS: NUM FREE BUCKETS: 1
    [m3vpss ] Received character 's'
    [m3vpss ] TILER_STATS: NUM USED BUCKETS: 0
    [c6xdsp ] Remote Debug Shared Memory @ 0xbfff0000
    [m3video] Remote Debug Shared Memory @ 0xbfff5020
    [m3vpss ] Remote Debug Shared Memory @ 0xbfffa040
    [m3vpss ] TILER_STATS: TOTAL FREE AREA: 62849024 (99 %)
    [m3vpss ] TILER_STATS: TOTAL USED AREA: 0 (0 %)
    [m3vpss ] TILER_STATS: CNT :16BIT
    [m3vpss ] TILER_STATS: CNT RESOLUTION: 32768 x 1280
    [m3vpss ] TILER_STATS: BUCKET RESOLUTION: 32768 x 1280
    [m3vpss ] TILER_STATS: NUM FREE BUCKETS: 1
    [m3vpss ] TILER_STATS: NUM USED BUCKETS: 0
    [m3vpss ] TILER_STATS: TOTAL FREE AREA: 41943040 (100 %)
    [m3vpss ] TILER_STATS: TOTAL USED AREA: 0 (0 %)
    [m3vpss ] 359: SYSTEM : FREE SPACE : Tiler 8-bit = 62849024 B (59 MB)
    [m3vpss ] 359: SYSTEM : FREE SPACE : Tiler 16-bit = 41943040 B (40 MB)
    [m3vpss ] 493: SYSTEM : Initializing Links ... DONE !!!
    [m3vpss ] 493: SYSTEM : Set Static L3 pressure for HDVPSS as High
    [m3video] 1123: MEM: Shared Region 1: Base = 0x88000000, Length = 0x05a00000
    [m3video] 1125: SYSTEM : System Common Init Done !!!
    [m3video] 1125: SYSTEM : System Video Init in progress !!!
    [m3video] 1125: SYSTEM : System Video Init Done !!!
    [m3video] 1126: SYSTEM: Creating ListMP [VIDEO-M3_IPC_OUT_0] in region 0 ...
    [m3video] 1126: SYSTEM: Creating ListMP [VIDEO-M3_IPC_IN_0] in region 0 ...
    [m3video] 1126: SYSTEM: ListElem Shared Addr = 0xbf77b880
    [m3video] 1129: SYSTEM: Creating ListMP [VIDEO-M3_IPC_OUT_1] in region 0 ...
    [m3video] 1129: SYSTEM: Creating ListMP [VIDEO-M3_IPC_IN_1] in region 0 ...
    [m3video] 1129: SYSTEM: ListElem Shared Addr = 0xbf77ed80
    [m3video] 1135: SYSTEM: Creating ListMP [VIDEO-M3_IPC_OUT_19] in region 0 ...
    [m3video] 1135: SYSTEM: Creating ListMP [VIDEO-M3_IPC_IN_19] in region 0 ...
    [m3video] 1136: SYSTEM: ListElem Shared Addr = 0xbf782280
    [m3video] 1138: SYSTEM: Creating ListMP [VIDEO-M3_IPC_OUT_20] in region 0 ...
    [m3video] 1138: SYSTEM: Creating ListMP [VIDEO-M3_IPC_IN_20] in region 0 ...
    [m3video] 1138: SYSTEM: ListElem Shared Addr = 0xbf7a7a80
    [m3video] 1141: SYSTEM: Creating ListMP [VIDEO-M3_IPC_OUT_21] in region 0 ...
    [m3video] 1141: SYSTEM: Creating ListMP [VIDEO-M3_IPC_IN_21] in region 0 ...
    [m3video] 1141: SYSTEM: ListElem Shared Addr = 0xbf7cd280
    [m3video] 1156: SYSTEM: Creating ListMP [VIDEO-M3_IPC_OUT_24] in region 0 ...
    [m3video] 1156: SYSTEM: Creating ListMP [VIDEO-M3_IPC_IN_24] in region 0 ...
    [m3video] 1157: SYSTEM: ListElem Shared Addr = 0xbf7f2a80
    [m3video] 1159: SYSTEM: Creating ListMP [VIDEO-M3_IPC_OUT_25] in region 0 ...
    [m3video] 1159: SYSTEM: Creating ListMP [VIDEO-M3_IPC_IN_25] in region 0 ...
    [m3video] 1159: SYSTEM: ListElem Shared Addr = 0xbf810580
    [m3video] 1161: HDVICP: Doing PRCM for IVAHD[0] ...
    [m3video] 1161:[module] vpss probe done.
    HDVICP: PRCM for IVAHD[0] ... DONE.
    [m3video] 1162: UTILS: DMA: HWI Create for INT62 !!!
    [m3video] 1163: SYSTEM : ISS Init in progress !!!
    [m3video] 1163: SYSTEM : ISS Power-ON in progress !!!
    [m3video] 1172: SYSTEM : ISS Power-ON in progress DONE !!!
    [m[module] ti81xxfb probe done.
    3video] 1173: SYSTEM : ISS Init in progress DONE !!!
    [m3video] 1173: VCOP BOOST BIT is Set
    [m3video] 1173: SYSTEM : VCOP Init in progress !!!
    [m3video] 1173: SYSTEM : VCOP needs 172 B of memory !!!
    [m3video] 1174: SYSTEM : VCOP Init in progress DONE !!!
    [m3video] 1174: SYSTEM : Initializing Links !HDMI W1 rev 4.0
    !!
    [m3video] HDMI CEC Spec version 1.2
    1174: SYSTEM : FREE SPACE : System Heap = 6264504 B, Mbx = 10240 msgs)
    [m3vpss ] TILER_STATS: CNT :8BIT
    [m3video] 1174: SYSTEM : FREE SPACE : SR0 Heap = 5121408 B (4 MB)
    [m3vpss ] TILER_STATS: CNT RESOLUTION: 16384 x 3840
    [m3video] 1175: SYSTEM : FREE SPACE : Frame Buffer = 148847488 B (141 MB
    [m3vpss ] TILER_STATS: BUCKET RESOLUTION: 16384 x 3836
    [m3video] 1175: SYSTEM : FREE SPACE : Bitstream Buffer = 94371712 B (89 MB)
    [m3vpss ] TILER_STATS: NUM FREE BUCKETS: 1
    [m3video] 1175: SYSTEM: Opening MsgQ [VPSS-M3_MSGQ] ...
    [m3video] 1177: SYSTEM : FREE SPACE : Tiler 8-bit = 62849024 B (59 MB)
    [m3vpss ] TILER_STATS: NUM USED BUCKETS: 0
    [m3video] 1177: SYSTEM : FREE SPACE : Tiler 16-bit = 41943040 B (40 MB)
    [m3vpss ] TILER_STATS: TOTAL FREE AREA: 62849024 (99 %)
    [m3vpss ] TILER_STATS: TOTAL USED AREA: 0 (0 %)
    [m3video] 1231: SYSTEM : Initializing Links ... DONE !!!
    [m3video] Received character 's'
    /home/root/rtp_encode_720p
    [m3vpss ] TILER_STATS: CNT :16BIT
    [m3vpss ] TILER_STATS: CNT RESOLUTION: 32768 x 1280
    [m3vpss ] TILER_STATS: BUCKET RESOLUTION: 32768 x 1280
    [m3vpss ] TILER_STATS: NUM FREE BUCKETS: 1
    [m3vpss ] TILER_STATS: NUM USED BUCKETS: 0
    [m3vpss ] TILER_STATS: TOTAL FREE AREA: 41943040 (100 %)
    [m3vpss ] TILER_STATS: TOTAL USED AREA: 0 (0 %)
    I2C No Ack

    HDMI failed to read E-EDID

    ORG 0x46c00524: 0
    NEW 0x46c00524: 2

    0: SYSTEM: System Common Init in progress !!!
    4: SYSTEM: IPC init in progress !!!
    71: SYSTEM: CPU [DSP] is NOT available on this platform !!!
    71: SYSTEM: CPU [VIDEO-M3] syslink proc ID is [0] !!!
    71: SYSTEM: CPU [VPSS-M3] syslink proc ID is [1] !!!
    71: SYSTEM: CPU [HOST] syslink proc ID is [2] !!!
    77: SYSTEM: Creating MsgQ Heap [IPC_MSGQ_MSG_HEAP_3] ...
    88: SYSTEM: Creating MsgQ [HOST_MSGQ] ...
    89: SYSTEM: Creating MsgQ [HOST_ACK_MSGQ] ...
    90: SYSTEM: Opening MsgQ [VIDEO-M3_MSGQ] ...
    90: SYSTEM: Opening MsgQ [VPSS-M3_MSGQ] ...
    91: SYSTEM: Notify register to [VIDEO-M3] line 0, event 15 ...
    93: SYSTEM: Notify register to [VPSS-M3] line 0, event 15 ...
    94: SYSTEM: IPC init DONE !!!
    108: SYSTEM: Creating ListMP [HOST_IPC_OUT_24] in region 0 ...
    109: SYSTEM: Creating ListMP [HOST_IPC_IN_24] in region 0 ...
    110: SYSTEM: ListElem Shared Addr = 0x40569300
    111: SYSTEM: Creating ListMP [HOST_IPC_OUT_25] in region 0 ...
    112: SYSTEM: Creating ListMP [HOST_IPC_IN_25] in region 0 ...
    113: SYSTEM: ListElem Shared Addr = 0x4059e500
    118: SYSTEM: Creating ListMP [HOST_IPC_OUT_19] in region 0 ...
    120: SYSTEM: Creating ListMP [HOST_IPC_IN_19] in region 0 ...
    121: SYSTEM: ListElem Shared Addr = 0x405d3700
    122: SYSTEM: Creating ListMP [HOST_IPC_OUT_20] in region 0 ...
    123: SYSTEM: Creating ListMP [HOST_IPC_IN_20] in region 0 ...
    124: SYSTEM: ListElem Shared Addr = 0x40616a00
    125: SYSTEM: Creating ListMP [HOST_IPC_OUT_21] in region 0 ...
    126: SYSTEM: Creating ListMP [HOST_IPC_IN_21] in region 0 ...
    127: SYSTEM: ListElem Shared Addr = 0x40659d00
    147: SYSTEM: System Common Init Done !!!


    1: Select Cap + Enc or Select Dec + Dis (VIP: 1x Sii9233a)

    s: System Settings

    x: Exit

    Enter Choice: 1


    Enter Number of capture channel encode [Valid values, 0 .. 1] : 1`

    Entered value = 1


    Enter Number of Net channel decode [Valid values, 0 .. 1] : 0

    Entered value = 0


    [host] Video standard:
    0: auto detect
    1: 1920x1080P60
    2: 1920x1080P50
    3: 1920x1080P30
    4: 1920x1080P25
    5: 1920x1080P24
    6: 1920x1080I60
    7: 1920x1080I50
    8: 1280x720P60
    9: 1280x720P50
    10: 1280x720P30
    11: 1280x720P25
    12: 1280x720P24
    13: 720x576P50
    14: 720x576I50
    15: 720x480P60
    16: 720x480I60
    17: WUXGA(1920x1200)60
    18: UXGA+(1600*1200)60
    19: SXGA+(1400*1050)60
    20: WXGA(1360*768)60
    21: SXGA(1280*1024)60
    22: WXGA(1280*768)60
    23: XGA(1024*768)60
    24: SVGA(800*600)60
    25: VGA(640*480)60
    26: D1(720*576)30
    27: D1(720*576)25
    28: CIF(352*240)60
    29: CIF(352*240)60

    Enter Input video standard [Valid values, 0 .. 29] : 13

    Entered value = 13


    Enter Output video standard [Valid values, 0 .. 29] :

    WARNING: Invalid value specified, defaulting to value of = 1


    Enter transfer protocol <1-tcp 2-rtsp> [Valid values, 1 .. 2] : 2

    Entered value = 2


    Enter encode format <1-H264HP 2-H264MP 3-H264BP 4-MJPEG> [Valid values, 1 .. 41

    Entered value = 1


    Enter target frame rate [Valid values, 1 .. 60] : 50

    Entered value = 50


    Enter intra frame interval [Valid values, 1 .. 60000] :

    WARNING: Invalid value specified, defaulting to value of = 60


    Enter bit rate control algorithm <0-VBR 1-CBR> [Valid values, 0 .. 1] : 1

    Entered value = 1


    Enter bit rate (unit:kbps) [Valid values, 1 .. 40000] :

    WARNING: Invalid value specified, defaulting to value of = 8000


    [host] CHAINS:Enable file write :(y -- yes/n -- no):n

    [host] CHAINS_IPCBITS:Chains_ipcBitsRecvToFileFxn:Entered...
    [host] server command: /home/root/rtsp_server -f /tmp/serverCh0.h264 -n avstre&
    sh: /home/root/rtsp_server: No such file or directory

    [host] Open file /tmp/serverCh0.h264, fd = 20 [m3vpss ] ***********************
    [m3vpss ] 16878: CAPTURE: Create in progress !!!
    [m3vpss ] 16889: CAPTURE: VIP0 PortA capture mode is [ 8-bit, Non-mux Embedde
    [m3vpss ] UTILS: DMA: Allocated CH (TCC) = 58 (58)
    [m3vpss ] UTILS: DMA: 0 of 4: Allocated PaRAM = 58 (0x49004740)
    [m3vpss ] UTILS: DMA: 1 of 4: Allocated PaRAM = 64 (0x49004800)
    [m3vpss ] UTILS: DMA: 2 of 4: Allocated PaRAM = 65 (0x49004820)
    [m3vpss ] UTILS: DMA: 3 of 4: Allocated PaRAM = 66 (0x49004840)
    [m3video] 16905: IPC_IN_M3 : Create in progress !!!
    [m3video] 16905: SYSTEM: Opening ListMP [VPSS-M3_IPC_OUT_0] ...
    [m3vpss ] CAPTURE::HEAPID:0 USED:328
    [m3video] 16905: SYSTEM: Opening ListMP [VPSS-M3_IPC_IN_0] ...
    [m3vpss ] 16892: CAPTURE: Create Done !!!
    [m3vpss ] 16893: DEI : Create in progress !!!

    [host] IpcBitsInLink_tskMain:Entered
    [host] 13699: IPC_BITS_IN : Create in progress !!!

    [host] 13699: IPC_BITS_IN : ListMPOpen start !!!

    [host] 13699: SYSTEM: Opening ListMP [VIDEO-M3_IPC_OUT_24] ...
    13701: SYSTEM: Opening ListMP [VIDEO-M3_IPC_IN_24] ...
    [m3video] 16908: IPC_IN_M3 : Create Done !!!
    [m3vpss ] *********************dei**********************************

    [host] 13702: IPC_BITS_IN : ListMPOpen done !!!
    [m3vpss ]
    [m3vpss ] DEI:ALLOCINFO:CTXBUF:MVBUF:ChId[0]/BufCnt[0]/Size[55296]
    [m3vpss ] DEI:ALLOCINFO:CTXBUF:MVBUF:ChId[0]/BufCnt[1]/Size[55296]
    [m3vpss ] 16903: DEI : Loading Up-scaling Co-effs
    [m3video] 16908: ENCODE: Create in progress ... !!!
    [m3vpss ] 16903: DEI : Co-effs Loading ... DONE !!!
    [m3video] 16912: ENCODE: All CH Create ... DONE !!!

    [host] 13703: IPC_BITS_IN : System_linkGetInfo done !!!

    [host] 13703: IPC_BITS_IN : Create Done !!!
    [m3vpss ] DEI:HEAPID:0 USED:64
    [m3video] ENCLINK:HEAPID:0 USED:40
    [m3vpss ] DEI:HEAPID:1 USED:5040
    [m3video] 16912: ENCODE: Create ... DONE !!!
    [m3vpss ] DEI:HEAPID:4 USED:1631232
    [m3video] 16913: IPC_BITS_OUT : Create in progress !!!
    [m3vpss ] 16903: DEI : Create Done !!!
    [m3vpss ]
    [m3vpss ] DEI: Channel Enable/Disable in progress ... !!!
    [m3vpss ] 16904: IPC_OUT_M3 : Create in progress !!!
    [m3video] 16915: IPC_BITS_OUT : Create Done !!!
    [m3vpss ] 16905: IPC_OUT_M3 : Create Done !!!
    [m3vpss ] ************************2016_cmd=1*********
    [m3vpss ] ************pObj->6,1********
    [m3vpss ] ************pObj->6********
    [m3vpss ] ************pObj->0********
    [m3vpss ] ************pObj->0********
    [m3vpss ] 16923: CAPTURE: Start in progress !!!
    [m3vpss ] 17023: CAPTURE: Enabled Time Stamping !!!
    [m3vpss ] 17031: CAPTURE: Overflow detected on VIP0, Total Resets = 1
    [m3vpss ] 17031: CAPTURE: Overflow detected on VIP1, Total Resets = 1
    [m3vpss ] 17047: CAPTURE: Start Done !!!
    ASSERT (ti_vcap_device.c|Vcap_deviceCreate|161)
    [m3vpss ] CAPTURE : Capture FPS: 0.0 fps ... in 4294950.3 secs
    ^Croot@ti81xx:~# ./tvp5150_ [m3vpss ] CAPTURE : Capture FPS: 0.0 fps ... in 10s
    xin.sh
    root@ti81xx:~# [m3vpss ] ****************dei queue 3**********
    [m3vpss ] ****************dei queue 4**********
    [m3vpss ] 28976: DEI : Submitting 1 frames !!!
    [m3vpss ] 28976: DEI : Loading Up-scaling Co-effs
    [m3vpss ] 28976: DEI : Co-effs Loading ... DONE !!!
    [m3vpss ] ****************dei queue**********
    [m3vpss ] 28977: DEI : Completed 1 frames !!!
    [m3vpss ] ***********************dei 3*******************
    [m3vpss ] *********************dei release 8107***************************
    [m3vpss ] 28978: DEI : Released 1 IN frames !!!
    [m3vpss ] ***************************dei -1************************************
    [m3vpss ] ***************************dei -3************************************
    [m3vpss ] ***************************dei -4************************************
    [m3vpss ] ***************************dei -7************************************
    [m3vpss ] ***************************dei -5************************************
    [m3vpss ] Unhandled Exception:
    [m3vpss ] Exception occurred in ThreadType_Task
    [m3vpss ] handle: 0x2fb8dd70.
    [m3vpss ] stack base: 0x2fe67020.
    [m3vpss ] stack size: 0x8000.
    [m3vpss ] R0 = 0x00000040 R8 = 0x68004808
    [m3vpss ] R1 = 0x00000000 R9 = 0x2fe378dc
    [m3vpss ] R2 = 0x00000010 R10 = 0x8f00a270
    [m3vpss ] R3 = 0x00000000 R11 = 0x2fe6ee38
    [m3vpss ] R4 = 0x2c01c6b4 R12 = 0x00000000
    [m3vpss ] R5 = 0x2fe36680 SP(R13) = 0x2fe6ee28
    [m3vpss ] R6 = 0x2fe3a2e8 LR(R14) = 0x8edb06df
    [m3vpss ] R7 = 0x00000002 PC(R15) = 0x8ed440e6
    [m3vpss ] PSR = 0x21000000
    [m3vpss ] ICSR = 0x0440f803
    [m3vpss ] MMFSR = 0x00
    [m3vpss ] BFSR = 0x82
    [m3vpss ] UFSR = 0x0000
    [m3vpss ] HFSR = 0x40000000
    [m3vpss ] DFSR = 0x00000000
    [m3vpss ] MMAR = 0x68004824
    [m3vpss ] BFAR = 0x68004824
    [m3vpss ] AFSR = 0x00000000
    [m3vpss ] Terminating Execution...

  • Chen,

    你在帖子里提到你的硬件上采集使用的是VIP1 PORTA,但软件里面配置的却是SYSTEM_CAPTURE_INST_VIP0_PORTA,在这点上你是否能再确认一下。

    DEI输出使用的SC是否会和你采集的通道有冲突?

  • Chris,

          谢谢你的回答,硬件上采集使用的是VIP0 PORTA ,  

          dei输出使用的sc与采集通道并没有冲突,

         

  • Chen Chentie,

    从下面的log看,是采集出现了Assert,能检查一下原因么?

    ASSERT (ti_vcap_device.c|Vcap_deviceCreate|161)
    [m3vpss ] CAPTURE : Capture FPS: 0.0 fps ... in 4294950.3 secs
    ^Croot@ti81xx:~# ./tvp5150_ [m3vpss ] CAPTURE : Capture FPS: 0.0 fps ... in 10s
    xin.sh

  • Chris Meng,

        感谢您的持续回复,希望您能继续关注我的贴子。我们的视频采集是没有问题的,这个功能是我们验证过的,log信息中出现的断言错误以及采集出现的0帧视频只是开始显示的问题,我们确定采集是可以正常进行的,我们跟踪代码发现出现错误是在deilink_drv.c里DeiLink_drvSubmitData()函数里执行下面内容时出错。

    /* VIP was reset since last frame processing, so we need to
    * reload VIP-SC co-effs */
    DeiLink_drvSetScCoeffs(pObj, FALSE);

  • Chen Chentie,

    DEI是输入50场,输出50帧,下面的配置请修改一下,看是否有帮助。

        deiPrm.inputDeiFrameRate                             =25u;
        deiPrm.outputDeiFrameRate                             =25u;

  • 这个已经试过,问题换是没有解决

  • Chen Chentie,

    请问你输入的是PAL还是NTSC的图像?抱歉之前描述有误,如果是PAL,DEI输入是50场,输出50帧。如果使能第二路输出,可以两路分别25帧。

    如果输入是PAL,请问做了如下修改后,目前的错误是什么?

    pCaptureInstPrm->standard           = SYSTEM_STD_576I;

    pCaptureOutPrm->dataFormat          = SYSTEM_DF_YUV422I_YUYV;

    deiPrm.inputDeiFrameRate                             =50u;

    deiPrm.outputDeiFrameRate                             =50u;

    注释下面的代码:

            dupPrm.inQueParams.prevLinkId           = deiId; //by ct
            dupPrm.inQueParams.prevLinkQueId        = 0;
            dupPrm.numOutQue                        = 1;
            //dupPrm.outQueParams[0].nextLink         = ipcOutVpssId;
            dupPrm.notifyNextLink                   = TRUE;

  • Chris Meng,

         非常感谢您的耐心回答,我们是pal的输入,根据你给的建议修改代码之后,依然是之前的错误。

  • Chen Chentie,

    请问之前的错误是什么?是unhandle exception还是在deilink_drv.c里DeiLink_drvSubmitData()函数里执行出错?

  • Chris Meng,

          之前错误是unhandle exception ,就是log信息里的错误,我们发现这个错误之后跟踪代码,发现执行到deilink_drv.c里DeiLink_drvSubmitData()函数里时会出现这个unhandle exception。

  • Chen Chentie,

    你的板子是否能连上仿真器?如果是,你可以在vpss M3上下载该m3的firmware。然后在core registers窗口里面把上面打印出来的R0等寄存器的值相应填入,这时候可以回退到exception之前的状态,你可以看看是函数具体哪里导致的exception。具体可参考下面链接:

    http://processors.wiki.ti.com/index.php/SYS/BIOS_FAQs#4_Exception_Dump_Decoding_Using_the_CCS_Register_View

    最好m3的firmware是debug版本的。必须保证出错时候使用的firmware,和CCS下载的firmware是同一个。

  • Chris Meng,

         我们使用的DM385不能连接上仿真器,我们自己想代码添加打印信息发现出错是在

                 DeiLink_drvrReleaseFrames()   -——>    System_sendLinkCmd()

    函数里。

    请问如果没有仿真器还有其他办法解决这个问题吗?

  • Chen Chentie,

    你之前发现错误是在DeiLink_drvSubmitData(),现在发现是在DeiLink_drvrReleaseFrames(),这个错误出现地方会变化么?

    你能否提供你使用的vpss M3的可执行文件和对于出错的exception信息,我这里可以在DM385的IPNC上用CCS看看。

  • Chris Meng,

          错误没有变,错误的路径是DeiLink_drvSubmitData()——>DeiLink_drvGetProcessedData()——>DeiLink_drvReleaseFrames()——>System_sendLinkCmd()

          附件上传的是vpssM3的程序 

    vpss.zip
  • Chen Chentie,

    能否提供一下你那里的DVRRDK_04.00.00.03/dvr_rdk/mcfw/src_bios6/links_common/ipcOutM3/ipcOutM3Link_tsk.c文件?

    另,再次强调,这个测试需要你提供的dvr_rdk_fw_m3vpss_512M_128M.xem3和下面的出现exception时候使用的xem3是同一个,不然结果就不正确了。

    [m3vpss ] R0 = 0x00000040 R8 = 0x68004808
    [m3vpss ] R1 = 0x00000000 R9 = 0x2fe378dc
    [m3vpss ] R2 = 0x00000010 R10 = 0x8f00a270
    [m3vpss ] R3 = 0x00000000 R11 = 0x2fe6ee38
    [m3vpss ] R4 = 0x2c01c6b4 R12 = 0x00000000
    [m3vpss ] R5 = 0x2fe36680 SP(R13) = 0x2fe6ee28
    [m3vpss ] R6 = 0x2fe3a2e8 LR(R14) = 0x8edb06df
    [m3vpss ] R7 = 0x00000002 PC(R15) = 0x8ed440e6

  • Chris Meng,

        提供的dvr_rdk_fw_m3vpss_512M_128M.xem3 和下面的出现exception时候使用的xem3是同一个,附件提供DVRRDK_04.00.00.03/dvr_rdk/mcfw/src_bios6/links_common/ipcOutM3/ipcOutM3Link_tsk.c

  • Chen Chentie,

    见下面CCS恢复的exception的最后状态,是在IpcOutM3Link_processFrames函数的pObj->freeFrameList.numFrames = 0;语句,请检查一下pObj->freeFrameList.numFrames值是否正常。