新闻中心

News

您当前的位置:首页 > 新闻中心

高效开发 | 瑞迅基于瑞芯微系列主板QT移植部署(下)

发布时间:2025-08-18 来源:瑞迅科技 浏览量:227

在工业控制、智能零售、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 无法被选中,提示错误




EGLFS Mali………………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 as 2. authorised by a licensing agreement from ARM Limited 3. (C) COPYRIGHT 2008-2011 ARM Limited 4. ALL RIGHTS RESERVED 5. The entire notice above must be reproduced on all authorised 6. copies and copies may only be made to the extent permitted 7. by a licensing agreement from ARM Limited. */ /** 8. @file fbdev_window.h 9. @brief A window type for the framebuffer device (used by egl and tests) */ #ifndef _FBDEV_WINDOW_H_#define _FBDEV_WINDOW_H_ #ifdef __cplusplusextern "C" {#endif typedef enum{ 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问题



问题出在安装了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"



 

通过以上修改后scene3d可正常运行,并且GPU的使用率也有变化。

 

 

欢迎持续关注,共同探讨!

    利用qt3d/examples/qt3d/scene3d例程进行测试,发现3D效果无法显示,查看GPU的利用率是0。
  •  
      # 查看CPU使用情况
      $ cat /sys/devices/platform/*.gpu/utilisation

      确认以上信息后可修改qmake文件中的配置如下:
    •  
        QMAKE_LIBS_EGL         += -lEGL -lGLESv2 -lmali
        QMAKE_LIBS_OPENGL_ES2  += -lGLESv2 -lEGL -lmali


  •  

3

交叉编译中OpenGL问题