【嵌入式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指令使能即可。

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
很高兴回答你关于野火嵌入式Linux学习的问题!以下是一些学习笔记的建议: 1. 了解嵌入式系统:首先,你需要了解嵌入式系统是什么以及它们与桌面操作系统的区别。嵌入式系统通常用于特定的应用领域,例如智能家居、汽车电子和工业控制等。 2. 学习Linux基础知识:野火嵌入式Linux是基于Linux内核的操作系统,所以你需要掌握Linux的基础知识,包括文件系统、进程管理、设备驱动程序等。 3. 硬件平台了解:野火嵌入式Linux有不同的硬件平台,例如野火开发板。你需要学习如何操作和配置这些硬件平台,并了解它们的特性和限制。 4. 交叉编译环境设置:为了在PC上开发嵌入式系统,你需要设置一个交叉编译环境,以便能够编译和调试嵌入式应用程序。这涉及到安装和配置交叉编译工具链。 5. 内核定制和驱动程序开发:学习如何定制Linux内核以满足特定需求,并开发设备驱动程序以支持外部硬件。 6. 应用程序开发:掌握嵌入式应用程序的开发技术,包括使用C/C++语言、Makefile和调试工具。 7. 调试和故障排除:学会使用调试工具和技术来定位和解决嵌入式系统中的问题。 8. 实际项目经验:通过参与实际的嵌入式项目或完成一些小型项目来应用你的知识和技能。 这些只是一些学习笔记的建议,野火嵌入式Linux学习需要不断的实践和探索。希望这些对你有帮助!如果你有任何进一步的问题,欢迎继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

煜个头头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值