在工業控制、智能零售、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文章
2298瀏覽量
76250 -
瑞芯微
+關注
關注
27文章
708瀏覽量
53627
發布評論請先 登錄
高效開發 | 瑞迅基于瑞芯微系列主板QT移植部署(上)

高效開發 | 瑞迅基于瑞芯微系列主板QT移植部署(下)
評論