備樹到U-Boot的踩坑實錄)
最近把一個項目里的屏幕從默認的RGB/eDP顯示方案切到了單八路LVDS平臺是LS1028系列處理器。整個過程不算復雜但中間幾個坑差點讓人懷疑人生設(shè)備樹時序配錯黑屏、VESA和JEIDA數(shù)據(jù)映射搞反導致顏色面目全非、U-Boot亮而內(nèi)核不亮、背光閃個不?!@篇文章我把整個適配過程從頭梳理一遍從單八路LVDS的物理信號構(gòu)成、設(shè)備樹參數(shù)換算到U-Boot與內(nèi)核的顯示銜接再到實際排查鏈路希望給正在做LS1028或類似平臺LVDS適配的朋友一點幫助。文章適合三類讀者一是剛接觸LVDS顯示適配的BSP/驅(qū)動開發(fā)工程師二是在做LS1028平臺整機集成、需要調(diào)底層的硬件工程師三是被“屏幕怎么都不亮”折磨的項目救火隊員。已經(jīng)熟悉LVDS協(xié)議的人也可以重點看第2章和第5章那部分參數(shù)換算和電源時序是最容易踩坑的地方。1. 單八路LVDS的信號拆解五對差分線是怎么傳輸24bit顏色的1.1 單八、雙八、單六這些行業(yè)黑話到底指什么在工控和車載屏領(lǐng)域“單八路”“雙八路”是特別常見的叫法。我第一次接觸時也懵了一下以為“八路”是指有8對差分線。實際不是。這個“八”指的是每個LVDS通道傳輸?shù)腞GB數(shù)據(jù)位寬是8bit也就是每通道24bit色深。單八路LVDS物理上只有5對差分線4對數(shù)據(jù)線DATA0~DATA3 1對時鐘線CLKOUT±一共10根信號線再算上電源、地和背光控制。那為什么8bit數(shù)據(jù)只需要4對數(shù)據(jù)線因為LVDS是串行傳輸機制像素時鐘的每個周期里4對數(shù)據(jù)線共傳輸32bit數(shù)據(jù)其中24bit是RGB顏色數(shù)據(jù)剩下8bit用來放同步信號HS/VS/DE和顏色擴展位。這就是為什么24bit色深的屏只要4對數(shù)據(jù)線而不是24對。順便提一嘴行業(yè)術(shù)語里的對應(yīng)關(guān)系大家以后看屏幕規(guī)格書不會懵單六Single LVDS 18bit3對數(shù)據(jù)線1對時鐘每周期傳18bit并行像素數(shù)據(jù)加同步位。單八Single LVDS 24bit4對數(shù)據(jù)線1對時鐘就是本文的主角。雙八Dual LVDS 24bit8對數(shù)據(jù)線1對時鐘適合高分辨率高刷新率比如1080p60以上。雙六Dual LVDS 18bit比較少見某些老屏在用。LS1028這類帶原生LVDS控制器的平臺接口控制能力是到位的關(guān)鍵是搞明白你手里屏的規(guī)格是“單八”還是“雙八”以及它在4對數(shù)據(jù)線上到底按什么規(guī)則映射bit。這決定設(shè)備樹里>