mini2440. Séance 7 : configuration et compilation de Qt

Salut.

Pour cette séance 7 de mise en oeuvre de la carte mini2440, nous allons voir comment configurer et compiler Qt pour la carte mini2440. Nous avons ici utilisé un écran 7" de type A70. Qt utilise la bibliothèque tslib précédemment compilée.

On installe dans un premier temps les sources de Qt disponibles ici :
$ cd mini2440
$ tar -xvzf qt-everywhere-opensource-src-4.7.3.tar.gz

On configurera Qt avec le shell script goconfig :

$ cd qt-everywhere-opensource-src-4.7.3 
$ unset $CC
$ unset $CROSS_COMPILE
$ cat goconfig
./configure \\
   -embedded arm \\
   -xplatform qws/linux-arm-g++ \\
   -prefix /usr/local/qt \\
   -qt-mouse-tslib \\
   -little-endian
$ ./goconfig

On notera que l’installation ne se fera pas directement dans le système de fichiers root sous root_fs/ mais dans le répertoire absolu /usr/local/qt/ du PC hôte. Il faut procéder comme cela car Qt/embedded aura codé en dur ces chemins absolus et l’on ne peut pas avoir un chemin en /home/… sous peine de non fonctionnement.

Il convient de modifier le fichier qt-everywhere-opensource-src-4.7.3/mkspecs/qws/linux-arm-g++/qmake.conf en suivant les indications dans le document Upgrade Qt4.6.2 in mini2440. On obtient au final le fichier qt-everywhere-opensource-src-4.7.3/mkspecs/qws/linux-arm-g++/qmake.conf suivant.

On compilera Qt avec le shell script go :

$ cat go
make
$ unset $CC
$ unset $CROSS_COMPILE
$ ./go

La compilation prend plusieurs dizaines de minutes… Il faut prendre garde à bien supprimer les variables d’environnement  $CC et $CROSS_COMPILE que l'on avait définies lors de la séance 1.

On installera Qt avec le shell script goinstall sous /usr/local/qt/ du PC hôte en étant superutilisateur :

$ cat goinstall
make install
$ su
# ./goinstall

Qt sera installé dans le système de fichiers root sous root_fs/ : cp -r /usr/local/qt/lib/* ./root_fs/usr/local/qt/lib/

Il faut au préalable configurer des variables d’environnement pour Qt en plus de celles pour tslib comme on a pu le voir lors de la séance 6. On placera ces variables d’environnement dans le fichier root_fs/etc/init.d/rcS :

# Set tslib environment
export TSLIB_TSEVENTTYPE=INPUT
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/usr/local/tslib/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/local/tslib/lib/ts

# Set Qt environment
export QWS_MOUSE_PROTO=tslib:/dev/input/event0
# Ecran 7" A70
export QWS_DISPLAY=LinuxFB:mmWidth=310:mmHeight=190
# Ecran 3"1/2 T35 #export QWS_DISPLAY=LinuxFB:mmWidth=160:mmHeight=100
export QWS_SIZE=800x480
export LD_LIBRARY_PATH=/usr/local/tslib/lib:/usr/local/qt/lib:/lib:/usr/lib
export QTDIR=/usr/local/qt                

if [ -f /etc/pointercal ]; then
  echo "Touchscreen already calibrated..."
else
  echo "Calibrating Touchscreen..."
  /usr/local/tslib/bin/ts_calibrate
fi

On placera aussi ces variables d’environnement dans le fichier root_fs/etc/profile pour qu’elles soient renseignées quand on accède au shell Linux de la carte mini2440 :

$ cat root_fs/etc/profile
USER="`id -un`"                                                
LOGNAME=$USER                                                  
PS1='[\\u@\\h \\W]\\# '                                            

# PATH
PATH=/usr/local/jamvm/bin:/usr/local/tslib/bin/:$PATH                                                     
HOSTNAME=`/bin/hostname`                                       
export USER LOGNAME PS1 PATH HOSTNAME

# Set tslib environment
export TSLIB_TSEVENTTYPE=INPUT
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/usr/local/tslib/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/local/tslib/lib/ts

# Set Qt environment
export QWS_MOUSE_PROTO=tslib:/dev/input/event0
# Ecran 3"1/2 T35 #export QWS_DISPLAY=LinuxFB:mmWidth=160:mmHeight=100
# Ecran 7" A70 export QWS_DISPLAY=LinuxFB:mmWidth=310:mmHeight=190
export QWS_SIZE=800x480

export LD_LIBRARY_PATH=/usr/local/tslib/lib:/usr/local/qt/lib:/lib:/usr/lib
export QTDIR=/usr/local/qt

Le test de fonctionnement de Qt a été réalisé sur la carte mini2440 avec le système de fichiers root complet mis à jour en utilisant l’application de démonstration Nokia patientcare exécutée sur la carte mini2440 :

# ./patientcare –qws

08-07-11_1749.jpg

28-06-11_1442.jpg

Il faut noter que l'on utilise ici le framebuffer qui a été validé lors de la configuration du noyau Linux...

Nous avons donc au final un système Linux embarqué opérationnel et minimal pour la carte mini2440 avec Qt et tslib pour pouvoir utiliser l'écran tactile (A70 pour ces séances).

Prochaine séance : petit bilan sur la mise en oeuvre de la carte mini2440...

++

Sources :

Vus : 2993
Publié par Eddy33 : 81