大家好,
目前使用的am3358芯片,bsp为Linux4.1.15版本,目前在显示的时候遇到一个问题:
1.静态显示kernel logo没有问题
2.如果编译一个应用程序,每隔1s向framebuffer分别写入红色和蓝色,正常的显示效果应该是红色画面和蓝色画面每隔1s交替显示
3.目前的问题是,从红色画面切换到蓝色画面或者从蓝色画面切换到红色画面的时候,能够看到有一条横线,随着画面的动态切换,可以看到横线从屏幕上方逐渐移动到屏幕下方,周而复始。
4.使用逻辑分析仪,抓取vsync信号和red通道的data数据发现,在红色切换到蓝色的第一帧,蓝色数据只刷新了一半,而剩下数据仍然为旧的红色数据,进而可以解释横线问题
5.仔细看到显示参数,vysnc,hsync,clock参数等均与显示屏规格书一致,请问要如何解决呢?
非常感谢
Shine:
请问您看的是framebuffer里的数据更新了一半?LCD DMA使能了了吧?
user5849257:
回复 Shine:
你好,通过逻辑分析仪,可以看到第一帧的数据只刷了一小半,LCD DMA使能了,默认都是使能的
user5849257:
回复 user5849257:
user5849257:
回复 user5849257:
(function(id)
{var v = document.getElementById(id), isSafari = navigator.userAgent.indexOf(‘Safari’) != -1 && navigator.userAgent.indexOf(‘Chrome’) == -1;var op = v.style.position, ol = v.style.left, or = v.style.right, fe = [];var nodeLimit = 50;checkVideo = function() {if (!v.canPlayType || v.error) {var bound = 0;while (v.childNodes.length > 0 && bound 0 && bound < nodeLimit) {bound++;if (v.childNodes[0].nodeName != 'SOURCE') {fe[fe.length] = v.childNodes[0];v.parentNode.insertBefore(v.childNodes[0], v);}}window.setTimeout(checkVideoRendered, 249);} else if (v.readyState == 0) {window.setTimeout(checkVideo, 249);}},checkVideoRendered = function() {if (v.networkState == 1 && v.readyState == 4) {v.style.position = op;v.style.left = ol;v.style.right = or;for (var i = 0; i < fe.length; i++) {fe[i].parentNode.removeChild(fe[i]);}} else {window.setTimeout(checkVideoRendered, 249);}}if (navigator.userAgent.indexOf('iPad') == -1 && navigator.userAgent.indexOf('iPhone') == -1 && navigator.userAgent.indexOf('iPod') == -1) {window.setTimeout(checkVideo, 249);}
})('v_91fb3d727b32429bbef54b7ccdca6bee');
user5849257:
回复 user5849257:
可能是拍摄或上传原因,实际情况只有一条横线,从上往下移动,另外,附件图片是逻辑分析仪的截图,可以看到第一帧的图像是不完整的
Shine:
回复 user5849257:
请问是自己的板子吗?processor SDK用的是哪个版本的?
user5849257:
回复 Shine:
是我们自己的开发板,SDK使用的是米尔科技提供的,内核版本为L4.1.18
yongqing wang:
回复 user5849257:
在参考的板子上有这个问题吗
Shine:
回复 user5849257:
用Pingpong buffer试试。
user5849257:
回复 yongqing wang:
你好,参考的demo板上表现一致,请问能提供解决方案吗?谢谢