Stiahnutie a instalacia zavislosti

Stiahnut vhodne zdrojaky (aktualne pouzivame directfb 1.4.17) z directfb.org

Nainstalovat niektore libky ako: libjpeg-dev, libfreetype6-dev, pkg-config, libpng12-dev, lib32z1-dev

Pre Kubunut 16_4 64 bit LTS:
Je pri instalacii potrebne ku kazdemu baliku pridavat suffix ':i386', ktory vynuti nainstalovanie 32 bitnovych verzii kniznic

apt-get install libjpeg-dev:i386
apt-get install libfreetype6-dev:i386
apt-get install pkg-config:i386
apt-get install libpng12-dev:i386
apt-get install lib32z1-dev -- tu mozno bude treba "sudo apt-get -o Dpkg::Options::="--force-overwrite" install zlib1g-dev:i386" kym neopravia bug

Manualna kompilacia pre platformu 386

Zdrojove subory pre verziu 1.4.16 sa nachadzaju na servri phoenix:

/usr/local/emtest/DevelInstall/directfb

skopirovat do

/opt/devel/

Rozbalit a nakonfigurovat a nainstalovat cez:

./configure --prefix=/usr/ 
make
sudo make install

Pre Kubuntu 16.04 LTS 64bit:

./configure --prefix=/usr/ --with-sysroot=/usr/lib/i386-linux-gnu CFLAGS='-m32' CXXFLAGS='-m32' LDFLAGS='-m32 -L/usr/lib/i386-linux-gnu/' --enable-png=yes --enable-jpeg=yes LIBPNG_LIBS=-lpng12

Pocas kompilacie to skonci chybou pri subore mkdgifft.o. Je potrebne v korenovom priecinku v /tools upravit MAKEFILE a doplnit pre CXXFLAGS parameter -m32. Dokompilovat zdrojaky v priecinku tools prikazom 'make clean && make'. Nasledne sa vratit o uroven vyssie a pokracovat prikazom 'make'.

CXXFLAGS = -g -O2 -m32

Po uspesnej kompilacii nasymlinkovat priecinok z /usr/lib/directfb-1.4-6 do /usr/lib/i386-linux-gnu/usr/lib/ pretoze pri configure bol nastaveny sysroot pre 32bit:

ln -s /usr/lib/directfb-1.4-6 /usr/lib/i386-linux-gnu/

Konfiguracia directfb pre platformu 386

  • V home/<user> adresari vytvorit a naeditovat subor ~/.directfbrc (system=x11, mouse podla typu pouzitej mysi (mouse napr. z Xorgu))
system=x11
mouse-protocol=MouseSystems
no-cursor
mode=600x800-60
  • Pridat sa do skupin tty a video
sudo addgroup <user> tty
sudo addgroup <user> video
  • Po odhlaseni a prihlaseni, vyskusat spustit test. aplikaciu napr. dfbmaster
  • Vyskusat citacku, s upravenym HwConfig.xml:
<Device Name="UI" ID="0"        Enable="1" Type="DirectFB" />

Manualna kompilacia pre platformu ARM verzie emtest_xscale*

Pozor na prefix !!! treba upravit podla nastavenia na strojceku

  • 1.4.16 - Prvotna konfiguracia, uz sa nepozuiva, pozri verziu 1.4.17.
./configure --prefix=/home/sipikal/DFB --with-inputdrivers=tslib --with-gfxdrivers=none --enable-debug --enable-trace --enable-x11=no --host=arm-linux LIBS=-lm TSLIB_LIBS=-L/usr/toolchain-arm-26/usr/lib TSLIB_CFLAGS=-I/usr/toolchain-arm-26/usr/include CFLAGS="-I/usr/toolchain-arm-26/usr/include -I/usr/toolchain-arm-26/include --sysroot=/usr/toolchain-arm-26/ -isysroot /usr/toolchain-arm-26"
  • 1.4.16 - Chybalo definovanie gcc
./configure  --with-gfxdrivers=none --prefix=/opt/emtest/var/DFB/ --with-inputdrivers=tslib --enable-debug --enable-trace --enable-x11=no --host=arm-linux LIBS="-lm -lpng -lfreetype" LIBPNG_LIBS=-L/usr/toolchain-arm-26/usr/lib LIBPNG_CFLAGS=-I/usr/toolchain-arm-26/usr/include  TSLIB_LIBS=-L/usr/toolchain-arm-26/usr/lib TSLIB_CFLAGS=-I/usr/toolchain-arm-26/usr/include CFLAGS="-I/usr/toolchain-arm-26/usr/include -I/usr/toolchain-arm-26/usr/include/libpng12 -I/usr/toolchain-arm-26/include --sysroot=/usr/toolchain-arm-26/ -isysroot /usr/toolchain-arm-26" CPPFLAGS="-I/usr/toolchain-arm-26/usr/include -I/usr/toolchain-arm-26/usr/include/libpng12" FREETYPE_LIBS=-L/usr/toolchain-arm-26/usr/lib FREETYPE_CFLAGS=-I/usr/toolchain-arm-26/usr/include
  • 1.4.17
./configure  --with-gfxdrivers=none --prefix=/opt/emtest/var/DFB/ --with-inputdrivers=tslib --enable-debug --enable-trace --enable-x11=no --host=arm-linux LIBS="-lm -lpthread -lpng" LIBPNG_LIBS=-L/usr/toolchain-arm-26/usr/lib LIBPNG_CFLAGS=-I/usr/toolchain-arm-26/usr/include  TSLIB_LIBS=-L/usr/toolchain-arm-26/usr/lib TSLIB_CFLAGS=-I/usr/toolchain-arm-26/usr/include CFLAGS="-L/usr/toolchain-arm-26/usr/arm-linux-uclibcgnueabi/lib -I/usr/toolchain-arm-26/usr/include -I/usr/toolchain-arm-26/usr/include/libpng12 -I/usr/toolchain-arm-26/usr/arm-linux-uclibcgnueabi/include/c++/4.2.1 -I/usr/toolchain-arm-26/usr/arm-linux-uclibcgnueabi/include/c++/4.2.1/arm-linux-uclibcgnueabi -I/usr/toolchain-arm-26/usr/arm-linux-uclibcgnueabi/include/c++/4.2.1/arm-linux-uclibcgnueabi/list -I/usr/toolchain-arm-26/include --sysroot=/usr/toolchain-arm-26/ -isysroot /usr/toolchain-arm-26" CXXFLAGS="-I/usr/toolchain-arm-26/usr/include -I/usr/toolchain-arm-26/usr/include/libpng12" FREETYPE_LIBS=-L/usr/toolchain-arm-26/usr/lib FREETYPE_CFLAGS=-I/usr/toolchain-arm-26/usr/include --without-tools --enable-devmem=no CC=/usr/toolchain-arm-26/usr/bin/arm-linux-uclibcgnueabi-gcc --disable-video4linux CXX=/usr/toolchain-arm-26/usr/bin/arm-linux-g++ --enable-x11=no --enable-x11vdpau=no --enable-shared=yes
  • 1.6.3 DirectFB - Na emtest_xscale a emtest_xscale_26 platformy nie je mozne skompilovat, pretoze je zavislost na novsiu libc
./configure  --with-gfxdrivers=none --prefix=/opt/emtest/var/DFB/ --with-inputdrivers=tslib --enable-debug --enable-trace --enable-x11=no --host=arm-linux LIBS="-lm -lpng -lfreetype" LIBPNG_LIBS=-L/usr/toolchain-arm-26/usr/lib LIBPNG_CFLAGS=-I/usr/toolchain-arm-26/usr/include  TSLIB_LIBS=-L/usr/toolchain-arm-26/usr/lib TSLIB_CFLAGS=-I/usr/toolchain-arm-26/usr/include CFLAGS="-L/usr/toolchain-arm-26/usr/arm-linux-uclibcgnueabi/lib -I/usr/toolchain-arm-26/usr/include -I/usr/toolchain-arm-26/usr/include/libpng12 -I/usr/toolchain-arm-26/include --sysroot=/usr/toolchain-arm-26/ -isysroot /usr/toolchain-arm-26" CPPFLAGS="-I/usr/toolchain-arm-26/usr/include -I/usr/toolchain-arm-26/usr/include/libpng12" FREETYPE_LIBS=-L/usr/toolchain-arm-26/usr/lib FREETYPE_CFLAGS=-I/usr/toolchain-arm-26/usr/include --without-tools
  • 1.7.7 - Na mikroelektronika imx53 citacku

Stiahnut je to mozne z:

wget http://sources.webos-ports.org/downloads/DirectFB-1.7.7.tar.gz

Configure prikaz:

./configure $CROSS_BUILD --with-inputdrivers=linuxinput,tslib --with-gfxdrivers=none

Je potrebne vykonat patch:

system.c - Funkciu direct_trap: - Je potrebne definovat 'sigval_t' ako 'union sigval'

-- sigval_t
++ union sigval

mutex.h - odstranit:

#define DIRECT_RECURSIVE_MUTEX_INITIALIZER(name)  { PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP }

trace.h - nahradit:

-- static DirectMutex  buffers_lock = DIRECT_RECURSIVE_MUTEX_INITIALIZER(buffers_lock);
++ 'static DirectMutex  buffers_lock = DIRECT_MUTEX_INITIALIZER(buffers_lock);'

directfb.c - vykonat sofistikovanjsi patch:

Za funkciu DirectFBSetOption pridat:

++static pthread_once_t lock_init_once = PTHREAD_ONCE_INIT;
++static DirectMutex lock;
++
++static void lock_init(void)
++{
++    direct_recursive_mutex_init(&lock);
++}

A nasledne v DirectFBCreate:
-- 'static DirectMutex lock = DIRECT_RECURSIVE_MUTEX_INITIALIZER(lock);'
++ 'pthread_once(&lock_init_once, lock_init);'

Mikroelektronika citacka - uprava systemu

do suboru /etc/fb.modes pridat:

mode "320x240-59"
    # D: 6.500 MHz, H: 15.046 kHz, V: 59.472 Hz
    geometry 320 240 320 720 16
    timings 153846 56 24 3 6 32 4
    vsync high
    rgba 5/11,6/5,5/0,0/0
endmode

Struktura a pozadovane moduly pre ARM architekturu

Do aplikacie sa linkuju a nasledne sa davaju do instalacneho balika kniznice 'libdirefb*', 'libfusion*', 'libdirect*' + su potrebne include path-y

Boldom su znazornene priecinky
Kurzivou vyzadovane moduly

Moduly a suborova struktura:

  • Nazov directfb + verzia, aktualne directfb-1.4.17
    • inputdrivers
      1. libdirectfb_tslib.so - driver pre podporu touch screen-u
    • systems
      1. libdirectfb_fbdev.so
      2. libdirectfb_dummy.so
    • interfaces
      • ICoreResourceManager
        1. libicoreresourcemanager_test.so
      • IDirectFBFont
        1. libidirectfbfont_dgiff.so
        2. libidirectfbfont_ft2.so
      • IDirectFBImageProvider
        1. libidirectfbimageprovider_dfiff.so
        2. libidirectfbimageprovider_gif.so
        3. libidirectfbimageprovider_jpeg.so
        4. libidirectfbimageprovider_png.so
      • IDirectFBVideoProvider
        1. libidirectfbvideoprovider_gif.so
    • wm
      1. libdirectfbwm_default.so

Co robit ak postup nefunguje ?

  • Ak zavretie aplikacie, proces Xorg vytazi procesor na 100 % ?
Je potrebne pouzit iny graficky driver grafickej karty.
  • Ak chyba po vykonani skriptu 'configure' libpng, libjpeg
pozri bod 1, Stiahnutie a instalacia zavislosti
  • Ak dfbmaster pouziva inu verziu DirectFB ako projekt v Qt Creatore (pouzita verzia sa vypise na konzolu po spusteni) - je potrebne odinstalovat starsiu verziu DirectFB
sudo apt-get purge libdirectfb-dev && sudo apt-get autoremove
 
howto/directfb.txt · Last modified: 2020/10/07 13:08 by 192.168.242.150
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki