完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
前言 在之前做项目的时候, 他是一个智能拨号模块, 是一个单独运行的程序, 在arm开发板上每次重启之后, 需要自己再去手动运行一次, 这个时候我们想到既然他是智能拨号模块, 那就要实现一个全自动的, 也就是开机时让他自启动, 自启动设置 1. 在Linux 下编写一个hello.c(此程序需要在ARM上开机自启动) hello.c如下: #include #include #include #include int main (int argc, char **argv) { int fd = -1; int rv = -1; char buf[64]; memset(buf, 0, sizeof(buf)); strcpy(buf, "hellon"); fd = open("hello.txt", O_RDWR|O_CREAT, 0600); while(1) { rv = write(fd, buf, strlen(buf)); sleep(3); } return 0; } 2. 使用交叉编译工具编译hello.c, 生成一个在ARM下运行的可执行文件 使用交叉编译工具, 生成hello, 可执行问文件, 可以看到不能直接运行, file命令查看文件, 可以看到是 ARM. 3. 将可执行文件拿到ARM开发板上, chmod a+x hello , 给执行权限 这里有俩种方法都可以将文件拿到arm板上 , 一种是通过secure crt 远程登陆的rz和sz命令, 将文件拿到ARM板上, 一种可以通过tftp将可执行文件拿过去. 要注意拿过去的可执行文件没有权限, 使用chmod 命令给一个权限 我们先执行一下, 可以看到已经将hello写入 hello.txt中, 将hello.txt删除, 方便我们进行以下的测试 4. 打开开机启动文件(shell 脚本), 每个板子可能有不同的Linux内核, 故启动文件名称不一样 例如: /etc/init.d/rcS /etc/init.d/rc.local /etc/profile /usr/etc/rc.local 我的板子上是 “/etc/init.d/rcS” 这个文件名称 5. 在 /etc/init.d/rcS 文件中添加需要自启动程序(方案一) 即在shell中 执行一个可执行文件, 进入到绝对路径, ./可执行文件名称 即可, 例如: cd /apps ./hello 5. 在 /etc/init.d/路径中添加一个shell脚本(方案二) 创建了init进程, init进程执行init.d解释/etc/inittab, 这个就会去执行/etc/init.d中有一个rcS的脚本, 这个脚本是for循环, 找到/etc/init.d中以S打头的至少俩个字符的脚本, 然后执行这个脚本; |
|
相关推荐
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
飞凌嵌入式ElfBoard ELF 1板卡-内核编译之初次编译
410 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-内核源代码的目录结构和文件说明
445 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-Linux内核移植之内核简介
1135 浏览 0 评论
非科班也能玩转Android应用,体验QT跨平台能力-迅为RK3568开发板
989 浏览 0 评论
飞凌嵌入式-ELFBOARD-ELF 2硬件分享之最小系统原理
1085 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 16:24 , Processed in 0.644344 second(s), Total 69, Slave 51 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号