一種基于嵌入式Linux圖形用戶(hù)接口的實(shí)現
2.1.3 GtkFB的工作原理
DirectFB訪(fǎng)問(wèn)圖形硬件設備依賴(lài)于操作系統提供的內核接口,即幀緩沖設備(FrameBuffer)。FrameBuffer實(shí)際上是用一塊硬件來(lái)做顯卡和軟件之間的橋梁,Linux的內核將其開(kāi)放出來(lái),使用戶(hù)的程序可以通過(guò)塊內存來(lái)存取顯卡。例如設定顯示分辨率和色彩數、存取顯示內存區等。不同的Linux需要提供針對不同顯示硬件FrameBuffer的驅動(dòng)程序,這就是說(shuō)DirectFB需要運行于FramBuffer之上,然而Linux內核提供了常見(jiàn)芯片的FrameBuffer驅動(dòng)。
當一個(gè)應用程序連接到GtkFB時(shí)會(huì )調用gtk_init(),如圖3所示,此時(shí)GtkFB 啟動(dòng)Linux的Framebiffer,設定分辨率和色彩數,接下來(lái)打開(kāi)鍵盤(pán)和鼠標等外設(PDA打開(kāi)按鍵和觸控屏幕).然后到特定目錄去讀取字型,最后對窗口和事件管理作初始化操作。GtkFB可以支持8、16、24、32bpp的framebuffer。
為了執行一個(gè)特定的圖形操作,DirectFB芯片驅動(dòng)程序將訪(fǎng)問(wèn)圖形設備內存映射的I/O端口,并且把命令傳遞到圖形設備卡的加速引擎。實(shí)際的硬件加速是完全在用戶(hù)空間內完成的。
2.2 SWT+GtkFB圖形系統的優(yōu)點(diǎn)
2.2.1 內存消耗小、運行速度快特別適合嵌入式產(chǎn)品
由于GtkFB直接運行在FrameBufer之上,跳過(guò)X系統,這樣省下了X Server這一部分資源,這使得在內存消耗、運行速度上得到顯著(zhù)提高。另外采用的JNI技術(shù)使得程序運行速度、事件的響應有較高的提高,能滿(mǎn)足時(shí)間要求較為嚴格的實(shí)時(shí)應用場(chǎng)合。
2.2.2 系統穩定性好
SWT 的穩定性,關(guān)鍵是源于SWT 的設計理念。SWT最大化了操作系統的圖形構件API,就是說(shuō)只要操作系統提供了相應圖形的構件,那么SWT只是應用JNI技術(shù)調用它們,只有那些操作系統中不提供的構件,SWT才自己去做一個(gè)模擬的實(shí)現??梢钥闯鯯WT性能上的穩定很大程度上取決于相應操作系統圖形構件的穩定性。
2.2.3 易于移植和共享
SWT的API和桌面版完全相同,因而代碼可以很容易地在桌面和嵌入式設備之間移植與共享。
2.2.4 小巧可配置
SWT采用了LGPL授權方式,用戶(hù)可以自由地甚至是鼓勵修改源代碼使其更加滿(mǎn)足用戶(hù)的需求,很容易根據用戶(hù)的需求來(lái)裁減特定的SWT+GtkFB,依據LGPL許可證,用戶(hù)需要公布修改的源代碼,但用戶(hù)不必公布自給應用程序的源代碼。
2.2.5 易于開(kāi)發(fā)
SWT是基于Java語(yǔ)言開(kāi)發(fā)的,具有平臺獨立性、面向對象、可移植、安全等Java語(yǔ)言所擁有特點(diǎn)。用戶(hù)可以很容易的基于SWT提供的Widget(構件)開(kāi)發(fā)出滿(mǎn)足自己需要的Widget,而且很容易地使用這些Widget去構建應用程序。
3 SWT+GtkFB圖形系統的實(shí)現
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論