I have cross-compiled Qt 5.1.1 for an i.MX6 powered Nitrogen6x board running Debian 7 (wheezy).
我已经对一个I进行了交叉编译Qt 5.1.1。MX6驱动的氮素6x板运行Debian 7 (wheezy)。
I have configured Qt with the -egl
parameter and eglfs has been listed as QPA backend in the configure output.
我已经将Qt配置为-egl参数,eglfs在配置输出中被列为QPA后端。
However if I try to run a small example application with the -platform eglfs
parameter I am running into this error:
但是,如果我尝试使用-platform eglfs参数运行一个小示例应用程序,我就会遇到这个错误:
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 and EGL are installed on the board and can be found in /usr/lib
and /usr/include
. Sadly I couldn't find proper documentation for eglfs, so I am hoping that someone around here has made some experiences with it.
OpenGL ES2和EGL安装在板上,可以在/usr/lib和/usr/ include中找到。遗憾的是,我无法为eglfs找到合适的文档,所以我希望这里的某个人已经有了一些经验。
This is the backtrace output:
这是backtrace输出:
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
How could I possibly fix that error?
我怎么可能修正这个错误呢?
3 个解决方案
#1
3
I have the exact same crash on a MarSBoard running an egl fb application on a Yocto image created with recipes from https://github.com/silmerusse/meta-robomind. I had to copy the EGL/OpenGL related stuff from http://repository.timesys.com/buildsources/g/gpu-viv-bin-mx6q/. In my case galcore.ko is builtin.
我在一个由https://github.com/silmerusse/meta-robomind创建的Yocto图像上运行egl fb应用程序的MarSBoard上发生了完全相同的崩溃。我必须从http://repository.timesys.com/buildsources/g/gpu-viv-bin-mx6q/复制EGL/OpenGL相关内容。在我的例子中galcore。ko装入的。
Edit: Check that you have /dev/galcore and that its permission are crw.rw.rw. (otherwise sudo chmod 666 /dev/galcore). If you don't have /dev/galcore, try insmod /lib/modules/..../kernel/drivers/mxc/gpu-viv/galcore.ko. These steps fixed the crash for me on an ubuntu image. On the Yocto image the galcore driver is builtin, and seems to be there but I still get the crash.
编辑:检查您是否有/dev/galcore,并且它的权限是crw.rw。(否则sudo chmod 666 /dev/galcore)。如果你没有/dev/galcore,可以试试insmod / lib/modules// kernel/drivers/mxc/gpu-viv/galcore.ko。这些步骤为我在ubuntu映像上修复了崩溃。在Yocto图像中,galcore的驱动程序是内置的,似乎在那里,但我仍然会崩溃。
Edit: The crash in the Yocto image was caused by the wrong version of the EGL/GAL.so libs. Apparently the galcore driver built into the kernel has version 4.6.9.6622. It requires libs from gpu-viv-bin-mx6q-3.0.35-4.1.0. Using those libs and manually copying them into /usr/lib my fb application runs fine, using hardware OpenGLES 2.0 and hardware decoding of a h264 video.
编辑:Yocto图像的崩溃是由错误的EGL/GAL版本造成的。所以填词。显然,内核中内置的galcore驱动程序的版本是4.6.9.6622。它需要gpu-viv-bin-mx6q-3.0.35-4.1.0的libs。使用这些libs并将它们手工复制到/usr/lib中,我的fb应用程序运行良好,使用硬件OpenGLES 2.0和硬件解码h264视频。
#2
0
I fixed this issue by switching to Yocto and therefor gaining access to most recent releases of essential components. If you're developing for an i.MX cpu I strongly recommend to have a look at https://github.com/Freescale/fsl-community-bsp-platform
我通过切换到Yocto来解决这个问题,从而获得了对最近发布的基本组件的访问权。如果你是在为我。我强烈建议您看看https://github.com/Freescale/fsl-community-bsp-platform。
It is very important to remove "x11" from default-distrovars and "wayland" from poky.conf as these will cause you to run into errors.
将“x11”从默认的-distrovars和“wayland”从poky移除是非常重要的。conf将会导致您遇到错误。
Building Qt5 on such a setup works fine.
在这种设置上构建Qt5可以正常工作。
#3
0
I got similar segfault when I forgot to load the galcore module. Here is the backtrace:
当我忘记加载galcore模块时,我得到了类似的segfault。这是回溯:
#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
Qt 5.3.2,内核3.10.17,Galcore版本4.6.9.9754。
#1
3
I have the exact same crash on a MarSBoard running an egl fb application on a Yocto image created with recipes from https://github.com/silmerusse/meta-robomind. I had to copy the EGL/OpenGL related stuff from http://repository.timesys.com/buildsources/g/gpu-viv-bin-mx6q/. In my case galcore.ko is builtin.
我在一个由https://github.com/silmerusse/meta-robomind创建的Yocto图像上运行egl fb应用程序的MarSBoard上发生了完全相同的崩溃。我必须从http://repository.timesys.com/buildsources/g/gpu-viv-bin-mx6q/复制EGL/OpenGL相关内容。在我的例子中galcore。ko装入的。
Edit: Check that you have /dev/galcore and that its permission are crw.rw.rw. (otherwise sudo chmod 666 /dev/galcore). If you don't have /dev/galcore, try insmod /lib/modules/..../kernel/drivers/mxc/gpu-viv/galcore.ko. These steps fixed the crash for me on an ubuntu image. On the Yocto image the galcore driver is builtin, and seems to be there but I still get the crash.
编辑:检查您是否有/dev/galcore,并且它的权限是crw.rw。(否则sudo chmod 666 /dev/galcore)。如果你没有/dev/galcore,可以试试insmod / lib/modules// kernel/drivers/mxc/gpu-viv/galcore.ko。这些步骤为我在ubuntu映像上修复了崩溃。在Yocto图像中,galcore的驱动程序是内置的,似乎在那里,但我仍然会崩溃。
Edit: The crash in the Yocto image was caused by the wrong version of the EGL/GAL.so libs. Apparently the galcore driver built into the kernel has version 4.6.9.6622. It requires libs from gpu-viv-bin-mx6q-3.0.35-4.1.0. Using those libs and manually copying them into /usr/lib my fb application runs fine, using hardware OpenGLES 2.0 and hardware decoding of a h264 video.
编辑:Yocto图像的崩溃是由错误的EGL/GAL版本造成的。所以填词。显然,内核中内置的galcore驱动程序的版本是4.6.9.6622。它需要gpu-viv-bin-mx6q-3.0.35-4.1.0的libs。使用这些libs并将它们手工复制到/usr/lib中,我的fb应用程序运行良好,使用硬件OpenGLES 2.0和硬件解码h264视频。
#2
0
I fixed this issue by switching to Yocto and therefor gaining access to most recent releases of essential components. If you're developing for an i.MX cpu I strongly recommend to have a look at https://github.com/Freescale/fsl-community-bsp-platform
我通过切换到Yocto来解决这个问题,从而获得了对最近发布的基本组件的访问权。如果你是在为我。我强烈建议您看看https://github.com/Freescale/fsl-community-bsp-platform。
It is very important to remove "x11" from default-distrovars and "wayland" from poky.conf as these will cause you to run into errors.
将“x11”从默认的-distrovars和“wayland”从poky移除是非常重要的。conf将会导致您遇到错误。
Building Qt5 on such a setup works fine.
在这种设置上构建Qt5可以正常工作。
#3
0
I got similar segfault when I forgot to load the galcore module. Here is the backtrace:
当我忘记加载galcore模块时,我得到了类似的segfault。这是回溯:
#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
Qt 5.3.2,内核3.10.17,Galcore版本4.6.9.9754。