ok6410開發板移植DirectFB手記

操做系統:虛擬機 uBuntu 10.04.3
交叉編譯工具鏈:arm-linux-4.4.1
內核鏡像:Linux-2.6.36 對應的 zImage
文件系統:Linux-2.6.36 對應的 FORLINX_6410_touch.cramfsphp

源碼包:html

directFB 源碼包 DirectFB-1.4.9.tar.gz  http://www.directfb.org/index.php?path=Main%2FDownloads
freetype 源碼包 freetype-2.4.8.tar.gz  http://freetype.sourceforge.net/index2.html
libjpeg 源碼包 jpegsrc.v8d.tar.gz  http://www.ijg.org/
libpng 源碼包 libpng-1.5.8.tar.gz  http://www.libpng.org/pub/png/libpng.html
zlib 源碼包 zlib-1.2.5.1.tar.gz  http://www.zlib.net/linux

補丁文件:
DirectFB 1.4.9支持Libpng 1.5.x所需的補丁
DirectFB-1.4.9-libpng-1.5.patch  http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/dev-libs/DirectFB/files/ide

0.準備工做
將全部源代碼包都複製到 /home/lean/6410目錄中
終端切換到root權限:#sudo su工具


1.交叉編譯工具安裝
將arm-linux-4.4.1.tar.gz解壓縮到/usr/local/arm目錄中
解壓縮:#tar zvxf arm-linux-4.4.1.tar.gz -C /usr/local/arm
設置環境變量:#export PATH=/usr/local/arm/4.4.1/bin:$PATH 操作系統

1、編譯和安裝依賴包.net

2.tslib 編譯與安裝
這裏直接採用飛凌編譯好的tslib,因此暫無須要編譯和安裝。若是須要自行編譯可參考《OK6410 QT移植百科全書.pdf》
直接拷貝飛凌的/usr/local/tslib到uBuntu的/usr/local目錄中
設置環境變量:
#export TSLIB=/usr/local/tslib
#export TSLIB_CFLAGS=$TSLIB/lib
#export TSLIB_LIBS=$TSLIB/libdebug

3.zlib編譯與安裝
解壓縮: #tar zvxf zlib-1.2.5.1.tar.gz
配置:
#CC=arm-none-linux-gnueabi-gcc ./configure --prefix=/usr/local/zlib
編譯及安裝:
#make
#make install
設置環境變量:
#export ZLIB=/usr/local/zlibcode

4.libjpeg編譯與安裝
解壓縮: #tar zvxf jpegsrc.v8d.tar.gz
切換目錄:#cd jpeg-8d
執行配置:#./configure --host=arm-linux --prefix=/usr/local/libjpeg --enable-shared
執行編譯:#make
執行安裝:#make install
設置環境變量:
#export LIBJPEG=/usr/local/libjpeghtm

4.libpng編譯與安裝
解壓縮:#tar zvxf libpng-1.5.8.tar.gz
切換目錄:#cd libpng-1.5.8
配置:#./configure --host=arm-linux --prefix=/usr/local/libpng
編譯及安裝:
#make
#make install
設置環境變量:
#export LIBPNG=/usr/local/libpng
#export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/libpng/lib/pkgconfig
注意:因爲libpng-1.5.8在安裝的時候漏拷貝了其根目錄下的pnginfo.h和pngstruct.h到安裝目錄,因此這裏要手動
拷貝這兩個文件到/usr/local/libpng/include/libpng15目錄中,不然在編譯directFB時候會出錯。

5.freetype編譯與安裝
解壓縮:#tar zvxf freetype-2.4.8.tar.gz
切換目錄:#cd freetype-2.4.8
配置:#./configure --host=arm-linux --prefix=/usr/local/freetype
編譯及安裝:
#make
#make install
設置環境變量:
#export FREETYPE=/usr/local/freetype
#export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/freetype/lib/pkgconfig

至此directFB所需的依賴包都安裝完成。注意:在安裝libpng前首先得安裝zlib不然會出現找不到zlib錯誤出現。

2、編譯和安裝directFB

1.設置環境變量
#export LDFLAGS="$LDFLAGS -L$TSLIB/lib -L$LIBJPEG/lib -L$LIBPNG/lib -L$FREETYPE/lib -L$ZLIB/lib -lm"
#export CFLAGS="$CFLAGS -I$TSLIB/include -I$LIBJPEG/include -I$LIBPNG/include -I$FREETYPE/include -I$ZLIB/include"

2.對directFB-1.4.9應用補丁
directFB-1.4.9使用libpng-1.5.x會出現版本不兼容的狀況,因此須要對directFB-1.4.9源碼打libpng-1.5.x支持補丁。
解壓源代碼:#tar zvxf DirectFB-1.4.9.tar.gz
切換目錄:#cd DirectFB-1.4.9
應用補丁:#patch -p1 < ../DirectFB-1.4.9-libpng-1.5.patch
若是出現patch命令不存在要先安裝patch:apt-get install patch
補丁成功之後將會提示應用補丁的文件列表。

3.配置directFB
#./configure --host=arm-linux --prefix=/usr/local/directFB --with-gfxdrivers=none --with-inputdrivers=all --enable-png --enable-jpeg --disable-tiff --enable-zlib --enable-sdl=no --enable-gif=no --disable-x11 --enable-debug --sysconfdir=/etc --enable-fbdev
等待配置完成,並查看所對應的模塊是否已經找到,若是出現未找到某個模塊,要着重檢查環境變量是否設置正確,尤爲是下面兩個。
#export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/freetype/lib/pkgconfig
#export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/libpng/lib/pkgconfig

4.編譯及安裝
#make
#make install

3、開發板部署

1.cramfs文件系統製做
將uBuntu /usr/local/目錄下的 tslib, libjpeg, libpng, freetype, zlib, directFB 文件夾拷貝到開發板cramfs鏡像的/usr/local目錄中。

修改cramfs鏡像中/usr/local文件權限(不修改貌似也能夠)
#chmod 777 -R /usr/local/

修改鏡像/etc/init.d/rcS文件,添加以下環境變量:
#export TSLIB=/usr/local/tslib
#export LIBJPEG=/usr/local/libjpeg
#export LIBPNG=/usr/local/libpng
#export FREETYPE=/usr/local/freetype
#export ZLIB=/usr/local/zlib
#export DIRECTFB=/usr/local/directFB
#export TSLIB_CONSOLEDEVICE=none
#export TSLIB_FBDEVICE=/dev/fb0
#export TSLIB_TSDEVICE=/dev/input/event1
#export TSLIB_PLUGINDIR=$TSLIB/lib/ts
#export TSLIB_CONFFILE=$TSLIB/etc/ts.conf
#export TSLIB_CALIBFILE=/etc/pointercal
#export LD_LIBRARY_PATH=$TSLIB/lib:$LIBJPEG/lib:$LIBPNG/lib:$FREETYPE/lib:$ZLIB/lib:$DIRECTFB/lib

修改或新建/etc/directfbrc文件,內容以下:
system=fbdev
fbdev=/dev/fb0
wm=default

從新打包cramfs文件鏡像,利用USB或一鍵燒寫到開發板。

重啓開發板:

[root@FORLINX6410]# cd /usr/local/directFB/bin
[root@FORLINX6410]# ./dfbinfo

   ~~~~~~~~~~~~~~~~~~~~~~~~~~| DirectFB 1.4.9 |~~~~~~~~~~~~~~~~~~~~~~~~~~
        (c) 2001-2010  The world wide DirectFB Open Source Community
        (c) 2000-2004  Convergence (integrated media) GmbH
      ----------------------------------------------------------------

(*) DirectFB/Core: Single Application Core. (2012-02-12 10:12) [ DEBUG ]
(*) Direct/Memcpy: Using armasm_memcpy()
(*) Direct/Thread: Started 'VT Switcher' (-1) [CRITICAL OTHER/OTHER 0/0] <8388608>...
(*) Direct/Thread: Started 'VT Flusher' (-1) [DEFAULT OTHER/OTHER 0/0] <8388608>...
(*) DirectFB/FBDev: Found 's3cfb' (ID 0) with frame buffer at 0x5e980000, 510k (MMIO 0x00000000, 0k)
(!) Direct/Modules: Unable to dlopen `/usr/local/directFB/lib/directfb-1.4-5/inputdrivers/libdirectfb_tslib.so'!
    --> /usr/local/directFB/lib/directfb-1.4-5/inputdrivers/libdirectfb_tslib.so: undefined symbol: ts_close
(*) Direct/Thread: Started 'PS/2 Input' (-1) [INPUT OTHER/OTHER 0/0] <8388608>...
(*) DirectFB/Input: IMPS/2 Mouse 1.0 (directfb.org)
(*) Direct/Thread: Started 'Linux Input' (-1) [INPUT OTHER/OTHER 0/0] <8388608>...
(*) DirectFB/Input: gpio-keys (1) 0.1 (directfb.org)
(*) Direct/Thread: Started 'Linux Input' (-1) [INPUT OTHER/OTHER 0/0] <8388608>...
(*) DirectFB/Input: S3C TouchScreen (2) 0.1 (directfb.org)
(*) Direct/Thread: Started 'Hotplug with Linux Input' (-1) [INPUT OTHER/OTHER 0/0] <8388608>...
(*) DirectFB/Input: Hot-plug detection enabled with Linux Input Driver
(*) Direct/Thread: Started 'Keyboard Input' (-1) [INPUT OTHER/OTHER 0/0] <8388608>...
(*) DirectFB/Input: Keyboard 0.9 (directfb.org)
(*) DirectFB/Graphics: Generic Software Rasterizer 0.6 (directfb.org)
(*) DirectFB/Core/WM: Default 0.3 (directfb.org)


Screen (00) FBDev Primary Screen            (primary screen)
   Caps: VSYNC POWER_MANAGEMENT

     Layer (00) FBDev Primary Layer             (primary layer)
        Type:    GRAPHICS
        Caps:    SURFACE BRIGHTNESS CONTRAST SATURATION


Input (01) IMPS/2 Mouse                    (primary mouse)
   Type: MOUSE
   Caps: AXES BUTTONS
   Max. Axis: 2
   Max. Button: 2

Input (10) gpio-keys                    
   Type:
   Caps: KEYS
   Min. Keycode: -1
   Max. Keycode: -1

Input (11) S3C TouchScreen              
   Type: MOUSE
   Caps: KEYS AXES
   Min. Keycode: -1
   Max. Keycode: -1
   Max. Axis: 1

Input (00) Keyboard                        (primary keyboard)
   Type: KEYBOARD
   Caps: KEYS
   Min. Keycode: 0
   Max. Keycode: 127

[root@FORLINX6410]#


參考文章:
OK6410 QT移植百科全書.pdf
OK6410-B開發板LINUX2.6.36用戶手冊.pdf
ok6410 移植Directfb詳解 http://bbs.witech.com.cn/thread-8082-1-1.html

相關文章
相關標籤/搜索