久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 高清嵌入式系統(tǒng)中的DVI驅動開發(fā)

高清嵌入式系統(tǒng)中的DVI驅動開發(fā)

作者: 時間:2012-05-08 來源:網絡 收藏

3 Linux的幀緩沖設備
3.1 framebuffer機制
framebuffer(幀緩沖)是出現(xiàn)在Linux2.2.xx之后版本內核的一種程序接口,在Linux體系中它居于上層應用程序和底層顯示設備之間。framebuffer屏蔽了不同顯示設備間的差異,將顯示設備抽象為幀緩沖區(qū),它是一種供用戶態(tài)實現(xiàn)直接寫屏的抽象設備。framebuffer可
以看成是顯存的一個映像,用戶通過內存映射將其映射到進程的地址空間后,通過對顯示緩沖區(qū)的讀寫操作可直接控制LCD的屏幕輸出。
frameBuffer設備主要基于linux/include/linux/fb.h和linux/drivers/video/fbmem.c這兩個文件。fb.h中包含了與幀緩沖設備相關的重要的數(shù)據結構。fbmem.c是framebuffer機制的核心程序,它為上層應用程序提供了通用接口,同時也為下層特定硬件提供了接口。其內的函數(shù)可對具體硬件進行操作,比如對寄存器進行設置,對顯示緩沖進行映射等。
3.2 幾個重要的數(shù)據結構
(1)struct fb_info
這個結構是Linux為幀緩沖區(qū)設備定義的層接口,它包含了關于幀緩沖設備屬性和操作的完整描述,部分成員定義如下:
b.jpg
其中,var記錄用戶可以修改的顯示控制器參數(shù),包括屏幕分辨率和每個像素的位寬等;fix記錄用戶不能修改的顯示控制器參數(shù);cmap為當前的顏色表;fbops指向對底層硬件操作的函數(shù)集;dev表示幀緩沖設備;screen_base為I/O映射的虛擬基地址。
(2)struct fb_ops
該結構提供了指向底層操作的函數(shù)指針,其成員函數(shù)最終與LCD控制器硬件打交道,這些函數(shù)需要驅動者根據LCD控制器的硬件設置及LCD顯示屏的硬件參數(shù)進行設計。該結構部分成員定義如下:
c.jpg
其中,fb_check_var用于檢查可變的屏幕參數(shù),并調整其為硬件支持的值;fb_set_par根據屏幕參數(shù)設置具體讀寫LCD控制器的寄存器以使其進入相應的工作狀態(tài),fb_setcolreg設置color寄存器來實現(xiàn)偽顏色表和顏色表的填充。
(3)struct fb_var_screeninfo
這是fb_info的成員結構體。它記錄了幀緩沖設備和指定顯示模式的可修改信息,包括屏幕分辨率、每個像素的位寬、幀延時、行延時等。
(4)struct fb_fix_screeninfo
這是fb_info的成員結構體,它描述顯示卡的屬性,并且在運行時不能被修改,例如緩沖區(qū)的首地址、長度等。當一種模式被設定后,內存信息由顯示卡硬件給出,內存的位置等信息就不可修改。
MX51將LCD控制器直接嵌入到處理器芯片內部,這為關于顯示功能的擴展提供了直接接口。LCD控制器驅動是設備驅動的核心,它是一個標準的framebuffer設備驅動。設計驅動程序,首要的是配置LCD控制器,設置幀緩沖區(qū),這在很大程度上要依賴于上述的數(shù)據結構,驅動設計需填寫相關結構體并完成指定的接口函數(shù)。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


評論


相關推薦

技術專區(qū)

關閉