赛灵思MPSOC实现DP显示(ARM裸机)

一、硬件搭建

        此处简单略过一下,在vivado中按照硬件设计进行连线即可。我的vivadoy硬件设计如下:

 二、vitis 中的实现

        此处使用了AMD赛灵思官方提供的示例程序。具体流程如下:

1、使用vivado中生成的XSA文件,在vitis中建立platform工程,此处不赘述。

2、编译platfor工程后,双击platform.spr文件,在如下图所示的位置,点击board support package。

 3、在board support package中,找到psu_dpdma,导入示例工程

 

4、正常情况下,直接编译示例应用工程,烧入开发板,屏幕上应该显示红色和绿色的横条。

但是这里可能出现两个问题:

        问题1:debug模式下,可能程序debug结束,无法与显示器完成所有通信,导致DP无法显示图像。

解决方法: 可以在main函数中写一个while(1)的循环,保证程序不退出,问题就得以解决。

int main()
{
	int Status;

	Xil_DCacheDisable();
	Xil_ICacheDisable();

	xil_printf("DPDMA Generic Video Example Test \r\n");
	Status = DpdmaVideoExample(&RunCfg);
	if (Status != XST_SUCCESS) {
			xil_printf("DPDMA Video Example Test Failed\r\n");
			return XST_FAILURE;
	}

	while(1){
		xil_printf("Successfully ran DPDMA Video Example Test\r\n");
		sleep(2);
	}

    return XST_SUCCESS;
}

         问题2:有时候,对于某些显示器无法显示图像,可以采取改变输出图像分辨率和帧率的方式,尝试不同的图像分辨率,可能就会正常显示了。可以在下面所示的代码中改变图像分辨率和帧率。

void InitRunConfig(Run_Config *RunCfgPtr)
{
	/* Initial configuration parameters. */
		RunCfgPtr->DpPsuPtr   = &DpPsu;
		RunCfgPtr->IntrPtr   = &Intr;
		RunCfgPtr->AVBufPtr  = &AVBuf;
		RunCfgPtr->DpDmaPtr  = &DpDma;
		RunCfgPtr->VideoMode = XVIDC_VM_1920x1080_60_P;
		RunCfgPtr->Bpc		 = XVIDC_BPC_8;
		RunCfgPtr->ColorEncode			= XDPPSU_CENC_RGB;
		RunCfgPtr->UseMaxCfgCaps		= 1;
		RunCfgPtr->LaneCount			= LANE_COUNT_2;
		RunCfgPtr->LinkRate				= LINK_RATE_540GBPS;
		RunCfgPtr->EnSynchClkMode		= 0;
		RunCfgPtr->UseMaxLaneCount		= 1;
		RunCfgPtr->UseMaxLinkRate		= 1;
}

三、板上显示结果

DP显示正常。

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值