OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4943|回复: 0

疯壳Android嵌入式Linux平板开发教程4-1Linux引导过程

[复制链接]

98

主题

124

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
437
金钱
437
注册时间
2017-2-27
在线时间
53 小时
发表于 2020-12-15 15:33:32 | 显示全部楼层 |阅读模式

详情地址:https://fengke.club/GeekMart/views/offline/android
购买链接:https://fengke.club/GeekMart/su_fHnaDyD1o.jsp

Linux引导过程

Linux内核与Android系统linux内核有什么区别?
什么是引导装载程序?
什么是Zygote?
什么是init.rc?
什么是系统服务?

第一节Android启动步骤

第二节引导程序 — Boot Loader
源代码目录:$(dir)\rk3128-source\u-boot

第三节内核 — Kernel
Android内核就是Linux。内核启动时,设置硬件,挂载文件系统,执行第一个应用程序 init。

第四节Init进程
init是第一个进程,可以说它是root进程或者所有进程的父进程。init进程有两个责任,一是挂载目录,比如/sys、/dev、/proc,二是运行init.rc脚本。对于init.rc文件,Android中有特定的格式以及规则。在Android中,我们叫做Android初始化语言。
init.rc位于目录$(dir)\rk3128-source\device\rockchip\rksdk
Android初始化语言由四大类型的声明组成,即Actions(动作)、Commands(命令)、Services(服务)、以及Options(选项)。
Action(动作):动作是以命令流程命名的,有一个触发器决定动作是否发生。
语法:
on



Service是init加载的和是退出重启的(可选)程序。Service具有如下格式:
service [ ]*

[color=rgba(0, 0, 0, 0.75)]... Options(选项) 选项是对服务的描述,它们影响init进程如何以及何时启动服务。 来看看默认的init.rc文件。这里只列出了主要的事件以及服务。 Table ![在这里插入图片描述](?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZlbmdrZXN6,size_16,color_FFFFFF,t_70#pic_center)

在这个阶段你可以在设备的屏幕上看到“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来看是否这个值已经写入


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 21:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表