关闭weston和matrixroot@ok6254:~# systemctl disable matrix-gui-2.0
root@ok6254:~# systemctl disable weston
root@ok6254:~# sync
设置开机自动登陆root用户root@ok6254:~# vi /lib/systemd/system/serial-getty@.service
添加内容:ExecStart=-/sbin/agetty -a root %I 115200 $TERM
root@ok6254:~# sync
修改内容如下注意:修改后要检查,如果参数设置有问题会导致系统启动失败,需要重新烧写系统关闭weston后,应用需要走eglfs,需要在修改环境变量。root@ok6254:~# vi /etc/profile.d/qt_env.sh
添加内容:export QT_QPA_PLATFORM="eglfs"
在配置文件中指定Qt需要运行的显示设备,DPI-1是lcd屏root@ok6254:~# vi /etc/qt5/eglfs_kms_cfg.json
根据自己的所用的设备添加内容:
{
"device": "/dev/dri/card1",
"hwcursor": false,
"pbuffers": true,
"outputs": [
{
"name": "DPI-1",
"mode": "1280x800"
"size": "1280x800"
"format": "rgb888"
},
{
"name": "LVDS-1",
"mode": "1280x800"
}
]
}
root@ok6254:~# sync
由于autorun.sh脚本启动较早,导致登陆用户前,应用起不来,所以我们不使用该脚本进行应用自启。/etc/profile文件在用户登录时启动。当用户登录时,系统会读取/etc/profile文件,并执行其中的命令和设置。这个文件中的内容会对所有用户生效,包括系统管理员和普通用户。所以可以把需要自启的应用加在该脚本中。root@ok6254:~# vi /etc/profile
在文件末尾添加:
source /etc/profile.d/qt_env.sh
sleep 1
/usr/bin/fltest_qt_watchdog
root@ok6254:~# sync
此时qt应用可以自启动,但是启动后字体有些大,因为之前应用字体是weston处理的,所以现在关闭weston后会变大。可以通过在应用源码中指定字体大小来解决此问题。#include "mainwindow.h"
#include <QApplication>
#include <QDebug>
#include <QFont>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.showMaximized();
qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));
// 获取当前使用的字体
QFont font = a.font();
font.setPointSize(5);
a.setFont(font);
// 打印字体信息
qDebug() << "Current Font:" << a.font();
qDebug() << "Family: " << font.family();
qDebug() << "PointSize: " << font.pointSize();
qDebug() << "Weight: " << font.weight();
qDebug() << "Italic: " << font.italic();
return a.exec();
}
profile文件在每次有用户登陆时都会执行一次,为了防止客户使用ssh登陆开发板导致应用反复运行,添加如下代码FILE=/var/volatile/appstart
if [ ! -f "$FILE" ]; then
echo "app started!" > /var/volatile/appstart
/path/myapp
fi
这段脚本的作用是检查是否存在/var/volatile/appstart 文件。如果文件不存在,则输出"app started!"到/var/volatile/appstart 文件,并启动两个后台进程/opt/app/getdata1 和/opt/app/getdata2 。 这段脚本的逻辑如下: - 定义变量
FILE 为/var/volatile/appstart 。 - 使用条件语句
if [ ! -f "$FILE" ]; then 检查文件$FILE 是否存在。 - 如果文件不存在,则执行以下操作:
- 使用
echo 命令将"app started!"输出到/var/volatile/appstart 文件。 - 使用
& 符号将/opt/app/getdata1 和/opt/app/getdata2 两个命令放入后台运行,并使用> /dev/null 将输出重定向到空设备,即不显示输出结果。
- 结束条件语句。
这段脚本的目的可能是在系统启动时检查是否已经启动了应用程序,并在首次启动时执行一些初始化操作。 |