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...