幀緩衝驅動程式設計

2021-06-16 06:46:06 字數 1382 閱讀 6316

視訊記憶體----

幀緩衝----顯示快取

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

幀緩衝裝置對應的裝置檔案為/dev/fb*,如果系統有多個顯示卡,linux下還可支援多個幀緩衝裝置,最多可達32個,分別為/dev/fb0到/dev/fb31,而/dev/fb0則為當前預設的幀緩衝裝置,通常指向/dev/fb0。幀緩衝裝置為標準字元裝置,主裝置號為29,次裝置號則從0到31.

訪問幀緩衝裝置---例項演示

1清除lcd

dd if=/dev/zero/fb0 bs=240 count=320   bs-- block size 以塊的方式,每個240位元組。

2執行應用程式,畫圖

./lcd

3清除lcd

dd if=/dev/zero of=/dev/fb0 bs=240 count=320

4顯示cat 7.bmp>/dev/fb0

-------------------系統架構-----------------------

裝置描述

linux核心使用struct fb_info來描述幀緩衝裝置。

struct fb_info;

可變引數

struct fb_var_screeninfo var記錄了使用者可以修改的顯示引數,包括螢幕解析度等。

struct fb_var_screeninfo ;

固定引數--------

struct fb_fix_screeninfo記錄了使用者不能修改的顯示器控制引數,如顯示快取的實體地址等。

操作集

struct fb_ops 包含了對控制器進行操作的函式指標。

若不實現,也可以,這時圖中,file_operations結構體中的read等,是核心給我們實現好的。若實現,則會使用自己定義好的。

struct fb_ops ;

裝置註冊

int register_framebuffer(struct fb_info *fb_info)

裝置登出

int unregister_framebuffer(struct fb_info *fb_info)

驅動分析-----------------------

配置s3c2440 lcd驅動程式

make menuconfig arch=arm

device drivers------s3c2410 frame buffer support-----3.5 2410 nec support

測試--------如上例項演示

虛擬幀緩衝驅動

嵌入式linux系統開發全程解析 是一本全面介紹嵌入式linux開發的專著,書中涵蓋了程式生成工具 除錯工具 引導載入器 linux系統結構 linux核心 驅動程式 使用者空間程式設計 使用者空間中介軟體等方面的內容。嵌入式linux系統開發全程解析 內容前後照應 貼近實踐,且有較強的延伸型,有利...

幀緩衝儲存器

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

Linux的幀緩衝裝置

linux的幀緩衝裝置 幀緩衝 framebuffer 是 linux 為顯示裝置提供的乙個介面,把視訊記憶體抽象後的一種裝置,他允許上層應用程式在圖形模式下直接對顯示緩衝區進行讀寫操作。這種操作是抽象的,統一的。使用者不必關心物理視訊記憶體的位置 換頁機制等等具體細節。這些都是由framebuff...