當前位置:首頁 > 公眾號精選 > 嵌入式云IOT技術(shù)圈
[導讀]點擊上方「嵌入式云IOT技術(shù)圈」,選擇「置頂公眾號」第一時間查看嵌入式筆記!經(jīng)過一段時間自己學習和理解,個人對于MIPILCD接口的調(diào)試有了自己的一點心得,當然也收獲了LinuxDRM顯示框架及調(diào)試的一些心得,DRM真的很難很難,本文也無法顧及所有的細節(jié),之前也發(fā)了一些DRM相關(guān)...

嵌入式云IOT技術(shù)圈" data-alias="" data-signature="分享單片機、嵌入式Linux/Android、物聯(lián)網(wǎng)等相關(guān)產(chǎn)品項目開發(fā)經(jīng)驗,打造最硬核嵌入式技術(shù)公眾號。" data-from="0">

點擊上方「嵌入式云IOT技術(shù)圈」,選擇「置頂公眾號」第一時間查看嵌入式筆記!

經(jīng)過一段時間自己學習和理解,個人對于MIPI LCD接口的調(diào)試有了自己的一點心得,當然也收獲了Linux DRM顯示框架及調(diào)試的一些心得,DRM真的很難很難,本文也無法顧及所有的細節(jié),之前也發(fā)了一些DRM相關(guān)的文章:

linux中基于DRM的圖形顯示系統(tǒng)概述

libdrm-modetest原理及圖顯系統(tǒng)驗證方法

以下的這些概念和操作都是本人在實踐的過程中覺得對調(diào)試有用,所以就記下來了,接下來我們來簡單的了解一下:

1、有關(guān)DRM的一些基礎(chǔ)概念

1.1、Connectors
就是屏幕,比如主控芯片通過HDMI、MIPI DSI,分別接2個屏幕顯示,就會有2個對應的Connectors ID;

1.2、CRTCs
表示VOP,一個屏幕一般對應一個crtc;

1.3、Planes
就是圖層,比如視頻層在plane2,UI在plane1,視頻在UI上面;

2、通過modetest查看系統(tǒng)DRM的情況

例如在RV1109的開發(fā)板端執(zhí)行modetest,我們可以看到以下輸出信息:

[root@RV1126_RV1109:/oem]# modetest
Encoders:
id ??crtc ?type ?possible crtcs possible clones
55 ???53 ??DSI ??0x00000001 ??0x00000000
Connectors:
id ??encoder status ????name ?????size (mm) ???modes ?encoders
56 ???55 ??connected ???DSI-1 ?????154x86 ?????1 ???55
modes:
???name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot)
1024x600 54 1024 1240 1310 1470 600 612 622 645 51200 flags: nhsync, nvsync;
type: preferred, driver
props:
????1 EDID:
???????flags: immutable blob
???????blobs:
???????value:
????2 DPMS:
???????flags: enum
???????enums: On=0 Standby=1 Suspend=2 Off=3
???????value: 0
????5 link-status:
???????flags: enum
???????enums: Good=0 Bad=1
???????value: 0
????6 non-desktop:
???????flags: immutable range
???????values: 0 1
???????value: 0
????43 brightness:
???????flags: range
???????values: 0 100
???????value: 50
????44 contrast:
???????flags: range
???????values: 0 100
???????value: 50
????47 saturation:
???????flags: range
???????values: 0 100
???????value: 50
????48 hue:
???????flags: range
???????values: 0 100
???????value: 50
CRTCs:
id ??fb ??pos ??size
53 ???57 ??(0,0) ?(1024x600)
1024x600 54 1024 1240 1310 1470 600 612 622 645 51200 flags: nhsync, nvsync;
type: preferred, driver
props:
????38 left margin:
???????flags: range
???????values: 0 100
???????value: 100
????39 right margin:
???????flags: range
???????values: 0 100
???????value: 100
????40 top margin:
???????flags: range
???????values: 0 100
???????value: 100
????41 bottom margin:
???????flags: range
???????values: 0 100
???????value: 100
????51 FEATURE:
???????flags: immutable bitmask
???????values: afbdc=0x1
???????value: 0
???????Planes:
id ??crtc ?fb ??CRTC x,y ???x,y ??gamma size ??possible crtcs
52 ???53 ???57 ???0,0 ??????0,0 ??0 ???????0x00000001
formats: XR24 AR24 XB24 AB24 RG24 BG24 RG16 BG16
props:
????8 type:
???????flags: immutable enum
???????enums: Overlay=0 Primary=1 Cursor=2
???????value: 1
????50 FEATURE:
???????flags: immutable bitmask
???????values: scale=0x1 alpha=0x2 hdr2sdr=0x4 sdr2hdr=0x8 afbdc=0x10
???????value: 2
54 ???0 ???0 ???0,0 ??????0,0 ??0 ???????0x00000001
formats: XR24 AR24 XB24 AB24 RG24 BG24 RG16 BG16 NV12 NV16 NV24
props:
????8 type:
???????flags: immutable enum
???????enums: Overlay=0 Primary=1 Cursor=2
???????value: 0
????50 FEATURE:
???????flags: immutable bitmask
???????values: scale=0x1 alpha=0x2 hdr2sdr=0x4 sdr2hdr=0x8 afbdc=0x10
???????value: 3
Frame buffers:
id ??size ?pitch從以上信息,我們能夠了解到:

2.1、Connectors
觀察以上信息,我們可以看到Connectors有1個,代表可以接1個屏幕輸出,ID是56。該顯示輸出的最大分辨率是1024x600,刷新頻率54hz;

2.2、CRTCs
觀察以上信息,我們可以看到CRTCs有1個,ID是53;

2.3、Planes
觀察以上信息,我們可以看到Planes有2個,即代表有2個圖層,ID分別是52、54。plane 53當前type值是1,代表是Primary層;plane 55當前type值是0,代表是Overlay層;

2.3.1、Primary層

2.3.2、Overlay層

3、通過modetest指令測試屏幕輸出

我們可以根據(jù)以上modetest探測出來的信息,然后發(fā)送以下指令讓色塊顯示到LCD顯示屏上,在ARM端輸入以下命令:

modetest -s 56@53:1024x600@RG24其中:

  • 56,對應Connectors ID;

  • 53,對應CRTCs ID;

  • 1024x600,輸出最大分辨率;

  • RG24,代表RGB888,每個像素點24bit,R/G/B各8bit;

執(zhí)行以后,我們可以看到屏幕上的顯示效果:

4、如何用/sys/kernel/debug/dri進行監(jiān)控

4.1、查看/sys/kernel/debug/dri下的節(jié)點
ls /sys/kernel/debug/dri/0/可以看到:

4.2、獲取dri的狀態(tài)
cat /sys/kernel/debug/dri/0/state可以看到:

4.3、查看dri當前的顯示狀態(tài)
cat /sys/kernel/debug/dri/0/summary可以看到:

從以上信息可以看出:

VOP的狀態(tài)是ACTIVE,表示正在運行中,如果是DISABLED,表示VOP沒在運行。

Connector:DSI 表示對應屏幕接口的名稱。

Display mode表示的是當前顯示的分辨率和頻率為,即分辨率為1024*600,頻率為54fps。

4.4、查看當前的顯示時鐘
cat /sys/kernel/debug/clk/clk_summary | grep vop可以看到:

  • 關(guān)于dclk即pixel clock, 像素時鐘, 該時鐘由具體的顯示timing決定, 如果dclk不正確, 可能導致fps不對或直接不顯示.edp, mipi, lvds等顯示接口對應dclk的容忍性較好, 有些偏差也不影響正常顯示.但hdmi, dp等高清顯示接口,是有嚴格要求的, 這類顯示接口的頻率要給的很精準.

  • DCLK頻率

    指的是像素時鐘,跟數(shù)據(jù)傳輸有關(guān),液晶面板分辨率越高,像素時鐘信號的頻率也越高。在一行內(nèi),像素時鐘的個數(shù)與液晶面板一行內(nèi)所具有的像素數(shù)量相等。例如,對于1024×768的液晶面板,一行有1024個像素,則在一行中(對應于有效視頻區(qū)間)像素時鐘的個數(shù)也是1024個。

  • aclk_vop:如果該時鐘頻率太低, 可能會導致顯示出現(xiàn)抖動, 另外如果aclk 沒有使能的話, 訪問vop的寄存器也可能引發(fā)總線掛死

  • hclk_vop:如果該時鐘未使能, 不能訪問vop的寄存器, 一但訪問vop寄存器, 會造成總線掛死.

5、如何用/sys/類/drm進行監(jiān)控

5.1、查看/sys/drm/目錄下的節(jié)點
ls /sys/class/drm可以看到:

5.2、獲取DRM連接器的名稱和當前的狀態(tài)
ARM終端輸入:

for p in /sys/class/drm/*/status; do con=${p%/status}; echo -n "${con#*/card?-}:"; cat $p; done可以看到:

當前還有其它的節(jié)點可以訪問。

6、基于RK平臺MIPI DSI設備調(diào)試實戰(zhàn)

6.1、查看顯示驅(qū)動是否已經(jīng)正常加載
以RK平臺為例,之前一直調(diào)試的是RV1126_RV1109,RK在底層實現(xiàn)了自己的一套DRM顯示框架:

MIPI DRM 驅(qū)動的加載存在依賴關(guān)系,所以可能會多次因為驅(qū)動資源暫時獲取不到而返回 -517 ,但是只要配置正確,待相關(guān)組件驅(qū)動能夠完整獲取到資源后,最終就會 bound 成功,如果沒有看到如下:

[ ??0.889511] rockchip-drm display-subsystem: bound ffb00000.vop (ops0xb093e180)
[ ??0.889613] rockchip-drm display-subsystem: bound ffb30000.dsi (ops0xb09448ac)則綁定失敗,通訊異常。

注意:如果你確定軟件上已經(jīng)沒問題了,那么多半是硬件連接的問題,因為 MIPI 排線比較脆弱,很容易導致接觸不良。

6.2、查看顯示信息
查看命令如下:

cat /sys/kernel/debug/dri/0/summary


6.3、查看當前連接狀態(tài)

查看命令:

cat /sys/class/drm/card0-DSI-1/status

6.4、查看當前使能狀態(tài)
cat /sys/class/drm/card0-DSI-1/enabled

6.5、查看當前支持的顯示模式
查看命令:

cat /sys/class/drm/card0-DSI-1/modes

往期精彩

Linux MIPI DSI LCD設備驅(qū)動開發(fā)調(diào)試細節(jié)學習筆記(一)

Linux MIPI DSI驅(qū)動調(diào)試筆記-設備樹DCS格式序列之配置LCD初始化代碼(二)

Linux MIPI DSI驅(qū)動調(diào)試筆記-LCD時序參數(shù)配置(三)

楊工本周直播PPT分享<<表驅(qū)動法在嵌入式產(chǎn)品開發(fā)中的應用>>

新產(chǎn)品立項了,作為嵌入式軟件工程師該如何來開展設計工作?(個人經(jīng)驗分享)

覺得本次分享的文章對您有幫助,隨手點[在看]并轉(zhuǎn)發(fā)分享,也是對我的支持。

嵌入式技術(shù)公眾號。" data-from="0">

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉