在工业控制、智能零售、AI机器人等领域,高性能、稳定可靠且具备丰富人机交互能力的嵌入式设备需求激增。
瑞迅科技推出的基于瑞芯微旗舰级芯片RK3568的系列主板,凭借其强劲的四核A55 CPU、高效Mali G52 GPU、丰富接口(多路USB、以太网、CAN、串口等)及工业级可靠性,成为复杂QT应用开发的优秀硬件平台。
承接上篇对环境的搭建、QT移植部署,本篇将聚焦QT移植部署过程中挑战与实战中的解决方案,助力快速实现项目落地。
1
QMAKE_INCDIR_OPENGL[_ES2]配置
以上问题可检查一下qtbase/mkspecs/linux-aarch64-gnu-g++/qmake.conf中对opengl的配置是否正确,其次是确定依赖的文件系统中库和相关的头文件是否存在,如果依赖的库是个符号链接需要保证符号链接正常。这种情况大概率是因为无法找到对应的库或者头文件而报错。
2
EGLFS Mali 无法被选中,提示错误
EGLFSMali………………no
确保1问题解决的情况下,如果出现EGLFS Mali提示是no的情况,可以查看config.log,看log中是否有提示fbdev_window.h找不到。如果是可以在“/usr/include/EGL”下手动
创建fbdev_window.h文件,内容如下:
/*1. This confidential and proprietary software may be used only as2. authorised by a licensing agreement from ARM Limited3. (C) COPYRIGHT 2008-2011 ARM Limited4. ALL RIGHTS RESERVED5. The entire notice above must be reproduced on all authorised6. copies and copies may only be made to the extent permitted7. by a licensing agreement from ARM Limited.*//**8. @file fbdev_window.h9. @brief A window type for the framebuffer device (used by egl and tests)*/#ifndef_FBDEV_WINDOW_H_#define_FBDEV_WINDOW_H_#ifdef__cplusplusextern"C"{#endiftypedefenum{FBDEV_PIXMAP_DEFAULT =0,FBDEV_PIXMAP_SUPPORTS_UMP = (1<<0),?FBDEV_PIXMAP_ALPHA_FORMAT_PRE = (1<<1),?FBDEV_PIXMAP_COLORSPACE_sRGB = (1<<2),?FBDEV_PIXMAP_EGL_MEMORY = (1<<3) ? ? ? ?/* EGL allocates/frees this memory */} fbdev_pixmap_flags;?typedef?struct?fbdev_window{?unsigned?short?width;?unsigned?short?height;} fbdev_window;?typedef?struct?fbdev_pixmap{?unsigned?int?height;?unsigned?int?width;?unsigned?int?bytes_per_pixel;?unsigned?char?buffer_size;?unsigned?char?red_size;?unsigned?char?green_size;?unsigned?char?blue_size;?unsigned?char?alpha_size;?unsigned?char?luminance_size;?fbdev_pixmap_flags flags;?unsigned?short?*data;?unsigned?int?format;?/* extra format information in case rgbal is not enough, especially for YUV formats */} fbdev_pixmap;?#ifdef?__cplusplus}#endif??#endif
3
交叉编译中OpenGL问题
利用qt3d/examples/qt3d/scene3d例程进行测试,发现3D效果无法显示,查看GPU的利用率是0。
#查看CPU使用情况$cat/sys/devices/platform/*.gpu/utilisation
问题出在安装了libgles2-mesa、libgles2-mesa-dev这两个库上,并且qmake配置的
QMAKE_LIBS_EGL += -lEGL -lGLESv2
QMAKE_LIBS_OPENGL_ES2 += -lGLESv2 -lEGL
两个依赖库都匹配成了libgles2-mesa、libgles2-mesa-dev中的库。在Rockchip系统中如果采用的GPU是官方闭源的驱动,需要安装Rockchip提供的mali库安装包,安装包会将libGLESv2.so、libEGL.so安装到/usr/lib/aarch64-linux-gnu/mali下,所以上面的库连接就会出错,通过在/usr/lib/aarch64-linux-gnu创建libGLESv2.so、libEGL.so符号连接,解决该问题。
$ln-s mali/libEGL.so libEGL.so$ln-s mali/libGLESv2.so libGLESv2.so
另外config.log如果提示缺少glUniform1f、glClear两个函数的定义。可以通过下面命令在libmali.so找到。
$strings libmali.so | grep"glUniform1f"$strings libmali.so | grep"glClear"
确认以上信息后可修改qmake文件中的配置如下:
QMAKE_LIBS_EGL += -lEGL -lGLESv2 -lmaliQMAKE_LIBS_OPENGL_ES2 += -lGLESv2 -lEGL -lmali
通过以上修改后scene3d可正常运行,并且GPU的使用率也有变化。
-
主板
+关注
关注
54文章
2171浏览量
73529 -
瑞芯微
+关注
关注
25文章
631浏览量
52650
发布评论请先 登录
高效开发 | 瑞迅基于瑞芯微系列主板QT移植部署(上)

评论