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
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 :
- Sources de Qt/embedded
- Fichier qt-everywhere-opensource-src-4.7.3/mkspecs/qws/linux-arm-g++/qmake.conf pour la carte mini2440
- Application Qt de démonstration patientcare
- HOWTO: Compiling Qt and Tslib
- Installing TSLib and Calibrating it
- Tslib
- Upgrade Qt4.6.2 in mini2440
- Qt 4.5 on mini2440
- Qt4.6 embedded sur la mini2440
- Qt embedded : on avance
- Qt 4.6.2 installation procedure for FriendlyARM mini 2440 Linux
- Qt/Embedded