怎么将开发板的应用程序设置为开机自动启动

时间:2021-01-16 16:50:33
我用的开发板是devkit8000。比如led灯的循环点亮。应用程序是led_gcc,保存在目录/media/mmcblk0p1/led_gcc。我参考网上的做法将media/mmcblk0p1/led_gcc添加到/etc/init.d/rcS中但是重新启动后没有看到任何信息。灯也不循环点亮。我还需要做什么工作。以及我还可以用什么方法进行处理。希望给点意见。谢谢了。

22 个解决方案

#1


放到rcS按道理是可以的
是不是应用程序权限的问题

#2


学习嵌入式linux的高手们,来加入我们共嵌入式学习交流群“一切都好”群号:36711379。。。。。来这里一起交流

#3


你看看打印出来的是什么信息啊
2L的有可能 
chmod +x /media/mmcblk0p1/led_gcc
/media/mmcblk0p1/led_gcc

44看

#4


引用 1 楼 zmlovelx 的回复:
放到rcS按道理是可以的
是不是应用程序权限的问题
写在任何位置都可以吗
在/etc/init.d/rcS中只要加上语句就可以吗 

#5


我所有的操作都是直接在板子上修改的/etc/init.d/rcS。我不确定这样做是否对。请提出点意见来 要深入浅出 

#6


过来学习

#7


放在 /etc/init.d/rcS 这里,按道理是可以。
楼主可以这么测试:
1. 看看是不是权限问题,
    开启开发板后,手动执行 media/mmcblk0p1/led_gcc,看会不会提示什么错误,是否正确执行了。如果正确执行了,那说明该程序没问题
2. 测试下  /etc/init.d/rcS 是否在开机时被执行:
在  /etc/init.d/rcS  里,执行 media/mmcblk0p1/led_gcc 的前后各输入如下两行:

echo "Before led_gcc"

echo "After led_gcc"

启动后看看 上面两个语句是否被打印出来,如有,则说明 rcS在开机时会被执行。

#8


#!/bin/sh
#
# rcS Call all S??* scripts in /etc/rcS.d in
# numerical/alphabetical order.
#
# Version: @(#)/etc/init.d/rcS  2.76  19-Apr-1999  miquels@cistron.nl
#

PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel

# Make sure proc is mounted
#
[ -d "/proc/1" ] || mount /proc

#
# See if system needs to be setup. This is ONLY meant to
# be used for the initial setup after a fresh installation!
#
if [ -x /sbin/unconfigured.sh ]
then
  /sbin/unconfigured.sh
fi

#
# Source defaults.
#
. /etc/default/rcS

echo “start my progress***************************”
/media/mmcblk0p1/spidev
/hell0
/led_acc
ech0 "end ***************************************"//加这些主要是为了验证是否运行,我都加了应该执行的应用程序。
如果我在后面执行加入这些语句根本就没有提示信息,下面的语句我也看不懂。

#
# Trap CTRL-C &c only in this shell so we can interrupt subprocesses.
#
trap ":" INT QUIT TSTP


#
# Call all parts in order.
#
exec /etc/init.d/rc S


#
# For compatibility, run the files in /etc/rc.boot too.
#
[ -d /etc/rc.boot ] && run-parts /etc/rc.boot

#
# Finish setup if needed. The comment above about
# /sbin/unconfigured.sh applies here as well!
#
if [ -x /sbin/setup.sh ]
then
  /sbin/setup.sh
fi

在终端显示的信息是start my progresser ***********************************
/etc/init.d/rcS: line 36: /media/mmcblk0p1/spidev: not found
hell0,
error in open /sys/class/leds/led1/brightness  
end my process ***************************************

就运行了hell0这个应用程序,其他都成功,请看看是什么原因 我需要设置什么东西。请指教 谢谢

#9


引用 7 楼 sikinzen 的回复:
放在 /etc/init.d/rcS 这里,按道理是可以。
楼主可以这么测试:
1. 看看是不是权限问题,
    开启开发板后,手动执行 media/mmcblk0p1/led_gcc,看会不会提示什么错误,是否正确执行了。如果正确执行了,那说明该程序没问题
2. 测试下  /etc/init.d/rcS 是否在开机时被执行:
在  /etc/init.d/rcS  里,执行 med……
我在下面贴了新的问题您看一下吧 谢谢您的解答

#10


/etc/init.d/rcS: line 36: /media/mmcblk0p1/spidev: not found
很明显 文件路径不对

error in open /sys/class/leds/led1/brightness  led_acc运行到了 但是程序运行出错 你直接运行led_acc程序正常不?

#11


写个开机自动启动脚本就ok了

#12


/etc/init.d/leds start            #启动LED

#13


引用 10 楼 zmlovelx 的回复:
/etc/init.d/rcS: line 36: /media/mmcblk0p1/spidev: not found
很明显 文件路径不对

error in open /sys/class/leds/led1/brightness  led_acc运行到了 但是程序运行出错 你直接运行led_acc程序正常不?
文件路径千真万确,我都认真核实了。
led_acc直接运行很正常。
你看我说的是不是正确的,是不是硬件还没有初始化。比如这个宏/sys/class/leds/led1/brightness还没有运行到定义的地方,这个应用程序先行执行了。谢谢您的解答

#14


引用 11 楼 feiyinzilgd 的回复:
写个开机自动启动脚本就ok了
海燕 你举个例子吧 ,比如内核哪个文件时这样的,我可以照着猫画个老虎.谢谢海燕了

#15


引用 12 楼 zmin002 的回复:
/etc/init.d/leds start            #启动LED
对应的目录里面没有这个文件 ,我需要自行写一个吗?没有写过,不知道可以仿哪个文件可以写。谢谢你

#16


Linux在启动时,会自动执行/etc/rc.d目录下的初始化程序,因此我们可以把启动任务放到该目录下,有两种办法: 

  方案一: 

  1.因为其中的rc.local是在完成所有初始化之后执行,因此我们可以把启动脚本写到里面 

  2.用root账号登陆Linux,vi /etc/rc.d/rc.local编辑文件,在最后加入两行需要执行的脚本程序: 

  cd /home/test1 --该步不可少,否则会提示没有权限打开'test.log'文件 

  su test1 -c "python /home/test1/test.py" --把要执行的命令作为一个参数传递级su 

  方案二: 

  1.init.d目录下都为可执行程序,他们其实是服务脚本,按照一定格式编写,Linux 在启动时会自动执行,类似Windows下的服务 

  2.用root帐号登录,vi /etc/rc.d/init.d/mystart,追加如下内容: 

  #!/bin/bash 

  #chkconfig:2345 80 05 --指定在哪几个级别执行,0一般指关机, 

  6指的是重启,其他为正常启动。80为启动的优先级,05为关闭的优先机 

  #description:mystart service 

  RETVAL=0 

  start(){ --启动服务的入口函数 

  echo -n "mystart serive ..." 

  cd /home/test1 

  su test1 -c "python /home/test1/test.py" 

  } 

  stop(){ --关闭服务的入口函数 

  echo "mystart service is stoped..." 

  } 

  case $1 in --使用case,可以进行交互式操作 

  start) 

  start 

  ;; 

  stop) 

  stop 

  ;; 

  esac 

  exit $RETVAL 

  3.运行chmod +r /etc/rc.d/init.d/mystart,使之可直接执行 

  4.运行chkconfig --add mystart,把该服务添加到配置当中 

  5.运行chkconfig --list mystart,可以查看该服务进程的状态

#17


/etc/init.d/leds start #启动LED  

安装一些服务后/etc/init.d  文件夹里会有的。

#18


引用 16 楼 einsteinz 的回复:
Linux在启动时,会自动执行/etc/rc.d目录下的初始化程序,因此我们可以把启动任务放到该目录下,有两种办法: 

方案一: 

1.因为其中的rc.local是在完成所有初始化之后执行,因此我们可以把启动脚本写到里面 

2.用root账号登陆Linux,vi /etc/rc.d/rc.local编辑文件,在最后加入两行需要执行的脚本程序: 

cd /home/test……
太深奥了,没有写过脚本。我仔细研究一下。我的文件系统里面没有rc.d,只有rc0.d——rc1.d,这几个目录里没有rc.local文件。但是与rc0.d——rc1.d并列的有init。d目录。我可以修改文件,然后直接用命令生成文件系统映像烧进内核,进行试验,郁闷了。我连个脚本都不知道怎么写。

#19


在/etc/init.d/rcS文件下添加命令即可

#20


我想请问下 

LZ 你这个问题是怎么解决的啊

我最近也碰到这个问题

#21


我也是啊,遇到这问题了,请楼主说说吧,呜呜

#22


http://blog.csdn.net/alan00000/article/details/7210551

看这个网址  可以解决啊

#1


放到rcS按道理是可以的
是不是应用程序权限的问题

#2


学习嵌入式linux的高手们,来加入我们共嵌入式学习交流群“一切都好”群号:36711379。。。。。来这里一起交流

#3


你看看打印出来的是什么信息啊
2L的有可能 
chmod +x /media/mmcblk0p1/led_gcc
/media/mmcblk0p1/led_gcc

44看

#4


引用 1 楼 zmlovelx 的回复:
放到rcS按道理是可以的
是不是应用程序权限的问题
写在任何位置都可以吗
在/etc/init.d/rcS中只要加上语句就可以吗 

#5


我所有的操作都是直接在板子上修改的/etc/init.d/rcS。我不确定这样做是否对。请提出点意见来 要深入浅出 

#6


过来学习

#7


放在 /etc/init.d/rcS 这里,按道理是可以。
楼主可以这么测试:
1. 看看是不是权限问题,
    开启开发板后,手动执行 media/mmcblk0p1/led_gcc,看会不会提示什么错误,是否正确执行了。如果正确执行了,那说明该程序没问题
2. 测试下  /etc/init.d/rcS 是否在开机时被执行:
在  /etc/init.d/rcS  里,执行 media/mmcblk0p1/led_gcc 的前后各输入如下两行:

echo "Before led_gcc"

echo "After led_gcc"

启动后看看 上面两个语句是否被打印出来,如有,则说明 rcS在开机时会被执行。

#8


#!/bin/sh
#
# rcS Call all S??* scripts in /etc/rcS.d in
# numerical/alphabetical order.
#
# Version: @(#)/etc/init.d/rcS  2.76  19-Apr-1999  miquels@cistron.nl
#

PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel

# Make sure proc is mounted
#
[ -d "/proc/1" ] || mount /proc

#
# See if system needs to be setup. This is ONLY meant to
# be used for the initial setup after a fresh installation!
#
if [ -x /sbin/unconfigured.sh ]
then
  /sbin/unconfigured.sh
fi

#
# Source defaults.
#
. /etc/default/rcS

echo “start my progress***************************”
/media/mmcblk0p1/spidev
/hell0
/led_acc
ech0 "end ***************************************"//加这些主要是为了验证是否运行,我都加了应该执行的应用程序。
如果我在后面执行加入这些语句根本就没有提示信息,下面的语句我也看不懂。

#
# Trap CTRL-C &c only in this shell so we can interrupt subprocesses.
#
trap ":" INT QUIT TSTP


#
# Call all parts in order.
#
exec /etc/init.d/rc S


#
# For compatibility, run the files in /etc/rc.boot too.
#
[ -d /etc/rc.boot ] && run-parts /etc/rc.boot

#
# Finish setup if needed. The comment above about
# /sbin/unconfigured.sh applies here as well!
#
if [ -x /sbin/setup.sh ]
then
  /sbin/setup.sh
fi

在终端显示的信息是start my progresser ***********************************
/etc/init.d/rcS: line 36: /media/mmcblk0p1/spidev: not found
hell0,
error in open /sys/class/leds/led1/brightness  
end my process ***************************************

就运行了hell0这个应用程序,其他都成功,请看看是什么原因 我需要设置什么东西。请指教 谢谢

#9


引用 7 楼 sikinzen 的回复:
放在 /etc/init.d/rcS 这里,按道理是可以。
楼主可以这么测试:
1. 看看是不是权限问题,
    开启开发板后,手动执行 media/mmcblk0p1/led_gcc,看会不会提示什么错误,是否正确执行了。如果正确执行了,那说明该程序没问题
2. 测试下  /etc/init.d/rcS 是否在开机时被执行:
在  /etc/init.d/rcS  里,执行 med……
我在下面贴了新的问题您看一下吧 谢谢您的解答

#10


/etc/init.d/rcS: line 36: /media/mmcblk0p1/spidev: not found
很明显 文件路径不对

error in open /sys/class/leds/led1/brightness  led_acc运行到了 但是程序运行出错 你直接运行led_acc程序正常不?

#11


写个开机自动启动脚本就ok了

#12


/etc/init.d/leds start            #启动LED

#13


引用 10 楼 zmlovelx 的回复:
/etc/init.d/rcS: line 36: /media/mmcblk0p1/spidev: not found
很明显 文件路径不对

error in open /sys/class/leds/led1/brightness  led_acc运行到了 但是程序运行出错 你直接运行led_acc程序正常不?
文件路径千真万确,我都认真核实了。
led_acc直接运行很正常。
你看我说的是不是正确的,是不是硬件还没有初始化。比如这个宏/sys/class/leds/led1/brightness还没有运行到定义的地方,这个应用程序先行执行了。谢谢您的解答

#14


引用 11 楼 feiyinzilgd 的回复:
写个开机自动启动脚本就ok了
海燕 你举个例子吧 ,比如内核哪个文件时这样的,我可以照着猫画个老虎.谢谢海燕了

#15


引用 12 楼 zmin002 的回复:
/etc/init.d/leds start            #启动LED
对应的目录里面没有这个文件 ,我需要自行写一个吗?没有写过,不知道可以仿哪个文件可以写。谢谢你

#16


Linux在启动时,会自动执行/etc/rc.d目录下的初始化程序,因此我们可以把启动任务放到该目录下,有两种办法: 

  方案一: 

  1.因为其中的rc.local是在完成所有初始化之后执行,因此我们可以把启动脚本写到里面 

  2.用root账号登陆Linux,vi /etc/rc.d/rc.local编辑文件,在最后加入两行需要执行的脚本程序: 

  cd /home/test1 --该步不可少,否则会提示没有权限打开'test.log'文件 

  su test1 -c "python /home/test1/test.py" --把要执行的命令作为一个参数传递级su 

  方案二: 

  1.init.d目录下都为可执行程序,他们其实是服务脚本,按照一定格式编写,Linux 在启动时会自动执行,类似Windows下的服务 

  2.用root帐号登录,vi /etc/rc.d/init.d/mystart,追加如下内容: 

  #!/bin/bash 

  #chkconfig:2345 80 05 --指定在哪几个级别执行,0一般指关机, 

  6指的是重启,其他为正常启动。80为启动的优先级,05为关闭的优先机 

  #description:mystart service 

  RETVAL=0 

  start(){ --启动服务的入口函数 

  echo -n "mystart serive ..." 

  cd /home/test1 

  su test1 -c "python /home/test1/test.py" 

  } 

  stop(){ --关闭服务的入口函数 

  echo "mystart service is stoped..." 

  } 

  case $1 in --使用case,可以进行交互式操作 

  start) 

  start 

  ;; 

  stop) 

  stop 

  ;; 

  esac 

  exit $RETVAL 

  3.运行chmod +r /etc/rc.d/init.d/mystart,使之可直接执行 

  4.运行chkconfig --add mystart,把该服务添加到配置当中 

  5.运行chkconfig --list mystart,可以查看该服务进程的状态

#17


/etc/init.d/leds start #启动LED  

安装一些服务后/etc/init.d  文件夹里会有的。

#18


引用 16 楼 einsteinz 的回复:
Linux在启动时,会自动执行/etc/rc.d目录下的初始化程序,因此我们可以把启动任务放到该目录下,有两种办法: 

方案一: 

1.因为其中的rc.local是在完成所有初始化之后执行,因此我们可以把启动脚本写到里面 

2.用root账号登陆Linux,vi /etc/rc.d/rc.local编辑文件,在最后加入两行需要执行的脚本程序: 

cd /home/test……
太深奥了,没有写过脚本。我仔细研究一下。我的文件系统里面没有rc.d,只有rc0.d——rc1.d,这几个目录里没有rc.local文件。但是与rc0.d——rc1.d并列的有init。d目录。我可以修改文件,然后直接用命令生成文件系统映像烧进内核,进行试验,郁闷了。我连个脚本都不知道怎么写。

#19


在/etc/init.d/rcS文件下添加命令即可

#20


我想请问下 

LZ 你这个问题是怎么解决的啊

我最近也碰到这个问题

#21


我也是啊,遇到这问题了,请楼主说说吧,呜呜

#22


http://blog.csdn.net/alan00000/article/details/7210551

看这个网址  可以解决啊