日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux的DRM之mipi应用程序,LCD之MIPI接口

發布時間:2024/3/26 linux 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux的DRM之mipi应用程序,LCD之MIPI接口 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

LCD之MIPI接口

(因本人之局限性,內容僅供參考。錯誤之處,敬請指出。謝謝!)linux

說到mipi接口,它不僅是一個簡簡單單的一個接口。而是一個兩層概念的疊加:物理傳輸系統結構(物理層面) 和 MIPI DSI 驅動框架(軟件層面)。

注意:“物理傳輸系統結構(物理層面) 和 MIPI DSI 驅動框架(軟件層面)” 這兩個名詞,是本人本身定義的。感受可以表達我心里的想法。web

首先講述一下 “物理傳輸系統結構(物理層面)”,它是一種什么概念。如圖:緩存

這幅圖描述的正是“物理傳輸系統結構(物理層面)”。

該物理層面大體分為三層:

->1.PHY Layer 物理層,通常使用 C-PHY,D-PHY,M-PHY。它們被設計的傳輸速率為:100Mbits/s,500Mbits/s,1000Mbits/s。(像RK3399-firefly使用的是D-PHY)

->2.中間層,該層涉及到兩個協議:DSI-2(LCD) 和CSI(camera)。 MIPI DSI 驅動就和這層有著莫大的關系。

->3.應用層。框架

那“MIPI DSI 驅動框架(軟件層面)”又是怎么回事呢?這涉及到linux內核如何實現 該MIPI接口的LCD驅動。

該驅動較為復雜,這里不進行詳細講解。

MIPI DSI 之 LCD 驅動 使用的是 DSI/DRM驅動框架。

DRM 由如下 4部分組成:

->1.KMS (kernel mode setting) : 改變分辨率 和 位深。

->2.DRI (direct rendering infrastructure) : 直接訪問硬件接口。

->3.GEM (graphics execution manager) : 內存管理。

->4.DRM (driver in kernel side) : 訪問硬件。

其中KMS模塊又由如下幾部分組成:

–>1.framebuffer (畫布)

–>2.CRTC (將plane 和 framebuffer數據進行配,畫畫)

–>3.Encoder

–>4.Connector

–>5.Plane

–>6.Drm device

KMS模塊的工做原理以下:

咱們以RK3399的內核對KMS模塊作簡單的分析:

(1)Framebuffer 畫布(圖像數據緩存區)相關的三個文件以下:

1.Drivers/gpu/drm/drm_fb_helper.c 內核開發者封裝的 DRM fb 標準接口。

2.Drivers/gpu/drm/rockchip/rockchip_drm_fb.c rockchiop根據上面的內核接口,封裝的專門針對本身芯片的 DRM fb 接口。

3.Drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c rockchip 根據上面的本身封裝的DRM fb接口 實現 rockchip本身的framebuffer 配置 函數。不過它也是給別人提供接口函數。(好比:rockchip_drm_fbdev_init()會被drivers/gpu/drm/rockchip/rockchip_drm_drv.c調用。)

(2)CRTC 主要用于顯示控制,如:display timing,resolution配置。Rockchip中的vop 就是根據CRTC 來進一步封裝實現出來的。

和CRTC 相關的文件是:

Drivers/gpu/drm/rockchip/rockchip_drm_vop.c

這個文件主要是根據內核開發者提供的函數接口,rockchip進一步封裝,實現的CRTC. 它是rockchip實現 VOP 的基礎。

(3)Encoder 他是將CRTC/VOP 處理后的圖像數據轉換成合適的格式。好比轉換成HDMI須要的TMDS格式的信息,或則MIPI須要的格式信息。而后再將轉換后的信息發送給connector.

Encoder 被rockchip實現位一個 platfrom總線驅動(rockchip-dp).它的主要文件是:

Drivers/gpu/drm/rockchip/analogix_dp-rockchip.c

(4)Connector 表明具體的外部接口,如edp,hdmi,mipi等。用于傳輸信號給外部硬件顯示設備,探測外部顯示設備接入。Connector 中各類外部接口對應的驅動文件以下:

(1)Rockchip_lvds.c LVDS 接口。

(2)Analogix_dp-rockchip.c EDP 接口。

(3)Cdn-dp-core.c

(4)Dw-mipi-dsi.c MIPI接口

(5)Dw-hdmi-rockchip.c HDMI接口

咱們的connector模塊使用的是 dw-mipi-dsi.c 也就是mipi接口。

注意:

Encoder 和 connector 兩個模塊有些內容是重疊再一塊兒的,因此很難清晰的劃分開來。

(5)Planes 一個plane表明一個image layer(圖層),咱們最終顯示在顯示器上的是由一個或多個plane重疊組合而成。

通常planes有三種類型:

1.DRM_PLANE_TYPE_PRIMARY :必定要有,用于顯示背景或者圖像內容。

2.DRM_PLANE_TYPE_OVERLAY : 用于顯示overlay.

3.DRM_PLANE_TYPE_CURSOR : 用與顯示鼠標。

Plane 對應的結構體是: struct drm_plane_funcs .

該結構體的初始化在vop_plane_init()在rockchip_drm_vop.c 中建立注冊。

(6)Drm device 處理用戶空間的請求。在代碼中由struct drm_drivern 表示執行。

在 rockchip_drm_bind() drivers/gpu/drm/rockchip/rockchip_drm_drv.c 中建立注冊。ide

(內容源自理解,僅供參考)svg

總結

以上是生活随笔為你收集整理的linux的DRM之mipi应用程序,LCD之MIPI接口的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。