[Embedded System] GTK+2.0 and DirectFB 1.4.0 Porting

這份porting過程主要參考WuKC大的經驗,各位可以在下列網址找到這位仁兄的porting過程。

http://tw.myblog.yahoo.com/wukc-soft/article?mid=326&prev=364&next=307

我的板子也是Creator PXA270,不過,我這邊的Linux kernel使用的是2.6.25的版本,而且touch panel driver不是用新華原始的附的,因此,似乎無法讓畫面顯示成320×240,所以就會讓圖形被截一部分,這樣是很難看的。

本來打算直接從板子上的fb.mode或directfb裡面設定去改,沒想到他居然無法更改。偶然,剛好看到DirectFB 1.4.0有提供window rotation的功能,那就先來把新版的DirectFB移植過去看看囉!

過程中要注意LD_LIBRARY_PATH和PKG_CONFIG_PATH兩個環境變數的設定,因為這會影響到套件編譯,要仔細確認是不是有先把這兩個環境變數改成toolchain那邊的位置。

既然有前人先把東西弄過一次了,所以我就不重複去寫那些東西了,大致上都照著做就可以。

1. DirectFB 1.4.0 porting

./configure –host=$TARGET

–build=i386-linux

–prefix=$CROSS_PREFIX
–disable-gif

CFLAGS=”-I$PREFIX/include” LDFLAGS=”-L$PREFIX/lib”
CPPFLAGS=”-I$PREFIX/include”

–with-sysroot=$CROSS_PREFIX

–exec-prefix=$CROSS_PREFIX
–with-tests

–with-gfxdrivers=none

–disable-sdl

–disable-x11

–enable-multi

這邊要說明一下,我試著porting DirectFB 1.0.0時,也有開enable-multi,不過他卻跟我說沒有kernel fusion device,所以configure就不給我過了,所以一開始我用1.0.0版的時候是沒有加enable-multi選項。不過在1.4.0版本,直接加上去就可以config通過,我想可能是因為toolchain的問題吧!

此外在放到開發板上面執行時,會遇到gfxdrivers找不到的問題,就依照他顯示的搜尋路徑,在那個點去製造一個資料夾就可以解決這樣的warning了。

好吧,接下來是我這次porting最重要的部份,但也是最簡單的部份。因為我要把畫面轉90度,所以就用到了DirectFB裡面提供的SetRotation method,只要在

gtk+-2.10.14/gdk/directfb/gdkwindow-directfb.c +313加上

window->SetRotation(window, 90);

這樣就可以把輸出的畫面轉90度了。

當然,你還會需要把gtk重新編譯一次,然後放到你的板子環境中囉!

2 comments

  1. 你好~我遇到一个和你类似的问题。然后用了你的方法DIRECTFB+GTK来实现屏幕的旋转。不过在从新编译GTK的时候,出现错误:
    gdkwindow-directfb.c:312:error :'IDirectFBWindow' has no member named 'setRotation'.不知道你当初是怎么编译通过的?如果看到这个留言。。能否和我联系一下~谢谢

  2. 不知道你是不是用directfb 1.4.0, 因為從這版開始才有setRotation method, 所以, 如果你不是porting這個版本, 那就換成1.4.0看看吧!
    如果沒有解決你的問題, 可能需要你提供更進一步的資訊, 譬如, 你的平台, configure參數, 還有porting版本等資訊.

發佈留言