版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、嵌入式Linux顯示驅動和圖形應用程序初步電子信息工程學院楊昕欣本講主要內容nLCD顯示原理nMX1的LCD接口初始化配置n顯示驅動原理及源代碼分析n基于幀緩沖設備的圖形應用程序開發(fā)LCD硬件原理圖LCD顯示原理nLCD是基于液晶光電效應的顯示器件。液晶顯示器的工作原理是利用液晶的物理特性,在通電時,液晶排列變得有秩序,使光線容易通過;不通電時,排列則變得混亂,阻止光線通過。即液晶工作時,使用的是外部的光線,自己本身并不發(fā)光,所以與CRT相比,液晶顯示器的耗電量較低。 LCD分類nLCD可由為液晶照明的方式分為:傳送式和反射式q傳送式屏幕要使用外加光源照明,稱為背光(backlight),照明
2、光源要安裝在LCD的背后。傳送式LCD在正常光線及暗光線下,顯示效果都很好,但在戶外,尤其在日光下,很難辯清顯示內容。 q反射式屏幕,則不需要外加照明電源,使用周圍環(huán)境的光線(或在某些筆記本中,使用前部照明系統(tǒng)的光線)。這樣,反射式屏幕就沒有背光,所以,此種屏幕在戶外或光線充足的室內,才會有出色的顯示效果,但在一般室內光線下,這種顯示屏的顯示效果就不及背光傳送式的。 LCD分類nLCD可分為:主動式和被動式被動矩陣顯示畫面的原理:q輸入的信號依次去驅動每一排的電極,q當某一排被選定的時候,列向上的電極將被觸發(fā)打開位于排和列交叉上的那些像素。q優(yōu)點:比較簡單,而且對液晶屏的成本增加也不多。q缺點
3、:如果有太大的電流通過某個單元,附近的單元都會受到影響,引起虛影。如果電流太小,單元的開和關就會變得遲緩,降低對比度和丟失移動畫面的細節(jié)。 LCD分類主動矩陣LCD的原理:q主動在每個單元中都加入了很小的晶體管:q由晶體管來控制電流的開和斷。晶體管電極是利用薄膜技術而做成的。薄膜晶體管LCD(TFTLCD)也因此得名。 q優(yōu)點:晶體管可以迅速地控制每個單元,q由于單元之間的電干擾很小,所以可使用大電流,而不會有虛影和拖尾現(xiàn)象q更大的電流會提供更好的對比度、更銳利的和更明亮的圖像。MX1對LCD的支持nMX1 LCDC(液晶顯示控制器,Liquid Crystal Display Control
4、ler)提供了對單色,灰度,被動式彩色點陣液晶和主動式彩色點陣液晶屏的支持.主要特性如下:q支持自刷新方式LCDq最多16級灰度顯示q被動式與主動式彩色液晶屏接口q可編程刷新率q支持16/12/8/4/2/1位的數(shù)據(jù)總線寬度q支持4/8bpp的被動式彩屏(CSTN)q支持4/8/12/16bpp的主動式彩屏(TFT) 灰度顯示原理nLCD顯示屏并不是設置成不同的亮度去驅動每一像素的。它對象素要么顯示,要么關閉。LCD顯示屏的一個常用指標是它的反應時間,反應時間指的是一個像素從顯示到關閉所花費的時間,典型的是幾十ms。 nLCD控制器內部有1個16周期計數(shù)器,用于產生16周期的間隔。 16周期間
5、隔里像素顯示的次數(shù) 決定了該像素的灰度彩色顯示原理nR、G、B三種灰度的疊加顯示刷新率n刷新率是一個重要的顯示特性,指的是整個數(shù)據(jù)幀被重新寫到顯示屏的頻率。如果數(shù)據(jù)寫得太慢,將影響顯示質量;太快則顯示器的反應時間跟不上像素驅動狀態(tài)的改變。大部分顯示屏推薦的速率是7080Hz。 MX1顯示屏幕大小MX1顯示屏幕大小n實際屏幕寬度(XMAX)n實際屏幕高度(YMAX)n虛擬顯示頁寬(VPW)規(guī)定最大頁寬,用來計算每一行的起始地址。每一頁的首行起始地址由SSA決定,第二行的起始地址為SSA+VPW,以此類推,第n行的起始地址為SSA+n*VPW。n虛擬顯示頁高(VPH) 只受顯式內存大小限制,對LC
6、DC沒有影響nLCDC會掃描SSA寄存器指向的顯示內存起始地址顯示數(shù)據(jù)映射顯示數(shù)據(jù)映射Big Endian vs. Little EndiannBig Endian: 數(shù)據(jù)高位字節(jié)存在內存的低位地址上,低位字節(jié)保存在內存的高位地址上。nLittle Endian:數(shù)據(jù)高位字節(jié)存在內存的高位地址上,低位字節(jié)保存在內存的低位地址上。n舉例:00000000 00000000 00000100 00000001 顯示數(shù)據(jù)映射顯示數(shù)據(jù)映射MX1的LCDC寄存器簡介灰度顯示原理n最多16種灰度級別,用2bit或4bit表示n2bit最多表示4種灰度,4bit表示16種灰度n某像素的灰度是用每16幀中,該
7、像素顯示的幀數(shù)來表示的,這種機制稱為幀速率控制。n通?;叶鹊燃壊皇蔷€形劃分的,比如對于4級灰度,某種液晶需要按0,1/4,1/2,1的等級劃分,這比按0,1/3,2/3,1的線形劃分要有更好的效果灰度顯示原理幀速率控制(非線性)彩色顯示原理n被動彩色矩陣顯示原理:q對于4bit和8bit模式,利用LCDC的顏色映射矩陣將4bit或8bit數(shù)據(jù)映射為12bit數(shù)據(jù)q上述12bit數(shù)據(jù)分為3部分,每部分4bit,分別表示不同深度的紅、綠、藍三色,分別通過控制三個獨立的FRC實現(xiàn)q對于12bit模式,自身就分為3部分,每部分4bit,分別表示不同深度的紅、綠、藍三色,因此不需要通過顏色映射矩陣,可以
8、直接控制相應的FRCq對于MC9328,不支持超過12bit的被動彩色顯示矩陣被動式彩色顯示矩陣(顏色映射RAM)彩色顯示原理n主動彩色矩陣顯示原理:q對于4bit和8bit模式,利用LCDC的顏色映射矩陣將4bit或8bit數(shù)據(jù)映射為12bit數(shù)據(jù)q上述12bit數(shù)據(jù)分為3部分,每部分4bit,分別表示不同深度的紅、綠、藍三色,q對于主動模式,上述三個通道輸出的紅、綠、藍控制量直接送給液晶,不需要經過MX1的LCDC的FRC(由LCD本身實現(xiàn)類似FRC的功能);被動式則需要用到MX1的FRC.q對于MC9328,不支持超過16bit的主動彩色顯示矩陣q對于12bit/16bit的像素信息,直
9、接送給液晶,不需要通過LCDC的顏色映射矩陣主動式彩色顯示矩陣(顏色映射RAM)LCDC接口及時序n接口:1.像素數(shù)據(jù)2.垂直同步信號3.水平同步信號4.移位時鐘信號5.刷新信號6.對比度信號7.夏普屏專用信號SPL_SPR、CLS、SP、REV被動式矩陣液晶接口動作流程1.LSCLK 將像素信號輸入液晶驅動電路的內部寄存器2.LP 標志當前一行像素的數(shù)據(jù)已經傳送完成,并且將已傳來的數(shù)據(jù)鎖存到一個寬寄存器中3.FLM 標志著當前所顯示頁的第一行4.LD表示具體的像素信號,在兩個LP脈沖之間的LD表示一行的像素5.ACD 每隔預定的若干幀之后就會翻轉一次,對液晶進行一次刷新被動式矩陣液晶接口動作
10、時序單色、4bit數(shù)據(jù)寬度液晶的動作時序(m為像素數(shù)) 被動式彩色、彩色、8bit數(shù)據(jù)寬度液晶的動作時序數(shù)據(jù)寬度液晶的動作時序(m為像素數(shù)為像素數(shù)) 主動式矩陣液晶接口動作流程1.在LSCLK 的下降沿,將像素信號輸入給液晶驅動電路的內部寄存器。也可以是上升沿,通過更改寄存器中相應標志位實現(xiàn)。2.HSYNC脈沖產生新的一行3.VSYNC脈沖產生新的一幀,每一個VSYNC脈沖內,至少產生一個HSYNC脈沖4.LD表示具體的像素信號,在兩個LP脈沖之間的LD表示一行的像素5.OE為使能信號,OE為低電平時,數(shù)據(jù)無效,不顯示TFT 顏色通道分配在4bit、8bit和12bit模式:LD15:12定義
11、紅色,LD10:7定義綠色,LD4:1定義藍色在16bit模式:LD15:11定義紅色,LD10:5定義綠色,LD4:0定義藍色LCDC 原理框圖顯示的實現(xiàn)幀緩沖n幀緩沖(framebuffer)顯示緩沖區(qū)q是Linux為顯示設備提供的一個接口,是把顯存抽象后的一種設備,他允許上層應用程序在圖形模式下直接對顯示緩沖區(qū)進行讀寫操作。 q用戶不需要對底層驅動有深入了解,也不必關心物理顯存的位置、換頁機制等細節(jié)qXwindow繪制窗口,顯示漢字都是通過fb幀緩沖設備nLinux可支持最多32個/dev/fb0/dev/fb31缺省是/dev/fb0n可以直接拷貝位圖到fb來顯示到屏幕qcp /bit
12、map/penguin.bin /dev/fb0幀緩沖設備驅動原理n幀緩沖設備屬于字符設備,其目的就是通過配置MX1寄存器,在一段指定的內存與LCD之間建立一個自動傳輸?shù)耐ǖ?。這樣,任何程序只要修改這段內存中的數(shù)據(jù),就可以改變LCD上的顯示內容。 nMX1寄存器的初始化,特別是SSA幀緩沖設備驅動n三個關鍵文件:一個模板文件:1.S相關頭文件:1. fb.h幀緩沖設備驅動nFbmem.c功能一:注冊所有顯示驅動的信息幀緩沖設備驅動功能二:提供上層驅動接口即給用戶程序提供通用接口,從而使用戶不必關心具體的顯示硬件。幀緩沖設備的接口nstatic struct file_operations fb
13、_fops = owner: THIS_MODULE, read: fb_read, /* 讀操作 */ write: fb_write, /* 寫操作 */ ioctl: fb_ioctl, /* 控制操作 */ mmap: fb_mmap, /* 映射操作 */ open: fb_open, /* 打開操作 */ release: fb_release, /*關閉操作*/ ; 其中的成員函數(shù)都在文件linux/driver/video/fbmem.c中定義 fb_readfb_read(struct file *file, char *buf, size_t count, loff_t *
14、ppos)unsigned long p = *ppos;struct inode *inode = file-f_dentry-d_inode;int fbidx = GET_FB_IDX(inode-i_rdev);struct fb_info *info = registered_fbfbidx;struct fb_ops *fb = info-fbops;struct fb_fix_screeninfo fix; .幀緩沖設備驅動n四個重要的結構體:1.fb_fix_screeninfo/include/linux/fb.h中定義,用于定義圖形卡的信息,用戶不能更改幀緩沖設備驅動2.f
15、b_var_screeninfo在/include/linux/fb.h中定義,提供由用戶設置的圖形卡信息幀緩沖設備驅動3.xxfb_info定義具體設備的底層接口,記錄設備狀態(tài),每個幀緩沖設備都與一個xxfb_infor結構相對應。其中的display_switch結構在/include/video/fbcon.h中定義。幀緩沖設備驅動4.fb_info4.fb_info 1) Linux為幀緩沖設備定義的驅動層接口2) Fb_info中紀錄了幀緩沖設備的全部信息,包括設備的設置參數(shù),狀態(tài)以及操作函數(shù)指針。每一個幀緩沖設備都必須對應一個fb_info結構。3)Fb_info包括下列成員mod
16、ename設備名稱fontname顯示字體,fbops指向底層操作的函數(shù)的指針fb_var_screeninfo記錄用戶可修改的顯示控制器參數(shù), xres定義屏幕一行有多少個點, yres定義屏幕一列有多少個點, bits_per_pixel定義每個點用多少個字節(jié)表示fb_fix_screeninfo記錄用戶不能修改的顯示控制器的參數(shù),如屏幕緩沖區(qū)的物理地址,長度。當對幀緩沖設備進行映射操作的時候,就是從fb_fix_screeninfo中取得緩沖區(qū)物理地址的4)上面所說的數(shù)據(jù)成員都是需要在驅動程序中初始化和設置的。幀緩沖設備驅動 fb_info 定義幀緩沖設備驅動 fb_ops 定義注意與f
17、bmem.c中的fb_fops結構體有區(qū)別幀緩沖設備驅動n模板:Skeleton.cq核心是_init xxfb_init(void)qXxfb_init中調用的函數(shù)和結構體Xxfb_init中調用的函數(shù)和結構體(續(xù))如何寫fb設備驅動n遵循設備驅動程序的結構,設備注冊、定義file_operations接口、初始化LCDC寄存器n初始化一個fb_info結構,填充其中的成員變量,并調用register_framebuffer(&fb_info),將fb_info登記入內核。 n實現(xiàn)定義的各個接口函數(shù)設備驅動源代碼nmx1fb.h定義LCDC寄存器nmx1fb.c初始化LCDC,fb_
18、ops,填充fb_infonFbmem.c實現(xiàn)file_operations接口,設備注冊注銷nFb.h定義fb_var_screeninfo,fb_fix_screeninfo,fb_ops,fb_info設備驅動源代碼設備驅動源代碼dbmx1fb_set_var流程幀緩沖設備的注冊與注銷n在linux/driver/video/fbmem.c中定義 n注冊qdevfs_register_chrdev(FB_MAJOR,fb,&fb_fops)qfb_info-devfs_handle = devfs_register (devfs_handle, name_buf, DEVFS_F
19、L_DEFAULT, FB_MAJOR, i, S_IFCHR | S_IRUGO | S_IWUGO, &fb_fops, NULL);n注銷:qdevfs_unregister (fb_info-devfs_handle);Fb設備驅動Ioctl的主要操作n通過以下CMD來傳遞控制命令qFBIOGET_VSCREENINFOqFBIOPUT_VSCREENINFOqFBIOGET_FSCREENINFO如何寫fb應用程序n在應用程序中,操作/dev/fb的一般步驟如下 1 打開/dev/fb設備文件。 2 用ioctrl操作取得當前顯示屏幕的參數(shù),如屏幕分辨率,每個像素點的比特數(shù)。
20、根據(jù)屏幕參數(shù)可計算屏幕緩沖區(qū)的大小。 3 將屏幕緩沖區(qū)映射到用戶空間。 4 映射后就可以直接讀寫屏幕緩沖區(qū),進行繪圖和圖片顯示典型應用結構代碼(一)nint main() int fbfd = 0; struct fb_var_screeninfo vinfo; struct fb_fix_screeninfo finfo; long int screensize = 0; /*打開設備文件*/ fbfd = open(/dev/fb0, O_RDWR); 典型應用結構代碼(二)n/*取得屏幕相關參數(shù)*/ ioctl(fbfd, FBIOGET_FSCREENINFO, &finfo); ioctl(fbfd, FBIOGET_VSCREENINFO, &vinfo); n/*計算屏幕緩沖區(qū)大小*/ screensize = vinfo.xres * vinfo.yres * vinfo.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東外語外貿大學南國商學院《國際結算B》2023-2024學年第一學期期末試卷
- 廣東食品藥品職業(yè)學院《測試技術》2023-2024學年第一學期期末試卷
- 廣東生態(tài)工程職業(yè)學院《資源環(huán)境統(tǒng)計分析》2023-2024學年第一學期期末試卷
- 二年級數(shù)學計算題專項練習
- 【2021屆備考】2020全國名校數(shù)學試題分類解析匯編(12月第一期):E5簡單的線性規(guī)劃問題
- 2021年高考生物(人教版)一輪復習強化練習:生命活動的主要承擔者-蛋白質
- 【名師一號】2021年新課標版歷史選修2-單元測試2
- 2025年人教版七年級數(shù)學寒假預習 第07講 實數(shù)及其簡單計算
- 2021年高考語文考點總動員專題65-鑒賞文學作品的形象、語言和表達技巧之語言風格(解析版)
- 2021年高考語文二輪復習講練測專題02-識記現(xiàn)代漢語字形(測)(解析版)
- DB11T 489-2024 建筑基坑支護技術規(guī)程
- 乳腺腔鏡手術介紹
- 服裝的生產方案
- JTGT F20-2015 公路路面基層施工技術細則
- 機械加工廠計劃管理
- 《美術策展方案》課件
- 幼兒教師專業(yè)發(fā)展及《幼兒園教師專業(yè)標準》解讀課件
- 云南保山電力股份有限公司招聘筆試題庫
- 銀行業(yè)聲譽風險管理培訓
- 2024新能源風電場集電線路施工方案
- 醫(yī)院季度投訴分析整改報告
評論
0/150
提交評論