matrix 是ti开发的一个简单的UI界面,本质上是一个网页,适用于嵌入式linux平台,基于qtwebengine/qtwebkit + lighttpd + php。qt负责显示网页,lighttpd负责搭建web服务器,php为网页脚本。
源代码可见于ti各个平台的sdk源代码。
以下为遇到的问题及当时的调试流程及解决方案:
界面黑屏
问题描述
开机后应该显示matrix的界面全黑。
- 运行其他qt程序正常,初步判断不是qt的问题。
- ps -aux |grep lighttpd 确认lighttpd服务已启动。
- 根据lighttpd服务启动命令,确认lighttpd配置文件为/etc/lighttpd/lighttpd.conf
修改server.document-root = “/mnt”
在mnt目录下添加index.html文件,
<html><body><h1>It works!</h1></body></html>
重启板子或者只重启相关服务,发现屏幕显示It works。
说明lighttd正常,判断是php问题或者matrix代码问题。
4. 在matrix目录下 打开php.ini
修改配置display_errors 为On
display_errors = On
重启板子或者只重启相关服务。
屏幕打印找不到json_decode();
5. matrix源代码中搜索,未找到json_decode()定义,应该是php库函数
6. 在php源代码中(php是buildroot编出来的,所以可以在out/build/php*中找到编译的源代码)搜索json_decode(),发现所在文件未编译,查找Makefile,configue,配置buidlroot编译选项,打开BR2_PACKAGE_PHP_EXT_JSON,重新编译php。
7. 更新php后,问题解决。
基于qtwebengine的matrix禁用opengl
不支持opengl 可以通过在main中配置
QCoreApplication::setAttribute(Qt::AA_UseSoftwareOpenGL);
来强制qtwebengine使用软件opengl
通过以下环境变量可以禁止qt使用opengl,改用qt软件渲染
export QMLSCENE_DEVICE=softwarecontext
参考:
https://zhuanlan.zhihu.com/p/550285855
Qt的QWebengine在部分win7设备上黑屏和网页突然消失的问题排查解决