Frage

Ich habe Qt 5.1.1 für ein i.MX6-basiertes Nitrogen6x-Board mit Debian 7 (wheezy) kreuzkompiliert.

Ich habe Qt mit dem konfiguriert -egl Parameter und eglfs wurden in der Konfigurationsausgabe als QPA-Backend aufgeführt.

Wenn ich jedoch versuche, eine kleine Beispielanwendung mit dem auszuführen -platform eglfs Parameter Ich stoße auf diesen Fehler:

stdin: is not a tty
[     1] HAL user version 4.6.9 build 6622 Aug 15 2013 13:22:40
[     2] HAL kernel version 4.6.9 build 1210
QML debugging is enabled. Only use this in a safe environment.
bash: line 1:  3673 Segmentation fault      DISPLAY=:0.0 /opt/Test/bin/Test -platform eglfs
Remote application finished with exit code 139.

OpenGL ES2 und EGL sind auf der Platine installiert und in zu finden /usr/lib Und /usr/include.Leider konnte ich keine geeignete Dokumentation für eglfs finden, daher hoffe ich, dass hier jemand Erfahrungen damit gemacht hat.

Dies ist die Backtrace-Ausgabe:

    run Test-platform eglfs
Starting program: /opt/Test/bin/Test Test -platform eglfs
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".
[     1] HAL user version 4.6.9 build 6622 Aug 15 2013 13:31:17
[     2] HAL kernel version 4.6.9 build 1210
QML debugging is enabled. Only use this in a safe environment.
[New Thread 0x2c6b7460 (LWP 4057)]

Program received signal SIGSEGV, Segmentation fault.
0x2bab6f48 in gcoHAL_QueryChipCount () from /usr/lib/libGAL.so
(gdb) backrace full
Undefined command: "backrace".  Try "help".
(gdb) backrace full[1@t
#0  0x2bab6f48 in gcoHAL_QueryChipCount () from /usr/lib/libGAL.so
No symbol table info available.
#1  0x2ba7ccbc in veglGetThreadData () from /usr/lib/libEGL.so.1
No symbol table info available.
#2  0x2ba74cd0 in eglBindAPI () from /usr/lib/libEGL.so.1
No symbol table info available.
#3  0x2be41934 in ?? () from /usr/local/Qt-Debian/plugins/platforms/libqeglfs.so
No symbol table info available.
#4  0x2be41934 in ?? () from /usr/local/Qt-Debian/plugins/platforms/libqeglfs.so
No symbol table info available.
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb) info registers
r0             0x1  1
r1             0x23e54  147028
r2             0x738    1848
r3             0x0  0
r4             0x2bb67d84   733379972
r5             0x23e18  146968
r6             0x2e70c  190220
r7             0x2b430198   725811608
r8             0x7efff9e8   2130704872
r9             0x8  8
r10            0x2b0725c4   721888708
r11            0x7efffae0   2130705120
r12            0x2bab6f1c   732655388
sp             0x7efff8f0   0x7efff8f0
lr             0x2ba7ccbc   732417212
pc             0x2bab6f48   0x2bab6f48 <gcoHAL_QueryChipCount+44>
cpsr           0x80000010   -2147483632
(gdb) x/16i $pc
=> 0x2bab6f48 <gcoHAL_QueryChipCount+44>:   ldr r3, [r3, #12]
   0x2bab6f4c <gcoHAL_QueryChipCount+48>:   sub r2, r3, #1
   0x2bab6f50 <gcoHAL_QueryChipCount+52>:   cmp r2, #2
   0x2bab6f54 <gcoHAL_QueryChipCount+56>:   bhi 0x2bab6f70 <gcoHAL_QueryChipCount+84>
   0x2bab6f58 <gcoHAL_QueryChipCount+60>:   ldr r2, [r4]
   0x2bab6f5c <gcoHAL_QueryChipCount+64>:   mov r0, #0
   0x2bab6f60 <gcoHAL_QueryChipCount+68>:   str r3, [r1]
   0x2bab6f64 <gcoHAL_QueryChipCount+72>:   add r3, r2, #1
   0x2bab6f68 <gcoHAL_QueryChipCount+76>:   str r3, [r4]
   0x2bab6f6c <gcoHAL_QueryChipCount+80>:   pop {r4, pc}
   0x2bab6f70 <gcoHAL_QueryChipCount+84>:   mvn r0, #8
   0x2bab6f74 <gcoHAL_QueryChipCount+88>:   bl  0x2baad5fc
   0x2bab6f78 <gcoHAL_QueryChipCount+92>:   ldr r3, [r4]
   0x2bab6f7c <gcoHAL_QueryChipCount+96>:   mvn r0, #8
   0x2bab6f80 <gcoHAL_QueryChipCount+100>:  add r3, r3, #1
   0x2bab6f84 <gcoHAL_QueryChipCount+104>:  str r3, [r4]
(gdb) thread apply all backtrace

Thread 2 (Thread 0x2c6b7460 (LWP 4057)):
#0  0x2b52ef96 in ?? () from /lib/arm-linux-gnueabihf/libc.so.6
#1  0x2b568634 in _IO_file_close () from /lib/arm-linux-gnueabihf/libc.so.6
#2  0x2b568ffe in _IO_file_close_it () from /lib/arm-linux-gnueabihf/libc.so.6
#3  0x2b56113a in fclose () from /lib/arm-linux-gnueabihf/libc.so.6
#4  0x2bea8d00 in udev_new () from /lib/arm-linux-gnueabihf/libudev.so.0
#5  0x2be7d2e4 in ?? () from /usr/local/Qt-Debian/plugins/platforms/libqeglfs.so
#6  0x2be7d2e4 in ?? () from /usr/local/Qt-Debian/plugins/platforms/libqeglfs.so
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 1 (Thread 0x2bcb9220 (LWP 4056)):
#0  0x2bab6f48 in gcoHAL_QueryChipCount () from /usr/lib/libGAL.so
#1  0x2ba7ccbc in veglGetThreadData () from /usr/lib/libEGL.so.1
#2  0x2ba74cd0 in eglBindAPI () from /usr/lib/libEGL.so.1
#3  0x2be41934 in ?? () from /usr/local/Qt-Debian/plugins/platforms/libqeglfs.so
#4  0x2be41934 in ?? () from /usr/local/Qt-Debian/plugins/platforms/libqeglfs.so
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb) quit

Wie könnte ich diesen Fehler möglicherweise beheben?

War es hilfreich?

Lösung 2

Ich habe dieses Problem behoben, indem ich zu Yocto gewechselt bin und dadurch Zugriff auf die neuesten Versionen wesentlicher Komponenten erhalten habe.Wenn Sie für eine i.MX-CPU entwickeln, empfehle ich dringend, einen Blick darauf zu werfen https://github.com/Freescale/fsl-community-bsp-platform

Es ist sehr wichtig, „x11“ aus den Standarddistrovars und „wayland“ aus poky.conf zu entfernen, da dies zu Fehlern führt.

Der Aufbau von Qt5 auf einem solchen Setup funktioniert einwandfrei.

Andere Tipps

Ich habe genau den gleichen Absturz auf einem MarSBoard, das eine EGL-FB-Anwendung auf einem Yocto-Image ausführt, das mit Rezepten von erstellt wurde https://github.com/silmerusse/meta-robomind.Ich musste die EGL/OpenGL-bezogenen Dinge von kopieren http://repository.timesys.com/buildsources/g/gpu-viv-bin-mx6q/.In meinem Fall ist galcore.ko eingebaut.

Bearbeiten:Überprüfen Sie, ob Sie über /dev/galcore verfügen und die Berechtigung crw.rw.rw lautet.(sonst sudo chmod 666 /dev/galcore).Wenn Sie nicht über /dev/galcore verfügen, versuchen Sie es mit insmod /lib/modules/..../kernel/drivers/mxc/gpu-viv/galcore.ko.Diese Schritte haben den Absturz bei einem Ubuntu-Image behoben.Auf dem Yocto-Image ist der Galcore-Treiber integriert und scheint vorhanden zu sein, aber ich bekomme immer noch den Absturz.

Bearbeiten:Der Absturz im Yocto-Image wurde durch die falsche Version der EGL/GAL.so-Bibliotheken verursacht.Anscheinend hat der im Kernel integrierte Galcore-Treiber die Version 4.6.9.6622.Es erfordert Bibliotheken von gpu-viv-bin-mx6q-3.0.35-4.1.0.Wenn ich diese Bibliotheken verwende und sie manuell nach /usr/lib kopiere, läuft meine fb-Anwendung einwandfrei, mit Hardware-OpenGLES 2.0 und Hardware-Dekodierung eines h264-Videos.

Ich habe einen ähnlichen Segfault erhalten, als ich vergessen habe, das Galcore-Modul zu laden.Hier ist der Backtrace:

#0  0x766062b0 in gcoHAL_QueryChipCount (Hal=Hal@entry=0x0, Count=Count@entry=0x16494)
    at gc_hal_user_query.c:1726
#1  0x766da244 in veglGetThreadData () at gc_egl.c:137
#2  0x766d3210 in eglfGetDisplay (display_id=0x16c08) at gc_egl_init.c:464
#3  eglGetDisplay (DisplayID=0x16c08) at gc_egl_init.c:565

Qt 5.3.2, Kernel 3.10.17, Galcore-Version 4.6.9.9754

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top