当前位置: 首页 > news >正文

RK3588 openeuler 集成 QT5 调试

RK3588 openeuler 24.03 集成 QT5 调试

以下是大概调试步骤和流程, 需要详细的调试文档可私

主要涉及的技术栈:
显示驱动框架 -> GPU 驱动框架 -> OpenGL/OpenCL 库的支持 -> weston(wayland) 调试 -> QT5 调试 -> QT5 opengl 测试用例执行成功

开发环境: Ubuntu-22

rockchip#:~$ uname -a
Linux server1-rockchip 6.8.0-87-generic #88~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue Oct 14 14:03:14 UTC 2 x86_64 x86_64 x86_64 GNU/Linux

运行环境说明: openeuler-24.03

ok3588 ~ # cat /proc/version
Linux version 5.10.0-openeuler (oe-user@oe-host) (aarch64-openeuler-linux-gnu-gcc (crosstool-NG 1.26.0) 12.3.1 20230508, GNU ld (crosstool-NG 1.26.0) 2.41) #1 SMP Fri Oct 24 07:41:56 UTC 2025

目标板卡 飞凌OK3588:
在这里插入图片描述

1. yocto 构建项目

  • 构建项目指令
oebuild generate -p ok3588 -f systemd -f opengl -f qt5 -f wayland -d ok3588-qt

2. hdmi 显示外设的调试

  • 设备树修改使能hdmi, vop 等驱动
&route_hdmi0 {status = "okay";connect = <&vp0_out_hdmi0>;/delete-property/ force-output;/delete-node/ force_timing;
};&hdmi0_in_vp0 {status = "okay";
};&hdmi0 {status = "okay";
};&hdptxphy_hdmi0 {status = "okay";
};
  • 启动测试
./modetest -s 185@68:1920x1080  
  • 显示效果
    在这里插入图片描述

3. 需要调通 GPU 对 drm 的显示

  • 使能相关驱动
  • 启动有以下日志, 说明 CPU ID 加载正常
ok3588 ~ # dmesg | grep gpu
[    2.864729] mali fb000000.gpu: GPU identified as 0x7 arch 10.8.6 r0p0 status 0
  • GPU 测试, 使用 kmscube
ok3588 ~ # kmscube
arm_release_ver of this libmali is 'g6p0-01eac0', rk_so_ver is '6'.
Using display 0x557e516280 with EGL version 1.4
===================================
EGL information:version: "1.4 Valhall-"g6p0-01eac0""vendor: "ARM"client extensions: "EGL_EXT_client_extensions EGL_EXT_platform_base EGL_KHR_client_get_all_proc_addresses EGL_KHR_platform_gbm EGL_KHR_platform_wayland EGL_EXT_platform_wayland"display extensions: "EGL_WL_bind_wayland_display EGL_NV_context_priority_realtime EGL_KHR_partial_update EGL_KHR_config_attribs EGL_KHR_image EGL_KHR_image_base EGL_KHR_fence_sync EGL_KHR_wait_sync EGL_KHR_gl_colorspace EGL_KHR_get_all_proc_addresses EGL_IMG_context_priority EGL_KHR_no_config_context EGL_EXT_image_dma_buf_import EGL_EXT_image_dma_buf_import_modifiers EGL_EXT_yuv_surface EGL_EXT_pixel_format_float EGL_ARM_pixmap_multisample_discard EGL_KHR_gl_texture_2D_image EGL_KHR_gl_renderbuffer_image EGL_KHR_create_context EGL_KHR_surfaceless_context EGL_KHR_gl_texture_cubemap_image EGL_EXT_image_gl_colorspace EGL_EXT_create_context_robustness"
===================================
OpenGL ES 2.x information:version: "OpenGL ES 3.2 v1.g6p0-01eac0.ba52c908d926792b8f5fe28f383a2b03"shading language version: "OpenGL ES GLSL ES 3.20"vendor: "ARM"renderer: "Mali-LODX"extensions: "GL_ARM_rgba8 GL_ARM_mali_shader_binary GL_OES_depth24 GL_OES_depth_texture GL_OES_depth_texture_cube_map GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_EXT_read_format_bgra GL_OES_compressed_paletted_texture GL_OES_compressed_ETC1_RGB8_texture GL_OES_standard_derivatives GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_image_external_essl3 GL_OES_EGL_sync GL_OES_texture_npot GL_OES_vertex_half_float GL_OES_required_internalformat GL_OES_vertex_array_object GL_OES_mapbuffer GL_EXT_texture_format_BGRA8888 GL_EXT_texture_rg GL_EXT_texture_type_2_10_10_10_REV GL_OES_fbo_render_mipmap GL_OES_element_index_uint GL_EXT_shadow_samplers GL_OES_texture_compression_astc GL_KHR_texture_compression_astc_ldr GL_KHR_texture_compression_astc_hdr GL_KHR_texture_compression_astc_sliced_3d GL_EXT_texture_compression_astc_decode_mode GL_EXT_texture_compression_astc_decode_mode_rgb9e5 GL_KHR_debug GL_EXT_occlusion_query_boolean GL_EXT_disjoint_timer_query GL_EXT_blend_minmax GL_EXT_discard_framebuffer GL_OES_get_program_binary GL_OES_texture_3D GL_EXT_texture_storage GL_EXT_multisampled_render_to_texture GL_EXT_multisampled_render_to_texture2 GL_OES_surfaceless_context GL_OES_texture_stencil8 GL_EXT_shader_pixel_local_storage GL_ARM_shader_framebuffer_fetch GL_ARM_shader_framebuffer_fetch_depth_stencil GL_ARM_mali_program_binary GL_EXT_sRGB GL_EXT_sRGB_write_control GL_EXT_texture_sRGB_decode GL_EXT_texture_sRGB_R8 GL_EXT_texture_sRGB_RG8 GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent GL_OES_texture_storage_multisample_2d_array GL_OES_shader_image_atomic GL_EXT_robustness GL_EXT_draw_buffers_indexed GL_OES_draw_buffers_indexed GL_EXT_texture_border_clamp GL_OES_texture_border_clamp GL_EXT_texture_cube_map_array GL_OES_texture_cube_map_array GL_OES_sample_variables GL_OES_sample_shading GL_OES_shader_multisample_interpolation GL_EXT_shader_io_blocks GL_OES_shader_io_blocks GL_EXT_tessellation_shader GL_OES_tessellation_shader GL_EXT_primitive_bounding_box GL_OES_primitive_bounding_box GL_EXT_geometry_shader GL_OES_geometry_shader GL_ANDROID_extension_pack_es31a GL_EXT_gpu_shader5 GL_OES_gpu_shader5 GL_EXT_texture_buffer GL_OES_texture_buffer GL_EXT_copy_image GL_OES_copy_image GL_EXT_shader_non_constant_global_initializers GL_EXT_color_buffer_half_float GL_EXT_unpack_subimage GL_EXT_color_buffer_float GL_EXT_float_blend GL_EXT_YUV_target GL_OVR_multiview GL_OVR_multiview2 GL_OVR_multiview_multisampled_render_to_texture GL_KHR_robustness GL_KHR_robust_buffer_access_behavior GL_EXT_draw_elements_base_vertex GL_OES_draw_elements_base_vertex GL_EXT_buffer_storage GL_EXT_texture_filter_anisotropic GL_OES_texture_float_linear GL_ARM_texture_unnormalized_coordinates GL_EXT_shader_framebuffer_fetch "
===================================
Rendered 120 frames in 2.000168 sec (59.994967 fps)
Rendered 240 frames in 4.016838 sec (59.748485 fps)
Rendered 359 frames in 6.016956 sec (59.664724 fps)
...
  • 显示效果如下
    RK3588 openeuler GPU 测试显示效果

4. 桌面环境支持

  • yocto 中加入相关 weston 相关服务配置

  • 板卡启动后, 启动相关服务

systemctl enable weston
systemctl start weston
  • 执行效果: 会有花色条纹输出到 hdmi 显示器上, 可以在这个基础上绘制 QT 应用
    在这里插入图片描述

5. openeuler SDK 导出

# 然后依次执行 
sh openeuler-glibc-x86_64-openeuler-image-armv8a-ok3588-toolchain-24.03-LTS.sh cd /home/rockchip/devlop/openEuler/linux_sdk/openEuler_SDK
# environment-setup-armv8a-openeuler-linux  site-config-armv8a-openeuler-linux  sysroots  version-armv8a-openeuler-linux# 执行以下导出环境
. environment-setup-armv8a-openeuler-linux # 使用以下指令验证
aarch64-openeuler-linux-gcc --version

在这里插入图片描述
在这里插入图片描述

6. Qt-Creator KIT 工具集配置 openeuler GCC 相关

在这里插入图片描述

  • 创建一个简单的 项目, 然后代码如下

    #include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[])
    {QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
    }
    
  • 编译, 上传至开发板

  • 通过 wayland(基于 weston 桌面)

    ok3588 ~ # ./untitled -platform wayland
    arm_release_ver of this libmali is 'g6p0-01eac0', rk_so_ver is '6'.
    warning: queue 0x55c61c1630 destroyed while proxies still attached:wl_callback@17 still attachedwl_callback@16 still attachedmali_buffer_sharing@15 still attachedwl_callback@14 still attached
    
  • 显示效果
    在这里插入图片描述

  • 采用 eglfs 执行

    ok3588 ~ # ./untitled -platform eglfs
    arm_release_ver of this libmali is 'g6p0-01eac0', rk_so_ver is '6'.
    Failed to move cursor on screen HDMI1: -14
    Failed to move cursor on screen HDMI1: -14
    
  • 效果如下
    在这里插入图片描述

7. QT-Opengl 测试

qt base 内含官方示例 2dpainting 项目, 导入 qt-creator, 编译

板卡执行, 由于 wayland 需要桌面合成器服务相关, 效率低, 兼容性差, 可以直接使用 eglfs 渲染, 性能高, CPU 占用低

ok3588 ~ # ./2dpainting -platform eglfs
arm_release_ver of this libmali is 'g6p0-01eac0', rk_so_ver is '6'.
Failed to move cursor on screen HDMI1: -14
Failed to move cursor on screen HDMI1: -14
  • 执行效果, 其中一个为qt 原生 , 另外一个使用 opengl 渲染

QT5-OpenGL 测试效果

http://www.gsyq.cn/news/82432.html

相关文章:

  • 2025年热门的匹克球网行业内知名厂家排行榜 - 行业平台推荐
  • 新手必看!10 分钟给个人博客装雷池 WAF,零代码搞定防护​
  • 2025年锌钢护栏定制厂家权威榜单:定制护栏/阳台护栏/市政护栏源头厂家精选 - 品牌推荐官
  • array数组 js
  • 2025年评价高的超微细加工胶体磨用户口碑最好的厂家榜 - 品牌宣传支持者
  • 2025北京比较好的留学中介有哪些 - 留学品牌推荐官
  • 2025年12月全国五大线缆企业综合推荐指南 - 2025年11月品牌推荐榜
  • 2025年净气型通风柜/无管净气型通风柜选购建议:源头厂家/优质供应商推荐 - 品牌推荐大师
  • 2025年评价高的汽车EPP工具箱包装/高性能泡沫塑料包装厂家最新推荐权威榜 - 品牌宣传支持者
  • 2025年评价高的消防水带优质厂家精选榜(精选版) - 品牌宣传支持者
  • Linux 中如何将fasta文件的每一个scaffold的碱基转换成一行显示
  • 运城云端印记:深耕三十载,镌刻新人专属的浪漫光影 - charlieruizvin
  • 无线灭菌锅温度验证仪选购建议、生产批发、靠谱口碑品牌供应商、优质源头厂家推荐 - 品牌推荐大师
  • 2025上海出国留学中介机构前十名 - 留学机构评审官
  • 2025上海留学机构排行榜最新 - 留学机构评审官
  • 2025上海留学中介推荐 - 留学机构评审官
  • 上海精选美国中学生留学中介机构 - 留学机构评审官
  • 上海哪家留学中介比较好 - 留学机构评审官
  • C++学习笔记 17 Vector
  • 详细介绍:奇技淫巧 | 巧用阿里云免费 ESA:获取用户真实IP地址与地理位置
  • 上海疫情对出国留学的影响有哪些 - 留学机构评审官
  • LGV 引理、Cauchy-Binet 定理、Matrix-Tree 定理、BEST 定理
  • 文件外发系统是什么?主要有哪些功能和优势?
  • UU跑腿新手骑手一天能接多少单?揭秘“单多不愁”的接单密码与成长路径 - 资讯焦点
  • 2025-2026年全自动COD分析仪品牌有哪些?cod分析仪/COD测定仪厂家口碑推荐性价比高的 - 品牌推荐大师1
  • UU跑腿对骑手管理严吗?有没有强制在线时间?揭秘真正的“时间自由”与无压力接单 - 资讯焦点
  • 2025上海出国留学中介哪家靠谱 - 留学机构评审官
  • 2025上海留学机构排行榜 - 留学机构评审官
  • 内外网文件交换系统推荐与应用指南
  • 2025上海比较好的留学机构有哪些 - 留学机构评审官