查看: 11455|回复: 11

Edison开机自启动运行自己编译好的程序

[复制链接]

该用户从未签到

发表于 2015-3-6 12:03 | 显示全部楼层 |阅读模式

最近才搞明白如何在让edison开机启动的时候自动运行自己写好的程序。(感谢浪迹天涯大神!全程指导)
首先简单介绍下linux 系统启动的过程
1: 加载BIOS的硬件信息与进行自我测试,并依据设置取得第一个可以启动的设备
2:读取并执行第一个启动设备内的MBR的boot Loader(grub等)
3:在硬件驱动成功后,Kernel 会主动调用init 进程,而init 会取得 run-level 信息。。

好写到这里 废话不多说了, 进入正题。 kernel第一个调用的进程就是 init  ,
所以写一个shell启动脚本,把编译好的二进制文件放到脚本中执行
把你的启动脚本放在/etc/init.d 下面  (我的脚本名字命名为my_start.sh)

(这里注意一下,先前的edison 的yocto版本1.6 里面  在/etc 里没有init.d 文件夹,自己创建一个  mkdir init.d ,而最新的yocto 版本 1.6.1里面是含有 init.d 文件的)

my_start.sh中的内容:
#!/bin/sh
/mnt/colorball


(colorball 为已经编译好的二进制文件)

进入init.d 文件夹 把文件 my_start.sh 放在/etc/init.d 目录中(记住要赋予可执行的权限)
cd /etc/init.d
chmod +x /etc/init.d/my_start.sh

在 /etc/init.d 文件夹下执行
update-rc.d my_start.sh defaults 97 (启动顺序97)

my_start.sh.jpg

如上图这样显示,说明添加成功了。

my_start.h 放在init.d 中   
colorball放在mnt下面           (colorball 也要赋予可执行的权限 chmod +x /mnt/colorball)   

(此外有一点需要注意下,最好别用打印hello的程序测试,开机有很多程序,有很多打印信息,不方便验证,最好放个led灯控制程序之类的。)


重启之后
ok.jpg


在edison下面查看运行的进程
输入 top 命令
colorball.jpg

发现 208 就是 我的程序 colorball  成功 !
如果要停止程序,使用kill 208  命令结束程序

--------------------------------------------------------------------------------

删除开机自动启动执行下面的命令:
update-rc.d -f my_start.sh remove






  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2015-3-6 14:39 | 显示全部楼层
    谢谢扫雷员
    如果以上内容对你有帮助,你可以通过打赏支持作者

    该用户从未签到

    发表于 2015-4-13 22:32 | 显示全部楼层
    楼主,你好  请问你是怎样通过串口连接到开发板进行命令行操作的?我用SecureCRT连接成功后未出现登录页面 也没出现命令行  是怎么回事?

    该用户从未签到

    发表于 2015-4-21 12:43 | 显示全部楼层
    echoJason 发表于 2015-4-13 22:32
    楼主,你好  请问你是怎样通过串口连接到开发板进行命令行操作的?我用SecureCRT连接成功后未出现登录页面  ...

    用Putty,官方网页的Guide里都是在用putty,官网有教程

    http://www.arduino.cn/forum.php? ... 6&fromuid=36935

  • TA的每日心情
    奋斗
    2019-4-11 10:09
  • 签到天数: 21 天

    [LV.4]偶尔看看III

    发表于 2015-9-23 20:57 | 显示全部楼层
    学习中~谢谢lz分享~~

    该用户从未签到

    发表于 2015-12-2 00:43 | 显示全部楼层
    楼主你好,新手有细节需要请教下,
    文中写道“colorball 为已经编译好的二进制文件”,这个文件在什么地方能找到?
    我想实现Edison在脱离电脑的情况下,通电自动运行Arduino程序, 目前已知Arduino IDE编译后的程序/sketch/sketch.elf,在linux中可以通过在/sketch目录执行./sketch.elf /dev/ttyMFD2命令来运行Arduino程序。
    我猜测这个sketch.elf就是你所说的colorball,按照文章步骤能正常提示 “Starting my_start.service...” 但是程序没有运行,看来我猜测是错的,请指教,谢谢!

    该用户从未签到

    发表于 2015-12-18 11:29 | 显示全部楼层
    很好用,非常感谢
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    动手用blinker做台灯
    动手用blinker做台灯
    分享一个使用blinker做的台灯,使用的是esp8266,可以使用天猫精灵进行控制(亮度、开
    户外穿戴定位手表制作
    户外穿戴定位手表制作
    户外穿戴定位手表制作 五一刚过;最近还是
    Arduino烧入失败显示avrdude: stk500_getsync() attempt 1 of 10: not in sy...
    Arduino烧入失败显示avrdu
    我的arduino烧录的时候烧录失败显示下面这些东西
    Arduino MEGA 与UNO 通过nRF24L模块通讯
    Arduino MEGA 与UNO 通过n
    之前在深水宝很“实惠”的店铺买了一些原件,随手砍了esp8266以及nRF24L*3 因为缺
    开贴讲讲NRF24L01P,让你彻底搞懂它的工作原理,持续更...
    开贴讲讲NRF24L01P,让你
    *****************************************
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表