完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
Linux 引导过程 ——疯壳·嵌入式平板开发 Linux 内核与 Android 系统 linux 内核有什么区别? 什么是引导装载程序? 什么是 Zygote? 什么是 init.rc? 什么是系统服务? 第一节 Android 启动步骤 图1 第二节 引导程序 --- Boot Loader 源代码目录:$(dir)rk3128-sourceu-boot 第三节 内核 --- Kernel Android 内核就是 Linux。内核启动时,设置硬件,挂载文件系统,执行第一个应用程序init。 第四节 Init 进程 init 是第一个进程,可以说它是 root 进程或者所有进程的父进程。init 进程有两个责任, 一是挂载目录,比如/sys、/dev、/proc,二是运行 init.rc 脚本。对于 init.rc 文件,Android 中有特定的格式以及规则。在 Android 中,我们叫做 Android 初始化语言。 init.rc 位于目录$(dir)rk3128-sourcedevicerockchiprksdk Android 初始化语言由四大类型的声明组成,即 Actions(动作)、Commands(命令)、Services(服务)、以及 Options(选项)。 Action(动作):动作是以命令流程命名的,有一个触发器决定动作是否发生。 语法: on Service 是 init 加载的和是退出重启的(可选)程序。Service 具有如下格式: service ... Options(选项) 选项是对服务的描述,它们影响 init 进程如何以及何时启动服务。 来看看默认的 init.rc 文件。这里只列出了主要的事件以及服务。 Table 图2 在这个阶段你可以在设备的屏幕上看到“android”logo 了。 第五节 Zygote 在 Java 中,不同的虚拟机实例会为不同的应用分配不同的内存。但如果 Android 系统为每一个应用启动不同的 Dalvik 虚拟机实例,就会消耗大量的内存以及时间。因此,为了克服这个问题,Android 系统创造了”Zygote”,Zygote 让 Dalvik 虚拟机共享代码、低内存占用以及最小的启动时间成为可能。 第六节 系统服务或服务 完成了上面几步之后,运行环境请求 Zygote 运行系统服务。系统服务同时使用 native以及 java 编写,系统服务可以认为是一个进程,系统服务包含了所有的 System Services。 Zygote 创建新的进程去启动系统服务,可以在 ZygoteInit 类的”startSystemServer”方法 中找到源代码。 第七节 引导完成 一旦系统服务在内存中跑起来了, Android 就完成了引导过程。 在这个时候“ACTION_BOOT_COMPLETED”开机启动广播就会发出去。 第八节 实验 init.rc 中增加一条启动参数 setprop fengke.test 100 第九节 实验现象 系统启动后用 getprop fengke.test 来看是否这个值已经写入 |
|
相关推荐
|
|
飞凌嵌入式ElfBoard ELF 1板卡-CAN编程示例之开发板测试
727 浏览 0 评论
该问题是用APP给芯海科技的CST92F25芯片发指令是出现的
2430 浏览 1 评论
828 浏览 0 评论
1600 浏览 1 评论
2423 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 14:51 , Processed in 0.622237 second(s), Total 39, Slave 28 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号