編譯平台:龍芯、中标普華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,再運作測試,穩定通過。