07 顯示設(shè)備接口與幀緩沖_第1頁(yè)
07 顯示設(shè)備接口與幀緩沖_第2頁(yè)
07 顯示設(shè)備接口與幀緩沖_第3頁(yè)
07 顯示設(shè)備接口與幀緩沖_第4頁(yè)
07 顯示設(shè)備接口與幀緩沖_第5頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1 2 LCD接口設(shè)計(jì)接口設(shè)計(jì) LCDLCD顯示模塊顯示模塊 液晶顯示是一種被動(dòng)的顯示,它不能發(fā)光,只能使用周 圍環(huán)境的光。它顯示圖案或字符只需很小能量。液晶顯示所 用的液晶材料是一種兼有液態(tài)和固體雙重性質(zhì)的有機(jī)物,它 的棒狀結(jié)構(gòu)在液晶盒內(nèi)一般平行排列,但在電場(chǎng)作用下能改 變其排列方向。 LCDLCD的背光:的背光: lEL(場(chǎng)致發(fā)光):2000-3000小時(shí) lLED光源:50000小時(shí) l新CCFL:60000小時(shí) 3 LCD的顯示方式的顯示方式 l 反射型LCD:底偏光片后面加了一塊反射板,它一般在 戶外和光線良好的辦公室使用。 l 透射型LCD:底偏光片是透射偏光片,它需要連續(xù)使用 背

2、光源,一般在光線差的環(huán)境使用。 l 透反射型LCD:是處于以上兩者之間,底偏光片能部分 反光,一般也帶背光源,光線好的時(shí)候,可關(guān)掉背光 源;光線差時(shí),可點(diǎn)亮背光源使用LCD。 4 常見(jiàn)的液晶顯示器物理結(jié)構(gòu)常見(jiàn)的液晶顯示器物理結(jié)構(gòu) l扭曲向列型(TNTwisted Nematic) l超扭曲向列型(STNSuper TN) l雙層超扭曲向列型(DSTNDual Scan Tortuosity Nomograph) l薄膜晶體管型(TFTThin Film Transistor) 其中TNLCD、STNLCD和DSYNLCD的基本顯示原 理都相同,只是液晶分子的扭曲角度不同而已。而TFT LCD則

3、采用截然不同的顯示方式。 5 LCD通常由兩種方式 l 一種是帶有LCD掃描芯片的LCD模塊 l 一種是通過(guò)LCD控制器,直接掃描LCD屏。 比如:S3C2410處理器,帶有LCD控制器,顯示緩存和系統(tǒng)內(nèi)存公 用??梢灾С諷TN(彩色/灰度)和TFT兩種模式的LCD。 TFT模式下最多支持24位色,800 x600分辨率。 LCD的驅(qū)動(dòng)方式的驅(qū)動(dòng)方式 6 嵌入式處理器與嵌入式處理器與LCD的連接的連接 嵌入嵌入 式處式處 理器理器 LCD 模塊模塊 數(shù)據(jù)數(shù)據(jù) 總線總線 寄存器選擇寄存器選擇 使能信號(hào)使能信號(hào) 有有LCD控制控制 器的嵌入式器的嵌入式 處理器處理器 LCD LCD控制信控制信 號(hào)

4、線號(hào)線 7 片外的片外的LCD控制器控制器 8 集成了LCD控制器的嵌入式處理器體系結(jié)構(gòu) 9 典型的典型的LCD模式信號(hào)線模式信號(hào)線 l LDD,數(shù)據(jù)線 l L_PCLK,點(diǎn)時(shí)鐘 l L_LCLK,行頻 l L_FCLK,幀頻 l L_BIAS,CSTN的AC信號(hào),TFT的開(kāi)啟信號(hào) 10 S3C2410的的LCD掃描模式掃描模式 l 4/8位,單/雙掃描模式,CSTN l 最多256級(jí)灰度 l 顯示緩沖區(qū)支持15、16、24位TFT模式 l 支持RGB格式 11 4位單掃描位單掃描STN模式模式 12 4位單掃描顯示緩沖的對(duì)應(yīng)關(guān)系位單掃描顯示緩沖的對(duì)應(yīng)關(guān)系 l 1個(gè)字節(jié)存儲(chǔ)兩個(gè)點(diǎn)的信息 l 1

5、6級(jí)灰度 13 8位位CSTN屏幕點(diǎn)陣:屏幕點(diǎn)陣:320 x240 14 8位單掃描位單掃描CSTN模式模式 15 8位單掃描顯示緩沖的對(duì)應(yīng)關(guān)系位單掃描顯示緩沖的對(duì)應(yīng)關(guān)系 l 1個(gè)字節(jié)存儲(chǔ)1個(gè)點(diǎn)的信息 l 可以是用調(diào)色板 標(biāo)準(zhǔn)映射: 16 16位單掃描位單掃描TFT模式模式 17 16/15位顯示緩沖的對(duì)應(yīng)關(guān)系位顯示緩沖的對(duì)應(yīng)關(guān)系 18 Linux系統(tǒng)下系統(tǒng)下Framebuffer設(shè)備設(shè)備 l 幀緩沖(framebuffer)是 Linux 為顯示設(shè)備提供的一個(gè) 接口,把顯存抽象后的一種設(shè)備,他允許上層應(yīng)用程序 在圖形模式下直接對(duì)顯示緩沖區(qū)進(jìn)行讀寫(xiě)操作。這種操 作是抽象的,統(tǒng)一的。用戶不必關(guān)心

6、物理顯存的位置、 換頁(yè)機(jī)制等等具體細(xì)節(jié)。這些都是由Framebuffer 設(shè)備驅(qū) 動(dòng)來(lái)完成的。 l 嵌入式系統(tǒng)下大多采用Framebuffer設(shè)備來(lái)實(shí)現(xiàn)顯示設(shè)備 LCD驅(qū)動(dòng)。 19 Linux系統(tǒng)下系統(tǒng)下Framebuffer設(shè)備設(shè)備 Framebuffer在系統(tǒng)中的位置 Linux Kernel Framebuffer VFS虛擬文件系統(tǒng)系統(tǒng)調(diào)用虛擬文件系統(tǒng)系統(tǒng)調(diào)用 VGA LCD GUI LIB User Application 20 Linux系統(tǒng)下系統(tǒng)下Framebuffer設(shè)備設(shè)備 幀緩沖設(shè)備對(duì)應(yīng)的設(shè)備文件為/dev/fb*,如果系統(tǒng)有 多個(gè)顯示卡,Linux 下還可支持多個(gè)幀緩沖設(shè)

7、備,最多可 達(dá) 32 個(gè),分別為/dev/fb0 到/dev/fb31,而/dev/fb 則為當(dāng) 前缺省的幀緩沖設(shè)備,通常指向/dev/fb0。 當(dāng)然在嵌入式系統(tǒng)中支持一個(gè)顯示設(shè)備就夠了。幀緩 沖設(shè)備為標(biāo)準(zhǔn)字符設(shè)備,主設(shè)備號(hào)為29,次設(shè)備號(hào)則從0 到31。分別對(duì)應(yīng)/dev/fb0到/dev/fb31。 21 Framebuffer驅(qū)動(dòng)結(jié)構(gòu)驅(qū)動(dòng)結(jié)構(gòu) l FrameBuffer設(shè)備驅(qū)動(dòng)基于如下兩個(gè)文件: linux/include/linux/fb.h linux/drivers/video/fbmem.c l 與平臺(tái)相關(guān)的設(shè)備驅(qū)動(dòng)文件: linux/drivers/video/s3c-fb.c

8、22 Framebuffer驅(qū)動(dòng)結(jié)構(gòu)驅(qū)動(dòng)結(jié)構(gòu) FrameBuffer幀緩沖的重要數(shù)據(jù)結(jié)構(gòu): fb_info fb_var_screeninfo fb_fix_screeninfo fb_cmap fb_ops 在fb.h中定義 23 Framebuffer驅(qū)動(dòng)結(jié)構(gòu)驅(qū)動(dòng)結(jié)構(gòu) struct fb_info int node; int flags; struct fb_var_screeninfo var; /* Current var */ struct fb_fix_screeninfo fix; /* Current fix */ struct fb_monspecs monspecs; /*

9、 Current Monitor specs */ ; 該結(jié)構(gòu)是LINUX系統(tǒng)定義的framebuffer設(shè)備驅(qū)動(dòng)接口。定義了當(dāng)前顯卡 framebuffer設(shè)備狀態(tài),一個(gè)顯卡可能有兩個(gè)framebuffer,在這種情況下, 就需要兩個(gè)fb_info結(jié)構(gòu)。這個(gè)結(jié)構(gòu)是唯一在內(nèi)核空間可見(jiàn)的。在這個(gè)結(jié)構(gòu) 中有一個(gè)fb_ops指針,指向驅(qū)動(dòng)設(shè)備工作所需的函數(shù)集。 24 Framebuffer驅(qū)動(dòng)結(jié)構(gòu)驅(qū)動(dòng)結(jié)構(gòu) struct fb_fix_screeninfo char id16; /* identification string eg TT Builtin */ unsigned long smem_s

10、tart; /* Start of frame buffer mem */ /* (physical address) */ _u32 smem_len; /* Length of frame buffer mem */ _u32 type; /* see FB_TYPE_* */ _u32 visual; /* see FB_VISUAL_* */ ; 該結(jié)構(gòu)用來(lái)描述設(shè)備無(wú)關(guān),不可變更的信息。可以使用 FBIOGET_FSCREENINFO 命令來(lái)獲取該結(jié)構(gòu)相應(yīng)信息。 25 Framebuffer驅(qū)動(dòng)結(jié)構(gòu)驅(qū)動(dòng)結(jié)構(gòu) struct fb_var_screeninfo _u32 xres; /*

11、visible resolution */ _u32 yres; _u32 xres_virtual; /* virtual resolution */ _u32 yres_virtual; _u32 xoffset; /* offset from virtual to visible */ _u32 yoffset; ; 該結(jié)構(gòu)用來(lái)描述設(shè)備無(wú)關(guān),用戶可變更的信息??梢允褂肍BIOGET_VSCREENINFO 命令 來(lái)獲取該結(jié)構(gòu)相應(yīng)信息,使用FBIOPUT_VSCREENINFO 命令來(lái)設(shè)置該結(jié)構(gòu)相應(yīng)信息。 26 Framebuffer驅(qū)動(dòng)結(jié)構(gòu)驅(qū)動(dòng)結(jié)構(gòu) struct fb_cmap _u32

12、 start; /* First entry */ _u32 len; /* Number of entries */ _u16 *red; /* Red values */ _u16 *green; _u16 *blue; _u16 *transp; /* transparency, can be NULL */ ; 該結(jié)構(gòu)描述設(shè)備無(wú)關(guān)的顏色映射信息。可以通過(guò)FBIOGETCMAP和 FBIOPUTCMAP 對(duì)應(yīng)的ioctl操作設(shè)定或獲取顏色映射信息. 27 Framebuffer驅(qū)動(dòng)API l Linux系統(tǒng)中對(duì)幀緩沖設(shè)備的操作是通過(guò),fb_ops結(jié)構(gòu)來(lái) 完成和定義的。用戶可以通過(guò)ioct

13、l接口來(lái)完成對(duì)fb_ops 結(jié)構(gòu)中定義的功能函數(shù)的調(diào)用。 幀緩沖驅(qū)動(dòng)程序的主要工作就是編寫(xiě)fb_ops結(jié)構(gòu)中的接 口函數(shù)。 28 Framebuffer驅(qū)動(dòng)驅(qū)動(dòng)API struct fb_ops /* open/release and usage marking */ struct module *owner; int (*fb_open)(struct fb_info *info, int user); int (*fb_release)(struct fb_info *info, int user); ssize_t (*fb_read)(struct fb_info *info, cha

14、r _user *buf, size_t count, loff_t *ppos); ssize_t (*fb_write)(struct fb_info *info, const char _user *buf, size_t count, loff_t *ppos); int (*fb_mmap)(struct fb_info *info, struct vm_area_struct *vma); int (*fb_ioctl)(struct fb_info *info, unsigned int cmd,unsigned long arg); ; 29 Framebuffer驅(qū)動(dòng)驅(qū)動(dòng)AP

15、I l fb_ops結(jié)構(gòu)中常見(jiàn)的接口函數(shù): l fb_open: 打開(kāi)幀緩沖設(shè)備 l fb_release:關(guān)閉幀緩沖設(shè)備 l fb_read: 幀緩沖設(shè)備的讀操作 l fb_write: 幀緩沖設(shè)備的寫(xiě)操作 l fb_mmap: 幀緩沖設(shè)備的內(nèi)存映射操作 l fb_ioctl:幀緩沖設(shè)備的ioctl操作 30 Framebuffer幀緩沖內(nèi)核驅(qū)動(dòng)核心幀緩沖內(nèi)核驅(qū)動(dòng)核心 l fbmem.c 實(shí)現(xiàn)了如下函數(shù). register_framebuffer(struct fb_info *fb_info); unregister_framebuffer(struct fb_info *fb_info)

16、; l 這兩個(gè)是提供給下層FrameBuffer設(shè)備驅(qū)動(dòng)的接口,設(shè)備驅(qū)動(dòng)通過(guò)這 兩函數(shù)向系統(tǒng)注冊(cè)或注銷(xiāo)自己。幾乎底層設(shè)備驅(qū)動(dòng)所要做的所有事 情就是填充fb_info結(jié)構(gòu)然后向系統(tǒng)注冊(cè)或注銷(xiāo)它。 31 Framebuffer幀緩沖設(shè)備驅(qū)動(dòng)程序分析幀緩沖設(shè)備驅(qū)動(dòng)程序分析 內(nèi)核源碼目錄(driver/video/)下的s3c-fb.c文件是S5PV210處理 器幀緩沖設(shè)備硬件相關(guān)的驅(qū)動(dòng)程序。 s3c-fb.c驅(qū)動(dòng)程序主要完成以下工作: l初始化LCD控制器、設(shè)置顯示模式、分配顯示緩存。 l分配并初始化fb_info結(jié)構(gòu),填充其成員函數(shù)。 l調(diào)用 register_framebuffer(struct

17、 fb_info *fb_info),函數(shù)向系統(tǒng)注 冊(cè)幀緩沖設(shè)備驅(qū)動(dòng)程序。 32 Linux內(nèi)核對(duì)內(nèi)核對(duì)framebuffer幀緩沖的支持幀緩沖的支持 Linux內(nèi)核對(duì)framebuffer幀緩沖設(shè)備有著良好的支持。 make menuconfig配置菜單: - Device Drivers - Graphics support - Support for frame buffer devices (FB =y) 33 Linux內(nèi)核對(duì)內(nèi)核對(duì)framebuffer幀緩沖的支持幀緩沖的支持 Support for frame buffer devices - 34 Linux內(nèi)核對(duì)內(nèi)核對(duì)fram

18、ebuffer幀緩沖的支持幀緩沖的支持 Samsung S3C framebuffer support 35 Framebuffer幀緩沖設(shè)備的操作幀緩沖設(shè)備的操作 應(yīng)用程序?qū)ramebuffer幀緩沖設(shè)備的操作有以下幾種: 讀/寫(xiě) 讀/寫(xiě)(read/write)/dev/fb:相當(dāng)于讀/寫(xiě)屏幕緩沖區(qū)。 例如: 用 cp /dev/fb0 tmp 命令可將當(dāng)前屏幕的內(nèi)容拷貝到一個(gè)文 件中,而命令 cp tmp /dev/fb0 則將圖形文件tmp顯示 在屏幕上。 36 Framebuffer幀緩沖設(shè)備的操作幀緩沖設(shè)備的操作 映射(map)操作 : 由于 Linux 工作在保護(hù)模式,每個(gè)應(yīng)用程

19、序都有自己的虛擬地址 空間,在應(yīng)用程序中是不能直接訪問(wèn)物理緩沖區(qū)地址的。為此, Linux 在文件操作 file_operations 結(jié)構(gòu)中提供了 mmap 函數(shù),可 將文件的內(nèi)容映射到用戶空間。對(duì)于幀緩沖設(shè)備,則可通過(guò)映射 操作,可將屏幕緩沖區(qū)的物理地址映射到用戶空間的一段虛擬地 址中,之后用戶就可以通過(guò)讀寫(xiě)這段虛擬地址訪問(wèn)屏幕緩沖區(qū), 在屏幕上繪圖了。 37 Framebuffer幀緩沖設(shè)備的操作幀緩沖設(shè)備的操作 IO操作 : 對(duì)于幀緩沖設(shè)備,對(duì)設(shè)備文件的 ioctl操作可讀取/設(shè)置顯示設(shè)備及屏幕的 參數(shù),如分辨率,顯示顏色數(shù),屏幕大小等等。ioctl 的操作是由底層的 驅(qū)動(dòng)程序來(lái)完成的。 例如: ioctl(fbfd, FBIOGET_FSCREENINFO, void *fb_mem; struct fb_var_screeninfo vinfo; struct fb_fix_screeninfo finfo; long int screensize

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論