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

Cache回写问题

DM6437视频处理框架如下:

VPFE:720*576  PAL

VPBE:VIDWIN0 1024*768 yuv422, OSDWIN0 640*480  RGB565

VENC:1024*768 LCD RGB888 Digital output

问题描述:前端视频经过Resizer后 放入VPBE VIDWIN0缓冲区,未发现丢数据现象(数据回写问题引起的视频有白色或者黑色的线条),当打开OSDWIN0后,即使加入了回写函数,也会在VIDWIN0上出现数据丢失现象。是哪里出现了问题?谢谢

Chris Meng:

你好,

cache写回是可以指定写回的地址的,请问写回地址和vidwin0使用的地址有关系么?

请问你的屏是1024×768@60f/s的屏么?如果减小OSD串口的大小,例如开一个100×100的,或者关闭采集,是否现象相同,还是改善?我想看看是否是DDR吞吐导致的问题。

mr bryant:

回复 Chris Meng:

Thanks a lot!

Cache写回是指定地址的:BCACHE_wbInv((Uint8*)vpbeFrameBuf->frame.frameBufferPtr, (VPBE_WIDTH*VPBE_HEIGHT*2), TRUE);

LCD显示屏1024*768@60FPS;

OSD窗口由320*240(Zoomed to 640*480)减小到128*128(No zoom),数据丢失现象几乎消失。

基于以上应该可以证明是DDR吞吐所致?

我们又做了这样一个实验:

    前端视频不经过Resizer,直接粘到VPBE视频帧缓冲区,也就是后端视频的显示(尺寸仍为1024*768)只有720*576的视频信息,其余为灰色。

发现此时打开OSD窗口也无数据丢失现象。此现象是否可以解释为Resizer模块占用了较多的DDR带宽?

但是Resizer和OSD(320*240)都是必须要使用的,那此问题该如何解决?减小LCD刷新频率?谢谢!!

Chris Meng:

回复 mr bryant:

Bryant,

DDR控制器有一个寄存器叫PBBPR,请看看目前是否设置为0XFF,如果是,请修改为0x10~0x50范围的值尝试。

mr bryant:

回复 Chris Meng:

你好,

修改了PBBPR寄存器的值,数据丢失现象依然存在!这个寄存器的含义是什么?

mr bryant:

回复 Chris Meng:

你好,程序中内存拷贝很少。我们也怀疑是DDR带宽问题,在下一版硬件中使用双DDR,到时候看效果如何吧。谢谢

mr bryant:

回复 Chris Meng:

Sorry for late reply!

在第二版本的硬件中使用双DDR2,数据丢失问题得到解决,也就是说单DDR2的带宽勉强能支持720p 60Hz的数字视频输出。谢谢Chris Meng的指导!

Chris Meng:

回复 mr bryant:

Bryant,

非常感谢你在这里更新了最终的结果!

赞(0)
未经允许不得转载:TI中文支持网 » Cache回写问题
分享到: 更多 (0)