天天看點

移植DirectFB于SOC3210(龍芯)【轉】

編譯平台:龍芯、中标普華Linux桌面5

目标平台:SOC3210

一、擷取源碼包

1、zlib-1.2.5.tar.bz2

​​http://sourceforge.net/projects/libpng/files/zlib/1.2.5/zlib-1.2.5.tar.bz2/download​​

2、freetype‐2.3.5.tar.bz2

​​http://download.savannah.gnu.org/releases/freetype/​​

3、libpng-1.2.40.tar.bz2

​​http://sourceforge.net/projects/libpng/files/libpng12/older-releases/1.2.40/libpng-1.2.40.tar.bz2/download​​

4、jpegsrc.v6b.tar.gz

​​http://dir.filewatcher.com/d/GNU/Other/jpegsrc.v6b.tar.gz.613261.html​​

5、DirectFB-1.3.0.tar.gz

​​http://directfb.org/index.php?path=Main%2FDownloads&page=0​​

6、DirectFB-examples-1.2.0.tar.gz

​​http://directfb.org/index.php?path=Main%2FDownloads&page=1​​

二、交叉編譯與安裝步驟

1、設定編譯安裝所需環境變量

$mkdir /usr/directfb ——建立安裝目錄

$export PREFIX=/usr/directfb ——設定安裝路徑

$export LDFLAGS=-L$PREFIX/lib  ——設定庫檔案路徑

$export CFLAGS="-g -I$PREFIX/include"  ——設定頭檔案路徑

$export CPPFLAGS="-g -I$PREFIX/include" ——設定頭檔案路徑

$export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig ——設定配置資訊檔案路徑

$mkdir /usr/directfb/include /usr/directfb/lib /usr/directfb/bin /usr/directfb/man /usr/directfb/man/man1 ——建立下列編譯安裝所需目錄

2、編譯安裝zlib-1.2.5

$tar jxvf zlib-1.2.5.tar.bz2 

$cd zlib-1.2.5

$./configure  --prefix=$PREFIX 

$make

$make install

3、編譯安裝freetype‐2.3.5

$tar jxvf freetype‐2.3.5.tar.bz2

$cd freetype‐2.3.5

$./configure  --prefix=$PREFIX

$make

$make install

4、編譯安裝libpng-1.2.40

$tar jxvf libpng-1.2.40.tar.bz2

$cd libpng-1.2.40

$./configure  --prefix=$PREFIX

$make

$make install

5、編譯安裝jpegsrc.v6b

$tar zxvf jpegsrc.v6b.tar.gz

$cd jpeg-6b

$./configure  --prefix=$PREFIX  --enable-shared

$make

$make install

6、編譯安裝DirectFB-1.3.0

$tar zxvf DirectFB-1.3.0.tar.gz

$cd DirectFB-1.3.0

$./configure  --prefix=$PREFIX 

$make

$make install

7、編譯安裝DirectFB樣例DirectFB-examples-1.2.0

$tar zxvf DirectFB-examples-1.2.0.tar.gz

$cd DirectFB-examples-1.2.0

$./configure  --prefix=$PREFIX

$make

$make install

DirectFB與樣例交叉編譯完成。

三、本機運作測試

本機的硬體與軟體平台與SOC3210是相同的,可以于本機先行運作測試。

$cd DirectFB-examples-1.2.0/src  或  cd /usr/directfb/bin

$ls

$./df_andi

全屏顯示許多移動的企鵝。

類似運作測試其他例子,穩定通過。

四、制作檔案系統

參考SOC3210的《制作ramdisk檔案系統》的制作

1、busybox-1.1.0 ——制作根檔案系統的工具

$tar jxvf busybox-1.1.0.tar.bz2

$cd busybox-1.1.0

$make menuconfig

出錯提示:

>> Unable to find the Ncurses libraries. 

>> 

>> You must have Ncurses installed in order 

>> to use 'make menuconfig' 

2、安裝ncurses-5.7

$tar zxvf  ncurses-5.7.tar.gz

$cd ncurses-5.7

$./configure --with-shared --with-normal   --with-libtool --enable-overwrite

$make

$make install

3、可以進入busybox-1.1.0

$make menuconfig

——進行配置

4、根據SOC3210的《制作ramdisk檔案系統》步驟制作。

最後把"_install"目錄改名為"ramdisk"。

$mv _install ramdisk$cd ramdisk      ——進入根檔案系統ramdisk中。ramdisk的制作參考SOC3210文檔

5、修改根檔案系統

$cd ramdisk      ——進入根檔案系統ramdisk中。

$cp /usr/directfb usr    ——必須把交叉編譯後的directfb放于此目錄,因為DirectFB編譯時

$vi etc/profile

把export LD_LIBRARY_PATH=/lib:/usr/lib改為:

  export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/directfb/lib

——設定directfb程式所需庫檔案路徑

否則在SOC3210運作時會報錯,如“error while loading shared libraries: libdirectfb-1.3.so.0”

儲存退出。

$mknod dev/fb0 c 29 0

——建立frame buffer的裝置檔案

否則在SOC3210運作時會報錯:

(!) DirectFB/FBDev: Error opening '/dev/fb0'!

     --> No such file or directory

(!) DirectFB/Core: Could not initialize 'system_core' core!

--> File not found!

$cd dev

$ln -s console tty0

——連結終端

否則在SOC3210運作時會報錯:

(!) DirectFB/core/vt: Couldn't open neither `/dev/tty0' nor `/dev/vc/0'!

     --> No such file or directory

(!) DirectFB/Core: Could not initialize 'system_core' core!

--> Initialization error!

$cd .. ——退到上一層

$vi usr/directfb/etc/directfbrc

directfbrc是directfb程式運作時的配置檔案。其具體參數可以參考:

​​http://www.directfb.org/docs/directfbrc.5.html​​

或​​http://blog.chinaunix.net/u3/104335/showart_2061486.html​​

或者在終端上檢視$man directfbrc

改為:

system = fbdev ——設定使用的圖形系統為linux frame buffer

fbdev = /dev/fb0 ——打開設定的frame buffer (/dev/fb0)

wm = default ——設定視窗管理層,預設default(0)

mode = 320x240 ——設定預設的螢幕顯示320x240

depth = 16 ——使用二進制位數設定每像素預設的像素深度為16位

pixelformat = RGB16 ——設定預設的像素格式

mouse-protocol = IMPS/2 ——為一個序列槽滑鼠指定使用的協定

bg-color = 00FFFF ——控制背景的顔色

no-vt ——取消虛拟終端

儲存退出。

6、cramfs-1.1   ——制作cramfs格式檔案系統的工具

$tar zxvf cramfs-1.1.tar.gz

$cd cramfs-1.1

$make

$cp mkcramfs cramfsck  /bin        ——把可執行檔案mkcramfs和cramfsck拷貝到/bin

7、制作cramfs格式檔案系統

$cd .. ——退到上一層

$mkcramfs  ramdisk  ramdisk-cramfs.img

檔案系統制作完成,得到檔案系統的鏡像檔案ramdisk-cramfs.img。

五、燒寫檔案系統到SOC3210

SOC3210上電。

在SecureCRT終端中

PMON> set append 'g root=/dev/mtdblock1 rootfstype=cramfs noinitrd init=/linuxrc console=ttyS0,115200 display=truly320'

——設定啟動參數

PMON> devcp  tftp://192.168.3.113/ramdisk-cramfs.img  /dev/mtd1

——通過tftp把檔案系統鏡像檔案ramdisk-cramfs.img燒寫到SOC3210的mtd1分區上。

關于TFTP的使用參考《Ubuntu-10.04下安裝與使用TFTP》

完成後重新開機,輸入指令reboot。

六、在SOC3210上運作測試DirectFB樣例

進到SOC3210的檔案系統

#cd /usr/directfb/bin

#ls

#./df_andi

顯示許多移動的企鵝。

類似運作測試其他例子,穩定通過。

重新開機SOC3210,再運作測試,穩定通過。