泰山派RK3566移植QT,动鼠标时出现屏幕闪烁
总结:
交叉编译到 泰山派rk3566跑调海康摄像头的qt应用程序失败了。
X11无效窗口。
移植QT注意
屏幕分辨率不要改。改了执行QT的时候,framebuffer识别不出设备。
命令行安装QT-Creator
sudo install 类似的指令安装Qt-Creator时,可能找不到编译套件。
需要再执行 sudo apt-get install qt5-default 来安装核心库、工具和头文件(开发环境)。
关于闪烁问题
显示管理器和显示服务器
在 Linux 系统中,屏幕撕裂问题可能与显示服务器的渲染方式有关。
GDM(GNOME Display Manager)是 GNOME 桌面环境的默认显示管理器(注意,泰山派RK3566的Ubuntu默认是lightDM作为显示管理器),它负责启动用户登录界面和管理用户会话。
GDM 支持两种主要的显示服务器技术:Xorg(x11) 和 Wayland。
Light 支持Xorg和 Mir,不支持直接运行在Wayland上,但是支持通过启动Wayland会话间接运行Wayland。
尝试关闭Wayland,强制使用Xorg显示服务器(在lightdm管理器条件下)
关于Wayland,
测试了修改/etc/gdm3/custom.conf 文件,取消了
[daemon]
# Uncomment the line below to force the login screen to use Xorg
# WaylandEnable=false
的注释。
也就是关闭Wayland,强制使用 Xorg。
结果:
发现无需登录,直接进入桌面了。但执行Qt程序仍然出现屏幕闪烁、撕裂。
使用GDM而非lightDM(不强制使用Xorg)
参考
泰山派 RK3566 在Ubuntu系统下运行QT程序屏幕撕裂以及framebuffer冲突的解决方法_rk3566 framebuffer-CSDN博客
#重新运行gdm3配置脚本,然后手动选择、设置gdm3为默认显示管理器
sudo dpkg-reconfigure gdm3
发现闪烁问题确实没有了。
重启后没进入默认的桌面,通过ssh远程连接执行qt程序还是比较丝滑。
测试:
发现修改了GDM3的配置文件/etc/gdm3/custom.conf 文件,取消了 WaylandEnable=false的注释后,执行 qt程序无法正常渲染图形。
可能的原因是 环境变量 /etc/profile中没有正常export环境变量 export QT_QPA_PLATFORM=xcb。
x11是显示服务器,xcb插件是接口,用于与x11服务器进行通信。
经测试发现的确如此,我设置的是 linuxfb接口。linuxfb无需与x11服务器进行通信。
屏幕撕裂原因
系统桌面的应用和QT应用会有冲突。
可能是QT界面和debian桌面系统抢占framebuffer导致。
解决方案:
1. 关闭Linux桌面,用命令行启动Linux,这时运行qt程序就不会有问题。
2. 不用交叉编译,直接在arm板上装编译环境,然后编译源程序。
关于Qt 4和Qt 5的环境变量区别:
Qt 4:使用
-qws参数启动QWS服务器。Qt 5:通过
QT_QPA_PLATFORM环境变量选择平台插件(如offscreen、linuxfb等)
下面这俩
#关闭桌面
sudo init 3#重启桌面
sudo init 5init是系统初始化进程,其进程ID为1
init n代表切换运行级别到n
运行级别 0:关机(halt)。
运行级别 1:单用户模式(single-user mode),通常用于系统维护。
运行级别 2:多用户模式,但没有网络服务。
运行级别 3:多用户模式,带网络服务(multi-user mode with networking)。这是大多数服务器的默认运行级别。
运行级别 4:未定义,通常保留给用户自定义。
运行级别 5:图形用户界面(GUI)模式,通常用于桌面系统。
运行级别 6:重启(reboot)。
移植海康摄像头图像采集
配置好运行环境后,报错
lckfb@192:~/work/RemoteControlDemo/build-RemoteControl-ARM_kits-Debug$ sudo ./RemoteControl
hpr tls index{2}
*******XOpenDisplay Fail *******
loop[2] find 2 mac and 4 ip
Login failed, error code: 1
Login failed
段错误
1、提示无法连接到x11服务器。
这一步是因为海康SDK需要使用x11窗口管理器渲染视频流。
2、登录失败。
这一步因为忘记配置本机ipv4的地址,导致和摄像头网口通信不成功导致。
解决:
考虑到x11渲染视频流的问题,尝试使用x11
如果你需要在无桌面环境下运行 Qt 程序,可以通过 startx 启动一个最小化的 X11 环境,然后运行 Qt 程序。(该方法我尚未尝试)
例如:
startx -- /usr/bin/your_qt_application
我直接使用泰山派默认的 lightdm管理器 + x11服务器,
报错:
hpr tls index{2}
loop[2] find 2 mac and 5 ip
libGL error: failed to create dri screen
libGL error: failed to load driver: rockchip
libGL error: failed to create dri screen
libGL error: failed to load driver: rockchip
X Error of failed request: BadWindow (invalid Window parameter)Major opcode of failed request: 8 (X_MapWindow)Resource id in failed request: 0x1Serial number of failed request: 46Current serial number in output stream: 47
循环[2] 找到2个MAC地址和5个IP地址
libGL错误:无法创建dri屏幕
libGL错误:无法加载驱动:rockchip
libGL错误:无法创建dri屏幕
libGL错误:无法加载驱动:rockchip
X错误:请求失败:BadWindow(无效的窗口参数)请求失败的主要操作码:8(X_MapWindow)请求失败中的资源ID:0x1请求失败的序列号:46输出流中的当前序列号:47
x11和Xorg的关系
X11 是一个网络透明的图形窗口系统协议,用于在计算机之间传输图形和用户输入(如鼠标和键盘操作)。是客户端-服务器架构。
Xorg是基于x11协议的一种实现。
ubuntu当前显示管理器和显示服务器
1. 检查当前使用的显示服务器(X11 或 Wayland)
echo $XDG_SESSION_TYPE
2. 检查当前使用的显示管理器(LightDM 或 GDM3)
cat /etc/X11/default-display-manager
我通过ssh连接开发板,查看当前的显示服务器,结果显示的是tty。
表示当前的会话是一个终端会话,而不是图形会话。
名词解释
DPI 缩放比例
无边框透明背景透明窗口,随着缩放比例非整数倍数放大时的画面发生了露底、撕裂问题。
根源在于Qt中的窗口,是不支持小数位的。
升级QT6解决。
ldd ./application 可以查看应用缺失的依赖
相关文章:
泰山派RK3566移植QT,动鼠标时出现屏幕闪烁
总结: 交叉编译到 泰山派rk3566跑调海康摄像头的qt应用程序失败了。 X11无效窗口。 移植QT注意 屏幕分辨率不要改。改了执行QT的时候,framebuffer识别不出设备。 命令行安装QT-Creator sudo install 类似的指令安装Qt-Creator时,可能找不到编…...
Windows桌面系统管理7:国产操作系统与Linux操作系统
Windows桌面系统管理0:总目录-CSDN博客 Windows桌面系统管理1:计算机硬件组成及组装-CSDN博客 Windows桌面系统管理2:VMware Workstation使用和管理-CSDN博客 Windows桌面系统管理3:Windows 10操作系统部署与使用-CSDN博客 Wi…...
百度百舸 DeepSeek 一体机发布,支持昆仑芯 P800 单机 8 卡满血版开箱即用
在私有云环境中成功部署 DeepSeek 满血版并实现性能调优,并不是一件容易的事情。选择合适的 GPU 配置、安装相应的环境、成功部署上线业务、加速推理任务加速、支撑多用户并发 …… 完成业务测试,成功融入生产业务中。 为了帮助企业快速实现 DeepSeek 服…...
解锁 AIoT 无限可能,乐鑫邀您共赴 Embedded World 2025
2025 年 3 月 11-13 日,全球规模最大的嵌入式展览会——Embedded World 2025 将在德国纽伦堡盛大开幕。作为物联网和嵌入式技术领域的领先企业,乐鑫信息科技 (688018.SH) 将展示在 AI LLM、HMI、双频 Wi-Fi 6、低功耗 MCU 和 Matter 等领域的最新技术及解…...
LlamaFactory可视化模型微调-Deepseek模型微调+CUDA Toolkit+cuDNN安装
LlamaFactory https://llamafactory.readthedocs.io/zh-cn/latest/ 安装 必须保证版本匹配,否则到训练时,找不到gpu cuda。 否则需要重装。下面图片仅供参考。因为cuda12.8装了没法用,重新搞12.6 cudacudnnpytorch12.69.612.6最新…...
【GPT】从GPT1到GPT3
every blog every motto: Although the world is full of suffering, it is full also of the overcoming of it 0. 前言 从GPT1 到GPT3 1. GPT1 论文: https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/lan…...
openGauss 3.0 数据库在线实训课程18:学习视图管理
前提 我正在参加21天养成好习惯| 第二届openGauss每日一练活动 课程详见:openGauss 3.0.0数据库在线实训课程 学习目标 掌握openGauss视图的管理:创建视图、删除视图、查询视图的信息、修改视图的信息。 课程作业 1.创建表,创建普通视图…...
基于flask+vue的租房信息可视化系统
✔️本项目利用 python 网络爬虫抓取某租房网站的租房信息,完成数据清洗和结构化,存储到数据库中,搭建web系统对各个市区的租金、房源信息进行展示,根据各种条件对租金进行预测。 1、数据概览 将爬取到的数据进行展示ÿ…...
手写简易RPC(实践版)
首先了解rpc rpc-远程过程调用,openFeign,Dubbo都可以算作rpc,以微服务来具体说明,就是在本地不需要去发送请求,通过rpc框架,像调用本地方法一样调用其他服务的方法,本质上还是要经过网络&…...
mysql学习笔记-多版本并发控制
1、什么是ReadView 在 MVCC机制中,多个事务对同一个行记录进行更新会产生多个历史快照,这些历史快照保存在 Undo Log里。如果一个事务想要查询这个行记录,需要读取哪个版本的行记录呢?这时就需要用到 ReadView 了,它帮我们解决了…...
问题记录汇总
记录一些问题 如何分析错误帧问题-CSDN博客...
算法日记20:SC72最小生成树(prim朴素算法)
一、题目: 二、题解 2.1:朴素prim的步骤解析 O ( n 2 ) O(n^2) O(n2)(n<1e3) 0、假设,我们现在有这样一个有权图 1、我们随便找一个点,作为起点开始构建最小生成树(一般是1号),并且存入intree[]状态数组中…...
requests.exceptions.JSONDecodeError: Expecting value: line 2 column 1 (char 1)
requests.exceptions.JSONDecodeError: Expecting value: line 2 column 1 (char requests.exceptions.JSONDecodeError 是 Python 中使用 requests 库进行 HTTP 请求时,当期望返回的响应体为 JSON 格式,但实际响应体不符合 JSON 格式时出现的错误。这个…...
Redis7——基础篇(五)
前言:此篇文章系本人学习过程中记录下来的笔记,里面难免会有不少欠缺的地方,诚心期待大家多多给予指教。 基础篇: Redis(一)Redis(二)Redis(三)Redis&#x…...
spring boot知识点1
1.什么是spring boot spring boot是spring框架的子项目,主要特点是自动配置,以及内置的tomcat服务器,适合快速开发web与微服务架构 2.spring boot和spring cloud俩者之间的联系 spring boot可单独运行, spring cloud则是用于多…...
从零搭建微服务项目Base(第7章——微服务网关模块基础实现)
前言: 在前面6章的学习中已经完成了服务间的调用实现,即各微服务通过nacos或eureka服务器完成服务的注册,并从nacos中拉取配置实现热更新。当某个服务接口需要调用其他服务时,通过feign定义接口,并通过注解配置服务名…...
pdf转换成word在线 简单好用 支持批量转换 效率高 100%还原
pdf转换成word在线 简单好用 支持批量转换 效率高 100%还原 在数字化办公的浪潮中,文档格式转换常常让人头疼不已,尤其是 PDF 转 Word 的需求极为常见。PDF 格式虽然方便阅读和传输,但难以编辑,而 Word 格式却能灵活地进行内容修…...
嵌入式音视频开发(二)ffmpeg音视频同步
系列文章目录 嵌入式音视频开发(零)移植ffmpeg及推流测试 嵌入式音视频开发(一)ffmpeg框架及内核解析 嵌入式音视频开发(二)ffmpeg音视频同步 嵌入式音视频开发(三)直播协议及编码器…...
SpringBoot速成概括
视频:黑马程序员SpringBoot3Vue3全套视频教程,springbootvue企业级全栈开发从基础、实战到面试一套通关_哔哩哔哩_bilibili 图示:...
微信小程序image组件mode属性详解
今天学习微信小程序开发的image组件,mode属性的属性值不少,一开始有点整不明白。后来从网上下载了一张图片,把每个属性都试验了一番,总算明白了。现总结归纳如下: 1.使用scaleToFill。这是mode的默认值,sc…...
Matlab写入点云数据到Rosbag
最近有需要读取一个点云并做处理后,重新写回rosbag。网上有很多读取的教程,但没有写入。自己写入时也遇到了很多麻烦,踩了一堆坑进行记录。 1. rosbag中一个lidar的msg有哪些信息? 通过如下代码,先读取一个rosbag的l…...
数据分析--数据清洗
一、数据清洗的重要性:数据质量决定分析成败 1.1 真实案例警示 电商平台事故:2019年某电商大促期间,因价格数据未清洗导致错误标价,产生3000万元损失医疗数据分析:未清洗的异常血压值(如300mmHgÿ…...
iNeuOS工业互联网操作系统,民爆远程运维平台案例
iNeuOS工业互联网操作系统,民爆远程运维平台案例 目 录 1. 概述... 2 2. iNeuOS在民爆生产厂区和北京运维中心配置... 3 1.1 生产厂区配置... 3 1.2 运维中心配置... 7 1. 概述 针对本项目进行初步调研,项目的总体需求为满足新建…...
用命令模式设计一个JSBridge用于JavaScript与Android交互通信
用命令模式设计一个JSBridge用于JavaScript与Android交互通信 在开发APP的过程中,通常会遇到Android需要与H5页面互相传递数据的情况,而Android与H5交互的容器就是WebView。 因此要想设计一个高可用的 J S B r i d g e JSBridge JSBridge,不…...
Vue 3最新组件解析与实践指南:提升开发效率的利器
目录 引言 一、Vue 3核心组件特性解析 1. Composition API与组件逻辑复用 2. 内置组件与生命周期优化 3. 新一代UI组件库推荐 二、高级组件开发技巧 1. 插件化架构设计 2. 跨层级组件通信 三、性能优化实战 1. 惰性计算与缓存策略 2. 虚拟滚动与列表优化 3. Tree S…...
计算机网络(涵盖OSI,TCP/IP,交换机,路由器,局域网)
一、网络通信基础 (一)网络通信的概念 网络通信是指终端设备之间通过计算机网络进行的信息传递与交流。它类似于现实生活中的物品传递过程:数据(物品)被封装成报文(包裹),通过网络…...
JVM-Java程序的运行环境
Java Virtual Machine Java程序的运行环境 JVM组成 程序计数器 线程私有的,内部保存的字节码的行号。用于记录正在执行的字节码指令的地址。 Java堆 线程共享的区域: 主要用来保存对象实例, 数组等, 当堆中没有内存空间可分配给实例也无法再扩展时, 则抛出OutOfMe…...
什么是网关,网关的作用是什么?网络安全零基础入门到精通实战教程!
1. 什么是网关 网关又称网间连接器、协议转换器,也就是网段(局域网、广域网)关卡,不同网段中的主机不能直接通信,需要通过关卡才能进行互访,比如IP地址为192.168.31.9(子网掩码:255.255.255.0)和192.168.7.13(子网掩码…...
makefile+LSF
LSF LSF(Load Sharing Facility)是一种常用的集群作业调度系统,bsub 命令用于提交作业到 LSF 集群,而若要关闭(终止)一个正在运行的作业,需要使用 bkill 命令,下面为你详细介绍相关…...
《千恋万花》无广版手游安卓苹果免费下载直装版
自取https://pan.xunlei.com/s/VOJS77k8NDrVawqcOerQln2lA1?pwdn6k8 《千恋万花》:柚子社的和风恋爱杰作 《千恋万花》(Senren * Banka)是由日本知名美少女游戏品牌柚子社(Yuzusoft)于2016年推出的一款和风恋爱题材…...
