Egy ARM alapú demópanelre generáltam Qt embeddedet is tartalmazó rootfs-t meg kernelt buildroot segítségével.
ts_calibrate lefutott, a programot indító szkript a következőket állítja be:
#!/bin/bash
APPNAME=QI2CTester
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=/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/lib/ts
if [ -f $TSLIB_CALIBFILE ]
then
echo "Touchscreen already calibrated..."
else
echo "Calibrating Touchscreen..."
ts_calibrate $TSLIB_CALIBFILE
fi
export QWS_MOUSE_PROTO=tslib:$TSLIB_TSDEVICE
export QWS_SIZE=800x480
export QWS_DISPLAY=LinuxFb:mmWidth=155:mmHeight=95
if [ -f /tmp/$APPNAME.lck ]
then
echo "Lockfile exists, an another instance of the program is running."
else
touch /tmp/$APPNAME.lck
./$APPNAME -qws -embedded
rm -rf /tmp/$APPNAME.lck
fi
Ugyanez az indítóscript openembeddeddel generált angström alatt működött (az glibc alapú volt a buildrootos meg uclibc).
ldd szerint minden függősége meg van:# ldd ./untitled
libQtGui.so.4 => /usr/lib/libQtGui.so.4 (0x4000e000)
libQtNetwork.so.4 => /usr/lib/libQtNetwork.so.4 (0x408fa000)
libQtCore.so.4 => /usr/lib/libQtCore.so.4 (0x409c5000)
libpthread.so.0 => /lib/libpthread.so.0 (0x40c82000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x40c9c000)
libm.so.0 => /lib/libm.so.0 (0x40d55000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x40d6d000)
libc.so.0 => /lib/libc.so.0 (0x40d80000)
libts-1.0.so.0 => /usr/lib/libts-1.0.so.0 (0x40dcf000)
libdl.so.0 => /lib/libdl.so.0 (0x40dd9000)
librt.so.0 => /lib/librt.so.0 (0x40de4000)
ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x40000000)
strace kimenet:
http://codepaste.appspot.com/show?id=442122
Bárimlyen ötletet szívesen fogadok!
Megoldás:
Ne használjunk freetype2-t ha arra nincs szükségünk, a Qt által szállítottat meg főleg nem.
Tanulság:
Embedded retkeknél leszed, lefordít, tesztel, nem pedig leszed érzésre optimális beállításokat keres, lefordít és szop a helyes munkametódus.
- 1182 megtekintés
Hozzászólások
Nos faragtam debug Qt libeket meg gdbt a targetre és:
http://pastie.org/1556125
Nézem hogy wattafakk is harfbuzz, és jött az asztal megfejelése.
Hát igen Miklóska farok volt és úgy gondolta hogy neki kell Freetype2 mégpedig abból is Qt boundled verzió.
Ezt kikapcsolva csak a tslibet kellett megkókányolni, mert a buildroot valamiért a két kernelt használ az egyiket a targetre forgatja le a másiknak a forrását pedig csak úgy felteszi a build mappába, gondolom hogy a hostra pörgetett programok ha kérnek valamit akkor kapjanak belőle.
Én egy url-ről lehúzott 2.6.32 kernelt használok a targeten, a buildroottal ezt pedig nem sikerült megbeszélni hogy a toolchainnel is ezt használja. No mindegy átírtam az #include
elérési utat úgy hogy az a target headerére mutasson, így már nem anyázik a ts_calibrate, hogy
tslib: Selected device uses a different version of the event protocol than tslib was compiled for
Az eredmény:
http://dl.dropbox.com/u/4295670/100_9914.JPG
Öröm bódottá van.
- A hozzászóláshoz be kell jelentkezni