LCD驅動程式(一)

2022-07-13 03:51:13 字數 2141 閱讀 4486

lcd顯示原理:

在jz2440上,想要讓lcd顯示,需要幾個部分1、lcd硬體 2、開發板上的lcd控制器 3、sdram記憶體存放資料frambuffer 4、可能還需要乙個調色盤(實際上是一塊記憶體,裡面資料可以組成各種顏色)

顯示原理:在開發板上操作lcd控制器,使得開發板向sdram記憶體裡去除資料傳送通過lcd資料引腳傳送到lcd屏上。

具體硬體操作步驟:

1、lcd引腳的連線,根據lcd原理圖配置引腳

2、根據lcd控制器手冊設定lcd控制器

3、分配視訊記憶體,並把位址告訴lcd控制器

lcd液晶屏顯示原理:

可以想象一下lcd後面有乙個電子槍,電子槍的作用就是將從frambuffer記憶體裡獲取到的顏色,乙個乙個的打到lcd螢幕上,怎麼打?順序為:

以液晶屏左上角開始,從左往右開始,乙個乙個顏色點打上去,打到後面沒有地方的時候,又開始換行又從左往右打;就比如你開啟乙個記事本按住某個字元符號不懂,

它會不斷的在記事本上輸出字母,當到邊界是開始換行輸出。直到輸出完為止。當然lcd液晶屏上空間有限,打的速率非常快的,是你感覺是影象是突然就出現到你

前面來一樣。

lcd驅動程式的框架

滿足字元裝置驅動程式的框架

1、應用程式通過open、read、write等函式進入核心進而呼叫dri_open、dri_read、dir_write等函式,通過裝置好找到lcd驅動的註冊id,進而

進入到到驅動函式的file_operation結構體函式,對硬體進行操作,主要框架如圖所示。

lcd驅動程式

問1. registered_fb在**被設定?

答1. register_framebuffer

怎麼寫lcd驅動程式?

1. 分配乙個fb_info結構體: framebuffer_alloc

2. 設定

3. 註冊: register_framebuffer

4. 硬體相關的操作

對lcd初始化:主入口函式要做的事情

1. 分配乙個fb_info結構體: framebuffer_alloc

struct fb_info ;

s3c_lcd->var.xres = 240;

s3c_lcd->var.yres = 320;

s3c_lcd->var.xres_virtual = 240;

s3c_lcd->var.yres_virtual = 320;

s3c_lcd->var.bits_per_pixel = 16;

/* rgb:565 */

s3c_lcd->var.red.offset = 11;

s3c_lcd->var.red.length = 5;

s3c_lcd->var.green.offset = 5;

s3c_lcd->var.green.length = 6;

s3c_lcd->var.blue.offset = 0;

s3c_lcd->var.blue.length = 5;

s3c_lcd->var.activate = fb_activate_now;

/* 2.3 設定操作函式 */

s3c_lcd->fbops              = &s3c_lcdfb_ops;

/* 2.4 其他的設定 */

s3c_lcd->screen_size   = 240*324*16/8;

3. 硬體相關的操作 

/* 3.1 配置gpio用於lcd */

/* 3.2 根據lcd手冊設定lcd控制器, 比如vclk的頻率等 */

/* 3.3 分配視訊記憶體(framebuffer), 並把位址告訴lcd控制器 */

4. 註冊: register_framebuffer

/* 4. 註冊 */

register_framebuffer(s3c_lcd);

剩餘的對s3c_lcdfb_ops的配置以及硬體配置檢視lcd驅動(二)

lcd驅動程式

ok6410lcd測試程式 1.在螢幕上分別顯示紅綠藍三個長方形 自定義結構體用來在使用者空間裡管理幀緩衝的資訊 typedef struct fd dev fb dev t 實現緩衝裝置的開啟和關閉操作的介面 int fb open fb dev t fbd,char fbn 獲取lcd的可變引數...

LCD驅動程式移植

對lcd的操作可以像串列埠一樣,通過終端裝置層的封裝 dev tty 裝置 來輸出內容,也可以通過frame buffer dev fb 裝置 直接在視訊記憶體上 繪製 影象。tty 終端裝置 和frame buffer驅動程式的框架 下面根據每層的檔案講解一下上圖 1 顯示驅動程式 2 鍵盤驅動程...

LCD裝置驅動程式

對螢幕進行抓屏 cp dev fb0 myfile.png 幀緩衝裝置的主裝置號29,次裝置號0 31,也就是dev fb0 dev fb31 填充乙個fbinfo結構。用register framebuffer fbinfo 將fbinfo結構註冊到核心,對於fbinfo結構,最基本的是fs op...