AP平台通过Execution Manager进行整个平台的初始化和应用启动/停止。
系统启动流程
![de10c13ee7dcc5448ea29324d99e73f6.png](https://img-blog.csdnimg.cn/img_convert/de10c13ee7dcc5448ea29324d99e73f6.png)
OS boot之后第一个进程就是Execution Manager,由Execution Manager来启动其他进程。
Execution Manager根据Manifest来确定启动顺序,启动的app也不限于一般意义上的AP进程,文件系统/网络/各种bsp初始化也可以通过Execution Manager来启动。
linux实现方式
在linux下AP平台将init进程替换成execution manager。
![c2e79ba66b9466e0cd3b1b570b09181d.png](https://img-blog.csdnimg.cn/img_convert/c2e79ba66b9466e0cd3b1b570b09181d.png)
![82b739e962a94db5048b6faaa821e727.png](https://img-blog.csdnimg.cn/img_convert/82b739e962a94db5048b6faaa821e727.png)
linux原本的init进程会执行一些初始化工作,包括文件系统/网络初始化/用户登录....
AP平台将init进程替换之后,也要将这部分工作负担起来,是通过读取对应app的Manifest来自动执行的。
在MANIFEST.json中可以指定app的启动阶段和依赖。
![59ce841c65843acc0b54ff731843ca4f.png](https://img-blog.csdnimg.cn/img_convert/59ce841c65843acc0b54ff731843ca4f.png)
![b686aac2b02b1a8cbe30c762389f8cb2.png](https://img-blog.csdnimg.cn/img_convert/b686aac2b02b1a8cbe30c762389f8cb2.png)
写一个自动启动的app
移植AP到树莓派上之后,树莓派没有hostname,总是显示一个none,仿照着写一个设置hostname的程序,让Execution Manager自动执行。
程序读取/etc/hostname中的内容,用hostname指令来设置hostname。
#include
![d9dc350e87be78ed250ec125d3a8f3ff.png](https://img-blog.csdnimg.cn/img_convert/d9dc350e87be78ed250ec125d3a8f3ff.png)
![dc73353b0c21ca0ac790346f7bbe83c2.png](https://img-blog.csdnimg.cn/img_convert/dc73353b0c21ca0ac790346f7bbe83c2.png)
将程序打包到树莓派/opt目录后,每次Execution Manager都会自动执行这个程序,设置一个hostname给树莓派。
![5c5f982250ad86979d4a47cc75ceebe2.png](https://img-blog.csdnimg.cn/img_convert/5c5f982250ad86979d4a47cc75ceebe2.png)
总结
AP的启动由Execution Manager来执行,和一般的linux不同,比如要设置一个开机启动的进程,一般linux可以修改init.d等方式进行,但基于AP是不可以的,必须通过Execution Manager进行。