展訊平臺 LCD(Mipi) 載入流程分析
stage1 階段的詳細分析參見 uboot 詳細註釋講解
我們從 uboot 的 stage2 開始分析。
載入流程分析
首先是完成硬體的初始化。
函式呼叫流程為:
u-boot64/arch/arm/board.c:
board_init_r()
u-boot64/common/stdio.c:
stdio_init()
u-boot64/common/lcd.c:
drv_lcd_init()
lcd_init()
u-boot/drivers/video/sprdfb/sprdfb_main.c:
lcd_ctrl_init()
sprdfb_probe()
在 probe 中做了這樣幾件事:
1. 設定背光(set_blacklight(0),在一開始向 PWM 暫存器中寫 0 )
2. 配置 GPIO(214 和 167,所以應該去檢查 214 和 167 分別是幹什麼的?)
3. 將 sprdfb_dispc_ctrl 賦值給 dev->ctrl,呼叫 sprdfb_dispc_ctrl 中的 early_init :
u-boot64/drivers/video/sprdfb/Sprdfb_dispc.c:
先看 sprdfb_dispc_ctrl 結構體:
在前面的 probe 中我們看到 最開始呼叫了回撥函式 early_init
4. sprdfb_panel_probe()
先執行 panel 的準備工作(panel_mount)
在 panel_mount 裡:
根據 lcd 的型別(mipi)選擇對應正確的結構體型別(dev->if_ctrl = & sprdfb_mipi_ctrl)。
在這個裡面進行讀螢幕 id 的操作(adapt_panel_from_readid())
在 adapt_panel_from_readid 裡:
進行 dev->panel->ops->panel_readid 的操作,呼叫驅動裡的 readid 函式讀取 lcd 暫存器中的 id。
並且將其與 panel_cfg 結構體中的 id 進行比較。
如果正確的話,就進行驅動中 panel_init 的操作,
並且將 id 儲存為靜態全域性變數,以傳給 kernel,
且將 panel_spec 型別的結構體 panel_cfg 返回到 sprdfb_panel_probe 中去。
如果錯誤的話,就執行移除解除安裝 panel 的操作。
5. 對螢幕的引數(解析度)進行初始化。
6. 將 lcd 存為靜態全域性變數。
7. 執行 ctrl 中的 sprdfb_dispc_init 初始化函式。
在 u-boot64/drivers/video/sprdfb/Sprdfb_dispc.c 中的 init 函式 sprdfb_dispc_init 中,設定初始背景顏色等。
至此,完成了 LCD 的載入。
程式碼結構分析
sprdfb_main.c —- 與fbmem.c構成Framebuffer驅動
sprdfb_panel.c —- Ctrl到I/F驅動和panel驅動的橋接器
sprdfb_mipi.c —- Mipi介面驅動及為其提供操作介面的DSI驅動
sprdfb_dispc.c —– DispC驅動
MIPI 介面工作模式介紹
DSI(VideoMode)視訊模式.
這種工作模式與傳統RGB介面相似,主機需要持續重新整理顯示器。由於不使用專用的資料訊號傳輸同步資訊,控制訊號和RGB資料是以報文的形式通過MIPI匯流排傳輸的。因為主機需要定期重新整理顯示器,顯示器就不需要幀緩衝器。帶RAM的屏一般比不帶RAM的屏要貴一些,對於一些控制成本的方案,選擇屏供應商需要格外關注這個!
DCS(Command mode)命令模式
MIPI匯流排控制器使用顯示命令報文來向顯示器傳送畫素資料流。顯示器應該有一個全幀長的幀緩衝器來儲存所有的畫素資料。一旦資料被放在顯示器的幀緩衝器中,定時控制器就從幀緩衝器中取出資料,並自動把它們顯示在螢幕上。MIPI匯流排控制器不需要定期重新整理顯示器。
兩種模式的優缺點
在成本和功耗方面,每個工作模式都有優點和缺點。視訊模式顯示架構無須幀緩衝器。然而,主機定期以高速模式傳送DSI視訊報文卻消耗了大量的平均能量。
在理想情況,當顯示內容不改變時(或不經常改變時),顯示系統的中央處理器就應該切換到低功耗模式,而處理器和顯示器之間的鏈路會在需要的時候啟用。由於主機定期重新整理的需要,部分中央處理器和儲存器介面也需要保持啟用狀態,這可以使系統不會達到最好的功率預算。
另一方面,命令模式顯示架構允許顯示器直接對整個幀緩衝器進行自重新整理。然而,在顯示器中整合全幀長幀緩衝器總是需要成本的,特別是今天的大多數使用者所需求的高解析度顯示器。這就要求介面晶片有更大的管芯尺寸。顯示器製造商也不得不為每種顯示解析度提供具有特定容量幀緩衝器的顯示控制器。
對於視訊模式和命令模式顯示架構,通常都需要對顯示控制器的暫存器程式設計來設定相應的顯示解析度、外觀比率和工作模式。MIPI並不定義任何標準協議來訪問這些內部暫存器,因此,不同的顯示器製造商可以定製自己專用的命令集。
在展訊平臺上點亮MIPI介面屏正常顯示需要滿足以下幾條:
1:確認Lcd的驅動檔案被正常編譯編譯進去,並且lcd 和board name裡面註冊一致。
2. 必須保證資料能夠正確的傳輸到屏上,一般在讀取ic 的id和初始化設定指令時,都是在mipi的低速(lp)模式下,在初始化完成後,需要切換到高速(hp)狀態下,才能正常的顯示!
3. 必須保證ic設定的proch和timing,通道,速率正確,屏才可以正常的顯示,一般顯示出現花屏,顯示偏移等問題,通常情況下,就是因為你設定的某些引數不正確,導致顯示異常!
4:仔細檢查上電同時測量,對於mipi和需要下code的RGB panel需要RST高低高操作,這樣code才生效。注意一般sleep out(0x11)和display on(0x29)之間需要mdelay(120)左右,貌似這個對於大部分panel是必須的。如果這部分延時不夠,會導致屏在進出睡眠或者顯示過程中出現白屏,無法正常的顯示!
5:最後還要確認是否有framebuffer輸出,要是改動了display這塊的clk很有可能沒有buffer輸出的,可以通過cat
/dev/graphyics/fb0檢視有沒有輸出字元。
注:一般wvga以及更高解析度的陪你過通常採用2 line甚至更高的通道數,hvga及以下解析度的屏則通常採用單通道的mipi介面
相關文章
- android展訊平臺 重啟案例分析(二)Android
- spring boot 載入web容器tomcat流程原始碼分析Spring BootWebTomcat原始碼
- 電平筆記(二):MIPI DPHY電平:XAPP894筆記APP
- Android 8.1平臺SystemUI虛擬導航鍵載入流程解析AndroidSystemUI
- 現在低程式碼開發平臺的發展分析
- RTMP推流平臺/視訊直播點播分析平臺/人臉識別系統EasyDSS如何實現RTMP負載均衡?負載
- 自媒體平臺下載的視訊素材有平臺水印怎麼辦?
- 分析平臺Tableau推出資料和分析平臺新功能
- 直播平臺開發,載入網頁、html檔案顯示載入進度網頁HTML
- ijkplayer 音視訊同步流程分析
- 頁面載入和解析流程
- 視訊分享平臺
- 什麼是平臺化?平臺化是如何發展的?
- 物流平臺如何與電商平臺進行自動化流程管理
- git提交程式碼託管平臺流程Git
- 選課平臺需求分析
- ADC藥物平臺分析
- 入駐頭位資訊平臺需要什麼條件?
- 企業文化展廳建設的流程分析
- 易觀:2020中國網路視訊平臺泛知識消費專題分析(附下載)
- 展訊軟硬體資料下載,展訊晶片大全,展訊開發工具晶片
- 類載入流程,類載入機制及自定義類載入器
- 直播平臺搭建,自定義View實現loading動畫載入View動畫
- windows載入PE檔案的流程Windows
- 按需載入原理分析
- 2020中國低程式碼平臺市場發展年度報告(深度分析)
- 短視訊平臺原始碼,登入介面插入背景圖片原始碼
- [譯] Airflow: 一個工作流程管理平臺AI
- CIC:2022工業網際網路平臺發展指數(附下載)
- 企業展廳設計的製作流程分析
- 群發簡訊平臺哪個好?推薦阿里雲簡訊平臺阿里
- 106簡訊平臺是如何使用的?106簡訊平臺有哪些功能?
- 資料分析平臺搭建指南
- tiktok商品資料分析平臺
- CDS — 資料管理分析平臺
- 一文帶您快速入門視覺化分析平臺 Kibana視覺化
- 短視訊平臺有哪些?什麼平臺收益高?
- 搭建自己的直播平臺,RecycleView下拉重新整理,上拉載入View