OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3070|回复: 0

《STM32MP157快速体验》第五章ATK-STM32MP157文件系统简介

[复制链接]

1061

主题

1072

帖子

2

精华

超级版主

Rank: 8Rank: 8

积分
4407
金钱
4407
注册时间
2019-5-8
在线时间
1196 小时
发表于 2021-6-1 16:59:59 | 显示全部楼层 |阅读模式
本帖最后由 正点原子运营 于 2021-6-1 17:30 编辑

1)实验平台:正点原子STM32MP157开发板
2)  章节摘自【正点原子】《STM32MP157快速体验》
3)购买链接:https://item.taobao.com/item.htm?&id=629270721801
4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/arm-linux/zdyzmp157.html
5)正点原子官方B站:https://space.bilibili.com/394620890
6)正点原子STM32MP157技术交流群:691905614  
O1CN01abYcZO23XsL4ETed4_!!230947266.png

原子哥在线教育平台.jpg

152443zfu1nrzhhhh6wuc8.png
第五章ATK-STM32MP157文件系统简介


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

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
赋予脚本可执行权限,执行下面的指令
  1. <font size="4">chmod +x auto_run_script.sh</font>
复制代码

我们进入/etc/systemd/system目录下,创建一个自启动服务auto_run_script.service。
  1. <font size="4">cd /etc/systemd/system
  2. vi auto_run_script.service
  3. 在auto_run_script.service里添加以下内容
  4. [Unit]
  5. Description=Run a Custom Script at Startup
  6. After=default.target

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

  9. [Install]
  10. WantedBy=default.target</font>
复制代码

然后我们使用更新 systemd 配置文件,并建立符号链接关系
  1. <font size="4">systemctl daemon-reload
  2. systemctl enable auto_run_script.service</font>
复制代码

157第五章ATK1741.png

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

再执行重启命令reboot
  1. <font size="4">sync;reboot</font>
复制代码

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

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

5.4 如何禁用Qt界面启动
在高版本的内核和高版本的Yocto里,所使用的文件系统早已经使用Systemd方式来用来启动守护进程,已成为大多数发行版的标准配置。如果你学习过Systemd,那么你将很容易理解正点原子所配置的Qt桌面服务启动。
正点原子STM32MP157配置了3种方式显示Qt桌面服务。默认开机以Linuxfb方式显示Qt,配置服务只能三种方式里选一种方式启动Qt。下面简单介绍一下这三种方式。
&#61656;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应用程序即可。
&#61656;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应用程序即可!
&#61656;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桌面(如果关闭下次不会自动启动!)。
  1. <font size="4">systemctl stop atk-qtdesktop-linuxfb                // 暂时停止Qt桌面服务,重启服务用restart
  2. systemctl disable atk-qtdesktop-linuxfb        // 执行此项关闭Qt桌面服务,下次启动不生效</font>
复制代码

若想切换到eglfs方式启动Qt桌面。
  1. <font size="4">systemctl daemon-reload                                // 重新加载服务                        
  2. systemctl enable atk-qtdesktop-eglfs.service // 开启Qt以eglfs方式启动的服务
  3. reboot                                                                // 重启生效</font>
复制代码

若不需要启动Qt桌面服务。使用systemctl指令将此三种方式显示Qt的服务关闭。出厂默认启动atk-qtdesktop-linuxfb        服务。只需要关闭此项即可。
systemctl disable atk-qtdesktop-linuxfb        // 执行此项关闭Qt桌面服务,下次启动不生效
若都关闭了正点原子的Qt桌面服务。怎么开启不需要启动服务来开启Qt应用程序呢?若关闭了正点原子的Qt桌面服务,开机启动以Weston桌面显示。我们可以使用下面的指令在Weston桌面上显示个人的Qt应用程序。因为Weston桌面启动了。只能够使用Wayland方式来显示Qt。执行下面的指令。
  1. <font size="4">/opt/QDesktop-egl -platform wayland  >/dev/null 2>&1 & // QDesktop应用程序将在Weston桌面里出现
  2. 若想使用linuxfb或eglfs方式显示。首先我们得停止Weston桌面。
  3. systemctl stop <a href="mailto:weston@root.service">weston@root.service</a>                                // 停止Weston桌面服务
  4. /opt/QDesktop-egl -platform eglfs  >/dev/null 2>&1 &        // eglfs方式显示
  5. /opt/QDesktop-fb -platform linuxfb  >/dev/null 2>&1 &        // 或linuxfb方式显示</font>
复制代码

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

157第五章ATK7084.png
157第五章ATK6937.png
157第五章ATK6534.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-5-29 13:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表