RK3568开发笔记(十):开发板buildroot固件移植开发的应用Demo,启动全屏显示
前言
上一篇,移植应用前的通讯接口工作和全屏工作都已经完成了。本篇移植开发的商业应用。
交叉编译好应用
(略),参照《RK3568开发笔记(八):开发板烧写buildroot固件(支持hdmi屏),搭建Qt交叉编译开发环境,编译一个Demo,目标板运行Demo测试》
解决全屏标题栏占用问题
交叉编译好了应用,放过去,跑起来没问题,也可以正常显示,但是一旦操作就出现被默认的qt程序占用。
这是默认的应用:
这是正常全屏应用:
这是被占用之后的(点击任何地方,让应用获取焦点就这样了):
所以,这里理论上将原来的qt应用停掉,用我们的应用作为启动应用就可以了。
Buildroot固件系统将设置启动Qt应用
步骤一:定位到Qt启动的地方,验证标题栏
一般linux系统大家会默认都在rcS里面加入一个界面启动脚本,界面启动脚本也在/etc/inid.d的S???里面。
首先我们先看下这个桌面进程是哪一个,先top,看到与i个QLauncher,杀掉他试试:
Kill -9 685
变灰了,看起来标题栏还是在:
于是我们,跑一下自己的应用测试验证一下,确实点击之后,标题栏还是被占用了,所以不是QLauncher的问题,是有一个灰色底色+任务栏,称之为控制台吧。
步骤二:定位到控制台,验证启动应用
这个控制台可能是weton或者哪里的,不太清楚,咨询了官方查看了文档,好像是weston的:
所以直接干掉看效果:
干587
kill -9 587
结果如下图:
确实是黑了,但是因此,我们使用界面的应用也启动不了:
这里陷入两难了,寻求官方支持。
步骤三:寻求官方支持求改weston的配置
修改/etc/xdg/weston/weston.ini
然后,再重启开发板测试:
再启动自己的应用:
可以启动了
步骤四:修改为自己的程序为开机启动
前面已经定位了QLauncher,那么替换一下全路径就可以了。
注意:这里要注意若是应用中使用了相对路径会直接换成调用脚本的路径为起始路径,这事经常容易犯的错误,且一时半伙定位不到,所以建议开发程序的时候,使用到路径一定要使用QApplication::applicationDir去获取可执行文件的类路径作为起始路径)
修改后为:
然后重启:
rboot
重启就是我们的应用了,已经实测验证完了。
应用卡顿
不用想就是RS485的上下拉过程了,因为应用的界面都做了二级缓存,所有的界面操作除开时钟之外,目前只有探测到变化才会修改一次界面值,而多次发送同样的数据,理论上不存在,以这个目标去论证。
官方的usleep,睡眠是100字节才睡眠0.17ms左右,10016(107+2)约等于0.17ms,这样检测是不够的,直接使用QThread::msleep睡眠,之前做的海思的也是这个问题,具体值要根据测试来,这边测试最终是2ms的时候,不卡顿,当然,可以尝试1ms。
收发即使,收-即使处理了,发-PC即使收到了。
手痒,测试一下1ms试试,发现1ms更顺利,所以改为1ms了。
(这里不是105,回发的只有7字节,等于直接就是1ms之后就拉低了)
小结
嵌入式linux系统开发就是软硬系统结合,问题出现确实比较多,而且涉猎的知识面比较广,对于基础也有一定要求的入门门槛。
33021990)
RK3568开发笔记(十):开发板buildroot固件移植开发的应用Demo,启动全屏显示的更多相关文章
- Modbus库开发笔记之十一:关于Modbus协议栈开发的说明(转)
源: Modbus库开发笔记之十一:关于Modbus协议栈开发的说明
- Android开发之全屏显示的两种方法
1.通过修改清单文件中Theme,实现全屏 <application android:name=".MyApplication" android:allowBackup=&q ...
- HBuilder开发iPad程序不能全屏显示的解决方法
HBuilder开发iPad程序不能全屏显示的解决方法: targets选择HBuilder=>Deployment Info=> devices选择Universal即可
- Modbus库开发笔记之十一:关于Modbus协议栈开发的说明
对于Modbus协议栈的整个开发内容,前面已经说得很清楚了,接下来我们说明一下与开发没有直接关系的内容. 首先,关于我为什么开发这个协议栈的问题.我们的初衷只是想能够在开发产品时不用每次都重写这一部分 ...
- Qt+MPlayer音乐播放器开发笔记(一):ubuntu上编译MPlayer以及Demo演示
前言 在ubuntu上实现MPlayer播放器播放音乐. Demo Mplayer MPlayer是一款开源多媒体播放器,以GNU通用公共许可证发布.此款软件 ...
- Kinect for Windows SDK v2.0 开发笔记 (十五) 手势帧
(转载请注明出处) 使用SDK: Kinect for Windows SDK v2.0 public preview1409 同前面,由于SDK未完毕,不附上函数/方法/接口的超链接. 这次最 ...
- OSGI企业应用开发(十二)OSGI Web应用开发(一)
前面文章中介绍了如何在OSGI应用中整合Spring和Mybatis框架,本篇文章开始介绍如何使用OSGI技术开发Web应用.对于传统的Java EE应用,应用中涉及到的Web元素无非就是Servle ...
- Qt开发技术:Q3D图表开发笔记(一):Q3DScatter三维散点图介绍、Demo以及代码详解
前言 qt提供了q3d进行三维开发,虽然这个框架没有得到大量运用也不是那么成功,性能上也有很大的欠缺,但是普通的点到为止的应用展示还是可以的. 其中就包括华丽绚烂的三维图表,数据量不大的时候是可 ...
- 在VC++6.0开发中实现全屏显示
全屏显示是一些应用软件程序必不可少的功能.比如在用VC++编辑工程源文件或编辑对话框等资源时,选择菜单“View\Full Screen”,即可进入全屏显示状态,按“Esc”键后会退出全屏显示状态. ...
- iOS开发——实用技术OC篇&8行代码教你搞定导航控制器全屏滑动返回效果
8行代码教你搞定导航控制器全屏滑动返回效果 前言 如果自定了导航控制器的自控制器的leftBarButtonItem,可能会引发边缘滑动pop效果的失灵,是由于 self.interactivePop ...
随机推荐
- 预测 motif 的计算原理
本文章来源于简书,作者小潤澤,已获原作者授权:部分内容有调整. 前言 蛋白质中功能的基本单元是 domain,是一种特殊的三维结构,不同结构的 domain 与其他分子特异性结合从而发挥功能.与此类似 ...
- 有哪些ASIC加速技术可以实现低功耗运行?
目录 文章主题: 10. 有哪些ASIC加速技术可以实现低功耗运行? 背景介绍:随着移动设备.物联网.云计算等应用场景的不断增长,功耗成为了一个日益重要的技术问题.为了在移动设备上实现更长时间的运行, ...
- 信创优选,国产开源,Solon v2.3.6 发布
Solon 是什么开源项目? 一个,Java 新的生态型应用开发框架.它从零开始构建,有自己的标准规范与开放生态(历时五年,已有全球第二级别的生态).与其他框架相比,它解决了两个重要的痛点:启动慢,费 ...
- 【C#/.NET】MAUI上的依赖注入
引言 在移动应用开发中,依赖注入是一项非常重要的技术,它可以帮助我们简化代码结构.提高可维护性并增加测试覆盖率.在最新的.NET跨平台框架MAUI中,我们也可以利用依赖注入来构建高效的应用程序架构 ...
- 企业级logstash简单使用(ELK)
企业级logstash简单使用(ELK) 要使用logstash收集到Elasticsearch的方式,需确保logstash版本与es版本一致. 由于我也是刚刚研究使用,所以本文暂不会出现原理性的东 ...
- 《Among Us》火爆全球,实时语音助力派对游戏开启第二春
今年在全球"宅经济"的影响下,社交派对类游戏意外的迎来了爆发. 8月份,<糖豆人:终极淘汰赛>突然爆火,创造了首日150万玩家.首周Steam 200万销量.单周Twi ...
- 【技术积累】JavaScript中的基础语法【二】
JavaScript编写方式 JavaScript是一种脚本语言,用于为网页添加交互性和动态功能.它可以直接嵌入到HTML中,并通过浏览器解释执行.下面是一些常见的JavaScript编写方式和相应的 ...
- 【技术积累】JavaScript中的基础语法【三】
JavaScript的条件结构 JavaScript中的条件结构主要包括if语句.if-else语句.if-else if语句和switch语句.这些条件结构用于根据不同的条件执行不同的代码块. if ...
- 树莓派使用Golang+MQ135检测室内空气质量
MQ135是一个比较便宜的空气质量传感器,可以用在家庭以及工业场所中.树莓派是一个小巧但很强大的卡片电脑,基于Linux,同时提供了很多硬件接口,方便开发出各种电子产品.Golang是一款简单高效 ...
- Centos7安装JDK1.8(详解版)
一.检查并卸载OpenJDK 1.卸载centos原本自带的openjdk 运行命令如下: rpm -qa | grep java 2.然后通过 rpm -e --nodeps 后面跟系统自 ...