lcd的硬體特性以及使用方法比較簡單,再次就不羅嗦了,主要寫一下驅動架構方面
兩個關鍵檔案fbmem.c 和s3c2410fb.c
fbmem.c中是linux的緩衝幀函式,緩衝幀就是一塊記憶體,是顯示緩衝區的一種抽象,往該記憶體中寫入顏色的資料就會在lcd上顯示。
應用程式操作lcd時通過fbmem.c中的file_operations
比如應用程式呼叫read函式,fbmem.c中的fb_read函式將會被呼叫,順藤摸瓜就會發現,fb_read函式依賴於 fb_info,如下所示,而fb_info由s3c2410fb.c中設定,即s3c2410fb.c向fbmem.c註冊fb_info結構體,該結構體中含有lcd硬體的相關引數,另外lcd的驅動程式用了platform驅動匯流排模型,在核心裡面已經包含了device硬體相關引數,
我們再寫驅動程式時只需要寫平台驅動,向上註冊fb_info就可以了。
fb_read(struct file *file, char __user *buf, size_t count, loff_t *ppos)
if (copy_to_user(buf, buffer, c))
*ppos += c;
buf += c;
cnt += c;
count -= c;
}kfree(buffer);
return (err) ? err : cnt;
}1. 幀緩衝裝置驅動在linux子系統中的結構如下:
LCD 驅動程式設計
詳細的資訊參考連線 lcd驅動是平台驅動,有 probe 函式。1 分配 fb info 結構 framebuffer alloc 函式。2 獲取lcd控制器的實體地址,並將其轉化為虛擬位址。3 初始化 fb info 結構。3.1 設定 fb ops 4 分配幀緩衝的記憶體 dma alloc w...
LCD驅動的問題
最近遇到lcd驅動的問題,lcd可以點亮,但是畫影象的時候螢幕上只顯示各種顏色垂直的線條,不知 出了問題,不知哪位高手可以指點一下!我用的是mtk6205 st7367的dirver ic,init成功,但是畫圖就有問題了,畫全黑的過去居然顯示成彩色的條狀。每一列的顏色一樣,這個很奇怪阿,不同列的顏...
lcd驅動程式
ok6410lcd測試程式 1.在螢幕上分別顯示紅綠藍三個長方形 自定義結構體用來在使用者空間裡管理幀緩衝的資訊 typedef struct fd dev fb dev t 實現緩衝裝置的開啟和關閉操作的介面 int fb open fb dev t fbd,char fbn 獲取lcd的可變引數...