【正点原子MP157连载】第五章 ATK-STM32MP157文件系统简介-摘自【正点原子】STM32MP157快速体验

(1)实验平台:正点原子STM32MP157开发板
(2)购买链接:https://item.taobao.com/item.htm?&id=629270721801
(3)全套实验源码+手册+视频下载地址:http://www.openedv.com/thread-318813-1-1.html
(4)正点原子官方B站:https://space.bilibili.com/394620890
(5)正点原子STM32MP157技术交流群:691905614
在这里插入图片描述

小节前言:
ATK-STM32MP157出厂Qt文件系统由Yocto项目编译及后期打包而成,Yocto项目过于复杂,编译经常会出错且要求计算机性能较高,新手不建议去接触,可直接使用我们的出厂系统进行学习与开发。或者根据正点原子STM32MP1Linux驱动开发指南使用buildroot简易文件系统进行学习。下面简单介绍用户在文件系统常用的知识点。

5.1 文件系统目录简介

ATK-STM32MP157出厂Qt文件系统目录简介:

5.2 文件系统Qt版本

文件系统的Qt版本为Qt5.14.2(2020.12.26日后由QT5.14.1更新为Qt5.14.2,日后长久使用此版本不再改动)。

5.3 如何创建systemd 自启动服务

想开机自启动程序,可以在/etc/profile.d/qt-eglfs.sh这个文件里添加启动程序的指令。也可以自己创建新的系统服务,让系统启动起来时自动执行。
我们先创建一个要启动的脚本

vi auto_run_script.sh

在脚本里添加以下内容,脚本内容是打印信息到串口。

#!/bin/bash
echo “Hello World!> /dev/ttySTM0

赋予脚本可执行权限,执行下面的指令

chmod +x auto_run_script.sh

我们进入/etc/systemd/system目录下,创建一个自启动服务auto_run_script.service。

cd /etc/systemd/system
vi auto_run_script.service

在auto_run_script.service里添加以下内容

[Unit]
Description=Run a Custom Script at Startup
After=default.target

[Service]
ExecStart=/home/root/auto_run_script.sh

[Install]
WantedBy=default.target

然后我们使用更新 systemd 配置文件,并建立符号链接关系

systemctl daemon-reload
systemctl enable auto_run_script.service

图5.1 1 更新配置文件,建立符号链接

再执行重启命令reboot

sync;reboot

重启时看到打印该服务的描述信息及打印脚本的信息,表明已经执行了自启动脚本。

图5.1 2 重启后,服务自启动打印的信

5.4 如何禁用Qt界面启动

在高版本的内核和高版本的Yocto里,所使用的文件系统早已经使用Systemd方式来用来启动守护进程,已成为大多数发行版的标准配置。如果你学习过Systemd,那么你将很容易理解正点原子所配置的Qt桌面服务启动。
正点原子STM32MP157配置了3种方式显示Qt桌面服务。默认开机以Linuxfb方式显示Qt,配置服务只能三种方式里选一种方式启动Qt。下面简单介绍一下这三种方式。
Linuxfb方式
Linuxfb方式,使用/dev/fb0设备,纯软件渲染,不使用硬件GPU加速,出厂默认使用此方式,在文件系统路径下/etc/systemd/system/atk-qtdesktop-linuxfb.service这个服务里,我们可以查看它的内容。主要看ExecStart=/opt/QDesktop-fb -platform linuxfb >/dev/null 2>&1 &此行。配置了路径/opt/QDesktop-fb Qt应用程序使用linuxfb方式显示。若用户想使用linuxfb方式显示,则改ExecStart这个位置即可,指定自己的Qt应用程序即可。
Eglfs方式
对于有GPU的板卡来说,使用eglfs方式显示Qt是比较好的,如果你使用此方式显示Qt,可以明显的看到Qt界面的图片拖动时没有锯齿状态。正点原子也配置了此种方式,默认没有此项启动。此方式有个缺点,就是当我们使用触摸屏时,滑动屏幕是非常流畅的。但是如果用户使用此种方式使用了鼠标进行点击,就会觉得卡顿。Qt官方解释eglfs方式使用鼠标会性能不佳。对于正点原子STM32MP157的用户没有购买LCD屏,若使用此方式直接使用HDMI,用鼠标点击,体验感较差,卡顿。所以正点原子默认出厂配置了linuxfb方式显示,可解决鼠标卡顿的问题。如果想用此方式显示Qt则在文件系统路径下/etc/systemd/system/atk-qtdesktop-eglfs.service这个服务里找到ExecStart=/opt/QDesktop-egl -platform eglfs >/dev/null 2>&1 &将/opt/QDesktop-egl改为个人的Qt应用程序即可!
Wayland方式
Qt使用wayland方式显示,需要启动weston桌面。Qt应用程序将以一个子程序嵌入到weston桌面里显示。就好像我们在电脑打开了一个窗口程序。Qt有wayland插件,支持Qt与weston桌面通信。与eglfs方式一样,此方式使用鼠标比较会卡顿。如果您也想将一个Qt应用程序嵌入到weston桌面,可在文件系统路径下/etc/systemd/system/atk-qtdesktop-wayland.service这个服务里找到ExecStart=/opt/QDesktop-egl -platform wayland >/dev/null 2>&1 &将/opt/QDesktop-egl改为个人的Qt应用程序即可!
如何禁用正点原子Qt桌面启动呢?出厂默认是启动atk-qtdesktop-linuxfb.service这个服务。我们若不需要启动Qt桌面。那么我们执行下面的指令。停止Qt桌面或者关闭Qt桌面(如果关闭下次不会自动启动!)。

systemctl stop atk-qtdesktop-linuxfb		// 暂时停止Qt桌面服务,重启服务用restart
systemctl disable atk-qtdesktop-linuxfb	// 执行此项关闭Qt桌面服务,下次启动不生效

若想切换到eglfs方式启动Qt桌面。

systemctl daemon-reload				// 重新加载服务			
systemctl enable atk-qtdesktop-eglfs.service // 开启Qt以eglfs方式启动的服务
reboot								// 重启生效

若不需要启动Qt桌面服务。使用systemctl指令将此三种方式显示Qt的服务关闭。出厂默认启动atk-qtdesktop-linuxfb 服务。只需要关闭此项即可。

systemctl disable atk-qtdesktop-linuxfb	// 执行此项关闭Qt桌面服务,下次启动不生效

若都关闭了正点原子的Qt桌面服务。怎么开启不需要启动服务来开启Qt应用程序呢?若关闭了正点原子的Qt桌面服务,开机启动以Weston桌面显示。我们可以使用下面的指令在Weston桌面上显示个人的Qt应用程序。因为Weston桌面启动了。只能够使用Wayland方式来显示Qt。执行下面的指令。

/opt/QDesktop-egl -platform wayland  >/dev/null 2>&1 & // QDesktop应用程序将在Weston桌面里出现

若想使用linuxfb或eglfs方式显示。首先我们得停止Weston桌面。

systemctl stop weston@root.service				// 停止Weston桌面服务
/opt/QDesktop-egl -platform eglfs  >/dev/null 2>&1 &	// eglfs方式显示
/opt/QDesktop-fb -platform linuxfb  >/dev/null 2>&1 &	// 或linuxfb方式显示

关于Qt运行的时需要的环境变量,在/etc/profile.d/目录下。可自由查看,这里不作解释了。或者在终端执行env查看Qt运行时所需的环境变量。
上面说的“服务”可以相对初学者来说比较复杂。需要一定的时间去磨合。文件系统的功能远远不止这些,需要个人自己发掘与探究。上面说的是使用方法,具体原理并非这个文档能解释清楚,先照瓢画葫芦做一遍再理解,再研究。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值