《嵌入式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為顯示裝置提供的乙個介面,把視訊記憶體抽象後的一種裝置,他允許上層應用程式在圖...