我是嵌入式Linux和linux中图形堆栈的新手。 因此,我们正在尝试在Beaglebone Black上运行带有自定义内核的wpewebkit(带有cog)。
问题是cog无法启动:
EGLDisplay Initialization failed: EGL_NOT_INITIALIZED
我们尝试了2种情况:
- 运行带有“ cog -P drm-experimental”的齿轮
- 运行“ weston --tty = 1 --backend = drm-backends.so”和“ cog -P fdo”
在后一种情况下,我们注意到运行weston时,我们会从mesa库中收到另一条消息(weston随后运行,并且在TFT面板中看到weston / wayland桌面):
mesa-loader: failed to open tilcdc (search paths /usr/lib/dri)
failed to load driver: tilcdc
在研究“无法加载驱动程序:tilcdc”消息时,我在TI的论坛上遇到了this thread:
TI员工表示需要“ ti-gfx”和“ ti-sgx-km”软件包。我试图通过Linux内核配置添加它,但是没有选择。然后,我查看了Buildroot的配置,发现里面有“ ti-sgx-km”软件包,但这取决于在buildroot中构建Linux内核。
使用TI的内核(如beaglebone_qt5_defconfig),我们陷入了构建过程,在该过程中,TI的Linux内核仅具有用于gcc5的编译器头,而wpewebkit则需要最低的gcc6。 因此,我们然后尝试将buildroot配置为使用“ https://github.com/beagleboard/linux.git”回购作为内核源,并开始了构建过程。但是在构建“ ti-sgx-km”模块时会引发错误:
./include/linux/timer.h: In function ‘timer_setup’:
./include/linux/timer.h:179:23: error: cast between incompatible function types from ‘void (*)(struct timer_list *)’ to ‘void (*)(long unsigned int)’ [-Werror=cast-function-type]
__setup_timer(timer,(TIMER_FUNC_TYPE)callback
我的结论是,为了正确地进行egl的初始化,我们需要“ ti-sgx”软件包,因此我需要以某种方式将其添加到内核中。 如果是这样,我该如何找到正确的内核存储库,该存储库具有用于> = gcc6和兼容的“ ti-sgx-km软件包”的编译器头
也许我正在忽略某些东西。因此,任何指导都是值得的。
打包版本
cog 0.3.0 0.4.0 (Scenario 1)
libwpe 1.2.0 1.4.0.1
wpewebkit 2.24.2 2.24.2
wpebackend-fdo 1.2.1 1.4.0
mesa3d 19.0.8
wayland 1.17.0
weston rel_imx_4.9.51_8mq_ga
Linux kernel:
https://github.com/beagleboard/linux.git (branch 4.14)
make bb.org_defconfig
make menuconfig
make
Buildroot:
git://git.buildroot.net/buildroot (branch master)
make beaglebone_defconfig
make menuconfig
make