ARM开机自启动用户应用程序

硬件参数:AM3354
详细参数:https://blog.csdn.net/Ternence_zq/article/details/109691911

linux系统启动流程可以简单总结为以下几步:

1)开机BIOS自检,加载硬盘。
2)读取MBR,进行MBR引导。
3)grub引导菜单(Boot Loader)。
4)加载内核kernel。
5)启动init进程,nit进程是Linux的根进程,所有的系统进程都是它的子进程。依据inittab文件设定运行级别
6)init进程,执行rc.sysinit文件。
7)启动内核模块,执行不同级别的脚本程序。
8)执行/etc/rc.d/rc.local
9)启动mingetty,进入系统登陆界面。

网上资料自启动方法(未成功)

我们想让开发板开机自启动用户的应用程序,在 /etc/init.d/rcS shell脚本文件中,添加执行用户程序的语句。但是我通过这种方法还是未能实现程序开机自启动。
即使将开机用户登录都改成自启动,也是没有用。

开机自启动用户登录:https://blog.csdn.net/Ternence_zq/article/details/109869637

这里是在/etc/init.d/rcS脚本中,执行用户程序路径当中的S50_rcsApp脚本,这里注意文件的路径。

#!/bin/sh

if (test -d /apps/etc/init.d)
then
     for i in /apps/etc/init.d/S??* ;do
                 $i
     done
fi

可执行程序的启动如下:

/etc/init.d >: cd /apps/etc/init.d/
/apps/etc/init.d >: ls
S50_rcsApp
/apps/etc/init.d >: cat S50_rcsApp 
#/bin/bash
#start user app shell
cd /apps/test_2020
./test_Widget

注意: 这里的S50_rcsApp文件中,最好使用cd移动到可执行文件路径中,再执行程序,若写成相对路径(…/apps/test_2020/test_Widget),会由于当前执行脚本的路径不同,而找不到可执行文件。

成功的自启动方法

通过看linux系统启动流程,发现这些配置文件和脚本的的执行顺序是 /etc/inittab/etc/init.d/rcS/etc/profile,那么在开发板的/etc/profile文件中配置的都是QT、tslib等环境变量,那么执行(QT)程序,应该是先配置/etc/profile文件
/etc/profile文件最后加入以下语句:

# start user shell start script
cd /apps/etc/init.d 
./S50_rcsApp     

这时将上面自定义的程序启动脚本S50_rcsApp,放在/etc/profile中,即可成功解决该问题。

弊端: 开机之后,用户所在路径不再是根文件目录,而是/etc/profile执行S50_rcsApp脚本中cd /apps/etc/init.d的目录

/apps/etc/init.d >: ls
S50_rcsApp

参考链接:https://blog.csdn.net/weixin_39371711/article/details/79422533

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值