ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

18、常见显示问题排查:黑屏、花屏、闪屏、分辨率不对、多屏不同步问题定位

18、常见显示问题排查:黑屏、花屏、闪屏、分辨率不对、多屏不同步问题定位 18.1 黑屏问题定位黑屏分两种上电就黑和亮到一半黑。前者多半是硬件初始化没走完后者往往是时序或电源管理出问题。我的排查三板斧先看log——有没有打印fb_init或panel_power_on成功没有的话检查GPIO配置。量电压——VDD、VCI、VSP/VSN一个都不能少。我遇到过VSN电压纹波太大导致黑屏换了电容就好了。查背光——背光IC的PWM波形对不对有些屏背光不亮你以为黑屏其实画面是有的。举个例子有一次客户反馈说开机黑屏我远程看了log发现panel初始化函数根本没被调用。追下去原来是设备树里panel节点的compatible字符串写错了。你想想看驱动匹配不上当然不会初始化。小技巧在panel驱动入口加个printk打印panel_probe enter。如果连这个都没有说明设备树匹配就有问题。18.2 花屏问题定位花屏比黑屏更让人抓狂。画面乱七八糟像打翻了调色盘。我个人习惯把花屏分成三类花屏类型典型现象常见原因条纹花屏水平或垂直条纹MIPI时钟频率不对、D-PHY lane映射错误颜色错乱红色变蓝色、绿色变紫色RGB顺序配置错误、gamma表损坏局部花屏屏幕某一块区域花DDR带宽不足、帧缓冲地址对齐问题我记得有一次调试画面总是出现随机彩色条纹。查了三天最后发现是MIPI DSI的lane数配置错了——硬件用了4 lane代码里配成了2 lane。嗯这种低级错误往往最隐蔽。避坑指南我曾经因为DDR频率降频导致花屏排查了整整一周。后来发现是温控策略触发了降频帧缓冲写入速度跟不上刷新率。解决办法要么提高DDR频率要么降低刷新率。18.3 闪屏问题定位闪屏说白了就是画面在快速闪烁。用户看着眼睛疼产品经理会追着你改。闪屏的根源大部分是刷新率不稳定。MTK平台里VSYNC信号是关键。我建议你先用示波器抓一下VSYNC波形看看是不是有抖动。// 在驱动中打印VSYNC间隔 static irqreturn_t vsync_isr(int irq, void *dev_id) { static ktime_t last_time; ktime_t now ktime_get(); s64 diff ktime_to_us(ktime_sub(now, last_time)); printk(VSYNC interval: %lld us\n, diff); last_time now; return IRQ_HANDLED; }如果VSYNC间隔忽大忽小说明帧率不稳定。常见原因GPU渲染超时掉帧了DMA传输被高优先级中断打断背光PWM频率太低人眼能感知到闪烁我的经验背光PWM频率低于200Hz人眼就能感觉到闪烁。我一般设到1kHz以上既省电又不闪。18.4 分辨率不对问题定位分辨率不对要么是画面被拉伸要么是显示不全。这个问题在MTK8678上尤其常见因为支持多屏每个屏的分辨率可能不一样。排查步骤确认timing参数——HFP、HBP、VFP、VBP、Hactive、Vactive一个都不能错。我见过Hactive配成1920实际屏是1080结果画面被横向拉伸。检查scaler配置——MTK的显示子系统有硬件scaler如果配错了分辨率会乱。看framebuffer大小——fb的宽高要和屏匹配。不匹配的话画面会错位。实战案例有一次客户说副屏分辨率不对画面只显示左上角四分之一。我查了log发现framebuffer分配的是1920x1080但副屏实际分辨率是3840x2160。fb太小画面自然显示不全。改一下dts里的fb size就好了。18.5 多屏不同步问题定位多屏不同步说白了就是两个屏的画面错位了。一个屏显示第10帧另一个屏还在显示第8帧。这在车载、医疗等场景下是致命问题。MTK8678的多屏架构里每个显示通道有自己的VSYNC。如果两个通道的VSYNC没有对齐就会出现不同步。我的排查方法抓VSYNC相位差——用示波器同时抓主屏和副屏的VSYNC看上升沿是否对齐。检查同步寄存器——MTK有专门的同步控制寄存器确保所有显示通道共用同一个VSYNC源。看buffer切换时机——如果两个屏的buffer切换不在同一个VSYNC点就会错帧。重要提醒我曾经在调试双屏同步时发现主屏和副屏的刷新率不一样——一个60Hz一个59.94Hz。这种微小差异时间长了就会累积成明显的不同步。解决办法强制两个屏都用同一个PLL生成的时钟。18.6 总结与避坑清单做显示驱动这么多年我总结了一个排查口诀先看log后量电时序参数不能变。花屏先查MIPI线闪屏锁定VSYNC源。分辨率对不上fb大小是关键。多屏不同步时钟源要统一。最后说一句遇到显示问题别慌。先复现再缩小范围最后定位根因。我见过太多人一上来就改代码结果越改越乱。记住示波器和log是你最好的朋友。
返回列表