導航:首頁 > 編程語言 > linuxframebuffer編程

linuxframebuffer編程

發布時間:2025-07-10 02:41:23

『壹』 怎麼用命令對framebuffer清屏

framebuffer 通過dd 進行清屏操作

/dev/graphics/fb0 /dev/zero

linux的fb設備文件一般是 /dev/fb0,

執行dd if=/dev/zero of=/dev/graphics/fb0 bs=1280 count=720 實現清屏

也可以通過fbset對framebuffer來進行設置

內核當中的一種驅動程序介面。這種介面將顯示設備抽象為幀緩沖區。用戶可以將它看成是顯示內存的一個映像,將其映射到進程地址空間之後,

就可以直接進行讀寫操作,而寫操作可以立即反應在屏幕上。該驅動程序的設備文件一般是 /dev/fb0、/dev/fb1 等等。

比如,假設現在的顯示模式是 1024x768-8 位色,則可以通過如下的命令清空屏幕:

$ dd if=/dev/zero of=/dev/fb0 bs=1024 count=768

有一些特殊的設備文件。例如/dev/zero文件代表一個永遠輸出 0的設備文件,使用它作輸入可以得到全為空的文件。

因此可用來創建新文件和以覆蓋的方式清除舊文件。

下面使用dd命令將從zero設備中創建一個10K大小(bs決定每次讀寫1024位元組,count定義讀寫次數為10次),但內容全為0的文件。

# dd if=/dev/zero of=file count=10 bs=1024

10+0 records

in

10+0 records out

10240 bytes transferred in 0.001408 secs

(7267903 b ytes/sec)

『貳』 framebuffer驅動程序 如何調用硬體加速

首先不太清楚你說的framebuffer驅動程序具體指的是什麼。
一般意義的framebuffer驅動指的是管理framebuffer。首先framebuffer上的內容如何刷新到顯示器上,這是display驅動完成的的。(Display的是圖形驅動的一個固定術語,用來描述如何把framebuffer上的內容顯示到顯示器上的這一過程)。現代圖形系統,一般至少會有一個實際的framebuffer,這個上面的內容最終會顯示出去。同時會有若干off-screen的framebuffer。這些off-screen framebuffer是用來給應用程序畫圖。當完成畫圖之後,再把這些圖形整合到實際的framebuffer上。有時候為了性能,可能不止一個實際的framebuffer,多個存在,但是一個周期只能顯示一個framebuffer。這其中就涉及圖像內容的拷貝,縮放,翻轉,透明化等一系列操作。這些操作,如果GPU支持硬體加速的話,理論上就可以在驅動程序里實現。方法無非是在驅動程序里操作GPU的寄存器,設置好操作類型,提供好緩存,然後做好同步工作,讓硬體來完成上述的圖形操作。至於如何調用,驅動程序肯定會有介面出來的。這個和驅動程序設計有關。微軟,linux這樣的操作系統也有標準的硬體加速介面,驅動程序只要去實現了,應用程序就可以使用。

『叄』 怎麼修改android 啟動過程中的第二個開機畫面

第一個開機畫面是在內核啟動的過程中出現的,它是一個靜態的畫面。第二個開機畫面是在init進程啟動的過程中出現的,它也是一個靜態的畫面。第三個開機畫面是在系統服務啟動的過程中出現的,它是一個動態的畫面。無論是哪一個畫面,它們都是在一個稱為幀緩沖區(frame buffer,簡稱fb)的硬體設備上進行渲染的。接下來,我們就分別分析這三個畫面是如何在fb上顯示的。
1. 第一個開機畫面的顯示過程
Android系統的第一個開機畫面其實是Linux內核的啟動畫面。在默認情況下,這個畫面是不會出現的,除非我們在編譯內核的時候,啟用以下兩個編譯選項:
CONFIG_FRAMEBUFFER_CONSOLE
CONFIG_LOGO
第一個編譯選項表示內核支持幀緩沖區控制台,它對應的配置菜單項為:Device Drivers ---> Graphics support ---> Console display driver support ---> Framebuffer Console support。第二個編譯選項表示內核在啟動的過程中,需要顯示LOGO,它對應的配置菜單項為:Device Drivers ---> Graphics support ---> Bootup logo。配置Android內核編譯選項可以參考在Ubuntu上下載、編譯和安裝Android最新內核源代碼(Linux Kernel)一文。
幀緩沖區硬體設備在內核中有一個對應的驅動程序模塊fbmem,它實現在文件kernel/goldfish/drivers/video/fbmem.c中,它的初始化函數如下所示:

/**
* fbmem_init - init frame buffer subsystem
*
* Initialize the frame buffer subsystem.
*
* NOTE: This function is _only_ to be called by drivers/char/mem.c.
*
*/

static int __init
fbmem_init(void)
{
proc_create("fb", 0, NULL, &fb_proc_fops);

if (register_chrdev(FB_MAJOR,"fb",&fb_fops))
printk("unable to get major %d for fb devs\n", FB_MAJOR);

fb_class = class_create(THIS_MODULE, "graphics");
if (IS_ERR(fb_class)) {
printk(KERN_WARNING "Unable to create fb class; errno = %ld\n", PTR_ERR(fb_class));
fb_class = NULL;
}
return 0;
}
這個函數首先調用函數proc_create在/proc目錄下創建了一個fb文件,接著又調用函數register_chrdev來注冊了一個名稱為fb的字元設備,最後調用函數class_create在/sys/class目錄下創建了一個graphics目錄,用來描述內核的圖形系統。

模塊fbmem除了會執行上述初始化工作之外,還會導出一個函數register_framebuffer:

EXPORT_SYMBOL(register_framebuffer);
這個函數在內核的啟動過程會被調用,以便用來執行注冊幀緩沖區硬體設備的操作,它的實現如下所示:

/**
* register_framebuffer - registers a frame buffer device
* @fb_info: frame buffer info structure
*
* Registers a frame buffer device @fb_info.
*
* Returns negative errno on error, or zero for success.
*
*/

int
register_framebuffer(struct fb_info *fb_info)
{
int i;
struct fb_event event;
......

if (num_registered_fb == FB_MAX)
return -ENXIO;

......

num_registered_fb++;
for (i = 0 ; i < FB_MAX; i++)
if (!registered_fb[i])
break;
fb_info->node = i;
mutex_init(&fb_info->lock);
fb_info->dev = device_create(fb_class, fb_info->device,
MKDEV(FB_MAJOR, i), NULL, "fb%d", i);
if (IS_ERR(fb_info->dev)) {
/* Not fatal */
printk(KERN_WARNING "Unable to create device for framebuffer %d; errno = %ld\n", i, PTR_ERR(fb_info->dev));
fb_info->dev = NULL;
} else
fb_init_device(fb_info);

......

registered_fb[i] = fb_info;

event.info = fb_info;
fb_notifier_call_chain(FB_EVENT_FB_REGISTERED, &event);
return 0;
}
由於系統中可能會存在多個幀緩沖區硬體設備,因此,fbmem模塊使用一個數組registered_fb保存所有已經注冊了的幀緩沖區硬體設備,其中,每一個幀緩沖區硬體都是使用一個結構體fb_info來描述的。

『肆』 精通嵌入式Linux編程圖書目錄

第1章 概論

1.1 嵌入式系統的基本概念

1.2 嵌入式系統的特徵

1.3 選擇Linux構建嵌入式系統

1.4 GUI在嵌入式Linux系統中的地位及要求

1.5 用戶界面概況

1.5.1 用戶界面的歷史

1.5.2 圖形用戶界面的特徵

1.5.3 圖形用戶界面系統的結構模型

1.5.4 用戶界面的發展:GUI+新人機交互技術

1.6 Linux圖形環境及桌面平台簡介

1.7 各種嵌入式 Linux上的圖形庫與GUI系統介紹

1.7.1 Qt/Embedded

1.7.2 MicroWindows/NanoX

1.7.3 MiniGUI

1.7.4 OpenGUI

1.7.5 GTK+

1.8 Linux系統中的多語言問題

1.9 一個嵌入式LinuxGUI系統開發的實例

1.9.1 開發GUI系統主要考慮的問題

1.9.2 後續講解的實例

第2章 Linux基本編程知識

2.1 編譯器的使用

2.2 函數庫的使用

2.3 Makefile

2.4 GDB

2.5 建立交叉編譯環境

第3章 Linux高級程序設計簡介

3.1 Linux IPC介紹

3.1.1 信號

3.1.2 管道

3.1.3 消息隊列

3.1.4 信號量

3.1.5 共享內存

3.1.6 Domain Socket

3.2 Linux多線程編程介紹

3.2.1 創建線程

3.2.2 線程的退出與取消

3.2.3 線程退出時的同步問題

3.2.4 線程清理函數

3.2.5 線程取消狀態

3.2.6 線程同步

3.2.7 第三方函數庫

3.3 FrameBuffer編程簡介

第4章 基本體系結構

4.1 基礎知識

4.1.1 嵌入式Linux的GUI到底有什麼用

4.1.2 如何定義基本體系結構

4.1.3 為什麼用客戶機/伺服器結構

4.1.4 為什麼要多進程

4.1.5 為什麼要多線程

4.2 體系結構綜述

4.2.1 客戶機與伺服器之間的通信通道

4.2.2 客戶機需要與伺服器交換什麼信息

4.2.3 伺服器對客戶機進程的管理

4.3 進程創建與進程的管理

第5章 多窗口的設計與實現

第6章 GUI中的消息管理

第7章 窗口輸出及無效區的管理

第8章 DC與GDI的設計與實現

第9章 控制項實現

第10章 定製GUI對圖像的支持

第11章 字型檔及輸入法的實現

第12章 GUI的移植

第13章 LGUI應用開發模式

第14章 GUI系統的效率問題

後記——LGUI開發的一些體會

參考文獻

閱讀全文

與linuxframebuffer編程相關的資料

熱點內容
泰拉瑞亞13伺服器ip地址怎麼看 瀏覽:871
python數據擬合最小二乘法 瀏覽:412
手語編程基礎教學 瀏覽:248
安卓手機關注後還要下載什麼 瀏覽:9
ui和編程哪個更好 瀏覽:290
電氣自動化與程序員哪個好 瀏覽:454
bbc翻譯app哪個好 瀏覽:288
ios隱藏單個app怎麼回復 瀏覽:816
泉城辦app怎麼樣 瀏覽:152
如何用優盤安裝伺服器 瀏覽:121
第八彈解壓密碼 瀏覽:772
程序員離職後如何走出低谷 瀏覽:156
代駕司機app軟體怎麼下載 瀏覽:580
js源碼網站搭建 瀏覽:765
河源粵運app怎麼下載 瀏覽:684
微信訂單監控源碼 瀏覽:452
蘇州市免費簡單加密軟體 瀏覽:667
java正則表達式校驗 瀏覽:44
什麼叫伺服器掃爆 瀏覽:448
很粘人程序員男朋友 瀏覽:140