DirectFB 1 5 0移植 支援3D硬體支援

2021-06-21 22:46:15 字數 3074 閱讀 3704



一.  directfb簡介

directfb是乙個輕量級的提供硬體圖形加速,輸入裝置處理和抽象的圖形庫,它整合了支援半透明的視窗系統以及在linuxframebuffer驅動之上的多層顯示。它是乙個用軟體封裝當前硬體無法支援的圖形演算法來完成硬體加速的層。directfb是為嵌入式系統而設計。它是以最小的資源開銷來實現最高的硬體加速效能。

二. directfb移植準備

directfb依賴庫:freetype-2.4.4.tar.gz,jpegsrc.v8c.tar.gz,libpng-1.2.44.tar.gz,zlib-1.2.5.tar.gz

三. directfb移植步驟

環境變數配置:

export  prefix=/usr

export  dest_dir=/home                //以上兩個環境變數的是移植後庫生成的位置,最好是把以後有提到的庫都存放到/home目錄下

export path=$path:/home/opt/friendlyarm/toolschain/4.5.1/bin

export cc=arm-none-linux-gnueabi-gcc

export ldflags=-l$dest_dir$prefix/lib

export cflags="-g -i$dest_dir$prefix/include"

export pkg_config_path=$dest_dir$prefix/lib/pkgconfig

export freetype_cflags="-i$$/include/freetype2 -i$$/include"

export pkg_config_path=$$/lib/pkgconfig

export pkg_config_libdir=$pkg_config_path

export cflags="-i$$/include/"

export ldflags="-l$$/lib"

export libpng_cflags="-i$$/include/libpng12"

export libpng_libs="-l$$/lib -lpng12"

export freetype_cflags="-i$$/include/freetype2 -i$$/include"

export directfb_cflags="-i$$/include/directfb -i$$/include"

export freetype_libs="-l$$/lib -lfreetype"

移植步驟:

1.#make zlib

cd $zlib

./configure --prefix=$prefix

make

make destdir=$dest_dir install

2.cd $libpng

./configure --prefix=$prefix --host=arm-none-linux-gnueabi

make

make destdir=$dest_dir install

3.cd $libjpeg

./configure --prefix=$prefix --host=arm-none-linux-gnueabi

make

make destdir=$dest_dir install

4.cd $freetype

./configure --prefix=$prefix  --host=arm-none-linux-gnueabi

make

make destdir=$dest_dir install

5.cd $dfb

./configure --host=arm-none-linux-gnueabi  --prefix=$prefix --disable-x11 --with-gfxdrivers=none --enable-jpeg --enable-png --enable-freetype --with-inputdrivers=linuxinput

make

make destdir=$dest_dir install

錯誤及解決辦法:

1. ../../lib/direct/atomic.h:188:70: error: expected ',' or '...' before 'new'

2. ../../lib/direct/serial.h:112:14: error: invalid conversion from 'void*' to 'volatile int*'

../../lib/direct/serial.h:112:14: error:   initializing argument 2 of 'int _d__atomic_add_return(int, volatile int*)'

解決辦法:進入到atomic.h檔案,把有這方面的調動, 通過強制轉換把(void *) -> (volatile int *)

6.cd $dfbexample

./configure --prefix=$prefix --host=arm-none-linux-gnueabi

make

make destdir=$dest_dir install

這樣就完成了基本的directfb的移植,把/home/usr目錄下的全部檔案拷貝到開發板的/usr下,執行測試用例就知道成不成功了。

四. directfb的硬體加速配置

環境說明:這麼加速你有移植成功了directfb,且你的開發板支援硬體加速功能。不同的硬體平台有不同的配置,我這裡就說說我的配置。這裡所說的目錄都是/home/usr下。

步驟:編譯你的硬體加速模組,會生成相應的庫檔案。把生成的所有庫放到/home/usr/lib下。

在/home/usr/lib/directfb-1.5-0目錄下,建立目錄gfxdrivers,並把編譯硬體模組的有關directfb的庫放到此目錄下,我這裡的庫檔案是libdirectfb_gal.so.

在/home/usr目錄下,建立目錄etc

進入到/home/usr目錄下,在終端輸入:no-software>>directfbrc

完成以上步驟後directfb就可以支援相應的硬體加速了。

uboot移植新增單板支援

cp configs mx6qarm2 defconfig fet mx6q defconfig四 修改 fet mx6q defconfig vi fet mx6q defconfig config arm y config arch mx6 y mx6 config target fet mx6...

U Boot移植 支援串列埠Xmodem協議

u boot預設支援的loadb命令需要配合linux下的kermit工具來使用,loady命令通過串列埠ymodem協議來傳輸檔案。windows下的超級終端雖然支援ymodem,但是它的使用介面實在不友好。而securecrt只支援xmodem和zmodem。而上位機和開發板之間的檔案傳輸又實在...

u boot1 1 6的移植 網絡卡支援

注 藍色為修改部分!driver dm9000x.c中修改 inteth init bd t bd hj end www.embedsky.net printf mac 02x 02x 02x 02x 02x 02x n bd bi enetaddr 0 bd bi enetaddr 1 bd bi...