LS1028平台单八路LVDS适配指南:从设备树到U-Boot的踩坑实录
最近把一个项目里的屏幕从默认的RGB/eDP显示方案切到了单八路LVDS,平台是LS1028系列处理器。整个过程不算复杂,但中间几个坑差点让人怀疑人生:设备树时序配错黑屏、VESA和JEIDA数据映射搞反导致颜色面目全非、U-Boot亮而内核不亮、背光闪个不停……这篇文章我把整个适配过程从头梳理一遍,从单八路LVDS的物理信号构成、设备树参数换算,到U-Boot与内核的显示衔接,再到实际排查链路,希望给正在做LS1028或类似平台LVDS适配的朋友一点帮助。
文章适合三类读者:一是刚接触LVDS显示适配的BSP/驱动开发工程师,二是在做LS1028平台整机集成、需要调底层的硬件工程师,三是被“屏幕怎么都不亮”折磨的项目救火队员。已经熟悉LVDS协议的人也可以重点看第2章和第5章,那部分参数换算和电源时序是最容易踩坑的地方。
1. 单八路LVDS的信号拆解:五对差分线是怎么传输24bit颜色的
1.1 单八、双八、单六这些行业黑话到底指什么
在工控和车载屏领域,“单八路”“双八路”是特别常见的叫法。我第一次接触时也懵了一下,以为“八路”是指有8对差分线。实际不是。这个“八”指的是每个LVDS通道传输的RGB数据位宽是8bit,也就是每通道24bit色深。单八路LVDS物理上只有5对差分线:4对数据线(DATA0~DATA3)+ 1对时钟线(CLKOUT±),一共10根信号线,再算上电源、地和背光控制。
那为什么8bit数据只需要4对数据线?因为LVDS是串行传输机制,像素时钟的每个周期里,4对数据线共传输32bit数据,其中24bit是RGB颜色数据,剩下8bit用来放同步信号(HS/VS/DE)和颜色扩展位。这就是为什么24bit色深的屏只要4对数据线,而不是24对。
顺便提一嘴行业术语里的对应关系,大家以后看屏幕规格书不会懵:
- 单六(Single LVDS 18bit):3对数据线+1对时钟,每周期传18bit并行像素数据加同步位。
- 单八(Single LVDS 24bit):4对数据线+1对时钟,就是本文的主角。
- 双八(Dual LVDS 24bit):8对数据线+1对时钟,适合高分辨率高刷新率,比如1080p@60以上。
- 双六(Dual LVDS 18bit)比较少见,某些老屏在用。
LS1028这类带原生LVDS控制器的平台,接口控制能力是到位的,关键是搞明白你手里屏的规格是“单八”还是“双八”,以及它在4对数据线上到底按什么规则映射bit。这决定设备树里>