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.

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上出现数据丢失现象。是哪里出现了问题?谢谢

  • 你好,

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

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

  • 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刷新频率?谢谢!!

  • Bryant,

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

  • 你好,

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

  • Bryant,

    PBBPR寄存器含义请参考DDR相关文档。

    从你描述的现象看起来很像是DDR峰值带宽过高的问题,请问你的系统里面是否有可以减少DDR读写的地方?尽量传递指针而不是copy buffer。

    请参考TMS320DM643x DMP DSP Subsystem Reference Guide的9.6.1 Bus Master DMA Priority Control,看看VPSS的优先级是否配置为最高?

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

  • Sorry for late reply!

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

  • Bryant,

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