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

【嵌入式Linux学习笔记】QT在Linux嵌入式设备上的使用

在这里插入图片描述

QT是目前主流的UI界面设计软件之一,Linux系统也支持QT应用,并且提供了很多方便的接口。所以有必要记录一下基于QT,在LCD屏幕上实现UI界面功能的各种细节。

学习视频地址:【正点原子】STM32MP157开发板

1. 系统配置

出于方便,我采用的是正点原子提供的出厂系统,里面已经安装并配置好了QT,可以直接烧写QT程序进行功能实现。里面已经写入了正点原子的出厂UI界面,所以接下来需要对其进行修改。

2. 配置Qt Creator

交叉编译工作的安装参考正点原子的相关文档,这里不再赘述。

启动

启动的时候需要加载交叉编译器,所以需要在qtcreator.sh中插入对应指令

sudo vi /opt/QT5.12.12/Tools/QtCreator/bin/qtcreator.sh # 以自己电脑的QT安装路径为准

在第一行插入以下指令

source /opt/st/stm32mp1/3.1-snapshot/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi

在这里插入图片描述
启动的时候采用以下指令(也可以将其写入到.sh文件便于启动)

/opt/Qt5.12.9/Tools/QtCreator/bin/qtcreator.sh &

编译器配置

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

新建项目,并选择以下的编译套件
在这里插入图片描述
编译
在这里插入图片描述

远程调试

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
配置Linuxfb/eglfs方式调试(只需修改Command line arguments 为 linuxfb或eglfs)
在这里插入图片描述

注意:Upload Files via SFTP这一步也要添加,否则不会自动上传新代码至开发板

在这里插入图片描述

注意:linuxfb采用纯软件渲染,eglfs采用GPU渲染,后者显示会更流畅。不过eglfs只有在采用EMMC启动Linux内核和根文件系统时可用,对于远程网络调试只能使用linuxfb方式。

配置完成后,运行程序的时候,Qt Creator会把程序发送至开发板,然后开始运行。

Ubuntu本机调试

在这里插入图片描述

3. 修改内核启动LOGO(以显示全屏图片为例)

(1)修改logo显示源码
修改fbcon.c文件下的fbcon_prepare_logo函数
在这里插入图片描述
修改fbmem.c下的fb_show_logo_line函数
在这里插入图片描述

(2)准备一张适配屏幕大小的.png图片
在这里插入图片描述

(3)使用netpbm图像转换库处理图片

pngtopnm logo.png > logo.pnm # 转换格式
pnmquant 224 logo.pnm > logo_224.pnm # 修改颜色通道数量
pnmtoplainpnm logo_224.pnm > logo_linux_clut224.ppm # 转换格式

**(4)将文件放置在指定路径 **

sudo cp logo_linux_clut224.ppm 内核路径/drivers/video/logo

重新编译内核后,使用新的内核启动开发板即可。

4. 配置自启动UI界面

关闭正点原子的出厂UI服务

systemctl disable atk-qtapp-start.service # 执行此项关闭Qt桌面服务,下次启动不生效
systemctl enable atk-qtapp-start.service # 执行此项开启Qt桌面服务
systemctl stop atk-qtapp-start.service # 暂时停止Qt桌面服务,重启服务用restart

启动UI界面指令

/usr/local/test -platform linuxfb # 以自己放置UI程序的路径为准

编写自启动服务

cd /lib/systemd/system
touch jozen-qt-start.service
vi jozen-qt-start.service#添加以下内容
[Unit]
Description=Run a Custom Script at Startup
After=default.target[Service]
ExecStart=/usr/local/test -platform linuxfb[Install]
WantedBy=default.target

编写完成后,按上面的syscmd指令使能即可。

http://www.lryc.cn/news/43708.html

相关文章:

  • js根据数据关键字实现模糊查询功能
  • java获取对象属性
  • 51单片机(IIC协议OLED屏)
  • 你知道,华为对项目经理要求的3项技能5项素质是什么吗?
  • 优漫动游 提升效率常用的C4D技巧
  • 基于蚁群算法的时间窗口路径优化
  • liunx
  • 机动车发票组件【vue】
  • 学习笔记-剖析k8s之StatefulSet的拓扑状态-3月day18
  • Java实现输出九九乘法口诀表,输入行数输出对应的梯形(平行四边形)这两个代码
  • C++空间配置器
  • JConsole使用教程
  • JS手写防抖和节流函数(超详细版整理)
  • 我的Macbook pro使用体验
  • 炼石入选“首届工业和信息化领域商用密码应用峰会”典型方案
  • 使用new bing chat成功了
  • Golang每日一练(leetDay0019)
  • 记录一次性能测试遇到的问题
  • C++运算符重载基础教程
  • Git命令总结
  • 【车载以太网】BCM89572A0BCFBG、BCM89559GB0BCFBG、BCM89559GA0BCFBG具有安全启动和安全通信功能
  • Lighttpd入门教程
  • Springboot 多线程分批切割处理 大数据量List集合 ,实用示例
  • SQLMAP工具基础使用
  • 初学多线程爬虫
  • python-实验报告-3
  • 00_托管网站在Tor网络上_Ubuntu主机
  • 个人练习-Leetcode-659. Split Array into Consecutive Subsequences
  • OTA升级差分包签名
  • 使用Buildroot制作根文件系统