資源描述:
《《lcd驅(qū)動(dòng)架構(gòu)》word版》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、LCD設(shè)備驅(qū)動(dòng)1、LCD硬件原理a、利益液晶制成的顯示器稱為L(zhǎng)CD,嵌入式系統(tǒng)中主要用TFT屏。b、TFT屏工作時(shí)序圖:VCLK,VSYNC,HSYNC都是像素時(shí)鐘信號(hào)。VSYNC:幀同步信號(hào)HSYNC:行同步信號(hào)VDEN:數(shù)據(jù)有效標(biāo)志位VD:圖像數(shù)據(jù)信號(hào)每發(fā)一個(gè)行同步脈沖,表示開始傳輸一行新的數(shù)據(jù),每發(fā)一個(gè)幀同步脈沖,意味著新的一屏數(shù)據(jù)信號(hào)開始發(fā)送。對(duì)于數(shù)據(jù)的傳輸可以理解為,一幀(即一整屏幕),一行,一點(diǎn)。數(shù)據(jù)的傳輸是一個(gè)震蕩周期傳輸一個(gè)點(diǎn),一個(gè)行周期傳一行,然后是一個(gè)幀脈沖開始傳一屏。C、回掃時(shí)間,行切換和幀切換的回掃時(shí)間。左右邊界為行切換需要的回掃時(shí)間,上下邊
2、界為幀切換需要的回掃時(shí)間,水平同步和垂直同步為行和幀同步本身需要的時(shí)間。Xres,yres指屏幕的水平和垂直分辨率。上邊界左邊界下邊界右邊界水平同步垂直同步y(tǒng)resxresd、以我們TFT-LCD中需要了解到的硬件參數(shù)描述為例。分辨率:768*1024(256*3=768)Spec中的時(shí)序圖。了解硬件參數(shù)需要根據(jù)具體不同的硬件設(shè)置參數(shù)。1、幀緩沖(framebuffer)幀緩沖是linux系統(tǒng)為顯示設(shè)備提供的借口,將顯示緩沖區(qū)抽象。幀緩沖設(shè)備為標(biāo)準(zhǔn)的字符設(shè)備,因此我們可以參加一般字符設(shè)備驅(qū)動(dòng)的架構(gòu)來理解。上層應(yīng)用程序只需要往幀緩沖設(shè)備的顯示緩沖區(qū)中寫入與顯示點(diǎn)對(duì)應(yīng)的
3、區(qū)域的顏色值,對(duì)應(yīng)的顏色就會(huì)顯示在屏幕上。所以對(duì)于LCD驅(qū)動(dòng)的理解,主要部分就是對(duì)幀緩沖設(shè)備的操作。a、幀緩沖設(shè)備驅(qū)動(dòng)架構(gòu):Pxafb.cFbmem.c注冊(cè)幀緩沖設(shè)備驅(qū)動(dòng),register_framebuffer.根據(jù)lcd屏幕特點(diǎn),初始化lcd控制器申請(qǐng)幀緩沖設(shè)備顯示緩沖區(qū)空間應(yīng)用程序LCD控制器fb_readfb_writefb_mmapfb_ioctlPxafb.cFile_operationsa、理解幀緩沖設(shè)備需要了解的幾個(gè)重要結(jié)構(gòu)體,也就是在注冊(cè)驅(qū)動(dòng)時(shí)需要用到的幾個(gè)結(jié)構(gòu)體fb_info結(jié)構(gòu)體(簡(jiǎn)稱FBI)FBI是幀緩沖設(shè)備中最關(guān)鍵的一個(gè)結(jié)構(gòu)體,包括了幀緩沖
4、設(shè)備屬性和操作的完整性structfb_info{intnode;intflags;structfb_var_screeninfovar;/*Currentvar*///可變參數(shù)structfb_fix_screeninfofix;/*Currentfix*///固定參數(shù)structfb_monspecsmonspecs;/*CurrentMonitorspecs*/structwork_structqueue;/*Framebuffereventqueue*/structfb_pixmappixmap;/*Imagehardwaremapper*/structfb
5、_pixmapsprite;/*Cursorhardwaremapper*/structfb_cmapcmap;/*Currentcmap*/structlist_headmodelist;/*modelist*/structfb_videomode*mode;/*currentmode*/#ifdefCONFIG_FB_BACKLIGHT/*assignedbacklightdevice*//*setbeforeframebufferregistration,removeafterunregister*/structbacklight_device*bl_dev;
6、/*Backlightlevelcurve*/structmutexbl_curve_mutex;u8bl_curve[FB_BACKLIGHT_LEVELS];#endifstructfb_ops*fbops;structdevice*device;/*Thisistheparent*/structdevice*dev;/*Thisisthisfbdevice*/intclass_flag;/*privatesysfsflags*/#ifdefCONFIG_FB_TILEBLITTINGstructfb_tile_ops*tileops;/*TileBlittin
7、g*/#endifchar__iomem*screen_base;/*Virtualaddress*/unsignedlongscreen_size;/*AmountofioremappedVRAMor0*/void*pseudo_palette;/*Fakepaletteof16colors*/#defineFBINFO_STATE_RUNNING0#defineFBINFO_STATE_SUSPENDED1u32state;/*Hardwarestatei.esuspend*/void*fbcon_par;/*fbconuse-onlyprivatearea