电子说
1. 简要介绍
开机自启动涉及到四个脚本文件。分别是:S99_userapp、start_app.sh、stop_app.sh、/run.sh。
1.1 系统默认自带:
以下三个脚本文件,系统出厂时已经默认自带,用户通常无须关心。
/etc/init.d/S99_userapp
/userdata/start_app.sh
/userdata/stop_app.sh
1.2 用户自定义创建:
以下这个脚本文件,系统出厂时默认不存在,须用户根据对自身项目程序的管理需求,进行创建与编辑。
/userdata/apps/run.sh
1.3 调用顺序及关系:

2. 操作指导:
2.1 创建并编辑/userdata/apps/run.sh脚本
建立adb连接(不清楚如何操作,可参考《入门指南/开发板调试方式介绍》中的1.ADB调试)
执行命令,切换到板卡环境:
adb shell

执行命令,定位到/userdata/apps目录:
cd userdata/apps

通过vi命令,创建run.sh脚本:
vi run.sh
把下方源码写入脚本,则可以使系统自带的应用开机自启动。
#!/bin/sh if [ -d ./facialGate ];then cd ./facialGate ./qSolu-facialGate & fi
但若用户有自己定义的应用(myapp),则需要写入下方的源码。
#!/bin/sh if [ -d ./myapp ];then cd ./myapp # 此处执行什么命令,需要用户根据自己的需求编写。 fi cd ..
执行命令,修改run.sh的执行权限。
chmod 777 run.sh sync
完成以上操作即可实现开机自启动。
2.2 重启验证
重启有两种方式。
方式一:软件重启,在adb shell环境下输入重启命令:
reboot
方式二:硬件重启,按下板卡上的RESET按键:

2.3 注意事项说明:
通常用户的程序启动后就不会退出,所以要在程序执行命令后面添加“&”使之在后台运行,这样就不会阻塞其它启动脚本的运行。
./qSolu-facialGate &
若用户有自己的动态库在用户空间中,也可以在启动脚本内添加环境变量。
source /etc/profile export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/userdata/mylib/
如果要开机自动启动的是QT程序,且有对QT环境变量有自定义的要求,则还可以设置QT环境变量。
export QT_QPA_FB_DRM=1 export QT_QPA_PLATFORM=linuxfb:rotation=0 #export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event5:rotate=180
3. 详细说明:
3.1 /etc/init.d/S99_userapp
系统的自带的启动脚本,如有需要可自行修改(但需要重新制作文件系统)。
#!/bin/sh
source /etc/profile
case "$1" in
start)
if [ -e /userdata/start_app.sh ];then
/userdata/start_app.sh &
fi
;;
stop)
if [ -e /userdata/stop_app.sh ];then
/userdata/stop_app.sh &
fi
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
exit 0
把绝对路径执行脚本的命令添加到脚本“/etc/init.d/S99_userapp”的case start分支中,系统启动时就会自动执行这句命令,从而启动用户空间的应用脚本。
3.2 /userdata/start_app.sh
板卡出厂自带的启动脚本,如有需要统筹管理多个启动脚本,则可修改此对脚本(无须重新制作文件系统,具有一定的灵活度)。
#!/bin/sh if [ -e /userdata/apps/run.sh ];then cd /userdata/apps && ./run.sh fi
3.3 /userdata/stop_app.sh
#!/bin/sh # Kill your app when shutdown system. For example: # killall facialGate 审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !