Linux的LCD驅動分析

2021-07-09 19:08:27 字數 1282 閱讀 3713

linux的graphics子系統介紹》。

一、lcd介紹

liquid crystal display液晶顯示器,lcd按材料分有:stn(超扭曲陣列),tft(

薄膜電晶體

),ltps(低溫晶體多晶矽),oled(有機發光二極體)等。lcd的介面種類有:ttlrgb(數字rgb顏色介面),i80(又稱mcu介面),lvds(低壓差分訊號),rsds(低擺幅差分訊號),edp(嵌入式顯示介面),mipidsi(mipi標準顯示介面)等,其各種介面和lcd控制器及cpu的關係如下圖所示:

二、linux的lcd驅動架構

framebuffer只是提供了統一的lcd驅動設計模型,而具體的液晶屏顯示、控制、引數設定等則需要具體的lcd控制器驅動完成,而對於lcd驅動開發者來說,framebuffer已經由核心完成了,其主要工作就是進行lcd控制器驅動設計。lcd控制器驅動和framebuffer主要通過structfb_info資料結構進行協作,該資料結構主要包含了以下重要成員:

三、linux的lcd驅動實現

對於當前大多數開發板,其lcd控制器驅動都是通過platform匯流排進行掛載的,在platform匯流排的probe函式中完成fb_info結構的設定及註冊、lcd控制器的初始化等工作,其流程如下圖所示:

lcd驅動開發需要重點完成的是structfb_ops的介面函式實現,

這些介面函式是實現使用者可以控制

lcd硬體的基礎。比如應用程式在呼叫

ioctl(fbx)

進行液晶屏設定操作,其最終會呼叫

fb_ops->fb_ioctl()

函式,其呼叫流程圖如下圖所示:

對於ttl rgb介面的液晶屏,做完上述工作,lcd驅動程式基本就完成了,但對於lvds和mihidsi介面的液晶屏,從之前的lcd介面圖可以看出,還需要完成lvds和dsi介面控制器的驅動,lcd才能工作。

Linux高階驅動 LCD驅動框架分析

功能 給使用者提供介面 fbmem init 入口函式 1.申請主裝置號,註冊字元裝置 register chrdev fb major 29 fb fb fops 2.建立乙個裝置類 fb class class create this module,graphics static const s...

Linux 2 6 38的LCD驅動分析(一)

一 讓lcd顯示可愛的小企鵝 還是先說說環境吧,處理器為s3c6410,linux的版本是2.6.38 友善之臂提供的 下面先說說怎樣讓lcd上顯示出可愛的小企鵝。最直接的步驟如下 記住不要問為什麼哈 一步一步跟著走就行了 1.新增s3c6410處理器的lcd控制暫存器的初始值,具體做法為在檔案ar...

Linux 2 6 38的LCD驅動分析(三)

三 解剖s3cfb driver變數 s3cfb driver變數有什麼作用呢?在前面的2.2節提到了它的定義,從它的原型可以看出s3cfb driver是個platform driver型別的變數,前面的幾個小節提到了從platform driver的名字可以看出它應該是platform devi...