虛擬幀緩衝驅動

2021-08-21 19:46:28 字數 1991 閱讀 2755

《嵌入式linux系統開發全程解析》是一本全面介紹嵌入式linux開發的專著,書中涵蓋了程式生成工具、除錯工具、引導載入器、linux系統結構、linux核心、驅動程式、使用者空間程式設計、使用者空間中介軟體等方面的內容。《嵌入式linux系統開發全程解析》內容前後照應、貼近實踐,且有較強的延伸型,有利於讀者建立嵌入式linux開發系統化的知識結構和技術理念。本節為大家介紹虛擬幀緩衝驅動。

17.2.2  虛擬幀緩衝驅動

虛擬幀緩衝(vfb,virtual framebuffer)驅動程式是乙個不基於硬體的驅動程式,它在記憶體中開闢虛擬顯示裝置的記憶體,這可以模擬對顯示的操作。

從結構上,vfb和乙個真實的顯示驅動程式基本相同,但是它實際上並不完成顯示的功能,而只提供虛擬顯示輸出功能。在實際的系統中,vfb通常僅僅用於測試,或者在沒有支援framebuffer硬體的時候,作為預設的實現。

虛擬幀緩衝驅動的源**為:drivers/video/vfb.c。

在核心配置的時候,如果選擇了虛擬幀緩衝的支援(fb_virtual),將會自動選擇幀緩衝驅動的幾個配置巨集(填充、區域複製、fb的sys檔案系統)。

vfb變化螢幕資訊(fb_var_screeninfo)的定義如下所示:

static struct fb_var_screeninfo vfb_default __initdata = ,      // 定義rgb888的顏色空間  

.green  =        ,  

.blue   =        ,  

.activate =  fb_activate_test,  

.height =    -1,     .width =    -1,  

.pixclock      = 20000,  

.left_margin   = 64,     .right_margin = 64,  

.upper_margin =  32,     .lower_margin = 32,  

.hsync_len = 64,     .vsync_len =    2,  

.vmode = fb_vmode_noninterlaced,  

}; vfb_default結構的定義表示vfb的螢幕大小為640×480,顏色空間為rgb888,每個畫素24個位元組。

vfb固定螢幕資訊(fb_fix_screeninfo)的定義如下所示:

static struct fb_fix_screeninfo vfb_fix __devinitdata = ; 

vfb的framebuffer操作由vfb_ops結構表示,內容如下所示:

static struct fb_ops vfb_ops = ; 

在vfb_ops結構中的sys_fillrect(填充矩形)、sys_copyarea(複製區域)和sys_imageblit(繪製影象)是framebuffer驅動程式中公用的函式,而以vfb_為字首的幾個函式是在vfb驅動中單獨實現的。

vfb_pan_display()的實現如下所示:

static int vfb_pan_display(struct fb_var_screeninfo *var, struct fb_info *info)  

else   

info->varvar.xoffset = var->xoffset;      // 指定顯示的位置  

info->varvar.yoffset = var->yoffset;  

if (var->vmode & fb_vmode_ywrap)  

info->var.vmode |= fb_vmode_ywrap;  

else  

info->var.vmode &= ~fb_vmode_ywrap;  

return 0;  

} vfb_pan_display()利用了虛擬緩衝完成顯示區域調整的函式。在其中,並不需要完全重寫顯示區域,只需要將可以顯示區域的位址賦值。

幀緩衝驅動程式設計

視訊記憶體 幀緩衝 顯示快取 framebuffer從本質上講是圖形裝置的硬體抽象。對開發者而言,framebuffer是一塊顯示快取,往顯示快取中寫入特定格式的資料就意味著向螢幕輸出內容。通過不斷的向frame buffer中寫入資料,顯示控制器就自動的從frame buffer中取資料並顯示出來...

qte環境建立 PC機的虛擬幀緩衝

1 tmake 配置 tar zxvf tmake 1.11.tar.gz 解壓tmake原始碼包 cd tmake 1.11 進入解壓目錄 vi env.sh 建立shell檔案,在檔案中新增如下內容 export tmakedir pwd export tmakepath tmakedir li...

幀緩衝儲存器

幀緩衝儲存器 frame buffer 簡稱幀快取或視訊記憶體,它是螢幕所顯示畫面的乙個直接映象,又稱為位對映圖 bit map 或光柵。幀快取的每一儲存單元對應螢幕上的乙個畫素,整個幀快取對應一幀影象。幀緩衝是linux為顯示裝置提供的乙個介面,把視訊記憶體抽象後的一種裝置,他允許上層應用程式在圖...