TI中文支持网
TI专业的中文技术问题搜集分享网站

ti81xx HDVPSS刷新画面闪烁问题求助

CPU是DRA62x,跑VxWorks系统

HDVPSS驱动是从denny.yang写的uboot_logo范例中移植过去的

目前问题是:显示静态的画面正常,往显存刷入新的图片时,画面切换可以肉眼看出闪烁,不像是正常的画面切换

我现在考虑可能是两个原因,但又不从下手:
1、VPSS与CPU共享DDR3,两边同时访问时存在带宽问题(类似的问题曾在OMAP-L138上也碰到过,调整了DDR Controller的一个配置后解决)
     DRA62x上是否有类似的配置优化选项呢? 

2、驱动太简单,没有做乒乓显存,cpu一边写入数据 ,vpss一边读取数据,可能会有数据冲突?
    这个不太肯定,按理说显存更新速度慢的话,画面应该是肉眼看到从上往下逐行更新,现在看到的现象更像是整个画面闪了一下 

附上部分代码段,从uboot_logo的示例代码也就改了这里,将desc队列头尾接起来实现循环显示,别的几乎没动只是适配液晶做了点分辨率相关的调整

麻烦帮忙看看这个问题,谢谢! 

static uint32_t dra62xDispmgrSetupLayers(uint32_t* desc_buffer, int stride,int width, int height, uint32_t paddr,uint8_t dataType)
{
#define DESC_NUM120/* 一条list中刷DESC_NUM帧,MAX:511 */uint32_t size = 0;uint32_t numDesc = 0, i = 0;uint32_t* desc;int chan;int x = 0;int y = 0;uint32_t layer_ctrl;/* add src_viewport origin to surface start address */layer_ctrl = 0x0000E400;
#ifdef CONFIG_GRPX0layer_ctrl |= 1<<(2); /* enable GRPXx layer */
#elif defined CONFIG_GRPX1layer_ctrl |= 1<<(1); /* enable GRPXx layer */
#elselayer_ctrl |= 1 << (0); /* enable GRPXx layer */
#endif

#ifdef CONFIG_GRPX0chan = 29;
#elif defined CONFIG_GRPX1chan = 30;
#elsechan = 31;
#endifdesc = desc_buffer;/* 构建N*fps条desc */for (i = 0; i < DESC_NUM; i++){/* set up data transfer descriptor */desc[0] = 0 | (dataType << 26) // RGB-888/* 注意:这里需要根据实际情况做调整 */| (0 << 25) // no notification| (0 << 24) // field number| (0 << 23) // 2-dimensional data| (0 << 20) // +1 line skip (even)| (0 << 16) // +1 line skip (odd)| (stride) // line stride;desc[1] = 0 | (width << 16) // line length in pixels| (height) // number of rows;desc[2] = paddr;desc[3] = 0 | (0xA << 27) // packet type| (0 << 26) // 1D mode| (0 << 25) // inbound direction| (chan << 16) // channel| (0 << 9) // priority| (chan << 0) // next channel;desc[4] = 0 | (width << 16) // region width| (height) // region height;desc[5] = 0 | (x << 16) // horizontal start| (y << 0) // vertical start;desc[6] = 0 | (1 << 7) // first region| (1 << 8) // last region;desc[7] = 0; // alpha blending enabledesc += 8;size += 32;}



/* 追加一条control desc:reload list* 本组list执行完毕后,将自动循环重新加载本list* 以达到图像刷新不需要cpu额外干预的目的 */size += 16;desc[0] = (uint32_t)desc_buffer & 0xFFFFFFFE;desc[1] = size & 0x0000FFFF;desc[2] = 0;desc[3] = 0 | (0xC << 27)  //packet type;| (0x7);//control type: reload list

 
/* COMP模块,将graphic x通道映射到DVOx上,相当于打通了信号流 */vpsWrite32(VPS_COMP_DVO2, layer_ctrl);/* GRPXx --> DVO2(VOUT0) */return size;
}

 
Chris Meng:

Liu,

DRA62x不是DM81xx系列的产品。DM81xx的uboot logo里面的显示是一个简化的版本,在DM81xx的软件里面hdvpss驱动做的是很完善的。

DachuanLiu:

回复 Chris Meng:

我不敢在标题上写dra,,所以写的81xx,实际用的是dra

我们在VxWorks系统下只能把uboot logo移植过来,linux的太复杂根本没办法弄过来

碰到的闪烁问题,有什么办法解决么?

赞(0)
未经允许不得转载:TI中文支持网 » ti81xx HDVPSS刷新画面闪烁问题求助
分享到: 更多 (0)